##// END OF EJS Templates
Change banner, %quickref
vivainio -
Show More
@@ -1,763 +1,763 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 IPython -- An enhanced Interactive Python
3 IPython -- An enhanced Interactive Python
4
4
5 Requires Python 2.1 or better.
5 Requires Python 2.1 or better.
6
6
7 This file contains the main make_IPython() starter function.
7 This file contains the main make_IPython() starter function.
8
8
9 $Id: ipmaker.py 2704 2007-09-01 14:32:05Z vivainio $"""
9 $Id: ipmaker.py 2710 2007-09-04 21:10:10Z vivainio $"""
10
10
11 #*****************************************************************************
11 #*****************************************************************************
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
13 #
13 #
14 # Distributed under the terms of the BSD License. The full license is in
14 # Distributed under the terms of the BSD License. The full license is in
15 # the file COPYING, distributed as part of this software.
15 # the file COPYING, distributed as part of this software.
16 #*****************************************************************************
16 #*****************************************************************************
17
17
18 from IPython import Release
18 from IPython import Release
19 __author__ = '%s <%s>' % Release.authors['Fernando']
19 __author__ = '%s <%s>' % Release.authors['Fernando']
20 __license__ = Release.license
20 __license__ = Release.license
21 __version__ = Release.version
21 __version__ = Release.version
22
22
23 try:
23 try:
24 credits._Printer__data = """
24 credits._Printer__data = """
25 Python: %s
25 Python: %s
26
26
27 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
27 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
28 See http://ipython.scipy.org for more information.""" \
28 See http://ipython.scipy.org for more information.""" \
29 % credits._Printer__data
29 % credits._Printer__data
30
30
31 copyright._Printer__data += """
31 copyright._Printer__data += """
32
32
33 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
33 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
34 All Rights Reserved."""
34 All Rights Reserved."""
35 except NameError:
35 except NameError:
36 # Can happen if ipython was started with 'python -S', so that site.py is
36 # Can happen if ipython was started with 'python -S', so that site.py is
37 # not loaded
37 # not loaded
38 pass
38 pass
39
39
40 #****************************************************************************
40 #****************************************************************************
41 # Required modules
41 # Required modules
42
42
43 # From the standard library
43 # From the standard library
44 import __main__
44 import __main__
45 import __builtin__
45 import __builtin__
46 import os
46 import os
47 import re
47 import re
48 import sys
48 import sys
49 import types
49 import types
50 from pprint import pprint,pformat
50 from pprint import pprint,pformat
51
51
52 # Our own
52 # Our own
53 from IPython import DPyGetOpt
53 from IPython import DPyGetOpt
54 from IPython.ipstruct import Struct
54 from IPython.ipstruct import Struct
55 from IPython.OutputTrap import OutputTrap
55 from IPython.OutputTrap import OutputTrap
56 from IPython.ConfigLoader import ConfigLoader
56 from IPython.ConfigLoader import ConfigLoader
57 from IPython.iplib import InteractiveShell
57 from IPython.iplib import InteractiveShell
58 from IPython.usage import cmd_line_usage,interactive_usage
58 from IPython.usage import cmd_line_usage,interactive_usage
59 from IPython.genutils import *
59 from IPython.genutils import *
60
60
61 #-----------------------------------------------------------------------------
61 #-----------------------------------------------------------------------------
62 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
62 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
63 rc_override=None,shell_class=InteractiveShell,
63 rc_override=None,shell_class=InteractiveShell,
64 embedded=False,**kw):
64 embedded=False,**kw):
65 """This is a dump of IPython into a single function.
65 """This is a dump of IPython into a single function.
66
66
67 Later it will have to be broken up in a sensible manner.
67 Later it will have to be broken up in a sensible manner.
68
68
69 Arguments:
69 Arguments:
70
70
71 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
71 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
72 script name, b/c DPyGetOpt strips the first argument only for the real
72 script name, b/c DPyGetOpt strips the first argument only for the real
73 sys.argv.
73 sys.argv.
74
74
75 - user_ns: a dict to be used as the user's namespace."""
75 - user_ns: a dict to be used as the user's namespace."""
76
76
77 #----------------------------------------------------------------------
77 #----------------------------------------------------------------------
78 # Defaults and initialization
78 # Defaults and initialization
79
79
80 # For developer debugging, deactivates crash handler and uses pdb.
80 # For developer debugging, deactivates crash handler and uses pdb.
81 DEVDEBUG = False
81 DEVDEBUG = False
82
82
83 if argv is None:
83 if argv is None:
84 argv = sys.argv
84 argv = sys.argv
85
85
86 # __IP is the main global that lives throughout and represents the whole
86 # __IP is the main global that lives throughout and represents the whole
87 # application. If the user redefines it, all bets are off as to what
87 # application. If the user redefines it, all bets are off as to what
88 # happens.
88 # happens.
89
89
90 # __IP is the name of he global which the caller will have accessible as
90 # __IP is the name of he global which the caller will have accessible as
91 # __IP.name. We set its name via the first parameter passed to
91 # __IP.name. We set its name via the first parameter passed to
92 # InteractiveShell:
92 # InteractiveShell:
93
93
94 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
94 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
95 embedded=embedded,**kw)
95 embedded=embedded,**kw)
96
96
97 # Put 'help' in the user namespace
97 # Put 'help' in the user namespace
98 from site import _Helper
98 from site import _Helper
99 IP.user_config_ns = {}
99 IP.user_config_ns = {}
100 IP.user_ns['help'] = _Helper()
100 IP.user_ns['help'] = _Helper()
101
101
102
102
103 if DEVDEBUG:
103 if DEVDEBUG:
104 # For developer debugging only (global flag)
104 # For developer debugging only (global flag)
105 from IPython import ultraTB
105 from IPython import ultraTB
106 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
106 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
107
107
108 IP.BANNER_PARTS = ['Python %s\n'
108 IP.BANNER_PARTS = ['Python %s\n'
109 'Type "copyright", "credits" or "license" '
109 'Type "copyright", "credits" or "license" '
110 'for more information.\n'
110 'for more information.\n'
111 % (sys.version.split('\n')[0],),
111 % (sys.version.split('\n')[0],),
112 "IPython %s -- An enhanced Interactive Python."
112 "IPython %s -- An enhanced Interactive Python."
113 % (__version__,),
113 % (__version__,),
114 """\
114 """\
115 ? or %quickref -> Introduction to IPython's features, or quick reference.
115 ? -> Introduction to IPython's features
116 %magic -> Information about IPython's 'magic' % functions.
116 %quickref -> Quick reference.
117 help -> Python's own help system.
117 help -> Python's own help system.
118 object? -> Details about 'object'. ?object also works, ?? prints more.
118 object? -> Details about 'object'. ?object also works, ?? prints more.
119 """ ]
119 """ ]
120
120
121 IP.usage = interactive_usage
121 IP.usage = interactive_usage
122
122
123 # Platform-dependent suffix and directory names. We use _ipython instead
123 # Platform-dependent suffix and directory names. We use _ipython instead
124 # of .ipython under win32 b/c there's software that breaks with .named
124 # of .ipython under win32 b/c there's software that breaks with .named
125 # directories on that platform.
125 # directories on that platform.
126 if os.name == 'posix':
126 if os.name == 'posix':
127 rc_suffix = ''
127 rc_suffix = ''
128 ipdir_def = '.ipython'
128 ipdir_def = '.ipython'
129 else:
129 else:
130 rc_suffix = '.ini'
130 rc_suffix = '.ini'
131 ipdir_def = '_ipython'
131 ipdir_def = '_ipython'
132
132
133 # default directory for configuration
133 # default directory for configuration
134 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
134 ipythondir_def = os.path.abspath(os.environ.get('IPYTHONDIR',
135 os.path.join(IP.home_dir,ipdir_def)))
135 os.path.join(IP.home_dir,ipdir_def)))
136
136
137 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
137 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
138
138
139 # we need the directory where IPython itself is installed
139 # we need the directory where IPython itself is installed
140 import IPython
140 import IPython
141 IPython_dir = os.path.dirname(IPython.__file__)
141 IPython_dir = os.path.dirname(IPython.__file__)
142 del IPython
142 del IPython
143
143
144 #-------------------------------------------------------------------------
144 #-------------------------------------------------------------------------
145 # Command line handling
145 # Command line handling
146
146
147 # Valid command line options (uses DPyGetOpt syntax, like Perl's
147 # Valid command line options (uses DPyGetOpt syntax, like Perl's
148 # GetOpt::Long)
148 # GetOpt::Long)
149
149
150 # Any key not listed here gets deleted even if in the file (like session
150 # Any key not listed here gets deleted even if in the file (like session
151 # or profile). That's deliberate, to maintain the rc namespace clean.
151 # or profile). That's deliberate, to maintain the rc namespace clean.
152
152
153 # Each set of options appears twice: under _conv only the names are
153 # Each set of options appears twice: under _conv only the names are
154 # listed, indicating which type they must be converted to when reading the
154 # listed, indicating which type they must be converted to when reading the
155 # ipythonrc file. And under DPyGetOpt they are listed with the regular
155 # ipythonrc file. And under DPyGetOpt they are listed with the regular
156 # DPyGetOpt syntax (=s,=i,:f,etc).
156 # DPyGetOpt syntax (=s,=i,:f,etc).
157
157
158 # Make sure there's a space before each end of line (they get auto-joined!)
158 # Make sure there's a space before each end of line (they get auto-joined!)
159 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
159 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
160 'c=s classic|cl color_info! colors=s confirm_exit! '
160 'c=s classic|cl color_info! colors=s confirm_exit! '
161 'debug! deep_reload! editor=s log|l messages! nosep '
161 'debug! deep_reload! editor=s log|l messages! nosep '
162 'object_info_string_level=i pdb! '
162 'object_info_string_level=i pdb! '
163 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
163 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
164 'pylab_import_all! '
164 'pylab_import_all! '
165 'quick screen_length|sl=i prompts_pad_left=i '
165 'quick screen_length|sl=i prompts_pad_left=i '
166 'logfile|lf=s logplay|lp=s profile|p=s '
166 'logfile|lf=s logplay|lp=s profile|p=s '
167 'readline! readline_merge_completions! '
167 'readline! readline_merge_completions! '
168 'readline_omit__names! '
168 'readline_omit__names! '
169 'rcfile=s separate_in|si=s separate_out|so=s '
169 'rcfile=s separate_in|si=s separate_out|so=s '
170 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
170 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
171 'magic_docstrings system_verbose! '
171 'magic_docstrings system_verbose! '
172 'multi_line_specials! '
172 'multi_line_specials! '
173 'term_title! wxversion=s '
173 'term_title! wxversion=s '
174 'autoedit_syntax!')
174 'autoedit_syntax!')
175
175
176 # Options that can *only* appear at the cmd line (not in rcfiles).
176 # Options that can *only* appear at the cmd line (not in rcfiles).
177
177
178 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
178 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
179 # the 'C-c !' command in emacs automatically appends a -i option at the end.
179 # the 'C-c !' command in emacs automatically appends a -i option at the end.
180 cmdline_only = ('help interact|i ipythondir=s Version upgrade '
180 cmdline_only = ('help interact|i ipythondir=s Version upgrade '
181 'gthread! qthread! q4thread! wthread! pylab! tk!')
181 'gthread! qthread! q4thread! wthread! pylab! tk!')
182
182
183 # Build the actual name list to be used by DPyGetOpt
183 # Build the actual name list to be used by DPyGetOpt
184 opts_names = qw(cmdline_opts) + qw(cmdline_only)
184 opts_names = qw(cmdline_opts) + qw(cmdline_only)
185
185
186 # Set sensible command line defaults.
186 # Set sensible command line defaults.
187 # This should have everything from cmdline_opts and cmdline_only
187 # This should have everything from cmdline_opts and cmdline_only
188 opts_def = Struct(autocall = 1,
188 opts_def = Struct(autocall = 1,
189 autoedit_syntax = 0,
189 autoedit_syntax = 0,
190 autoindent = 0,
190 autoindent = 0,
191 automagic = 1,
191 automagic = 1,
192 banner = 1,
192 banner = 1,
193 cache_size = 1000,
193 cache_size = 1000,
194 c = '',
194 c = '',
195 classic = 0,
195 classic = 0,
196 colors = 'NoColor',
196 colors = 'NoColor',
197 color_info = 0,
197 color_info = 0,
198 confirm_exit = 1,
198 confirm_exit = 1,
199 debug = 0,
199 debug = 0,
200 deep_reload = 0,
200 deep_reload = 0,
201 editor = '0',
201 editor = '0',
202 help = 0,
202 help = 0,
203 interact = 0,
203 interact = 0,
204 ipythondir = ipythondir_def,
204 ipythondir = ipythondir_def,
205 log = 0,
205 log = 0,
206 logfile = '',
206 logfile = '',
207 logplay = '',
207 logplay = '',
208 multi_line_specials = 1,
208 multi_line_specials = 1,
209 messages = 1,
209 messages = 1,
210 object_info_string_level = 0,
210 object_info_string_level = 0,
211 nosep = 0,
211 nosep = 0,
212 pdb = 0,
212 pdb = 0,
213 pprint = 0,
213 pprint = 0,
214 profile = '',
214 profile = '',
215 prompt_in1 = 'In [\\#]: ',
215 prompt_in1 = 'In [\\#]: ',
216 prompt_in2 = ' .\\D.: ',
216 prompt_in2 = ' .\\D.: ',
217 prompt_out = 'Out[\\#]: ',
217 prompt_out = 'Out[\\#]: ',
218 prompts_pad_left = 1,
218 prompts_pad_left = 1,
219 pylab_import_all = 1,
219 pylab_import_all = 1,
220 quiet = 0,
220 quiet = 0,
221 quick = 0,
221 quick = 0,
222 readline = 1,
222 readline = 1,
223 readline_merge_completions = 1,
223 readline_merge_completions = 1,
224 readline_omit__names = 0,
224 readline_omit__names = 0,
225 rcfile = 'ipythonrc' + rc_suffix,
225 rcfile = 'ipythonrc' + rc_suffix,
226 screen_length = 0,
226 screen_length = 0,
227 separate_in = '\n',
227 separate_in = '\n',
228 separate_out = '\n',
228 separate_out = '\n',
229 separate_out2 = '',
229 separate_out2 = '',
230 system_header = 'IPython system call: ',
230 system_header = 'IPython system call: ',
231 system_verbose = 0,
231 system_verbose = 0,
232 gthread = 0,
232 gthread = 0,
233 qthread = 0,
233 qthread = 0,
234 q4thread = 0,
234 q4thread = 0,
235 wthread = 0,
235 wthread = 0,
236 pylab = 0,
236 pylab = 0,
237 term_title = 1,
237 term_title = 1,
238 tk = 0,
238 tk = 0,
239 upgrade = 0,
239 upgrade = 0,
240 Version = 0,
240 Version = 0,
241 xmode = 'Verbose',
241 xmode = 'Verbose',
242 wildcards_case_sensitive = 1,
242 wildcards_case_sensitive = 1,
243 wxversion = '0',
243 wxversion = '0',
244 magic_docstrings = 0, # undocumented, for doc generation
244 magic_docstrings = 0, # undocumented, for doc generation
245 )
245 )
246
246
247 # Things that will *only* appear in rcfiles (not at the command line).
247 # Things that will *only* appear in rcfiles (not at the command line).
248 # Make sure there's a space before each end of line (they get auto-joined!)
248 # Make sure there's a space before each end of line (they get auto-joined!)
249 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
249 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
250 qw_lol: 'import_some ',
250 qw_lol: 'import_some ',
251 # for things with embedded whitespace:
251 # for things with embedded whitespace:
252 list_strings:'execute alias readline_parse_and_bind ',
252 list_strings:'execute alias readline_parse_and_bind ',
253 # Regular strings need no conversion:
253 # Regular strings need no conversion:
254 None:'readline_remove_delims ',
254 None:'readline_remove_delims ',
255 }
255 }
256 # Default values for these
256 # Default values for these
257 rc_def = Struct(include = [],
257 rc_def = Struct(include = [],
258 import_mod = [],
258 import_mod = [],
259 import_all = [],
259 import_all = [],
260 import_some = [[]],
260 import_some = [[]],
261 execute = [],
261 execute = [],
262 execfile = [],
262 execfile = [],
263 alias = [],
263 alias = [],
264 readline_parse_and_bind = [],
264 readline_parse_and_bind = [],
265 readline_remove_delims = '',
265 readline_remove_delims = '',
266 )
266 )
267
267
268 # Build the type conversion dictionary from the above tables:
268 # Build the type conversion dictionary from the above tables:
269 typeconv = rcfile_opts.copy()
269 typeconv = rcfile_opts.copy()
270 typeconv.update(optstr2types(cmdline_opts))
270 typeconv.update(optstr2types(cmdline_opts))
271
271
272 # FIXME: the None key appears in both, put that back together by hand. Ugly!
272 # FIXME: the None key appears in both, put that back together by hand. Ugly!
273 typeconv[None] += ' ' + rcfile_opts[None]
273 typeconv[None] += ' ' + rcfile_opts[None]
274
274
275 # Remove quotes at ends of all strings (used to protect spaces)
275 # Remove quotes at ends of all strings (used to protect spaces)
276 typeconv[unquote_ends] = typeconv[None]
276 typeconv[unquote_ends] = typeconv[None]
277 del typeconv[None]
277 del typeconv[None]
278
278
279 # Build the list we'll use to make all config decisions with defaults:
279 # Build the list we'll use to make all config decisions with defaults:
280 opts_all = opts_def.copy()
280 opts_all = opts_def.copy()
281 opts_all.update(rc_def)
281 opts_all.update(rc_def)
282
282
283 # Build conflict resolver for recursive loading of config files:
283 # Build conflict resolver for recursive loading of config files:
284 # - preserve means the outermost file maintains the value, it is not
284 # - preserve means the outermost file maintains the value, it is not
285 # overwritten if an included file has the same key.
285 # overwritten if an included file has the same key.
286 # - add_flip applies + to the two values, so it better make sense to add
286 # - add_flip applies + to the two values, so it better make sense to add
287 # those types of keys. But it flips them first so that things loaded
287 # those types of keys. But it flips them first so that things loaded
288 # deeper in the inclusion chain have lower precedence.
288 # deeper in the inclusion chain have lower precedence.
289 conflict = {'preserve': ' '.join([ typeconv[int],
289 conflict = {'preserve': ' '.join([ typeconv[int],
290 typeconv[unquote_ends] ]),
290 typeconv[unquote_ends] ]),
291 'add_flip': ' '.join([ typeconv[qwflat],
291 'add_flip': ' '.join([ typeconv[qwflat],
292 typeconv[qw_lol],
292 typeconv[qw_lol],
293 typeconv[list_strings] ])
293 typeconv[list_strings] ])
294 }
294 }
295
295
296 # Now actually process the command line
296 # Now actually process the command line
297 getopt = DPyGetOpt.DPyGetOpt()
297 getopt = DPyGetOpt.DPyGetOpt()
298 getopt.setIgnoreCase(0)
298 getopt.setIgnoreCase(0)
299
299
300 getopt.parseConfiguration(opts_names)
300 getopt.parseConfiguration(opts_names)
301
301
302 try:
302 try:
303 getopt.processArguments(argv)
303 getopt.processArguments(argv)
304 except:
304 except:
305 print cmd_line_usage
305 print cmd_line_usage
306 warn('\nError in Arguments: ' + `sys.exc_value`)
306 warn('\nError in Arguments: ' + `sys.exc_value`)
307 sys.exit(1)
307 sys.exit(1)
308
308
309 # convert the options dict to a struct for much lighter syntax later
309 # convert the options dict to a struct for much lighter syntax later
310 opts = Struct(getopt.optionValues)
310 opts = Struct(getopt.optionValues)
311 args = getopt.freeValues
311 args = getopt.freeValues
312
312
313 # this is the struct (which has default values at this point) with which
313 # this is the struct (which has default values at this point) with which
314 # we make all decisions:
314 # we make all decisions:
315 opts_all.update(opts)
315 opts_all.update(opts)
316
316
317 # Options that force an immediate exit
317 # Options that force an immediate exit
318 if opts_all.help:
318 if opts_all.help:
319 page(cmd_line_usage)
319 page(cmd_line_usage)
320 sys.exit()
320 sys.exit()
321
321
322 if opts_all.Version:
322 if opts_all.Version:
323 print __version__
323 print __version__
324 sys.exit()
324 sys.exit()
325
325
326 if opts_all.magic_docstrings:
326 if opts_all.magic_docstrings:
327 IP.magic_magic('-latex')
327 IP.magic_magic('-latex')
328 sys.exit()
328 sys.exit()
329
329
330 # add personal ipythondir to sys.path so that users can put things in
330 # add personal ipythondir to sys.path so that users can put things in
331 # there for customization
331 # there for customization
332 sys.path.append(os.path.abspath(opts_all.ipythondir))
332 sys.path.append(os.path.abspath(opts_all.ipythondir))
333
333
334 # Create user config directory if it doesn't exist. This must be done
334 # Create user config directory if it doesn't exist. This must be done
335 # *after* getting the cmd line options.
335 # *after* getting the cmd line options.
336 if not os.path.isdir(opts_all.ipythondir):
336 if not os.path.isdir(opts_all.ipythondir):
337 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
337 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
338
338
339 # upgrade user config files while preserving a copy of the originals
339 # upgrade user config files while preserving a copy of the originals
340 if opts_all.upgrade:
340 if opts_all.upgrade:
341 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
341 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
342
342
343 # check mutually exclusive options in the *original* command line
343 # check mutually exclusive options in the *original* command line
344 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
344 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
345 qw('classic profile'),qw('classic rcfile')])
345 qw('classic profile'),qw('classic rcfile')])
346
346
347 #---------------------------------------------------------------------------
347 #---------------------------------------------------------------------------
348 # Log replay
348 # Log replay
349
349
350 # if -logplay, we need to 'become' the other session. That basically means
350 # if -logplay, we need to 'become' the other session. That basically means
351 # replacing the current command line environment with that of the old
351 # replacing the current command line environment with that of the old
352 # session and moving on.
352 # session and moving on.
353
353
354 # this is needed so that later we know we're in session reload mode, as
354 # this is needed so that later we know we're in session reload mode, as
355 # opts_all will get overwritten:
355 # opts_all will get overwritten:
356 load_logplay = 0
356 load_logplay = 0
357
357
358 if opts_all.logplay:
358 if opts_all.logplay:
359 load_logplay = opts_all.logplay
359 load_logplay = opts_all.logplay
360 opts_debug_save = opts_all.debug
360 opts_debug_save = opts_all.debug
361 try:
361 try:
362 logplay = open(opts_all.logplay)
362 logplay = open(opts_all.logplay)
363 except IOError:
363 except IOError:
364 if opts_all.debug: IP.InteractiveTB()
364 if opts_all.debug: IP.InteractiveTB()
365 warn('Could not open logplay file '+`opts_all.logplay`)
365 warn('Could not open logplay file '+`opts_all.logplay`)
366 # restore state as if nothing had happened and move on, but make
366 # restore state as if nothing had happened and move on, but make
367 # sure that later we don't try to actually load the session file
367 # sure that later we don't try to actually load the session file
368 logplay = None
368 logplay = None
369 load_logplay = 0
369 load_logplay = 0
370 del opts_all.logplay
370 del opts_all.logplay
371 else:
371 else:
372 try:
372 try:
373 logplay.readline()
373 logplay.readline()
374 logplay.readline();
374 logplay.readline();
375 # this reloads that session's command line
375 # this reloads that session's command line
376 cmd = logplay.readline()[6:]
376 cmd = logplay.readline()[6:]
377 exec cmd
377 exec cmd
378 # restore the true debug flag given so that the process of
378 # restore the true debug flag given so that the process of
379 # session loading itself can be monitored.
379 # session loading itself can be monitored.
380 opts.debug = opts_debug_save
380 opts.debug = opts_debug_save
381 # save the logplay flag so later we don't overwrite the log
381 # save the logplay flag so later we don't overwrite the log
382 opts.logplay = load_logplay
382 opts.logplay = load_logplay
383 # now we must update our own structure with defaults
383 # now we must update our own structure with defaults
384 opts_all.update(opts)
384 opts_all.update(opts)
385 # now load args
385 # now load args
386 cmd = logplay.readline()[6:]
386 cmd = logplay.readline()[6:]
387 exec cmd
387 exec cmd
388 logplay.close()
388 logplay.close()
389 except:
389 except:
390 logplay.close()
390 logplay.close()
391 if opts_all.debug: IP.InteractiveTB()
391 if opts_all.debug: IP.InteractiveTB()
392 warn("Logplay file lacking full configuration information.\n"
392 warn("Logplay file lacking full configuration information.\n"
393 "I'll try to read it, but some things may not work.")
393 "I'll try to read it, but some things may not work.")
394
394
395 #-------------------------------------------------------------------------
395 #-------------------------------------------------------------------------
396 # set up output traps: catch all output from files, being run, modules
396 # set up output traps: catch all output from files, being run, modules
397 # loaded, etc. Then give it to the user in a clean form at the end.
397 # loaded, etc. Then give it to the user in a clean form at the end.
398
398
399 msg_out = 'Output messages. '
399 msg_out = 'Output messages. '
400 msg_err = 'Error messages. '
400 msg_err = 'Error messages. '
401 msg_sep = '\n'
401 msg_sep = '\n'
402 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
402 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
403 msg_err,msg_sep,debug,
403 msg_err,msg_sep,debug,
404 quiet_out=1),
404 quiet_out=1),
405 user_exec = OutputTrap('User File Execution',msg_out,
405 user_exec = OutputTrap('User File Execution',msg_out,
406 msg_err,msg_sep,debug),
406 msg_err,msg_sep,debug),
407 logplay = OutputTrap('Log Loader',msg_out,
407 logplay = OutputTrap('Log Loader',msg_out,
408 msg_err,msg_sep,debug),
408 msg_err,msg_sep,debug),
409 summary = ''
409 summary = ''
410 )
410 )
411
411
412 #-------------------------------------------------------------------------
412 #-------------------------------------------------------------------------
413 # Process user ipythonrc-type configuration files
413 # Process user ipythonrc-type configuration files
414
414
415 # turn on output trapping and log to msg.config
415 # turn on output trapping and log to msg.config
416 # remember that with debug on, trapping is actually disabled
416 # remember that with debug on, trapping is actually disabled
417 msg.config.trap_all()
417 msg.config.trap_all()
418
418
419 # look for rcfile in current or default directory
419 # look for rcfile in current or default directory
420 try:
420 try:
421 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
421 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
422 except IOError:
422 except IOError:
423 if opts_all.debug: IP.InteractiveTB()
423 if opts_all.debug: IP.InteractiveTB()
424 warn('Configuration file %s not found. Ignoring request.'
424 warn('Configuration file %s not found. Ignoring request.'
425 % (opts_all.rcfile) )
425 % (opts_all.rcfile) )
426
426
427 # 'profiles' are a shorthand notation for config filenames
427 # 'profiles' are a shorthand notation for config filenames
428 profile_handled_by_legacy = False
428 profile_handled_by_legacy = False
429 if opts_all.profile:
429 if opts_all.profile:
430
430
431 try:
431 try:
432 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
432 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
433 + rc_suffix,
433 + rc_suffix,
434 opts_all.ipythondir)
434 opts_all.ipythondir)
435 profile_handled_by_legacy = True
435 profile_handled_by_legacy = True
436 except IOError:
436 except IOError:
437 if opts_all.debug: IP.InteractiveTB()
437 if opts_all.debug: IP.InteractiveTB()
438 opts.profile = '' # remove profile from options if invalid
438 opts.profile = '' # remove profile from options if invalid
439 # We won't warn anymore, primary method is ipy_profile_PROFNAME
439 # We won't warn anymore, primary method is ipy_profile_PROFNAME
440 # which does trigger a warning.
440 # which does trigger a warning.
441
441
442 # load the config file
442 # load the config file
443 rcfiledata = None
443 rcfiledata = None
444 if opts_all.quick:
444 if opts_all.quick:
445 print 'Launching IPython in quick mode. No config file read.'
445 print 'Launching IPython in quick mode. No config file read.'
446 elif opts_all.rcfile:
446 elif opts_all.rcfile:
447 try:
447 try:
448 cfg_loader = ConfigLoader(conflict)
448 cfg_loader = ConfigLoader(conflict)
449 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
449 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
450 'include',opts_all.ipythondir,
450 'include',opts_all.ipythondir,
451 purge = 1,
451 purge = 1,
452 unique = conflict['preserve'])
452 unique = conflict['preserve'])
453 except:
453 except:
454 IP.InteractiveTB()
454 IP.InteractiveTB()
455 warn('Problems loading configuration file '+
455 warn('Problems loading configuration file '+
456 `opts_all.rcfile`+
456 `opts_all.rcfile`+
457 '\nStarting with default -bare bones- configuration.')
457 '\nStarting with default -bare bones- configuration.')
458 else:
458 else:
459 warn('No valid configuration file found in either currrent directory\n'+
459 warn('No valid configuration file found in either currrent directory\n'+
460 'or in the IPython config. directory: '+`opts_all.ipythondir`+
460 'or in the IPython config. directory: '+`opts_all.ipythondir`+
461 '\nProceeding with internal defaults.')
461 '\nProceeding with internal defaults.')
462
462
463 #------------------------------------------------------------------------
463 #------------------------------------------------------------------------
464 # Set exception handlers in mode requested by user.
464 # Set exception handlers in mode requested by user.
465 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
465 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
466 IP.magic_xmode(opts_all.xmode)
466 IP.magic_xmode(opts_all.xmode)
467 otrap.release_out()
467 otrap.release_out()
468
468
469 #------------------------------------------------------------------------
469 #------------------------------------------------------------------------
470 # Execute user config
470 # Execute user config
471
471
472 # Create a valid config structure with the right precedence order:
472 # Create a valid config structure with the right precedence order:
473 # defaults < rcfile < command line. This needs to be in the instance, so
473 # defaults < rcfile < command line. This needs to be in the instance, so
474 # that method calls below that rely on it find it.
474 # that method calls below that rely on it find it.
475 IP.rc = rc_def.copy()
475 IP.rc = rc_def.copy()
476
476
477 # Work with a local alias inside this routine to avoid unnecessary
477 # Work with a local alias inside this routine to avoid unnecessary
478 # attribute lookups.
478 # attribute lookups.
479 IP_rc = IP.rc
479 IP_rc = IP.rc
480
480
481 IP_rc.update(opts_def)
481 IP_rc.update(opts_def)
482 if rcfiledata:
482 if rcfiledata:
483 # now we can update
483 # now we can update
484 IP_rc.update(rcfiledata)
484 IP_rc.update(rcfiledata)
485 IP_rc.update(opts)
485 IP_rc.update(opts)
486 IP_rc.update(rc_override)
486 IP_rc.update(rc_override)
487
487
488 # Store the original cmd line for reference:
488 # Store the original cmd line for reference:
489 IP_rc.opts = opts
489 IP_rc.opts = opts
490 IP_rc.args = args
490 IP_rc.args = args
491
491
492 # create a *runtime* Struct like rc for holding parameters which may be
492 # create a *runtime* Struct like rc for holding parameters which may be
493 # created and/or modified by runtime user extensions.
493 # created and/or modified by runtime user extensions.
494 IP.runtime_rc = Struct()
494 IP.runtime_rc = Struct()
495
495
496 # from this point on, all config should be handled through IP_rc,
496 # from this point on, all config should be handled through IP_rc,
497 # opts* shouldn't be used anymore.
497 # opts* shouldn't be used anymore.
498
498
499
499
500 # update IP_rc with some special things that need manual
500 # update IP_rc with some special things that need manual
501 # tweaks. Basically options which affect other options. I guess this
501 # tweaks. Basically options which affect other options. I guess this
502 # should just be written so that options are fully orthogonal and we
502 # should just be written so that options are fully orthogonal and we
503 # wouldn't worry about this stuff!
503 # wouldn't worry about this stuff!
504
504
505 if IP_rc.classic:
505 if IP_rc.classic:
506 IP_rc.quick = 1
506 IP_rc.quick = 1
507 IP_rc.cache_size = 0
507 IP_rc.cache_size = 0
508 IP_rc.pprint = 0
508 IP_rc.pprint = 0
509 IP_rc.prompt_in1 = '>>> '
509 IP_rc.prompt_in1 = '>>> '
510 IP_rc.prompt_in2 = '... '
510 IP_rc.prompt_in2 = '... '
511 IP_rc.prompt_out = ''
511 IP_rc.prompt_out = ''
512 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
512 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
513 IP_rc.colors = 'NoColor'
513 IP_rc.colors = 'NoColor'
514 IP_rc.xmode = 'Plain'
514 IP_rc.xmode = 'Plain'
515
515
516 IP.pre_config_initialization()
516 IP.pre_config_initialization()
517 # configure readline
517 # configure readline
518 # Define the history file for saving commands in between sessions
518 # Define the history file for saving commands in between sessions
519 if IP_rc.profile:
519 if IP_rc.profile:
520 histfname = 'history-%s' % IP_rc.profile
520 histfname = 'history-%s' % IP_rc.profile
521 else:
521 else:
522 histfname = 'history'
522 histfname = 'history'
523 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
523 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
524
524
525 # update exception handlers with rc file status
525 # update exception handlers with rc file status
526 otrap.trap_out() # I don't want these messages ever.
526 otrap.trap_out() # I don't want these messages ever.
527 IP.magic_xmode(IP_rc.xmode)
527 IP.magic_xmode(IP_rc.xmode)
528 otrap.release_out()
528 otrap.release_out()
529
529
530 # activate logging if requested and not reloading a log
530 # activate logging if requested and not reloading a log
531 if IP_rc.logplay:
531 if IP_rc.logplay:
532 IP.magic_logstart(IP_rc.logplay + ' append')
532 IP.magic_logstart(IP_rc.logplay + ' append')
533 elif IP_rc.logfile:
533 elif IP_rc.logfile:
534 IP.magic_logstart(IP_rc.logfile)
534 IP.magic_logstart(IP_rc.logfile)
535 elif IP_rc.log:
535 elif IP_rc.log:
536 IP.magic_logstart()
536 IP.magic_logstart()
537
537
538 # find user editor so that it we don't have to look it up constantly
538 # find user editor so that it we don't have to look it up constantly
539 if IP_rc.editor.strip()=='0':
539 if IP_rc.editor.strip()=='0':
540 try:
540 try:
541 ed = os.environ['EDITOR']
541 ed = os.environ['EDITOR']
542 except KeyError:
542 except KeyError:
543 if os.name == 'posix':
543 if os.name == 'posix':
544 ed = 'vi' # the only one guaranteed to be there!
544 ed = 'vi' # the only one guaranteed to be there!
545 else:
545 else:
546 ed = 'notepad' # same in Windows!
546 ed = 'notepad' # same in Windows!
547 IP_rc.editor = ed
547 IP_rc.editor = ed
548
548
549 # Keep track of whether this is an embedded instance or not (useful for
549 # Keep track of whether this is an embedded instance or not (useful for
550 # post-mortems).
550 # post-mortems).
551 IP_rc.embedded = IP.embedded
551 IP_rc.embedded = IP.embedded
552
552
553 # Recursive reload
553 # Recursive reload
554 try:
554 try:
555 from IPython import deep_reload
555 from IPython import deep_reload
556 if IP_rc.deep_reload:
556 if IP_rc.deep_reload:
557 __builtin__.reload = deep_reload.reload
557 __builtin__.reload = deep_reload.reload
558 else:
558 else:
559 __builtin__.dreload = deep_reload.reload
559 __builtin__.dreload = deep_reload.reload
560 del deep_reload
560 del deep_reload
561 except ImportError:
561 except ImportError:
562 pass
562 pass
563
563
564 # Save the current state of our namespace so that the interactive shell
564 # Save the current state of our namespace so that the interactive shell
565 # can later know which variables have been created by us from config files
565 # can later know which variables have been created by us from config files
566 # and loading. This way, loading a file (in any way) is treated just like
566 # and loading. This way, loading a file (in any way) is treated just like
567 # defining things on the command line, and %who works as expected.
567 # defining things on the command line, and %who works as expected.
568
568
569 # DON'T do anything that affects the namespace beyond this point!
569 # DON'T do anything that affects the namespace beyond this point!
570 IP.internal_ns.update(__main__.__dict__)
570 IP.internal_ns.update(__main__.__dict__)
571
571
572 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
572 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
573
573
574 # Now run through the different sections of the users's config
574 # Now run through the different sections of the users's config
575 if IP_rc.debug:
575 if IP_rc.debug:
576 print 'Trying to execute the following configuration structure:'
576 print 'Trying to execute the following configuration structure:'
577 print '(Things listed first are deeper in the inclusion tree and get'
577 print '(Things listed first are deeper in the inclusion tree and get'
578 print 'loaded first).\n'
578 print 'loaded first).\n'
579 pprint(IP_rc.__dict__)
579 pprint(IP_rc.__dict__)
580
580
581 for mod in IP_rc.import_mod:
581 for mod in IP_rc.import_mod:
582 try:
582 try:
583 exec 'import '+mod in IP.user_ns
583 exec 'import '+mod in IP.user_ns
584 except :
584 except :
585 IP.InteractiveTB()
585 IP.InteractiveTB()
586 import_fail_info(mod)
586 import_fail_info(mod)
587
587
588 for mod_fn in IP_rc.import_some:
588 for mod_fn in IP_rc.import_some:
589 if not mod_fn == []:
589 if not mod_fn == []:
590 mod,fn = mod_fn[0],','.join(mod_fn[1:])
590 mod,fn = mod_fn[0],','.join(mod_fn[1:])
591 try:
591 try:
592 exec 'from '+mod+' import '+fn in IP.user_ns
592 exec 'from '+mod+' import '+fn in IP.user_ns
593 except :
593 except :
594 IP.InteractiveTB()
594 IP.InteractiveTB()
595 import_fail_info(mod,fn)
595 import_fail_info(mod,fn)
596
596
597 for mod in IP_rc.import_all:
597 for mod in IP_rc.import_all:
598 try:
598 try:
599 exec 'from '+mod+' import *' in IP.user_ns
599 exec 'from '+mod+' import *' in IP.user_ns
600 except :
600 except :
601 IP.InteractiveTB()
601 IP.InteractiveTB()
602 import_fail_info(mod)
602 import_fail_info(mod)
603
603
604 for code in IP_rc.execute:
604 for code in IP_rc.execute:
605 try:
605 try:
606 exec code in IP.user_ns
606 exec code in IP.user_ns
607 except:
607 except:
608 IP.InteractiveTB()
608 IP.InteractiveTB()
609 warn('Failure executing code: ' + `code`)
609 warn('Failure executing code: ' + `code`)
610
610
611 # Execute the files the user wants in ipythonrc
611 # Execute the files the user wants in ipythonrc
612 for file in IP_rc.execfile:
612 for file in IP_rc.execfile:
613 try:
613 try:
614 file = filefind(file,sys.path+[IPython_dir])
614 file = filefind(file,sys.path+[IPython_dir])
615 except IOError:
615 except IOError:
616 warn(itpl('File $file not found. Skipping it.'))
616 warn(itpl('File $file not found. Skipping it.'))
617 else:
617 else:
618 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
618 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
619
619
620 # finally, try importing ipy_*_conf for final configuration
620 # finally, try importing ipy_*_conf for final configuration
621 try:
621 try:
622 import ipy_system_conf
622 import ipy_system_conf
623 except ImportError:
623 except ImportError:
624 if opts_all.debug: IP.InteractiveTB()
624 if opts_all.debug: IP.InteractiveTB()
625 warn("Could not import 'ipy_system_conf'")
625 warn("Could not import 'ipy_system_conf'")
626 except:
626 except:
627 IP.InteractiveTB()
627 IP.InteractiveTB()
628 import_fail_info('ipy_system_conf')
628 import_fail_info('ipy_system_conf')
629
629
630 # only import prof module if ipythonrc-PROF was not found
630 # only import prof module if ipythonrc-PROF was not found
631 if opts_all.profile and not profile_handled_by_legacy:
631 if opts_all.profile and not profile_handled_by_legacy:
632 profmodname = 'ipy_profile_' + opts_all.profile
632 profmodname = 'ipy_profile_' + opts_all.profile
633 try:
633 try:
634 __import__(profmodname)
634 __import__(profmodname)
635 except:
635 except:
636 IP.InteractiveTB()
636 IP.InteractiveTB()
637 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
637 print "Error importing",profmodname,"- perhaps you should run %upgrade?"
638 import_fail_info(profmodname)
638 import_fail_info(profmodname)
639 else:
639 else:
640 import ipy_profile_none
640 import ipy_profile_none
641 try:
641 try:
642 import ipy_user_conf
642 import ipy_user_conf
643
643
644 except:
644 except:
645 conf = opts_all.ipythondir + "/ipy_user_conf.py"
645 conf = opts_all.ipythondir + "/ipy_user_conf.py"
646 IP.InteractiveTB()
646 IP.InteractiveTB()
647 if not os.path.isfile(conf):
647 if not os.path.isfile(conf):
648 warn(conf + ' does not exist, please run %upgrade!')
648 warn(conf + ' does not exist, please run %upgrade!')
649
649
650 import_fail_info("ipy_user_conf")
650 import_fail_info("ipy_user_conf")
651
651
652 # finally, push the argv to options again to ensure highest priority
652 # finally, push the argv to options again to ensure highest priority
653 IP_rc.update(opts)
653 IP_rc.update(opts)
654
654
655 # release stdout and stderr and save config log into a global summary
655 # release stdout and stderr and save config log into a global summary
656 msg.config.release_all()
656 msg.config.release_all()
657 if IP_rc.messages:
657 if IP_rc.messages:
658 msg.summary += msg.config.summary_all()
658 msg.summary += msg.config.summary_all()
659
659
660 #------------------------------------------------------------------------
660 #------------------------------------------------------------------------
661 # Setup interactive session
661 # Setup interactive session
662
662
663 # Now we should be fully configured. We can then execute files or load
663 # Now we should be fully configured. We can then execute files or load
664 # things only needed for interactive use. Then we'll open the shell.
664 # things only needed for interactive use. Then we'll open the shell.
665
665
666 # Take a snapshot of the user namespace before opening the shell. That way
666 # Take a snapshot of the user namespace before opening the shell. That way
667 # we'll be able to identify which things were interactively defined and
667 # we'll be able to identify which things were interactively defined and
668 # which were defined through config files.
668 # which were defined through config files.
669 IP.user_config_ns.update(IP.user_ns)
669 IP.user_config_ns.update(IP.user_ns)
670
670
671 # Force reading a file as if it were a session log. Slower but safer.
671 # Force reading a file as if it were a session log. Slower but safer.
672 if load_logplay:
672 if load_logplay:
673 print 'Replaying log...'
673 print 'Replaying log...'
674 try:
674 try:
675 if IP_rc.debug:
675 if IP_rc.debug:
676 logplay_quiet = 0
676 logplay_quiet = 0
677 else:
677 else:
678 logplay_quiet = 1
678 logplay_quiet = 1
679
679
680 msg.logplay.trap_all()
680 msg.logplay.trap_all()
681 IP.safe_execfile(load_logplay,IP.user_ns,
681 IP.safe_execfile(load_logplay,IP.user_ns,
682 islog = 1, quiet = logplay_quiet)
682 islog = 1, quiet = logplay_quiet)
683 msg.logplay.release_all()
683 msg.logplay.release_all()
684 if IP_rc.messages:
684 if IP_rc.messages:
685 msg.summary += msg.logplay.summary_all()
685 msg.summary += msg.logplay.summary_all()
686 except:
686 except:
687 warn('Problems replaying logfile %s.' % load_logplay)
687 warn('Problems replaying logfile %s.' % load_logplay)
688 IP.InteractiveTB()
688 IP.InteractiveTB()
689
689
690 # Load remaining files in command line
690 # Load remaining files in command line
691 msg.user_exec.trap_all()
691 msg.user_exec.trap_all()
692
692
693 # Do NOT execute files named in the command line as scripts to be loaded
693 # Do NOT execute files named in the command line as scripts to be loaded
694 # by embedded instances. Doing so has the potential for an infinite
694 # by embedded instances. Doing so has the potential for an infinite
695 # recursion if there are exceptions thrown in the process.
695 # recursion if there are exceptions thrown in the process.
696
696
697 # XXX FIXME: the execution of user files should be moved out to after
697 # XXX FIXME: the execution of user files should be moved out to after
698 # ipython is fully initialized, just as if they were run via %run at the
698 # ipython is fully initialized, just as if they were run via %run at the
699 # ipython prompt. This would also give them the benefit of ipython's
699 # ipython prompt. This would also give them the benefit of ipython's
700 # nice tracebacks.
700 # nice tracebacks.
701
701
702 if (not embedded and IP_rc.args and
702 if (not embedded and IP_rc.args and
703 not IP_rc.args[0].lower().endswith('.ipy')):
703 not IP_rc.args[0].lower().endswith('.ipy')):
704 name_save = IP.user_ns['__name__']
704 name_save = IP.user_ns['__name__']
705 IP.user_ns['__name__'] = '__main__'
705 IP.user_ns['__name__'] = '__main__'
706 # Set our own excepthook in case the user code tries to call it
706 # Set our own excepthook in case the user code tries to call it
707 # directly. This prevents triggering the IPython crash handler.
707 # directly. This prevents triggering the IPython crash handler.
708 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
708 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
709
709
710 save_argv = sys.argv[1:] # save it for later restoring
710 save_argv = sys.argv[1:] # save it for later restoring
711
711
712 sys.argv = args
712 sys.argv = args
713
713
714 try:
714 try:
715 IP.safe_execfile(args[0], IP.user_ns)
715 IP.safe_execfile(args[0], IP.user_ns)
716 finally:
716 finally:
717 # Reset our crash handler in place
717 # Reset our crash handler in place
718 sys.excepthook = old_excepthook
718 sys.excepthook = old_excepthook
719 sys.argv[:] = save_argv
719 sys.argv[:] = save_argv
720 IP.user_ns['__name__'] = name_save
720 IP.user_ns['__name__'] = name_save
721
721
722 msg.user_exec.release_all()
722 msg.user_exec.release_all()
723
723
724 if IP_rc.messages:
724 if IP_rc.messages:
725 msg.summary += msg.user_exec.summary_all()
725 msg.summary += msg.user_exec.summary_all()
726
726
727 # since we can't specify a null string on the cmd line, 0 is the equivalent:
727 # since we can't specify a null string on the cmd line, 0 is the equivalent:
728 if IP_rc.nosep:
728 if IP_rc.nosep:
729 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
729 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
730 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
730 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
731 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
731 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
732 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
732 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
733 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
733 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
734 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
734 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
735 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
735 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
736
736
737 # Determine how many lines at the bottom of the screen are needed for
737 # Determine how many lines at the bottom of the screen are needed for
738 # showing prompts, so we can know wheter long strings are to be printed or
738 # showing prompts, so we can know wheter long strings are to be printed or
739 # paged:
739 # paged:
740 num_lines_bot = IP_rc.separate_in.count('\n')+1
740 num_lines_bot = IP_rc.separate_in.count('\n')+1
741 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
741 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
742
742
743 # configure startup banner
743 # configure startup banner
744 if IP_rc.c: # regular python doesn't print the banner with -c
744 if IP_rc.c: # regular python doesn't print the banner with -c
745 IP_rc.banner = 0
745 IP_rc.banner = 0
746 if IP_rc.banner:
746 if IP_rc.banner:
747 BANN_P = IP.BANNER_PARTS
747 BANN_P = IP.BANNER_PARTS
748 else:
748 else:
749 BANN_P = []
749 BANN_P = []
750
750
751 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
751 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
752
752
753 # add message log (possibly empty)
753 # add message log (possibly empty)
754 if msg.summary: BANN_P.append(msg.summary)
754 if msg.summary: BANN_P.append(msg.summary)
755 # Final banner is a string
755 # Final banner is a string
756 IP.BANNER = '\n'.join(BANN_P)
756 IP.BANNER = '\n'.join(BANN_P)
757
757
758 # Finalize the IPython instance. This assumes the rc structure is fully
758 # Finalize the IPython instance. This assumes the rc structure is fully
759 # in place.
759 # in place.
760 IP.post_config_initialization()
760 IP.post_config_initialization()
761
761
762 return IP
762 return IP
763 #************************ end of file <ipmaker.py> **************************
763 #************************ end of file <ipmaker.py> **************************
@@ -1,643 +1,652 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 #*****************************************************************************
2 #*****************************************************************************
3 # Copyright (C) 2001-2004 Fernando Perez. <fperez@colorado.edu>
3 # Copyright (C) 2001-2004 Fernando Perez. <fperez@colorado.edu>
4 #
4 #
5 # Distributed under the terms of the BSD License. The full license is in
5 # Distributed under the terms of the BSD License. The full license is in
6 # the file COPYING, distributed as part of this software.
6 # the file COPYING, distributed as part of this software.
7 #*****************************************************************************
7 #*****************************************************************************
8
8
9 # $Id: usage.py 2683 2007-08-28 20:01:15Z vivainio $
9 # $Id: usage.py 2710 2007-09-04 21:10:10Z vivainio $
10
10
11 from IPython import Release
11 from IPython import Release
12 __author__ = '%s <%s>' % Release.authors['Fernando']
12 __author__ = '%s <%s>' % Release.authors['Fernando']
13 __license__ = Release.license
13 __license__ = Release.license
14 __version__ = Release.version
14 __version__ = Release.version
15
15
16 __doc__ = """
16 __doc__ = """
17 IPython -- An enhanced Interactive Python
17 IPython -- An enhanced Interactive Python
18 =========================================
18 =========================================
19
19
20 A Python shell with automatic history (input and output), dynamic object
20 A Python shell with automatic history (input and output), dynamic object
21 introspection, easier configuration, command completion, access to the system
21 introspection, easier configuration, command completion, access to the system
22 shell and more.
22 shell and more.
23
23
24 IPython can also be embedded in running programs. See EMBEDDING below.
24 IPython can also be embedded in running programs. See EMBEDDING below.
25
25
26
26
27 USAGE
27 USAGE
28 ipython [options] files
28 ipython [options] files
29
29
30 If invoked with no options, it executes all the files listed in
30 If invoked with no options, it executes all the files listed in
31 sequence and drops you into the interpreter while still acknowledging
31 sequence and drops you into the interpreter while still acknowledging
32 any options you may have set in your ipythonrc file. This behavior is
32 any options you may have set in your ipythonrc file. This behavior is
33 different from standard Python, which when called as python -i will
33 different from standard Python, which when called as python -i will
34 only execute one file and will ignore your configuration setup.
34 only execute one file and will ignore your configuration setup.
35
35
36 Please note that some of the configuration options are not available at
36 Please note that some of the configuration options are not available at
37 the command line, simply because they are not practical here. Look into
37 the command line, simply because they are not practical here. Look into
38 your ipythonrc configuration file for details on those. This file
38 your ipythonrc configuration file for details on those. This file
39 typically installed in the $HOME/.ipython directory.
39 typically installed in the $HOME/.ipython directory.
40
40
41 For Windows users, $HOME resolves to C:\\Documents and
41 For Windows users, $HOME resolves to C:\\Documents and
42 Settings\\YourUserName in most instances, and _ipython is used instead
42 Settings\\YourUserName in most instances, and _ipython is used instead
43 of .ipython, since some Win32 programs have problems with dotted names
43 of .ipython, since some Win32 programs have problems with dotted names
44 in directories.
44 in directories.
45
45
46 In the rest of this text, we will refer to this directory as
46 In the rest of this text, we will refer to this directory as
47 IPYTHONDIR.
47 IPYTHONDIR.
48
48
49
49
50 SPECIAL THREADING OPTIONS
50 SPECIAL THREADING OPTIONS
51 The following special options are ONLY valid at the beginning of the
51 The following special options are ONLY valid at the beginning of the
52 command line, and not later. This is because they control the initial-
52 command line, and not later. This is because they control the initial-
53 ization of ipython itself, before the normal option-handling mechanism
53 ization of ipython itself, before the normal option-handling mechanism
54 is active.
54 is active.
55
55
56 -gthread, -qthread, -q4thread, -wthread, -pylab
56 -gthread, -qthread, -q4thread, -wthread, -pylab
57
57
58 Only ONE of these can be given, and it can only be given as the
58 Only ONE of these can be given, and it can only be given as the
59 first option passed to IPython (it will have no effect in any
59 first option passed to IPython (it will have no effect in any
60 other position). They provide threading support for the GTK, QT
60 other position). They provide threading support for the GTK, QT
61 and WXWidgets toolkits, and for the matplotlib library.
61 and WXWidgets toolkits, and for the matplotlib library.
62
62
63 With any of the first four options, IPython starts running a
63 With any of the first four options, IPython starts running a
64 separate thread for the graphical toolkit's operation, so that
64 separate thread for the graphical toolkit's operation, so that
65 you can open and control graphical elements from within an
65 you can open and control graphical elements from within an
66 IPython command line, without blocking. All four provide
66 IPython command line, without blocking. All four provide
67 essentially the same functionality, respectively for GTK, QT3,
67 essentially the same functionality, respectively for GTK, QT3,
68 QT4 and WXWidgets (via their Python interfaces).
68 QT4 and WXWidgets (via their Python interfaces).
69
69
70 Note that with -wthread, you can additionally use the -wxversion
70 Note that with -wthread, you can additionally use the -wxversion
71 option to request a specific version of wx to be used. This
71 option to request a specific version of wx to be used. This
72 requires that you have the 'wxversion' Python module installed,
72 requires that you have the 'wxversion' Python module installed,
73 which is part of recent wxPython distributions.
73 which is part of recent wxPython distributions.
74
74
75 If -pylab is given, IPython loads special support for the mat-
75 If -pylab is given, IPython loads special support for the mat-
76 plotlib library (http://matplotlib.sourceforge.net), allowing
76 plotlib library (http://matplotlib.sourceforge.net), allowing
77 interactive usage of any of its backends as defined in the
77 interactive usage of any of its backends as defined in the
78 user's .matplotlibrc file. It automatically activates GTK, QT
78 user's .matplotlibrc file. It automatically activates GTK, QT
79 or WX threading for IPyhton if the choice of matplotlib backend
79 or WX threading for IPyhton if the choice of matplotlib backend
80 requires it. It also modifies the %run command to correctly
80 requires it. It also modifies the %run command to correctly
81 execute (without blocking) any matplotlib-based script which
81 execute (without blocking) any matplotlib-based script which
82 calls show() at the end.
82 calls show() at the end.
83
83
84 -tk The -g/q/q4/wthread options, and -pylab (if matplotlib is
84 -tk The -g/q/q4/wthread options, and -pylab (if matplotlib is
85 configured to use GTK, QT or WX), will normally block Tk
85 configured to use GTK, QT or WX), will normally block Tk
86 graphical interfaces. This means that when GTK, QT or WX
86 graphical interfaces. This means that when GTK, QT or WX
87 threading is active, any attempt to open a Tk GUI will result in
87 threading is active, any attempt to open a Tk GUI will result in
88 a dead window, and possibly cause the Python interpreter to
88 a dead window, and possibly cause the Python interpreter to
89 crash. An extra option, -tk, is available to address this
89 crash. An extra option, -tk, is available to address this
90 issue. It can ONLY be given as a SECOND option after any of the
90 issue. It can ONLY be given as a SECOND option after any of the
91 above (-gthread, -qthread, q4thread, -wthread or -pylab).
91 above (-gthread, -qthread, q4thread, -wthread or -pylab).
92
92
93 If -tk is given, IPython will try to coordinate Tk threading
93 If -tk is given, IPython will try to coordinate Tk threading
94 with GTK, QT or WX. This is however potentially unreliable, and
94 with GTK, QT or WX. This is however potentially unreliable, and
95 you will have to test on your platform and Python configuration
95 you will have to test on your platform and Python configuration
96 to determine whether it works for you. Debian users have
96 to determine whether it works for you. Debian users have
97 reported success, apparently due to the fact that Debian builds
97 reported success, apparently due to the fact that Debian builds
98 all of Tcl, Tk, Tkinter and Python with pthreads support. Under
98 all of Tcl, Tk, Tkinter and Python with pthreads support. Under
99 other Linux environments (such as Fedora Core 2/3), this option
99 other Linux environments (such as Fedora Core 2/3), this option
100 has caused random crashes and lockups of the Python interpreter.
100 has caused random crashes and lockups of the Python interpreter.
101 Under other operating systems (Mac OSX and Windows), you'll need
101 Under other operating systems (Mac OSX and Windows), you'll need
102 to try it to find out, since currently no user reports are
102 to try it to find out, since currently no user reports are
103 available.
103 available.
104
104
105 There is unfortunately no way for IPython to determine at run-
105 There is unfortunately no way for IPython to determine at run-
106 time whether -tk will work reliably or not, so you will need to
106 time whether -tk will work reliably or not, so you will need to
107 do some experiments before relying on it for regular work.
107 do some experiments before relying on it for regular work.
108
108
109 A WARNING ABOUT SIGNALS AND THREADS
109 A WARNING ABOUT SIGNALS AND THREADS
110
110
111 When any of the thread systems (GTK, QT or WX) are active, either
111 When any of the thread systems (GTK, QT or WX) are active, either
112 directly or via -pylab with a threaded backend, it is impossible to
112 directly or via -pylab with a threaded backend, it is impossible to
113 interrupt long-running Python code via Ctrl-C. IPython can not pass
113 interrupt long-running Python code via Ctrl-C. IPython can not pass
114 the KeyboardInterrupt exception (or the underlying SIGINT) across
114 the KeyboardInterrupt exception (or the underlying SIGINT) across
115 threads, so any long-running process started from IPython will run to
115 threads, so any long-running process started from IPython will run to
116 completion, or will have to be killed via an external (OS-based)
116 completion, or will have to be killed via an external (OS-based)
117 mechanism.
117 mechanism.
118
118
119 To the best of my knowledge, this limitation is imposed by the Python
119 To the best of my knowledge, this limitation is imposed by the Python
120 interpreter itself, and it comes from the difficulty of writing
120 interpreter itself, and it comes from the difficulty of writing
121 portable signal/threaded code. If any user is an expert on this topic
121 portable signal/threaded code. If any user is an expert on this topic
122 and can suggest a better solution, I would love to hear about it. In
122 and can suggest a better solution, I would love to hear about it. In
123 the IPython sources, look at the Shell.py module, and in particular at
123 the IPython sources, look at the Shell.py module, and in particular at
124 the runcode() method.
124 the runcode() method.
125
125
126 REGULAR OPTIONS
126 REGULAR OPTIONS
127 After the above threading options have been given, regular options can
127 After the above threading options have been given, regular options can
128 follow in any order. All options can be abbreviated to their shortest
128 follow in any order. All options can be abbreviated to their shortest
129 non-ambiguous form and are case-sensitive. One or two dashes can be
129 non-ambiguous form and are case-sensitive. One or two dashes can be
130 used. Some options have an alternate short form, indicated after a |.
130 used. Some options have an alternate short form, indicated after a |.
131
131
132 Most options can also be set from your ipythonrc configuration file.
132 Most options can also be set from your ipythonrc configuration file.
133 See the provided examples for assistance. Options given on the comman-
133 See the provided examples for assistance. Options given on the comman-
134 dline override the values set in the ipythonrc file.
134 dline override the values set in the ipythonrc file.
135
135
136 All options with a [no] prepended can be specified in negated form
136 All options with a [no] prepended can be specified in negated form
137 (using -nooption instead of -option) to turn the feature off.
137 (using -nooption instead of -option) to turn the feature off.
138
138
139 -h, --help
139 -h, --help
140 Show summary of options.
140 Show summary of options.
141
141
142 -pylab This can only be given as the first option passed to IPython (it
142 -pylab This can only be given as the first option passed to IPython (it
143 will have no effect in any other position). It adds special sup-
143 will have no effect in any other position). It adds special sup-
144 port for the matplotlib library (http://matplotlib.source-
144 port for the matplotlib library (http://matplotlib.source-
145 forge.net), allowing interactive usage of any of its backends as
145 forge.net), allowing interactive usage of any of its backends as
146 defined in the user's .matplotlibrc file. It automatically
146 defined in the user's .matplotlibrc file. It automatically
147 activates GTK or WX threading for IPyhton if the choice of mat-
147 activates GTK or WX threading for IPyhton if the choice of mat-
148 plotlib backend requires it. It also modifies the @run command
148 plotlib backend requires it. It also modifies the @run command
149 to correctly execute (without blocking) any matplotlib-based
149 to correctly execute (without blocking) any matplotlib-based
150 script which calls show() at the end.
150 script which calls show() at the end.
151
151
152 -autocall <val>
152 -autocall <val>
153 Make IPython automatically call any callable object even if you
153 Make IPython automatically call any callable object even if you
154 didn't type explicit parentheses. For example, 'str 43' becomes
154 didn't type explicit parentheses. For example, 'str 43' becomes
155 'str(43)' automatically. The value can be '0' to disable the
155 'str(43)' automatically. The value can be '0' to disable the
156 feature, '1' for 'smart' autocall, where it is not applied if
156 feature, '1' for 'smart' autocall, where it is not applied if
157 there are no more arguments on the line, and '2' for 'full'
157 there are no more arguments on the line, and '2' for 'full'
158 autocall, where all callable objects are automatically called
158 autocall, where all callable objects are automatically called
159 (even if no arguments are present). The default is '1'.
159 (even if no arguments are present). The default is '1'.
160
160
161 -[no]autoindent
161 -[no]autoindent
162 Turn automatic indentation on/off.
162 Turn automatic indentation on/off.
163
163
164 -[no]automagic
164 -[no]automagic
165 Make magic commands automatic (without needing their first char-
165 Make magic commands automatic (without needing their first char-
166 acter to be %). Type %magic at the IPython prompt for more
166 acter to be %). Type %magic at the IPython prompt for more
167 information.
167 information.
168
168
169 -[no]autoedit_syntax
169 -[no]autoedit_syntax
170 When a syntax error occurs after editing a file, automatically
170 When a syntax error occurs after editing a file, automatically
171 open the file to the trouble causing line for convenient fixing.
171 open the file to the trouble causing line for convenient fixing.
172
172
173 -[no]banner
173 -[no]banner
174 Print the intial information banner (default on).
174 Print the intial information banner (default on).
175
175
176 -c <command>
176 -c <command>
177 Execute the given command string, and set sys.argv to ['c'].
177 Execute the given command string, and set sys.argv to ['c'].
178 This is similar to the -c option in the normal Python inter-
178 This is similar to the -c option in the normal Python inter-
179 preter.
179 preter.
180
180
181 -cache_size|cs <n>
181 -cache_size|cs <n>
182 Size of the output cache (maximum number of entries to hold in
182 Size of the output cache (maximum number of entries to hold in
183 memory). The default is 1000, you can change it permanently in
183 memory). The default is 1000, you can change it permanently in
184 your config file. Setting it to 0 completely disables the
184 your config file. Setting it to 0 completely disables the
185 caching system, and the minimum value accepted is 20 (if you
185 caching system, and the minimum value accepted is 20 (if you
186 provide a value less than 20, it is reset to 0 and a warning is
186 provide a value less than 20, it is reset to 0 and a warning is
187 issued). This limit is defined because otherwise you'll spend
187 issued). This limit is defined because otherwise you'll spend
188 more time re-flushing a too small cache than working.
188 more time re-flushing a too small cache than working.
189
189
190 -classic|cl
190 -classic|cl
191 Gives IPython a similar feel to the classic Python prompt.
191 Gives IPython a similar feel to the classic Python prompt.
192
192
193 -colors <scheme>
193 -colors <scheme>
194 Color scheme for prompts and exception reporting. Currently
194 Color scheme for prompts and exception reporting. Currently
195 implemented: NoColor, Linux, and LightBG.
195 implemented: NoColor, Linux, and LightBG.
196
196
197 -[no]color_info
197 -[no]color_info
198 IPython can display information about objects via a set of func-
198 IPython can display information about objects via a set of func-
199 tions, and optionally can use colors for this, syntax highlight-
199 tions, and optionally can use colors for this, syntax highlight-
200 ing source code and various other elements. However, because
200 ing source code and various other elements. However, because
201 this information is passed through a pager (like 'less') and
201 this information is passed through a pager (like 'less') and
202 many pagers get confused with color codes, this option is off by
202 many pagers get confused with color codes, this option is off by
203 default. You can test it and turn it on permanently in your
203 default. You can test it and turn it on permanently in your
204 ipythonrc file if it works for you. As a reference, the 'less'
204 ipythonrc file if it works for you. As a reference, the 'less'
205 pager supplied with Mandrake 8.2 works ok, but that in RedHat
205 pager supplied with Mandrake 8.2 works ok, but that in RedHat
206 7.2 doesn't.
206 7.2 doesn't.
207
207
208 Test it and turn it on permanently if it works with your system.
208 Test it and turn it on permanently if it works with your system.
209 The magic function @color_info allows you to toggle this inter-
209 The magic function @color_info allows you to toggle this inter-
210 actively for testing.
210 actively for testing.
211
211
212 -[no]confirm_exit
212 -[no]confirm_exit
213 Set to confirm when you try to exit IPython with an EOF (Con-
213 Set to confirm when you try to exit IPython with an EOF (Con-
214 trol-D in Unix, Control-Z/Enter in Windows). Note that using the
214 trol-D in Unix, Control-Z/Enter in Windows). Note that using the
215 magic functions @Exit or @Quit you can force a direct exit,
215 magic functions @Exit or @Quit you can force a direct exit,
216 bypassing any confirmation.
216 bypassing any confirmation.
217
217
218 -[no]debug
218 -[no]debug
219 Show information about the loading process. Very useful to pin
219 Show information about the loading process. Very useful to pin
220 down problems with your configuration files or to get details
220 down problems with your configuration files or to get details
221 about session restores.
221 about session restores.
222
222
223 -[no]deep_reload
223 -[no]deep_reload
224 IPython can use the deep_reload module which reloads changes in
224 IPython can use the deep_reload module which reloads changes in
225 modules recursively (it replaces the reload() function, so you
225 modules recursively (it replaces the reload() function, so you
226 don't need to change anything to use it). deep_reload() forces a
226 don't need to change anything to use it). deep_reload() forces a
227 full reload of modules whose code may have changed, which the
227 full reload of modules whose code may have changed, which the
228 default reload() function does not.
228 default reload() function does not.
229
229
230 When deep_reload is off, IPython will use the normal reload(),
230 When deep_reload is off, IPython will use the normal reload(),
231 but deep_reload will still be available as dreload(). This fea-
231 but deep_reload will still be available as dreload(). This fea-
232 ture is off by default [which means that you have both normal
232 ture is off by default [which means that you have both normal
233 reload() and dreload()].
233 reload() and dreload()].
234
234
235 -editor <name>
235 -editor <name>
236 Which editor to use with the @edit command. By default, IPython
236 Which editor to use with the @edit command. By default, IPython
237 will honor your EDITOR environment variable (if not set, vi is
237 will honor your EDITOR environment variable (if not set, vi is
238 the Unix default and notepad the Windows one). Since this editor
238 the Unix default and notepad the Windows one). Since this editor
239 is invoked on the fly by IPython and is meant for editing small
239 is invoked on the fly by IPython and is meant for editing small
240 code snippets, you may want to use a small, lightweight editor
240 code snippets, you may want to use a small, lightweight editor
241 here (in case your default EDITOR is something like Emacs).
241 here (in case your default EDITOR is something like Emacs).
242
242
243 -ipythondir <name>
243 -ipythondir <name>
244 The name of your IPython configuration directory IPYTHONDIR.
244 The name of your IPython configuration directory IPYTHONDIR.
245 This can also be specified through the environment variable
245 This can also be specified through the environment variable
246 IPYTHONDIR.
246 IPYTHONDIR.
247
247
248 -log|l Generate a log file of all input. The file is named
248 -log|l Generate a log file of all input. The file is named
249 ipython_log.py in your current directory (which prevents logs
249 ipython_log.py in your current directory (which prevents logs
250 from multiple IPython sessions from trampling each other). You
250 from multiple IPython sessions from trampling each other). You
251 can use this to later restore a session by loading your logfile
251 can use this to later restore a session by loading your logfile
252 as a file to be executed with option -logplay (see below).
252 as a file to be executed with option -logplay (see below).
253
253
254 -logfile|lf
254 -logfile|lf
255 Specify the name of your logfile.
255 Specify the name of your logfile.
256
256
257 -logplay|lp
257 -logplay|lp
258 Replay a previous log. For restoring a session as close as pos-
258 Replay a previous log. For restoring a session as close as pos-
259 sible to the state you left it in, use this option (don't just
259 sible to the state you left it in, use this option (don't just
260 run the logfile). With -logplay, IPython will try to reconstruct
260 run the logfile). With -logplay, IPython will try to reconstruct
261 the previous working environment in full, not just execute the
261 the previous working environment in full, not just execute the
262 commands in the logfile.
262 commands in the logfile.
263 When a session is restored, logging is automatically turned on
263 When a session is restored, logging is automatically turned on
264 again with the name of the logfile it was invoked with (it is
264 again with the name of the logfile it was invoked with (it is
265 read from the log header). So once you've turned logging on for
265 read from the log header). So once you've turned logging on for
266 a session, you can quit IPython and reload it as many times as
266 a session, you can quit IPython and reload it as many times as
267 you want and it will continue to log its history and restore
267 you want and it will continue to log its history and restore
268 from the beginning every time.
268 from the beginning every time.
269
269
270 Caveats: there are limitations in this option. The history vari-
270 Caveats: there are limitations in this option. The history vari-
271 ables _i*,_* and _dh don't get restored properly. In the future
271 ables _i*,_* and _dh don't get restored properly. In the future
272 we will try to implement full session saving by writing and
272 we will try to implement full session saving by writing and
273 retrieving a failed because of inherent limitations of Python's
273 retrieving a failed because of inherent limitations of Python's
274 Pickle module, so this may have to wait.
274 Pickle module, so this may have to wait.
275
275
276 -[no]messages
276 -[no]messages
277 Print messages which IPython collects about its startup process
277 Print messages which IPython collects about its startup process
278 (default on).
278 (default on).
279
279
280 -[no]pdb
280 -[no]pdb
281 Automatically call the pdb debugger after every uncaught excep-
281 Automatically call the pdb debugger after every uncaught excep-
282 tion. If you are used to debugging using pdb, this puts you
282 tion. If you are used to debugging using pdb, this puts you
283 automatically inside of it after any call (either in IPython or
283 automatically inside of it after any call (either in IPython or
284 in code called by it) which triggers an exception which goes
284 in code called by it) which triggers an exception which goes
285 uncaught.
285 uncaught.
286
286
287 -[no]pprint
287 -[no]pprint
288 IPython can optionally use the pprint (pretty printer) module
288 IPython can optionally use the pprint (pretty printer) module
289 for displaying results. pprint tends to give a nicer display of
289 for displaying results. pprint tends to give a nicer display of
290 nested data structures. If you like it, you can turn it on per-
290 nested data structures. If you like it, you can turn it on per-
291 manently in your config file (default off).
291 manently in your config file (default off).
292
292
293 -profile|p <name>
293 -profile|p <name>
294 Assume that your config file is ipythonrc-<name> (looks in cur-
294 Assume that your config file is ipythonrc-<name> (looks in cur-
295 rent dir first, then in IPYTHONDIR). This is a quick way to keep
295 rent dir first, then in IPYTHONDIR). This is a quick way to keep
296 and load multiple config files for different tasks, especially
296 and load multiple config files for different tasks, especially
297 if you use the include option of config files. You can keep a
297 if you use the include option of config files. You can keep a
298 basic IPYTHONDIR/ipythonrc file and then have other 'profiles'
298 basic IPYTHONDIR/ipythonrc file and then have other 'profiles'
299 which include this one and load extra things for particular
299 which include this one and load extra things for particular
300 tasks. For example:
300 tasks. For example:
301
301
302 1) $HOME/.ipython/ipythonrc : load basic things you always want.
302 1) $HOME/.ipython/ipythonrc : load basic things you always want.
303 2) $HOME/.ipython/ipythonrc-math : load (1) and basic math-
303 2) $HOME/.ipython/ipythonrc-math : load (1) and basic math-
304 related modules.
304 related modules.
305 3) $HOME/.ipython/ipythonrc-numeric : load (1) and Numeric and
305 3) $HOME/.ipython/ipythonrc-numeric : load (1) and Numeric and
306 plotting modules.
306 plotting modules.
307
307
308 Since it is possible to create an endless loop by having circu-
308 Since it is possible to create an endless loop by having circu-
309 lar file inclusions, IPython will stop if it reaches 15 recur-
309 lar file inclusions, IPython will stop if it reaches 15 recur-
310 sive inclusions.
310 sive inclusions.
311
311
312 -prompt_in1|pi1 <string>
312 -prompt_in1|pi1 <string>
313 Specify the string used for input prompts. Note that if you are
313 Specify the string used for input prompts. Note that if you are
314 using numbered prompts, the number is represented with a '\#' in
314 using numbered prompts, the number is represented with a '\#' in
315 the string. Don't forget to quote strings with spaces embedded
315 the string. Don't forget to quote strings with spaces embedded
316 in them. Default: 'In [\#]: '.
316 in them. Default: 'In [\#]: '.
317
317
318 Most bash-like escapes can be used to customize IPython's
318 Most bash-like escapes can be used to customize IPython's
319 prompts, as well as a few additional ones which are IPython-spe-
319 prompts, as well as a few additional ones which are IPython-spe-
320 cific. All valid prompt escapes are described in detail in the
320 cific. All valid prompt escapes are described in detail in the
321 Customization section of the IPython HTML/PDF manual.
321 Customization section of the IPython HTML/PDF manual.
322
322
323 -prompt_in2|pi2 <string>
323 -prompt_in2|pi2 <string>
324 Similar to the previous option, but used for the continuation
324 Similar to the previous option, but used for the continuation
325 prompts. The special sequence '\D' is similar to '\#', but with
325 prompts. The special sequence '\D' is similar to '\#', but with
326 all digits replaced dots (so you can have your continuation
326 all digits replaced dots (so you can have your continuation
327 prompt aligned with your input prompt). Default: ' .\D.: '
327 prompt aligned with your input prompt). Default: ' .\D.: '
328 (note three spaces at the start for alignment with 'In [\#]').
328 (note three spaces at the start for alignment with 'In [\#]').
329
329
330 -prompt_out|po <string>
330 -prompt_out|po <string>
331 String used for output prompts, also uses numbers like
331 String used for output prompts, also uses numbers like
332 prompt_in1. Default: 'Out[\#]:'.
332 prompt_in1. Default: 'Out[\#]:'.
333
333
334 -quick Start in bare bones mode (no config file loaded).
334 -quick Start in bare bones mode (no config file loaded).
335
335
336 -rcfile <name>
336 -rcfile <name>
337 Name of your IPython resource configuration file. normally
337 Name of your IPython resource configuration file. normally
338 IPython loads ipythonrc (from current directory) or
338 IPython loads ipythonrc (from current directory) or
339 IPYTHONDIR/ipythonrc. If the loading of your config file fails,
339 IPYTHONDIR/ipythonrc. If the loading of your config file fails,
340 IPython starts with a bare bones configuration (no modules
340 IPython starts with a bare bones configuration (no modules
341 loaded at all).
341 loaded at all).
342
342
343 -[no]readline
343 -[no]readline
344 Use the readline library, which is needed to support name com-
344 Use the readline library, which is needed to support name com-
345 pletion and command history, among other things. It is enabled
345 pletion and command history, among other things. It is enabled
346 by default, but may cause problems for users of X/Emacs in
346 by default, but may cause problems for users of X/Emacs in
347 Python comint or shell buffers.
347 Python comint or shell buffers.
348
348
349 Note that emacs 'eterm' buffers (opened with M-x term) support
349 Note that emacs 'eterm' buffers (opened with M-x term) support
350 IPython's readline and syntax coloring fine, only 'emacs' (M-x
350 IPython's readline and syntax coloring fine, only 'emacs' (M-x
351 shell and C-c !) buffers do not.
351 shell and C-c !) buffers do not.
352
352
353 -screen_length|sl <n>
353 -screen_length|sl <n>
354 Number of lines of your screen. This is used to control print-
354 Number of lines of your screen. This is used to control print-
355 ing of very long strings. Strings longer than this number of
355 ing of very long strings. Strings longer than this number of
356 lines will be sent through a pager instead of directly printed.
356 lines will be sent through a pager instead of directly printed.
357
357
358 The default value for this is 0, which means IPython will auto-
358 The default value for this is 0, which means IPython will auto-
359 detect your screen size every time it needs to print certain
359 detect your screen size every time it needs to print certain
360 potentially long strings (this doesn't change the behavior of
360 potentially long strings (this doesn't change the behavior of
361 the 'print' keyword, it's only triggered internally). If for
361 the 'print' keyword, it's only triggered internally). If for
362 some reason this isn't working well (it needs curses support),
362 some reason this isn't working well (it needs curses support),
363 specify it yourself. Otherwise don't change the default.
363 specify it yourself. Otherwise don't change the default.
364
364
365 -separate_in|si <string>
365 -separate_in|si <string>
366 Separator before input prompts. Default '0.
366 Separator before input prompts. Default '0.
367
367
368 -separate_out|so <string>
368 -separate_out|so <string>
369 Separator before output prompts. Default: 0 (nothing).
369 Separator before output prompts. Default: 0 (nothing).
370
370
371 -separate_out2|so2 <string>
371 -separate_out2|so2 <string>
372 Separator after output prompts. Default: 0 (nothing).
372 Separator after output prompts. Default: 0 (nothing).
373
373
374 -nosep Shorthand for '-separate_in 0 -separate_out 0 -separate_out2 0'.
374 -nosep Shorthand for '-separate_in 0 -separate_out 0 -separate_out2 0'.
375 Simply removes all input/output separators.
375 Simply removes all input/output separators.
376
376
377 -upgrade
377 -upgrade
378 Allows you to upgrade your IPYTHONDIR configuration when you
378 Allows you to upgrade your IPYTHONDIR configuration when you
379 install a new version of IPython. Since new versions may
379 install a new version of IPython. Since new versions may
380 include new command lines options or example files, this copies
380 include new command lines options or example files, this copies
381 updated ipythonrc-type files. However, it backs up (with a .old
381 updated ipythonrc-type files. However, it backs up (with a .old
382 extension) all files which it overwrites so that you can merge
382 extension) all files which it overwrites so that you can merge
383 back any custimizations you might have in your personal files.
383 back any custimizations you might have in your personal files.
384
384
385 -Version
385 -Version
386 Print version information and exit.
386 Print version information and exit.
387
387
388 -wxversion <string>
388 -wxversion <string>
389 Select a specific version of wxPython (used in conjunction with
389 Select a specific version of wxPython (used in conjunction with
390 -wthread). Requires the wxversion module, part of recent
390 -wthread). Requires the wxversion module, part of recent
391 wxPython distributions.
391 wxPython distributions.
392
392
393 -xmode <modename>
393 -xmode <modename>
394 Mode for exception reporting. The valid modes are Plain, Con-
394 Mode for exception reporting. The valid modes are Plain, Con-
395 text, and Verbose.
395 text, and Verbose.
396
396
397 - Plain: similar to python's normal traceback printing.
397 - Plain: similar to python's normal traceback printing.
398
398
399 - Context: prints 5 lines of context source code around each
399 - Context: prints 5 lines of context source code around each
400 line in the traceback.
400 line in the traceback.
401
401
402 - Verbose: similar to Context, but additionally prints the vari-
402 - Verbose: similar to Context, but additionally prints the vari-
403 ables currently visible where the exception happened (shortening
403 ables currently visible where the exception happened (shortening
404 their strings if too long). This can potentially be very slow,
404 their strings if too long). This can potentially be very slow,
405 if you happen to have a huge data structure whose string repre-
405 if you happen to have a huge data structure whose string repre-
406 sentation is complex to compute. Your computer may appear to
406 sentation is complex to compute. Your computer may appear to
407 freeze for a while with cpu usage at 100%. If this occurs, you
407 freeze for a while with cpu usage at 100%. If this occurs, you
408 can cancel the traceback with Ctrl-C (maybe hitting it more than
408 can cancel the traceback with Ctrl-C (maybe hitting it more than
409 once).
409 once).
410
410
411
411
412 EMBEDDING
412 EMBEDDING
413 It is possible to start an IPython instance inside your own Python pro-
413 It is possible to start an IPython instance inside your own Python pro-
414 grams. In the documentation example files there are some illustrations
414 grams. In the documentation example files there are some illustrations
415 on how to do this.
415 on how to do this.
416
416
417 This feature allows you to evalutate dynamically the state of your
417 This feature allows you to evalutate dynamically the state of your
418 code, operate with your variables, analyze them, etc. Note however
418 code, operate with your variables, analyze them, etc. Note however
419 that any changes you make to values while in the shell do NOT propagate
419 that any changes you make to values while in the shell do NOT propagate
420 back to the running code, so it is safe to modify your values because
420 back to the running code, so it is safe to modify your values because
421 you won't break your code in bizarre ways by doing so.
421 you won't break your code in bizarre ways by doing so.
422 """
422 """
423
423
424 cmd_line_usage = __doc__
424 cmd_line_usage = __doc__
425
425
426 #---------------------------------------------------------------------------
426 #---------------------------------------------------------------------------
427 interactive_usage = """
427 interactive_usage = """
428 IPython -- An enhanced Interactive Python
428 IPython -- An enhanced Interactive Python
429 =========================================
429 =========================================
430
430
431 IPython offers a combination of convenient shell features, special commands
431 IPython offers a combination of convenient shell features, special commands
432 and a history mechanism for both input (command history) and output (results
432 and a history mechanism for both input (command history) and output (results
433 caching, similar to Mathematica). It is intended to be a fully compatible
433 caching, similar to Mathematica). It is intended to be a fully compatible
434 replacement for the standard Python interpreter, while offering vastly
434 replacement for the standard Python interpreter, while offering vastly
435 improved functionality and flexibility.
435 improved functionality and flexibility.
436
436
437 At your system command line, type 'ipython -help' to see the command line
437 At your system command line, type 'ipython -help' to see the command line
438 options available. This document only describes interactive features.
438 options available. This document only describes interactive features.
439
439
440 Warning: IPython relies on the existence of a global variable called __IP which
440 Warning: IPython relies on the existence of a global variable called __IP which
441 controls the shell itself. If you redefine __IP to anything, bizarre behavior
441 controls the shell itself. If you redefine __IP to anything, bizarre behavior
442 will quickly occur.
442 will quickly occur.
443
443
444 MAIN FEATURES
444 MAIN FEATURES
445
445
446 * Access to the standard Python help. As of Python 2.1, a help system is
446 * Access to the standard Python help. As of Python 2.1, a help system is
447 available with access to object docstrings and the Python manuals. Simply
447 available with access to object docstrings and the Python manuals. Simply
448 type 'help' (no quotes) to access it.
448 type 'help' (no quotes) to access it.
449
449
450 * Magic commands: type %magic for information on the magic subsystem.
450 * Magic commands: type %magic for information on the magic subsystem.
451
451
452 * System command aliases, via the %alias command or the ipythonrc config file.
452 * System command aliases, via the %alias command or the ipythonrc config file.
453
453
454 * Dynamic object information:
454 * Dynamic object information:
455
455
456 Typing ?word or word? prints detailed information about an object. If
456 Typing ?word or word? prints detailed information about an object. If
457 certain strings in the object are too long (docstrings, code, etc.) they get
457 certain strings in the object are too long (docstrings, code, etc.) they get
458 snipped in the center for brevity.
458 snipped in the center for brevity.
459
459
460 Typing ??word or word?? gives access to the full information without
460 Typing ??word or word?? gives access to the full information without
461 snipping long strings. Long strings are sent to the screen through the less
461 snipping long strings. Long strings are sent to the screen through the less
462 pager if longer than the screen, printed otherwise.
462 pager if longer than the screen, printed otherwise.
463
463
464 The ?/?? system gives access to the full source code for any object (if
464 The ?/?? system gives access to the full source code for any object (if
465 available), shows function prototypes and other useful information.
465 available), shows function prototypes and other useful information.
466
466
467 If you just want to see an object's docstring, type '%pdoc object' (without
467 If you just want to see an object's docstring, type '%pdoc object' (without
468 quotes, and without % if you have automagic on).
468 quotes, and without % if you have automagic on).
469
469
470 Both %pdoc and ?/?? give you access to documentation even on things which are
470 Both %pdoc and ?/?? give you access to documentation even on things which are
471 not explicitely defined. Try for example typing {}.get? or after import os,
471 not explicitely defined. Try for example typing {}.get? or after import os,
472 type os.path.abspath??. The magic functions %pdef, %source and %file operate
472 type os.path.abspath??. The magic functions %pdef, %source and %file operate
473 similarly.
473 similarly.
474
474
475 * Completion in the local namespace, by typing TAB at the prompt.
475 * Completion in the local namespace, by typing TAB at the prompt.
476
476
477 At any time, hitting tab will complete any available python commands or
477 At any time, hitting tab will complete any available python commands or
478 variable names, and show you a list of the possible completions if there's
478 variable names, and show you a list of the possible completions if there's
479 no unambiguous one. It will also complete filenames in the current directory.
479 no unambiguous one. It will also complete filenames in the current directory.
480
480
481 This feature requires the readline and rlcomplete modules, so it won't work
481 This feature requires the readline and rlcomplete modules, so it won't work
482 if your Python lacks readline support (such as under Windows).
482 if your Python lacks readline support (such as under Windows).
483
483
484 * Search previous command history in two ways (also requires readline):
484 * Search previous command history in two ways (also requires readline):
485
485
486 - Start typing, and then use Ctrl-p (previous,up) and Ctrl-n (next,down) to
486 - Start typing, and then use Ctrl-p (previous,up) and Ctrl-n (next,down) to
487 search through only the history items that match what you've typed so
487 search through only the history items that match what you've typed so
488 far. If you use Ctrl-p/Ctrl-n at a blank prompt, they just behave like
488 far. If you use Ctrl-p/Ctrl-n at a blank prompt, they just behave like
489 normal arrow keys.
489 normal arrow keys.
490
490
491 - Hit Ctrl-r: opens a search prompt. Begin typing and the system searches
491 - Hit Ctrl-r: opens a search prompt. Begin typing and the system searches
492 your history for lines that match what you've typed so far, completing as
492 your history for lines that match what you've typed so far, completing as
493 much as it can.
493 much as it can.
494
494
495 * Persistent command history across sessions (readline required).
495 * Persistent command history across sessions (readline required).
496
496
497 * Logging of input with the ability to save and restore a working session.
497 * Logging of input with the ability to save and restore a working session.
498
498
499 * System escape with !. Typing !ls will run 'ls' in the current directory.
499 * System escape with !. Typing !ls will run 'ls' in the current directory.
500
500
501 * The reload command does a 'deep' reload of a module: changes made to the
501 * The reload command does a 'deep' reload of a module: changes made to the
502 module since you imported will actually be available without having to exit.
502 module since you imported will actually be available without having to exit.
503
503
504 * Verbose and colored exception traceback printouts. See the magic xmode and
504 * Verbose and colored exception traceback printouts. See the magic xmode and
505 xcolor functions for details (just type %magic).
505 xcolor functions for details (just type %magic).
506
506
507 * Input caching system:
507 * Input caching system:
508
508
509 IPython offers numbered prompts (In/Out) with input and output caching. All
509 IPython offers numbered prompts (In/Out) with input and output caching. All
510 input is saved and can be retrieved as variables (besides the usual arrow
510 input is saved and can be retrieved as variables (besides the usual arrow
511 key recall).
511 key recall).
512
512
513 The following GLOBAL variables always exist (so don't overwrite them!):
513 The following GLOBAL variables always exist (so don't overwrite them!):
514 _i: stores previous input.
514 _i: stores previous input.
515 _ii: next previous.
515 _ii: next previous.
516 _iii: next-next previous.
516 _iii: next-next previous.
517 _ih : a list of all input _ih[n] is the input from line n.
517 _ih : a list of all input _ih[n] is the input from line n.
518
518
519 Additionally, global variables named _i<n> are dynamically created (<n>
519 Additionally, global variables named _i<n> are dynamically created (<n>
520 being the prompt counter), such that _i<n> == _ih[<n>]
520 being the prompt counter), such that _i<n> == _ih[<n>]
521
521
522 For example, what you typed at prompt 14 is available as _i14 and _ih[14].
522 For example, what you typed at prompt 14 is available as _i14 and _ih[14].
523
523
524 You can create macros which contain multiple input lines from this history,
524 You can create macros which contain multiple input lines from this history,
525 for later re-execution, with the %macro function.
525 for later re-execution, with the %macro function.
526
526
527 The history function %hist allows you to see any part of your input history
527 The history function %hist allows you to see any part of your input history
528 by printing a range of the _i variables. Note that inputs which contain
528 by printing a range of the _i variables. Note that inputs which contain
529 magic functions (%) appear in the history with a prepended comment. This is
529 magic functions (%) appear in the history with a prepended comment. This is
530 because they aren't really valid Python code, so you can't exec them.
530 because they aren't really valid Python code, so you can't exec them.
531
531
532 * Output caching system:
532 * Output caching system:
533
533
534 For output that is returned from actions, a system similar to the input
534 For output that is returned from actions, a system similar to the input
535 cache exists but using _ instead of _i. Only actions that produce a result
535 cache exists but using _ instead of _i. Only actions that produce a result
536 (NOT assignments, for example) are cached. If you are familiar with
536 (NOT assignments, for example) are cached. If you are familiar with
537 Mathematica, IPython's _ variables behave exactly like Mathematica's %
537 Mathematica, IPython's _ variables behave exactly like Mathematica's %
538 variables.
538 variables.
539
539
540 The following GLOBAL variables always exist (so don't overwrite them!):
540 The following GLOBAL variables always exist (so don't overwrite them!):
541 _ (one underscore): previous output.
541 _ (one underscore): previous output.
542 __ (two underscores): next previous.
542 __ (two underscores): next previous.
543 ___ (three underscores): next-next previous.
543 ___ (three underscores): next-next previous.
544
544
545 Global variables named _<n> are dynamically created (<n> being the prompt
545 Global variables named _<n> are dynamically created (<n> being the prompt
546 counter), such that the result of output <n> is always available as _<n>.
546 counter), such that the result of output <n> is always available as _<n>.
547
547
548 Finally, a global dictionary named _oh exists with entries for all lines
548 Finally, a global dictionary named _oh exists with entries for all lines
549 which generated output.
549 which generated output.
550
550
551 * Directory history:
551 * Directory history:
552
552
553 Your history of visited directories is kept in the global list _dh, and the
553 Your history of visited directories is kept in the global list _dh, and the
554 magic %cd command can be used to go to any entry in that list.
554 magic %cd command can be used to go to any entry in that list.
555
555
556 * Auto-parentheses and auto-quotes (adapted from Nathan Gray's LazyPython)
556 * Auto-parentheses and auto-quotes (adapted from Nathan Gray's LazyPython)
557
557
558 1. Auto-parentheses
558 1. Auto-parentheses
559 Callable objects (i.e. functions, methods, etc) can be invoked like
559 Callable objects (i.e. functions, methods, etc) can be invoked like
560 this (notice the commas between the arguments):
560 this (notice the commas between the arguments):
561 >>> callable_ob arg1, arg2, arg3
561 >>> callable_ob arg1, arg2, arg3
562 and the input will be translated to this:
562 and the input will be translated to this:
563 --> callable_ob(arg1, arg2, arg3)
563 --> callable_ob(arg1, arg2, arg3)
564 You can force auto-parentheses by using '/' as the first character
564 You can force auto-parentheses by using '/' as the first character
565 of a line. For example:
565 of a line. For example:
566 >>> /globals # becomes 'globals()'
566 >>> /globals # becomes 'globals()'
567 Note that the '/' MUST be the first character on the line! This
567 Note that the '/' MUST be the first character on the line! This
568 won't work:
568 won't work:
569 >>> print /globals # syntax error
569 >>> print /globals # syntax error
570
570
571 In most cases the automatic algorithm should work, so you should
571 In most cases the automatic algorithm should work, so you should
572 rarely need to explicitly invoke /. One notable exception is if you
572 rarely need to explicitly invoke /. One notable exception is if you
573 are trying to call a function with a list of tuples as arguments (the
573 are trying to call a function with a list of tuples as arguments (the
574 parenthesis will confuse IPython):
574 parenthesis will confuse IPython):
575 In [1]: zip (1,2,3),(4,5,6) # won't work
575 In [1]: zip (1,2,3),(4,5,6) # won't work
576 but this will work:
576 but this will work:
577 In [2]: /zip (1,2,3),(4,5,6)
577 In [2]: /zip (1,2,3),(4,5,6)
578 ------> zip ((1,2,3),(4,5,6))
578 ------> zip ((1,2,3),(4,5,6))
579 Out[2]= [(1, 4), (2, 5), (3, 6)]
579 Out[2]= [(1, 4), (2, 5), (3, 6)]
580
580
581 IPython tells you that it has altered your command line by
581 IPython tells you that it has altered your command line by
582 displaying the new command line preceded by -->. e.g.:
582 displaying the new command line preceded by -->. e.g.:
583 In [18]: callable list
583 In [18]: callable list
584 -------> callable (list)
584 -------> callable (list)
585
585
586 2. Auto-Quoting
586 2. Auto-Quoting
587 You can force auto-quoting of a function's arguments by using ',' as
587 You can force auto-quoting of a function's arguments by using ',' as
588 the first character of a line. For example:
588 the first character of a line. For example:
589 >>> ,my_function /home/me # becomes my_function("/home/me")
589 >>> ,my_function /home/me # becomes my_function("/home/me")
590
590
591 If you use ';' instead, the whole argument is quoted as a single
591 If you use ';' instead, the whole argument is quoted as a single
592 string (while ',' splits on whitespace):
592 string (while ',' splits on whitespace):
593 >>> ,my_function a b c # becomes my_function("a","b","c")
593 >>> ,my_function a b c # becomes my_function("a","b","c")
594 >>> ;my_function a b c # becomes my_function("a b c")
594 >>> ;my_function a b c # becomes my_function("a b c")
595
595
596 Note that the ',' MUST be the first character on the line! This
596 Note that the ',' MUST be the first character on the line! This
597 won't work:
597 won't work:
598 >>> x = ,my_function /home/me # syntax error
598 >>> x = ,my_function /home/me # syntax error
599 """
599 """
600
600
601 quick_reference = r"""
601 quick_reference = r"""
602 IPython -- An enhanced Interactive Python - Quick Reference Card
602 IPython -- An enhanced Interactive Python - Quick Reference Card
603 ================================================================
603 ================================================================
604
604
605 obj?, obj??, ?obj,??obj : Get help, or more help for object
605 obj?, obj??, ?obj,??obj : Get help, or more help for object
606 ?os.p* : List names in os starting with p
606 ?os.p* : List names in os starting with p
607
607
608 Example magic:
608 Magic functions are prefixed by %, and typically take their arguments without
609 parentheses, quotes or even commas for convenience.
610
611 Example magic function calls:
609
612
610 %alias d ls -F : 'd' is now an alias for 'ls -F'
613 %alias d ls -F : 'd' is now an alias for 'ls -F'
611 alias d ls -F : Works if 'alias' not a python name
614 alias d ls -F : Works if 'alias' not a python name
612 alist = %alias : Get list of aliases to 'alist'
615 alist = %alias : Get list of aliases to 'alist'
616 cd /usr/share : Obvious. cd -<tab> to choose from visited dirs.
617 %cd?? : See help AND source for magic %cd
613
618
614 System commands:
619 System commands:
615
620
616 !cp a.txt b/ : System command escape, calls os.system()
621 !cp a.txt b/ : System command escape, calls os.system()
617 cp a.txt b/ : after %rehashx, most system commands work without !
622 cp a.txt b/ : after %rehashx, most system commands work without !
618 cp ${f}.txt $bar : Variable expansion in magics and system commands
623 cp ${f}.txt $bar : Variable expansion in magics and system commands
619 files = !ls /usr : Capture sytem command output
624 files = !ls /usr : Capture sytem command output
620 files.s, files.l, files.n: "a b c", ['a','b','c'], 'a\nb\nc'
625 files.s, files.l, files.n: "a b c", ['a','b','c'], 'a\nb\nc'
621 cd /usr/share : Obvious. cd -<tab> to choose from visited dirs.
622
626
623 History:
627 History:
624
628
625 _i, _ii, _iii : Previous, next previous, next next previous input
629 _i, _ii, _iii : Previous, next previous, next next previous input
626 _i4, _ih[2:5] : Input history line 4, lines 2-4
630 _i4, _ih[2:5] : Input history line 4, lines 2-4
627 exec _i81 : Execute input history line #81 again
631 exec _i81 : Execute input history line #81 again
628 %rep 81 : Edit input history line #81
632 %rep 81 : Edit input history line #81
629 _, __, ___ : previous, next previous, next next previous output
633 _, __, ___ : previous, next previous, next next previous output
630 _dh : Directory history
634 _dh : Directory history
631 _oh : Output history
635 _oh : Output history
632 %hist : Command history. '-g foo' search history for 'foo'
636 %hist : Command history. '%hist -g foo' search history for 'foo'
633
637
634 Autocall:
638 Autocall:
635
639
636 f 1,2 : f(1,2)
640 f 1,2 : f(1,2)
637 /f 1,2 : f(1,2) (forced autoparen)
641 /f 1,2 : f(1,2) (forced autoparen)
638 ,f 1 2 : f("1","2")
642 ,f 1 2 : f("1","2")
639 ;f 1 2 : f("1 2")
643 ;f 1 2 : f("1 2")
640
644
645 Remember: TAB completion works in many contexts, not just file names
646 or python names.
647
648 The following magic functions are currently available:
649
641 """
650 """
642
651
643
652
@@ -1,7078 +1,7081 b''
1 2007-09-04 Ville Vainio <vivainio@gmail.com>
1 2007-09-04 Ville Vainio <vivainio@gmail.com>
2
2
3 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
3 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
4 Relicensed under BSD with the authors approval.
4 Relicensed under BSD with the authors approval.
5
5
6 * ipmaker.py, usage.py: Remove %magic from default banner, improve
7 %quickref
8
6 2007-09-03 Ville Vainio <vivainio@gmail.com>
9 2007-09-03 Ville Vainio <vivainio@gmail.com>
7
10
8 * Magic.py: %time now passes expression through prefilter,
11 * Magic.py: %time now passes expression through prefilter,
9 allowing IPython syntax.
12 allowing IPython syntax.
10
13
11 2007-09-01 Ville Vainio <vivainio@gmail.com>
14 2007-09-01 Ville Vainio <vivainio@gmail.com>
12
15
13 * ipmaker.py: Always show full traceback when newstyle config fails
16 * ipmaker.py: Always show full traceback when newstyle config fails
14
17
15 2007-08-27 Ville Vainio <vivainio@gmail.com>
18 2007-08-27 Ville Vainio <vivainio@gmail.com>
16
19
17 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
20 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
18
21
19 2007-08-26 Ville Vainio <vivainio@gmail.com>
22 2007-08-26 Ville Vainio <vivainio@gmail.com>
20
23
21 * ipmaker.py: Command line args have the highest priority again
24 * ipmaker.py: Command line args have the highest priority again
22
25
23 * iplib.py, ipmaker.py: -i command line argument now behaves as in
26 * iplib.py, ipmaker.py: -i command line argument now behaves as in
24 normal python, i.e. leaves the IPython session running after -c
27 normal python, i.e. leaves the IPython session running after -c
25 command or running a batch file from command line.
28 command or running a batch file from command line.
26
29
27 2007-08-22 Ville Vainio <vivainio@gmail.com>
30 2007-08-22 Ville Vainio <vivainio@gmail.com>
28
31
29 * iplib.py: no extra empty (last) line in raw hist w/ multiline
32 * iplib.py: no extra empty (last) line in raw hist w/ multiline
30 statements
33 statements
31
34
32 * logger.py: Fix bug where blank lines in history were not
35 * logger.py: Fix bug where blank lines in history were not
33 added until AFTER adding the current line; translated and raw
36 added until AFTER adding the current line; translated and raw
34 history should finally be in sync with prompt now.
37 history should finally be in sync with prompt now.
35
38
36 * ipy_completers.py: quick_completer now makes it easy to create
39 * ipy_completers.py: quick_completer now makes it easy to create
37 trivial custom completers
40 trivial custom completers
38
41
39 * clearcmd.py: shadow history compression & erasing, fixed input hist
42 * clearcmd.py: shadow history compression & erasing, fixed input hist
40 clearing.
43 clearing.
41
44
42 * envpersist.py, history.py: %env (sh profile only), %hist completers
45 * envpersist.py, history.py: %env (sh profile only), %hist completers
43
46
44 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
47 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
45 term title now include the drive letter, and always use / instead of
48 term title now include the drive letter, and always use / instead of
46 os.sep (as per recommended approach for win32 ipython in general).
49 os.sep (as per recommended approach for win32 ipython in general).
47
50
48 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
51 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
49 plain python scripts from ipykit command line by running
52 plain python scripts from ipykit command line by running
50 "py myscript.py", even w/o installed python.
53 "py myscript.py", even w/o installed python.
51
54
52 2007-08-21 Ville Vainio <vivainio@gmail.com>
55 2007-08-21 Ville Vainio <vivainio@gmail.com>
53
56
54 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
57 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
55 (for backwards compatibility)
58 (for backwards compatibility)
56
59
57 * history.py: switch back to %hist -t from %hist -r as default.
60 * history.py: switch back to %hist -t from %hist -r as default.
58 At least until raw history is fixed for good.
61 At least until raw history is fixed for good.
59
62
60 2007-08-20 Ville Vainio <vivainio@gmail.com>
63 2007-08-20 Ville Vainio <vivainio@gmail.com>
61
64
62 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
65 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
63 locate alias redeclarations etc. Also, avoid handling
66 locate alias redeclarations etc. Also, avoid handling
64 _ip.IP.alias_table directly, prefer using _ip.defalias.
67 _ip.IP.alias_table directly, prefer using _ip.defalias.
65
68
66
69
67 2007-08-15 Ville Vainio <vivainio@gmail.com>
70 2007-08-15 Ville Vainio <vivainio@gmail.com>
68
71
69 * prefilter.py: ! is now always served first
72 * prefilter.py: ! is now always served first
70
73
71 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
74 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
72
75
73 * IPython/iplib.py (safe_execfile): fix the SystemExit
76 * IPython/iplib.py (safe_execfile): fix the SystemExit
74 auto-suppression code to work in Python2.4 (the internal structure
77 auto-suppression code to work in Python2.4 (the internal structure
75 of that exception changed and I'd only tested the code with 2.5).
78 of that exception changed and I'd only tested the code with 2.5).
76 Bug reported by a SciPy attendee.
79 Bug reported by a SciPy attendee.
77
80
78 2007-08-13 Ville Vainio <vivainio@gmail.com>
81 2007-08-13 Ville Vainio <vivainio@gmail.com>
79
82
80 * prefilter.py: reverted !c:/bin/foo fix, made % in
83 * prefilter.py: reverted !c:/bin/foo fix, made % in
81 multiline specials work again
84 multiline specials work again
82
85
83 2007-08-13 Ville Vainio <vivainio@gmail.com>
86 2007-08-13 Ville Vainio <vivainio@gmail.com>
84
87
85 * prefilter.py: Take more care to special-case !, so that
88 * prefilter.py: Take more care to special-case !, so that
86 !c:/bin/foo.exe works.
89 !c:/bin/foo.exe works.
87
90
88 * setup.py: if we are building eggs, strip all docs and
91 * setup.py: if we are building eggs, strip all docs and
89 examples (it doesn't make sense to bytecompile examples,
92 examples (it doesn't make sense to bytecompile examples,
90 and docs would be in an awkward place anyway).
93 and docs would be in an awkward place anyway).
91
94
92 * Ryan Krauss' patch fixes start menu shortcuts when IPython
95 * Ryan Krauss' patch fixes start menu shortcuts when IPython
93 is installed into a directory that has spaces in the name.
96 is installed into a directory that has spaces in the name.
94
97
95 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
98 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
96
99
97 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
100 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
98 doctest profile and %doctest_mode, so they actually generate the
101 doctest profile and %doctest_mode, so they actually generate the
99 blank lines needed by doctest to separate individual tests.
102 blank lines needed by doctest to separate individual tests.
100
103
101 * IPython/iplib.py (safe_execfile): modify so that running code
104 * IPython/iplib.py (safe_execfile): modify so that running code
102 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
105 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
103 doesn't get a printed traceback. Any other value in sys.exit(),
106 doesn't get a printed traceback. Any other value in sys.exit(),
104 including the empty call, still generates a traceback. This
107 including the empty call, still generates a traceback. This
105 enables use of %run without having to pass '-e' for codes that
108 enables use of %run without having to pass '-e' for codes that
106 correctly set the exit status flag.
109 correctly set the exit status flag.
107
110
108 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
111 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
109
112
110 * IPython/iplib.py (InteractiveShell.post_config_initialization):
113 * IPython/iplib.py (InteractiveShell.post_config_initialization):
111 fix problems with doctests failing when run inside IPython due to
114 fix problems with doctests failing when run inside IPython due to
112 IPython's modifications of sys.displayhook.
115 IPython's modifications of sys.displayhook.
113
116
114 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
117 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
115
118
116 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
119 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
117 a string with names.
120 a string with names.
118
121
119 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
122 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
120
123
121 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
124 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
122 magic to toggle on/off the doctest pasting support without having
125 magic to toggle on/off the doctest pasting support without having
123 to leave a session to switch to a separate profile.
126 to leave a session to switch to a separate profile.
124
127
125 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
128 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
126
129
127 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
130 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
128 introduce a blank line between inputs, to conform to doctest
131 introduce a blank line between inputs, to conform to doctest
129 requirements.
132 requirements.
130
133
131 * IPython/OInspect.py (Inspector.pinfo): fix another part where
134 * IPython/OInspect.py (Inspector.pinfo): fix another part where
132 auto-generated docstrings for new-style classes were showing up.
135 auto-generated docstrings for new-style classes were showing up.
133
136
134 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
137 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
135
138
136 * api_changes: Add new file to track backward-incompatible
139 * api_changes: Add new file to track backward-incompatible
137 user-visible changes.
140 user-visible changes.
138
141
139 2007-08-06 Ville Vainio <vivainio@gmail.com>
142 2007-08-06 Ville Vainio <vivainio@gmail.com>
140
143
141 * ipmaker.py: fix bug where user_config_ns didn't exist at all
144 * ipmaker.py: fix bug where user_config_ns didn't exist at all
142 before all the config files were handled.
145 before all the config files were handled.
143
146
144 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
147 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
145
148
146 * IPython/irunner.py (RunnerFactory): Add new factory class for
149 * IPython/irunner.py (RunnerFactory): Add new factory class for
147 creating reusable runners based on filenames.
150 creating reusable runners based on filenames.
148
151
149 * IPython/Extensions/ipy_profile_doctest.py: New profile for
152 * IPython/Extensions/ipy_profile_doctest.py: New profile for
150 doctest support. It sets prompts/exceptions as similar to
153 doctest support. It sets prompts/exceptions as similar to
151 standard Python as possible, so that ipython sessions in this
154 standard Python as possible, so that ipython sessions in this
152 profile can be easily pasted as doctests with minimal
155 profile can be easily pasted as doctests with minimal
153 modifications. It also enables pasting of doctests from external
156 modifications. It also enables pasting of doctests from external
154 sources (even if they have leading whitespace), so that you can
157 sources (even if they have leading whitespace), so that you can
155 rerun doctests from existing sources.
158 rerun doctests from existing sources.
156
159
157 * IPython/iplib.py (_prefilter): fix a buglet where after entering
160 * IPython/iplib.py (_prefilter): fix a buglet where after entering
158 some whitespace, the prompt would become a continuation prompt
161 some whitespace, the prompt would become a continuation prompt
159 with no way of exiting it other than Ctrl-C. This fix brings us
162 with no way of exiting it other than Ctrl-C. This fix brings us
160 into conformity with how the default python prompt works.
163 into conformity with how the default python prompt works.
161
164
162 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
165 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
163 Add support for pasting not only lines that start with '>>>', but
166 Add support for pasting not only lines that start with '>>>', but
164 also with ' >>>'. That is, arbitrary whitespace can now precede
167 also with ' >>>'. That is, arbitrary whitespace can now precede
165 the prompts. This makes the system useful for pasting doctests
168 the prompts. This makes the system useful for pasting doctests
166 from docstrings back into a normal session.
169 from docstrings back into a normal session.
167
170
168 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
171 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
169
172
170 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
173 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
171 r1357, which had killed multiple invocations of an embedded
174 r1357, which had killed multiple invocations of an embedded
172 ipython (this means that example-embed has been broken for over 1
175 ipython (this means that example-embed has been broken for over 1
173 year!!!). Rather than possibly breaking the batch stuff for which
176 year!!!). Rather than possibly breaking the batch stuff for which
174 the code in iplib.py/interact was introduced, I worked around the
177 the code in iplib.py/interact was introduced, I worked around the
175 problem in the embedding class in Shell.py. We really need a
178 problem in the embedding class in Shell.py. We really need a
176 bloody test suite for this code, I'm sick of finding stuff that
179 bloody test suite for this code, I'm sick of finding stuff that
177 used to work breaking left and right every time I use an old
180 used to work breaking left and right every time I use an old
178 feature I hadn't touched in a few months.
181 feature I hadn't touched in a few months.
179 (kill_embedded): Add a new magic that only shows up in embedded
182 (kill_embedded): Add a new magic that only shows up in embedded
180 mode, to allow users to permanently deactivate an embedded instance.
183 mode, to allow users to permanently deactivate an embedded instance.
181
184
182 2007-08-01 Ville Vainio <vivainio@gmail.com>
185 2007-08-01 Ville Vainio <vivainio@gmail.com>
183
186
184 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
187 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
185 history gets out of sync on runlines (e.g. when running macros).
188 history gets out of sync on runlines (e.g. when running macros).
186
189
187 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
190 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
188
191
189 * IPython/Magic.py (magic_colors): fix win32-related error message
192 * IPython/Magic.py (magic_colors): fix win32-related error message
190 that could appear under *nix when readline was missing. Patch by
193 that could appear under *nix when readline was missing. Patch by
191 Scott Jackson, closes #175.
194 Scott Jackson, closes #175.
192
195
193 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
196 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
194
197
195 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
198 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
196 completer that it traits-aware, so that traits objects don't show
199 completer that it traits-aware, so that traits objects don't show
197 all of their internal attributes all the time.
200 all of their internal attributes all the time.
198
201
199 * IPython/genutils.py (dir2): moved this code from inside
202 * IPython/genutils.py (dir2): moved this code from inside
200 completer.py to expose it publicly, so I could use it in the
203 completer.py to expose it publicly, so I could use it in the
201 wildcards bugfix.
204 wildcards bugfix.
202
205
203 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
206 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
204 Stefan with Traits.
207 Stefan with Traits.
205
208
206 * IPython/completer.py (Completer.attr_matches): change internal
209 * IPython/completer.py (Completer.attr_matches): change internal
207 var name from 'object' to 'obj', since 'object' is now a builtin
210 var name from 'object' to 'obj', since 'object' is now a builtin
208 and this can lead to weird bugs if reusing this code elsewhere.
211 and this can lead to weird bugs if reusing this code elsewhere.
209
212
210 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
213 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
211
214
212 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
215 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
213 'foo?' and update the code to prevent printing of default
216 'foo?' and update the code to prevent printing of default
214 docstrings that started appearing after I added support for
217 docstrings that started appearing after I added support for
215 new-style classes. The approach I'm using isn't ideal (I just
218 new-style classes. The approach I'm using isn't ideal (I just
216 special-case those strings) but I'm not sure how to more robustly
219 special-case those strings) but I'm not sure how to more robustly
217 differentiate between truly user-written strings and Python's
220 differentiate between truly user-written strings and Python's
218 automatic ones.
221 automatic ones.
219
222
220 2007-07-09 Ville Vainio <vivainio@gmail.com>
223 2007-07-09 Ville Vainio <vivainio@gmail.com>
221
224
222 * completer.py: Applied Matthew Neeley's patch:
225 * completer.py: Applied Matthew Neeley's patch:
223 Dynamic attributes from trait_names and _getAttributeNames are added
226 Dynamic attributes from trait_names and _getAttributeNames are added
224 to the list of tab completions, but when this happens, the attribute
227 to the list of tab completions, but when this happens, the attribute
225 list is turned into a set, so the attributes are unordered when
228 list is turned into a set, so the attributes are unordered when
226 printed, which makes it hard to find the right completion. This patch
229 printed, which makes it hard to find the right completion. This patch
227 turns this set back into a list and sort it.
230 turns this set back into a list and sort it.
228
231
229 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
232 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
230
233
231 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
234 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
232 classes in various inspector functions.
235 classes in various inspector functions.
233
236
234 2007-06-28 Ville Vainio <vivainio@gmail.com>
237 2007-06-28 Ville Vainio <vivainio@gmail.com>
235
238
236 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
239 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
237 Implement "shadow" namespace, and callable aliases that reside there.
240 Implement "shadow" namespace, and callable aliases that reside there.
238 Use them by:
241 Use them by:
239
242
240 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
243 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
241
244
242 foo hello world
245 foo hello world
243 (gets translated to:)
246 (gets translated to:)
244 _sh.foo(r"""hello world""")
247 _sh.foo(r"""hello world""")
245
248
246 In practice, this kind of alias can take the role of a magic function
249 In practice, this kind of alias can take the role of a magic function
247
250
248 * New generic inspect_object, called on obj? and obj??
251 * New generic inspect_object, called on obj? and obj??
249
252
250 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
253 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
251
254
252 * IPython/ultraTB.py (findsource): fix a problem with
255 * IPython/ultraTB.py (findsource): fix a problem with
253 inspect.getfile that can cause crashes during traceback construction.
256 inspect.getfile that can cause crashes during traceback construction.
254
257
255 2007-06-14 Ville Vainio <vivainio@gmail.com>
258 2007-06-14 Ville Vainio <vivainio@gmail.com>
256
259
257 * iplib.py (handle_auto): Try to use ascii for printing "--->"
260 * iplib.py (handle_auto): Try to use ascii for printing "--->"
258 autocall rewrite indication, becausesometimes unicode fails to print
261 autocall rewrite indication, becausesometimes unicode fails to print
259 properly (and you get ' - - - '). Use plain uncoloured ---> for
262 properly (and you get ' - - - '). Use plain uncoloured ---> for
260 unicode.
263 unicode.
261
264
262 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
265 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
263
266
264 . pickleshare 'hash' commands (hget, hset, hcompress,
267 . pickleshare 'hash' commands (hget, hset, hcompress,
265 hdict) for efficient shadow history storage.
268 hdict) for efficient shadow history storage.
266
269
267 2007-06-13 Ville Vainio <vivainio@gmail.com>
270 2007-06-13 Ville Vainio <vivainio@gmail.com>
268
271
269 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
272 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
270 Added kw arg 'interactive', tell whether vars should be visible
273 Added kw arg 'interactive', tell whether vars should be visible
271 with %whos.
274 with %whos.
272
275
273 2007-06-11 Ville Vainio <vivainio@gmail.com>
276 2007-06-11 Ville Vainio <vivainio@gmail.com>
274
277
275 * pspersistence.py, Magic.py, iplib.py: directory history now saved
278 * pspersistence.py, Magic.py, iplib.py: directory history now saved
276 to db
279 to db
277
280
278 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
281 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
279 Also, it exits IPython immediately after evaluating the command (just like
282 Also, it exits IPython immediately after evaluating the command (just like
280 std python)
283 std python)
281
284
282 2007-06-05 Walter Doerwald <walter@livinglogic.de>
285 2007-06-05 Walter Doerwald <walter@livinglogic.de>
283
286
284 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
287 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
285 Python string and captures the output. (Idea and original patch by
288 Python string and captures the output. (Idea and original patch by
286 StοΏ½fan van der Walt)
289 StοΏ½fan van der Walt)
287
290
288 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
291 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
289
292
290 * IPython/ultraTB.py (VerboseTB.text): update printing of
293 * IPython/ultraTB.py (VerboseTB.text): update printing of
291 exception types for Python 2.5 (now all exceptions in the stdlib
294 exception types for Python 2.5 (now all exceptions in the stdlib
292 are new-style classes).
295 are new-style classes).
293
296
294 2007-05-31 Walter Doerwald <walter@livinglogic.de>
297 2007-05-31 Walter Doerwald <walter@livinglogic.de>
295
298
296 * IPython/Extensions/igrid.py: Add new commands refresh and
299 * IPython/Extensions/igrid.py: Add new commands refresh and
297 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
300 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
298 the iterator once (refresh) or after every x seconds (refresh_timer).
301 the iterator once (refresh) or after every x seconds (refresh_timer).
299 Add a working implementation of "searchexpression", where the text
302 Add a working implementation of "searchexpression", where the text
300 entered is not the text to search for, but an expression that must
303 entered is not the text to search for, but an expression that must
301 be true. Added display of shortcuts to the menu. Added commands "pickinput"
304 be true. Added display of shortcuts to the menu. Added commands "pickinput"
302 and "pickinputattr" that put the object or attribute under the cursor
305 and "pickinputattr" that put the object or attribute under the cursor
303 in the input line. Split the statusbar to be able to display the currently
306 in the input line. Split the statusbar to be able to display the currently
304 active refresh interval. (Patch by Nik Tautenhahn)
307 active refresh interval. (Patch by Nik Tautenhahn)
305
308
306 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
309 2007-05-29 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
307
310
308 * fixing set_term_title to use ctypes as default
311 * fixing set_term_title to use ctypes as default
309
312
310 * fixing set_term_title fallback to work when curent dir
313 * fixing set_term_title fallback to work when curent dir
311 is on a windows network share
314 is on a windows network share
312
315
313 2007-05-28 Ville Vainio <vivainio@gmail.com>
316 2007-05-28 Ville Vainio <vivainio@gmail.com>
314
317
315 * %cpaste: strip + with > from left (diffs).
318 * %cpaste: strip + with > from left (diffs).
316
319
317 * iplib.py: Fix crash when readline not installed
320 * iplib.py: Fix crash when readline not installed
318
321
319 2007-05-26 Ville Vainio <vivainio@gmail.com>
322 2007-05-26 Ville Vainio <vivainio@gmail.com>
320
323
321 * generics.py: intruduce easy to extend result_display generic
324 * generics.py: intruduce easy to extend result_display generic
322 function (using simplegeneric.py).
325 function (using simplegeneric.py).
323
326
324 * Fixed the append functionality of %set.
327 * Fixed the append functionality of %set.
325
328
326 2007-05-25 Ville Vainio <vivainio@gmail.com>
329 2007-05-25 Ville Vainio <vivainio@gmail.com>
327
330
328 * New magic: %rep (fetch / run old commands from history)
331 * New magic: %rep (fetch / run old commands from history)
329
332
330 * New extension: mglob (%mglob magic), for powerful glob / find /filter
333 * New extension: mglob (%mglob magic), for powerful glob / find /filter
331 like functionality
334 like functionality
332
335
333 % maghistory.py: %hist -g PATTERM greps the history for pattern
336 % maghistory.py: %hist -g PATTERM greps the history for pattern
334
337
335 2007-05-24 Walter Doerwald <walter@livinglogic.de>
338 2007-05-24 Walter Doerwald <walter@livinglogic.de>
336
339
337 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
340 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
338 browse the IPython input history
341 browse the IPython input history
339
342
340 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
343 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
341 (mapped to "i") can be used to put the object under the curser in the input
344 (mapped to "i") can be used to put the object under the curser in the input
342 line. pickinputattr (mapped to "I") does the same for the attribute under
345 line. pickinputattr (mapped to "I") does the same for the attribute under
343 the cursor.
346 the cursor.
344
347
345 2007-05-24 Ville Vainio <vivainio@gmail.com>
348 2007-05-24 Ville Vainio <vivainio@gmail.com>
346
349
347 * Grand magic cleansing (changeset [2380]):
350 * Grand magic cleansing (changeset [2380]):
348
351
349 * Introduce ipy_legacy.py where the following magics were
352 * Introduce ipy_legacy.py where the following magics were
350 moved:
353 moved:
351
354
352 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
355 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
353
356
354 If you need them, either use default profile or "import ipy_legacy"
357 If you need them, either use default profile or "import ipy_legacy"
355 in your ipy_user_conf.py
358 in your ipy_user_conf.py
356
359
357 * Move sh and scipy profile to Extensions from UserConfig. this implies
360 * Move sh and scipy profile to Extensions from UserConfig. this implies
358 you should not edit them, but you don't need to run %upgrade when
361 you should not edit them, but you don't need to run %upgrade when
359 upgrading IPython anymore.
362 upgrading IPython anymore.
360
363
361 * %hist/%history now operates in "raw" mode by default. To get the old
364 * %hist/%history now operates in "raw" mode by default. To get the old
362 behaviour, run '%hist -n' (native mode).
365 behaviour, run '%hist -n' (native mode).
363
366
364 * split ipy_stock_completers.py to ipy_stock_completers.py and
367 * split ipy_stock_completers.py to ipy_stock_completers.py and
365 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
368 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
366 installed as default.
369 installed as default.
367
370
368 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
371 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
369 handling.
372 handling.
370
373
371 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
374 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
372 input if readline is available.
375 input if readline is available.
373
376
374 2007-05-23 Ville Vainio <vivainio@gmail.com>
377 2007-05-23 Ville Vainio <vivainio@gmail.com>
375
378
376 * macro.py: %store uses __getstate__ properly
379 * macro.py: %store uses __getstate__ properly
377
380
378 * exesetup.py: added new setup script for creating
381 * exesetup.py: added new setup script for creating
379 standalone IPython executables with py2exe (i.e.
382 standalone IPython executables with py2exe (i.e.
380 no python installation required).
383 no python installation required).
381
384
382 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
385 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
383 its place.
386 its place.
384
387
385 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
388 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
386
389
387 2007-05-21 Ville Vainio <vivainio@gmail.com>
390 2007-05-21 Ville Vainio <vivainio@gmail.com>
388
391
389 * platutil_win32.py (set_term_title): handle
392 * platutil_win32.py (set_term_title): handle
390 failure of 'title' system call properly.
393 failure of 'title' system call properly.
391
394
392 2007-05-17 Walter Doerwald <walter@livinglogic.de>
395 2007-05-17 Walter Doerwald <walter@livinglogic.de>
393
396
394 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
397 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
395 (Bug detected by Paul Mueller).
398 (Bug detected by Paul Mueller).
396
399
397 2007-05-16 Ville Vainio <vivainio@gmail.com>
400 2007-05-16 Ville Vainio <vivainio@gmail.com>
398
401
399 * ipy_profile_sci.py, ipython_win_post_install.py: Create
402 * ipy_profile_sci.py, ipython_win_post_install.py: Create
400 new "sci" profile, effectively a modern version of the old
403 new "sci" profile, effectively a modern version of the old
401 "scipy" profile (which is now slated for deprecation).
404 "scipy" profile (which is now slated for deprecation).
402
405
403 2007-05-15 Ville Vainio <vivainio@gmail.com>
406 2007-05-15 Ville Vainio <vivainio@gmail.com>
404
407
405 * pycolorize.py, pycolor.1: Paul Mueller's patches that
408 * pycolorize.py, pycolor.1: Paul Mueller's patches that
406 make pycolorize read input from stdin when run without arguments.
409 make pycolorize read input from stdin when run without arguments.
407
410
408 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
411 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
409
412
410 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
413 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
411 it in sh profile (instead of ipy_system_conf.py).
414 it in sh profile (instead of ipy_system_conf.py).
412
415
413 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
416 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
414 aliases are now lower case on windows (MyCommand.exe => mycommand).
417 aliases are now lower case on windows (MyCommand.exe => mycommand).
415
418
416 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
419 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
417 Macros are now callable objects that inherit from ipapi.IPyAutocall,
420 Macros are now callable objects that inherit from ipapi.IPyAutocall,
418 i.e. get autocalled regardless of system autocall setting.
421 i.e. get autocalled regardless of system autocall setting.
419
422
420 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
423 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
421
424
422 * IPython/rlineimpl.py: check for clear_history in readline and
425 * IPython/rlineimpl.py: check for clear_history in readline and
423 make it a dummy no-op if not available. This function isn't
426 make it a dummy no-op if not available. This function isn't
424 guaranteed to be in the API and appeared in Python 2.4, so we need
427 guaranteed to be in the API and appeared in Python 2.4, so we need
425 to check it ourselves. Also, clean up this file quite a bit.
428 to check it ourselves. Also, clean up this file quite a bit.
426
429
427 * ipython.1: update man page and full manual with information
430 * ipython.1: update man page and full manual with information
428 about threads (remove outdated warning). Closes #151.
431 about threads (remove outdated warning). Closes #151.
429
432
430 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
433 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
431
434
432 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
435 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
433 in trunk (note that this made it into the 0.8.1 release already,
436 in trunk (note that this made it into the 0.8.1 release already,
434 but the changelogs didn't get coordinated). Many thanks to Gael
437 but the changelogs didn't get coordinated). Many thanks to Gael
435 Varoquaux <gael.varoquaux-AT-normalesup.org>
438 Varoquaux <gael.varoquaux-AT-normalesup.org>
436
439
437 2007-05-09 *** Released version 0.8.1
440 2007-05-09 *** Released version 0.8.1
438
441
439 2007-05-10 Walter Doerwald <walter@livinglogic.de>
442 2007-05-10 Walter Doerwald <walter@livinglogic.de>
440
443
441 * IPython/Extensions/igrid.py: Incorporate html help into
444 * IPython/Extensions/igrid.py: Incorporate html help into
442 the module, so we don't have to search for the file.
445 the module, so we don't have to search for the file.
443
446
444 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
447 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
445
448
446 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
449 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
447
450
448 2007-04-30 Ville Vainio <vivainio@gmail.com>
451 2007-04-30 Ville Vainio <vivainio@gmail.com>
449
452
450 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
453 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
451 user has illegal (non-ascii) home directory name
454 user has illegal (non-ascii) home directory name
452
455
453 2007-04-27 Ville Vainio <vivainio@gmail.com>
456 2007-04-27 Ville Vainio <vivainio@gmail.com>
454
457
455 * platutils_win32.py: implement set_term_title for windows
458 * platutils_win32.py: implement set_term_title for windows
456
459
457 * Update version number
460 * Update version number
458
461
459 * ipy_profile_sh.py: more informative prompt (2 dir levels)
462 * ipy_profile_sh.py: more informative prompt (2 dir levels)
460
463
461 2007-04-26 Walter Doerwald <walter@livinglogic.de>
464 2007-04-26 Walter Doerwald <walter@livinglogic.de>
462
465
463 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
466 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
464 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
467 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
465 bug discovered by Ville).
468 bug discovered by Ville).
466
469
467 2007-04-26 Ville Vainio <vivainio@gmail.com>
470 2007-04-26 Ville Vainio <vivainio@gmail.com>
468
471
469 * Extensions/ipy_completers.py: Olivier's module completer now
472 * Extensions/ipy_completers.py: Olivier's module completer now
470 saves the list of root modules if it takes > 4 secs on the first run.
473 saves the list of root modules if it takes > 4 secs on the first run.
471
474
472 * Magic.py (%rehashx): %rehashx now clears the completer cache
475 * Magic.py (%rehashx): %rehashx now clears the completer cache
473
476
474
477
475 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
478 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
476
479
477 * ipython.el: fix incorrect color scheme, reported by Stefan.
480 * ipython.el: fix incorrect color scheme, reported by Stefan.
478 Closes #149.
481 Closes #149.
479
482
480 * IPython/PyColorize.py (Parser.format2): fix state-handling
483 * IPython/PyColorize.py (Parser.format2): fix state-handling
481 logic. I still don't like how that code handles state, but at
484 logic. I still don't like how that code handles state, but at
482 least now it should be correct, if inelegant. Closes #146.
485 least now it should be correct, if inelegant. Closes #146.
483
486
484 2007-04-25 Ville Vainio <vivainio@gmail.com>
487 2007-04-25 Ville Vainio <vivainio@gmail.com>
485
488
486 * Extensions/ipy_which.py: added extension for %which magic, works
489 * Extensions/ipy_which.py: added extension for %which magic, works
487 a lot like unix 'which' but also finds and expands aliases, and
490 a lot like unix 'which' but also finds and expands aliases, and
488 allows wildcards.
491 allows wildcards.
489
492
490 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
493 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
491 as opposed to returning nothing.
494 as opposed to returning nothing.
492
495
493 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
496 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
494 ipy_stock_completers on default profile, do import on sh profile.
497 ipy_stock_completers on default profile, do import on sh profile.
495
498
496 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
499 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
497
500
498 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
501 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
499 like ipython.py foo.py which raised a IndexError.
502 like ipython.py foo.py which raised a IndexError.
500
503
501 2007-04-21 Ville Vainio <vivainio@gmail.com>
504 2007-04-21 Ville Vainio <vivainio@gmail.com>
502
505
503 * Extensions/ipy_extutil.py: added extension to manage other ipython
506 * Extensions/ipy_extutil.py: added extension to manage other ipython
504 extensions. Now only supports 'ls' == list extensions.
507 extensions. Now only supports 'ls' == list extensions.
505
508
506 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
509 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
507
510
508 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
511 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
509 would prevent use of the exception system outside of a running
512 would prevent use of the exception system outside of a running
510 IPython instance.
513 IPython instance.
511
514
512 2007-04-20 Ville Vainio <vivainio@gmail.com>
515 2007-04-20 Ville Vainio <vivainio@gmail.com>
513
516
514 * Extensions/ipy_render.py: added extension for easy
517 * Extensions/ipy_render.py: added extension for easy
515 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
518 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
516 'Iptl' template notation,
519 'Iptl' template notation,
517
520
518 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
521 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
519 safer & faster 'import' completer.
522 safer & faster 'import' completer.
520
523
521 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
524 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
522 and _ip.defalias(name, command).
525 and _ip.defalias(name, command).
523
526
524 * Extensions/ipy_exportdb.py: New extension for exporting all the
527 * Extensions/ipy_exportdb.py: New extension for exporting all the
525 %store'd data in a portable format (normal ipapi calls like
528 %store'd data in a portable format (normal ipapi calls like
526 defmacro() etc.)
529 defmacro() etc.)
527
530
528 2007-04-19 Ville Vainio <vivainio@gmail.com>
531 2007-04-19 Ville Vainio <vivainio@gmail.com>
529
532
530 * upgrade_dir.py: skip junk files like *.pyc
533 * upgrade_dir.py: skip junk files like *.pyc
531
534
532 * Release.py: version number to 0.8.1
535 * Release.py: version number to 0.8.1
533
536
534 2007-04-18 Ville Vainio <vivainio@gmail.com>
537 2007-04-18 Ville Vainio <vivainio@gmail.com>
535
538
536 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
539 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
537 and later on win32.
540 and later on win32.
538
541
539 2007-04-16 Ville Vainio <vivainio@gmail.com>
542 2007-04-16 Ville Vainio <vivainio@gmail.com>
540
543
541 * iplib.py (showtraceback): Do not crash when running w/o readline.
544 * iplib.py (showtraceback): Do not crash when running w/o readline.
542
545
543 2007-04-12 Walter Doerwald <walter@livinglogic.de>
546 2007-04-12 Walter Doerwald <walter@livinglogic.de>
544
547
545 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
548 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
546 sorted (case sensitive with files and dirs mixed).
549 sorted (case sensitive with files and dirs mixed).
547
550
548 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
551 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
549
552
550 * IPython/Release.py (version): Open trunk for 0.8.1 development.
553 * IPython/Release.py (version): Open trunk for 0.8.1 development.
551
554
552 2007-04-10 *** Released version 0.8.0
555 2007-04-10 *** Released version 0.8.0
553
556
554 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
557 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
555
558
556 * Tag 0.8.0 for release.
559 * Tag 0.8.0 for release.
557
560
558 * IPython/iplib.py (reloadhist): add API function to cleanly
561 * IPython/iplib.py (reloadhist): add API function to cleanly
559 reload the readline history, which was growing inappropriately on
562 reload the readline history, which was growing inappropriately on
560 every %run call.
563 every %run call.
561
564
562 * win32_manual_post_install.py (run): apply last part of Nicolas
565 * win32_manual_post_install.py (run): apply last part of Nicolas
563 Pernetty's patch (I'd accidentally applied it in a different
566 Pernetty's patch (I'd accidentally applied it in a different
564 directory and this particular file didn't get patched).
567 directory and this particular file didn't get patched).
565
568
566 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
569 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
567
570
568 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
571 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
569 find the main thread id and use the proper API call. Thanks to
572 find the main thread id and use the proper API call. Thanks to
570 Stefan for the fix.
573 Stefan for the fix.
571
574
572 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
575 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
573 unit tests to reflect fixed ticket #52, and add more tests sent by
576 unit tests to reflect fixed ticket #52, and add more tests sent by
574 him.
577 him.
575
578
576 * IPython/iplib.py (raw_input): restore the readline completer
579 * IPython/iplib.py (raw_input): restore the readline completer
577 state on every input, in case third-party code messed it up.
580 state on every input, in case third-party code messed it up.
578 (_prefilter): revert recent addition of early-escape checks which
581 (_prefilter): revert recent addition of early-escape checks which
579 prevent many valid alias calls from working.
582 prevent many valid alias calls from working.
580
583
581 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
584 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
582 flag for sigint handler so we don't run a full signal() call on
585 flag for sigint handler so we don't run a full signal() call on
583 each runcode access.
586 each runcode access.
584
587
585 * IPython/Magic.py (magic_whos): small improvement to diagnostic
588 * IPython/Magic.py (magic_whos): small improvement to diagnostic
586 message.
589 message.
587
590
588 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
591 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
589
592
590 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
593 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
591 asynchronous exceptions working, i.e., Ctrl-C can actually
594 asynchronous exceptions working, i.e., Ctrl-C can actually
592 interrupt long-running code in the multithreaded shells.
595 interrupt long-running code in the multithreaded shells.
593
596
594 This is using Tomer Filiba's great ctypes-based trick:
597 This is using Tomer Filiba's great ctypes-based trick:
595 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
598 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
596 this in the past, but hadn't been able to make it work before. So
599 this in the past, but hadn't been able to make it work before. So
597 far it looks like it's actually running, but this needs more
600 far it looks like it's actually running, but this needs more
598 testing. If it really works, I'll be *very* happy, and we'll owe
601 testing. If it really works, I'll be *very* happy, and we'll owe
599 a huge thank you to Tomer. My current implementation is ugly,
602 a huge thank you to Tomer. My current implementation is ugly,
600 hackish and uses nasty globals, but I don't want to try and clean
603 hackish and uses nasty globals, but I don't want to try and clean
601 anything up until we know if it actually works.
604 anything up until we know if it actually works.
602
605
603 NOTE: this feature needs ctypes to work. ctypes is included in
606 NOTE: this feature needs ctypes to work. ctypes is included in
604 Python2.5, but 2.4 users will need to manually install it. This
607 Python2.5, but 2.4 users will need to manually install it. This
605 feature makes multi-threaded shells so much more usable that it's
608 feature makes multi-threaded shells so much more usable that it's
606 a minor price to pay (ctypes is very easy to install, already a
609 a minor price to pay (ctypes is very easy to install, already a
607 requirement for win32 and available in major linux distros).
610 requirement for win32 and available in major linux distros).
608
611
609 2007-04-04 Ville Vainio <vivainio@gmail.com>
612 2007-04-04 Ville Vainio <vivainio@gmail.com>
610
613
611 * Extensions/ipy_completers.py, ipy_stock_completers.py:
614 * Extensions/ipy_completers.py, ipy_stock_completers.py:
612 Moved implementations of 'bundled' completers to ipy_completers.py,
615 Moved implementations of 'bundled' completers to ipy_completers.py,
613 they are only enabled in ipy_stock_completers.py.
616 they are only enabled in ipy_stock_completers.py.
614
617
615 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
618 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
616
619
617 * IPython/PyColorize.py (Parser.format2): Fix identation of
620 * IPython/PyColorize.py (Parser.format2): Fix identation of
618 colorzied output and return early if color scheme is NoColor, to
621 colorzied output and return early if color scheme is NoColor, to
619 avoid unnecessary and expensive tokenization. Closes #131.
622 avoid unnecessary and expensive tokenization. Closes #131.
620
623
621 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
624 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
622
625
623 * IPython/Debugger.py: disable the use of pydb version 1.17. It
626 * IPython/Debugger.py: disable the use of pydb version 1.17. It
624 has a critical bug (a missing import that makes post-mortem not
627 has a critical bug (a missing import that makes post-mortem not
625 work at all). Unfortunately as of this time, this is the version
628 work at all). Unfortunately as of this time, this is the version
626 shipped with Ubuntu Edgy, so quite a few people have this one. I
629 shipped with Ubuntu Edgy, so quite a few people have this one. I
627 hope Edgy will update to a more recent package.
630 hope Edgy will update to a more recent package.
628
631
629 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
632 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
630
633
631 * IPython/iplib.py (_prefilter): close #52, second part of a patch
634 * IPython/iplib.py (_prefilter): close #52, second part of a patch
632 set by Stefan (only the first part had been applied before).
635 set by Stefan (only the first part had been applied before).
633
636
634 * IPython/Extensions/ipy_stock_completers.py (module_completer):
637 * IPython/Extensions/ipy_stock_completers.py (module_completer):
635 remove usage of the dangerous pkgutil.walk_packages(). See
638 remove usage of the dangerous pkgutil.walk_packages(). See
636 details in comments left in the code.
639 details in comments left in the code.
637
640
638 * IPython/Magic.py (magic_whos): add support for numpy arrays
641 * IPython/Magic.py (magic_whos): add support for numpy arrays
639 similar to what we had for Numeric.
642 similar to what we had for Numeric.
640
643
641 * IPython/completer.py (IPCompleter.complete): extend the
644 * IPython/completer.py (IPCompleter.complete): extend the
642 complete() call API to support completions by other mechanisms
645 complete() call API to support completions by other mechanisms
643 than readline. Closes #109.
646 than readline. Closes #109.
644
647
645 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
648 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
646 protect against a bug in Python's execfile(). Closes #123.
649 protect against a bug in Python's execfile(). Closes #123.
647
650
648 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
651 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
649
652
650 * IPython/iplib.py (split_user_input): ensure that when splitting
653 * IPython/iplib.py (split_user_input): ensure that when splitting
651 user input, the part that can be treated as a python name is pure
654 user input, the part that can be treated as a python name is pure
652 ascii (Python identifiers MUST be pure ascii). Part of the
655 ascii (Python identifiers MUST be pure ascii). Part of the
653 ongoing Unicode support work.
656 ongoing Unicode support work.
654
657
655 * IPython/Prompts.py (prompt_specials_color): Add \N for the
658 * IPython/Prompts.py (prompt_specials_color): Add \N for the
656 actual prompt number, without any coloring. This allows users to
659 actual prompt number, without any coloring. This allows users to
657 produce numbered prompts with their own colors. Added after a
660 produce numbered prompts with their own colors. Added after a
658 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
661 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
659
662
660 2007-03-31 Walter Doerwald <walter@livinglogic.de>
663 2007-03-31 Walter Doerwald <walter@livinglogic.de>
661
664
662 * IPython/Extensions/igrid.py: Map the return key
665 * IPython/Extensions/igrid.py: Map the return key
663 to enter() and shift-return to enterattr().
666 to enter() and shift-return to enterattr().
664
667
665 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
668 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
666
669
667 * IPython/Magic.py (magic_psearch): add unicode support by
670 * IPython/Magic.py (magic_psearch): add unicode support by
668 encoding to ascii the input, since this routine also only deals
671 encoding to ascii the input, since this routine also only deals
669 with valid Python names. Fixes a bug reported by Stefan.
672 with valid Python names. Fixes a bug reported by Stefan.
670
673
671 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
674 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
672
675
673 * IPython/Magic.py (_inspect): convert unicode input into ascii
676 * IPython/Magic.py (_inspect): convert unicode input into ascii
674 before trying to evaluate it as a Python identifier. This fixes a
677 before trying to evaluate it as a Python identifier. This fixes a
675 problem that the new unicode support had introduced when analyzing
678 problem that the new unicode support had introduced when analyzing
676 long definition lines for functions.
679 long definition lines for functions.
677
680
678 2007-03-24 Walter Doerwald <walter@livinglogic.de>
681 2007-03-24 Walter Doerwald <walter@livinglogic.de>
679
682
680 * IPython/Extensions/igrid.py: Fix picking. Using
683 * IPython/Extensions/igrid.py: Fix picking. Using
681 igrid with wxPython 2.6 and -wthread should work now.
684 igrid with wxPython 2.6 and -wthread should work now.
682 igrid.display() simply tries to create a frame without
685 igrid.display() simply tries to create a frame without
683 an application. Only if this fails an application is created.
686 an application. Only if this fails an application is created.
684
687
685 2007-03-23 Walter Doerwald <walter@livinglogic.de>
688 2007-03-23 Walter Doerwald <walter@livinglogic.de>
686
689
687 * IPython/Extensions/path.py: Updated to version 2.2.
690 * IPython/Extensions/path.py: Updated to version 2.2.
688
691
689 2007-03-23 Ville Vainio <vivainio@gmail.com>
692 2007-03-23 Ville Vainio <vivainio@gmail.com>
690
693
691 * iplib.py: recursive alias expansion now works better, so that
694 * iplib.py: recursive alias expansion now works better, so that
692 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
695 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
693 doesn't trip up the process, if 'd' has been aliased to 'ls'.
696 doesn't trip up the process, if 'd' has been aliased to 'ls'.
694
697
695 * Extensions/ipy_gnuglobal.py added, provides %global magic
698 * Extensions/ipy_gnuglobal.py added, provides %global magic
696 for users of http://www.gnu.org/software/global
699 for users of http://www.gnu.org/software/global
697
700
698 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
701 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
699 Closes #52. Patch by Stefan van der Walt.
702 Closes #52. Patch by Stefan van der Walt.
700
703
701 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
704 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
702
705
703 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
706 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
704 respect the __file__ attribute when using %run. Thanks to a bug
707 respect the __file__ attribute when using %run. Thanks to a bug
705 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
708 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
706
709
707 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
710 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
708
711
709 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
712 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
710 input. Patch sent by Stefan.
713 input. Patch sent by Stefan.
711
714
712 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
715 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
713 * IPython/Extensions/ipy_stock_completer.py
716 * IPython/Extensions/ipy_stock_completer.py
714 shlex_split, fix bug in shlex_split. len function
717 shlex_split, fix bug in shlex_split. len function
715 call was missing an if statement. Caused shlex_split to
718 call was missing an if statement. Caused shlex_split to
716 sometimes return "" as last element.
719 sometimes return "" as last element.
717
720
718 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
721 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
719
722
720 * IPython/completer.py
723 * IPython/completer.py
721 (IPCompleter.file_matches.single_dir_expand): fix a problem
724 (IPCompleter.file_matches.single_dir_expand): fix a problem
722 reported by Stefan, where directories containign a single subdir
725 reported by Stefan, where directories containign a single subdir
723 would be completed too early.
726 would be completed too early.
724
727
725 * IPython/Shell.py (_load_pylab): Make the execution of 'from
728 * IPython/Shell.py (_load_pylab): Make the execution of 'from
726 pylab import *' when -pylab is given be optional. A new flag,
729 pylab import *' when -pylab is given be optional. A new flag,
727 pylab_import_all controls this behavior, the default is True for
730 pylab_import_all controls this behavior, the default is True for
728 backwards compatibility.
731 backwards compatibility.
729
732
730 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
733 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
731 modified) R. Bernstein's patch for fully syntax highlighted
734 modified) R. Bernstein's patch for fully syntax highlighted
732 tracebacks. The functionality is also available under ultraTB for
735 tracebacks. The functionality is also available under ultraTB for
733 non-ipython users (someone using ultraTB but outside an ipython
736 non-ipython users (someone using ultraTB but outside an ipython
734 session). They can select the color scheme by setting the
737 session). They can select the color scheme by setting the
735 module-level global DEFAULT_SCHEME. The highlight functionality
738 module-level global DEFAULT_SCHEME. The highlight functionality
736 also works when debugging.
739 also works when debugging.
737
740
738 * IPython/genutils.py (IOStream.close): small patch by
741 * IPython/genutils.py (IOStream.close): small patch by
739 R. Bernstein for improved pydb support.
742 R. Bernstein for improved pydb support.
740
743
741 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
744 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
742 DaveS <davls@telus.net> to improve support of debugging under
745 DaveS <davls@telus.net> to improve support of debugging under
743 NTEmacs, including improved pydb behavior.
746 NTEmacs, including improved pydb behavior.
744
747
745 * IPython/Magic.py (magic_prun): Fix saving of profile info for
748 * IPython/Magic.py (magic_prun): Fix saving of profile info for
746 Python 2.5, where the stats object API changed a little. Thanks
749 Python 2.5, where the stats object API changed a little. Thanks
747 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
750 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
748
751
749 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
752 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
750 Pernetty's patch to improve support for (X)Emacs under Win32.
753 Pernetty's patch to improve support for (X)Emacs under Win32.
751
754
752 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
755 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
753
756
754 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
757 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
755 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
758 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
756 a report by Nik Tautenhahn.
759 a report by Nik Tautenhahn.
757
760
758 2007-03-16 Walter Doerwald <walter@livinglogic.de>
761 2007-03-16 Walter Doerwald <walter@livinglogic.de>
759
762
760 * setup.py: Add the igrid help files to the list of data files
763 * setup.py: Add the igrid help files to the list of data files
761 to be installed alongside igrid.
764 to be installed alongside igrid.
762 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
765 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
763 Show the input object of the igrid browser as the window tile.
766 Show the input object of the igrid browser as the window tile.
764 Show the object the cursor is on in the statusbar.
767 Show the object the cursor is on in the statusbar.
765
768
766 2007-03-15 Ville Vainio <vivainio@gmail.com>
769 2007-03-15 Ville Vainio <vivainio@gmail.com>
767
770
768 * Extensions/ipy_stock_completers.py: Fixed exception
771 * Extensions/ipy_stock_completers.py: Fixed exception
769 on mismatching quotes in %run completer. Patch by
772 on mismatching quotes in %run completer. Patch by
770 JοΏ½rgen Stenarson. Closes #127.
773 JοΏ½rgen Stenarson. Closes #127.
771
774
772 2007-03-14 Ville Vainio <vivainio@gmail.com>
775 2007-03-14 Ville Vainio <vivainio@gmail.com>
773
776
774 * Extensions/ext_rehashdir.py: Do not do auto_alias
777 * Extensions/ext_rehashdir.py: Do not do auto_alias
775 in %rehashdir, it clobbers %store'd aliases.
778 in %rehashdir, it clobbers %store'd aliases.
776
779
777 * UserConfig/ipy_profile_sh.py: envpersist.py extension
780 * UserConfig/ipy_profile_sh.py: envpersist.py extension
778 (beefed up %env) imported for sh profile.
781 (beefed up %env) imported for sh profile.
779
782
780 2007-03-10 Walter Doerwald <walter@livinglogic.de>
783 2007-03-10 Walter Doerwald <walter@livinglogic.de>
781
784
782 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
785 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
783 as the default browser.
786 as the default browser.
784 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
787 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
785 As igrid displays all attributes it ever encounters, fetch() (which has
788 As igrid displays all attributes it ever encounters, fetch() (which has
786 been renamed to _fetch()) doesn't have to recalculate the display attributes
789 been renamed to _fetch()) doesn't have to recalculate the display attributes
787 every time a new item is fetched. This should speed up scrolling.
790 every time a new item is fetched. This should speed up scrolling.
788
791
789 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
792 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
790
793
791 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
794 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
792 Schmolck's recently reported tab-completion bug (my previous one
795 Schmolck's recently reported tab-completion bug (my previous one
793 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
796 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
794
797
795 2007-03-09 Walter Doerwald <walter@livinglogic.de>
798 2007-03-09 Walter Doerwald <walter@livinglogic.de>
796
799
797 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
800 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
798 Close help window if exiting igrid.
801 Close help window if exiting igrid.
799
802
800 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
803 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
801
804
802 * IPython/Extensions/ipy_defaults.py: Check if readline is available
805 * IPython/Extensions/ipy_defaults.py: Check if readline is available
803 before calling functions from readline.
806 before calling functions from readline.
804
807
805 2007-03-02 Walter Doerwald <walter@livinglogic.de>
808 2007-03-02 Walter Doerwald <walter@livinglogic.de>
806
809
807 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
810 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
808 igrid is a wxPython-based display object for ipipe. If your system has
811 igrid is a wxPython-based display object for ipipe. If your system has
809 wx installed igrid will be the default display. Without wx ipipe falls
812 wx installed igrid will be the default display. Without wx ipipe falls
810 back to ibrowse (which needs curses). If no curses is installed ipipe
813 back to ibrowse (which needs curses). If no curses is installed ipipe
811 falls back to idump.
814 falls back to idump.
812
815
813 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
816 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
814
817
815 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
818 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
816 my changes from yesterday, they introduced bugs. Will reactivate
819 my changes from yesterday, they introduced bugs. Will reactivate
817 once I get a correct solution, which will be much easier thanks to
820 once I get a correct solution, which will be much easier thanks to
818 Dan Milstein's new prefilter test suite.
821 Dan Milstein's new prefilter test suite.
819
822
820 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
823 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
821
824
822 * IPython/iplib.py (split_user_input): fix input splitting so we
825 * IPython/iplib.py (split_user_input): fix input splitting so we
823 don't attempt attribute accesses on things that can't possibly be
826 don't attempt attribute accesses on things that can't possibly be
824 valid Python attributes. After a bug report by Alex Schmolck.
827 valid Python attributes. After a bug report by Alex Schmolck.
825 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
828 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
826 %magic with explicit % prefix.
829 %magic with explicit % prefix.
827
830
828 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
831 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
829
832
830 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
833 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
831 avoid a DeprecationWarning from GTK.
834 avoid a DeprecationWarning from GTK.
832
835
833 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
836 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
834
837
835 * IPython/genutils.py (clock): I modified clock() to return total
838 * IPython/genutils.py (clock): I modified clock() to return total
836 time, user+system. This is a more commonly needed metric. I also
839 time, user+system. This is a more commonly needed metric. I also
837 introduced the new clocku/clocks to get only user/system time if
840 introduced the new clocku/clocks to get only user/system time if
838 one wants those instead.
841 one wants those instead.
839
842
840 ***WARNING: API CHANGE*** clock() used to return only user time,
843 ***WARNING: API CHANGE*** clock() used to return only user time,
841 so if you want exactly the same results as before, use clocku
844 so if you want exactly the same results as before, use clocku
842 instead.
845 instead.
843
846
844 2007-02-22 Ville Vainio <vivainio@gmail.com>
847 2007-02-22 Ville Vainio <vivainio@gmail.com>
845
848
846 * IPython/Extensions/ipy_p4.py: Extension for improved
849 * IPython/Extensions/ipy_p4.py: Extension for improved
847 p4 (perforce version control system) experience.
850 p4 (perforce version control system) experience.
848 Adds %p4 magic with p4 command completion and
851 Adds %p4 magic with p4 command completion and
849 automatic -G argument (marshall output as python dict)
852 automatic -G argument (marshall output as python dict)
850
853
851 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
854 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
852
855
853 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
856 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
854 stop marks.
857 stop marks.
855 (ClearingMixin): a simple mixin to easily make a Demo class clear
858 (ClearingMixin): a simple mixin to easily make a Demo class clear
856 the screen in between blocks and have empty marquees. The
859 the screen in between blocks and have empty marquees. The
857 ClearDemo and ClearIPDemo classes that use it are included.
860 ClearDemo and ClearIPDemo classes that use it are included.
858
861
859 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
862 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
860
863
861 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
864 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
862 protect against exceptions at Python shutdown time. Patch
865 protect against exceptions at Python shutdown time. Patch
863 sumbmitted to upstream.
866 sumbmitted to upstream.
864
867
865 2007-02-14 Walter Doerwald <walter@livinglogic.de>
868 2007-02-14 Walter Doerwald <walter@livinglogic.de>
866
869
867 * IPython/Extensions/ibrowse.py: If entering the first object level
870 * IPython/Extensions/ibrowse.py: If entering the first object level
868 (i.e. the object for which the browser has been started) fails,
871 (i.e. the object for which the browser has been started) fails,
869 now the error is raised directly (aborting the browser) instead of
872 now the error is raised directly (aborting the browser) instead of
870 running into an empty levels list later.
873 running into an empty levels list later.
871
874
872 2007-02-03 Walter Doerwald <walter@livinglogic.de>
875 2007-02-03 Walter Doerwald <walter@livinglogic.de>
873
876
874 * IPython/Extensions/ipipe.py: Add an xrepr implementation
877 * IPython/Extensions/ipipe.py: Add an xrepr implementation
875 for the noitem object.
878 for the noitem object.
876
879
877 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
880 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
878
881
879 * IPython/completer.py (Completer.attr_matches): Fix small
882 * IPython/completer.py (Completer.attr_matches): Fix small
880 tab-completion bug with Enthought Traits objects with units.
883 tab-completion bug with Enthought Traits objects with units.
881 Thanks to a bug report by Tom Denniston
884 Thanks to a bug report by Tom Denniston
882 <tom.denniston-AT-alum.dartmouth.org>.
885 <tom.denniston-AT-alum.dartmouth.org>.
883
886
884 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
887 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
885
888
886 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
889 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
887 bug where only .ipy or .py would be completed. Once the first
890 bug where only .ipy or .py would be completed. Once the first
888 argument to %run has been given, all completions are valid because
891 argument to %run has been given, all completions are valid because
889 they are the arguments to the script, which may well be non-python
892 they are the arguments to the script, which may well be non-python
890 filenames.
893 filenames.
891
894
892 * IPython/irunner.py (InteractiveRunner.run_source): major updates
895 * IPython/irunner.py (InteractiveRunner.run_source): major updates
893 to irunner to allow it to correctly support real doctesting of
896 to irunner to allow it to correctly support real doctesting of
894 out-of-process ipython code.
897 out-of-process ipython code.
895
898
896 * IPython/Magic.py (magic_cd): Make the setting of the terminal
899 * IPython/Magic.py (magic_cd): Make the setting of the terminal
897 title an option (-noterm_title) because it completely breaks
900 title an option (-noterm_title) because it completely breaks
898 doctesting.
901 doctesting.
899
902
900 * IPython/demo.py: fix IPythonDemo class that was not actually working.
903 * IPython/demo.py: fix IPythonDemo class that was not actually working.
901
904
902 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
905 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
903
906
904 * IPython/irunner.py (main): fix small bug where extensions were
907 * IPython/irunner.py (main): fix small bug where extensions were
905 not being correctly recognized.
908 not being correctly recognized.
906
909
907 2007-01-23 Walter Doerwald <walter@livinglogic.de>
910 2007-01-23 Walter Doerwald <walter@livinglogic.de>
908
911
909 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
912 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
910 a string containing a single line yields the string itself as the
913 a string containing a single line yields the string itself as the
911 only item.
914 only item.
912
915
913 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
916 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
914 object if it's the same as the one on the last level (This avoids
917 object if it's the same as the one on the last level (This avoids
915 infinite recursion for one line strings).
918 infinite recursion for one line strings).
916
919
917 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
920 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
918
921
919 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
922 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
920 all output streams before printing tracebacks. This ensures that
923 all output streams before printing tracebacks. This ensures that
921 user output doesn't end up interleaved with traceback output.
924 user output doesn't end up interleaved with traceback output.
922
925
923 2007-01-10 Ville Vainio <vivainio@gmail.com>
926 2007-01-10 Ville Vainio <vivainio@gmail.com>
924
927
925 * Extensions/envpersist.py: Turbocharged %env that remembers
928 * Extensions/envpersist.py: Turbocharged %env that remembers
926 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
929 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
927 "%env VISUAL=jed".
930 "%env VISUAL=jed".
928
931
929 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
932 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
930
933
931 * IPython/iplib.py (showtraceback): ensure that we correctly call
934 * IPython/iplib.py (showtraceback): ensure that we correctly call
932 custom handlers in all cases (some with pdb were slipping through,
935 custom handlers in all cases (some with pdb were slipping through,
933 but I'm not exactly sure why).
936 but I'm not exactly sure why).
934
937
935 * IPython/Debugger.py (Tracer.__init__): added new class to
938 * IPython/Debugger.py (Tracer.__init__): added new class to
936 support set_trace-like usage of IPython's enhanced debugger.
939 support set_trace-like usage of IPython's enhanced debugger.
937
940
938 2006-12-24 Ville Vainio <vivainio@gmail.com>
941 2006-12-24 Ville Vainio <vivainio@gmail.com>
939
942
940 * ipmaker.py: more informative message when ipy_user_conf
943 * ipmaker.py: more informative message when ipy_user_conf
941 import fails (suggest running %upgrade).
944 import fails (suggest running %upgrade).
942
945
943 * tools/run_ipy_in_profiler.py: Utility to see where
946 * tools/run_ipy_in_profiler.py: Utility to see where
944 the time during IPython startup is spent.
947 the time during IPython startup is spent.
945
948
946 2006-12-20 Ville Vainio <vivainio@gmail.com>
949 2006-12-20 Ville Vainio <vivainio@gmail.com>
947
950
948 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
951 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
949
952
950 * ipapi.py: Add new ipapi method, expand_alias.
953 * ipapi.py: Add new ipapi method, expand_alias.
951
954
952 * Release.py: Bump up version to 0.7.4.svn
955 * Release.py: Bump up version to 0.7.4.svn
953
956
954 2006-12-17 Ville Vainio <vivainio@gmail.com>
957 2006-12-17 Ville Vainio <vivainio@gmail.com>
955
958
956 * Extensions/jobctrl.py: Fixed &cmd arg arg...
959 * Extensions/jobctrl.py: Fixed &cmd arg arg...
957 to work properly on posix too
960 to work properly on posix too
958
961
959 * Release.py: Update revnum (version is still just 0.7.3).
962 * Release.py: Update revnum (version is still just 0.7.3).
960
963
961 2006-12-15 Ville Vainio <vivainio@gmail.com>
964 2006-12-15 Ville Vainio <vivainio@gmail.com>
962
965
963 * scripts/ipython_win_post_install: create ipython.py in
966 * scripts/ipython_win_post_install: create ipython.py in
964 prefix + "/scripts".
967 prefix + "/scripts".
965
968
966 * Release.py: Update version to 0.7.3.
969 * Release.py: Update version to 0.7.3.
967
970
968 2006-12-14 Ville Vainio <vivainio@gmail.com>
971 2006-12-14 Ville Vainio <vivainio@gmail.com>
969
972
970 * scripts/ipython_win_post_install: Overwrite old shortcuts
973 * scripts/ipython_win_post_install: Overwrite old shortcuts
971 if they already exist
974 if they already exist
972
975
973 * Release.py: release 0.7.3rc2
976 * Release.py: release 0.7.3rc2
974
977
975 2006-12-13 Ville Vainio <vivainio@gmail.com>
978 2006-12-13 Ville Vainio <vivainio@gmail.com>
976
979
977 * Branch and update Release.py for 0.7.3rc1
980 * Branch and update Release.py for 0.7.3rc1
978
981
979 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
982 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
980
983
981 * IPython/Shell.py (IPShellWX): update for current WX naming
984 * IPython/Shell.py (IPShellWX): update for current WX naming
982 conventions, to avoid a deprecation warning with current WX
985 conventions, to avoid a deprecation warning with current WX
983 versions. Thanks to a report by Danny Shevitz.
986 versions. Thanks to a report by Danny Shevitz.
984
987
985 2006-12-12 Ville Vainio <vivainio@gmail.com>
988 2006-12-12 Ville Vainio <vivainio@gmail.com>
986
989
987 * ipmaker.py: apply david cournapeau's patch to make
990 * ipmaker.py: apply david cournapeau's patch to make
988 import_some work properly even when ipythonrc does
991 import_some work properly even when ipythonrc does
989 import_some on empty list (it was an old bug!).
992 import_some on empty list (it was an old bug!).
990
993
991 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
994 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
992 Add deprecation note to ipythonrc and a url to wiki
995 Add deprecation note to ipythonrc and a url to wiki
993 in ipy_user_conf.py
996 in ipy_user_conf.py
994
997
995
998
996 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
999 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
997 as if it was typed on IPython command prompt, i.e.
1000 as if it was typed on IPython command prompt, i.e.
998 as IPython script.
1001 as IPython script.
999
1002
1000 * example-magic.py, magic_grepl.py: remove outdated examples
1003 * example-magic.py, magic_grepl.py: remove outdated examples
1001
1004
1002 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1005 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1003
1006
1004 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1007 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1005 is called before any exception has occurred.
1008 is called before any exception has occurred.
1006
1009
1007 2006-12-08 Ville Vainio <vivainio@gmail.com>
1010 2006-12-08 Ville Vainio <vivainio@gmail.com>
1008
1011
1009 * Extensions/ipy_stock_completers.py: fix cd completer
1012 * Extensions/ipy_stock_completers.py: fix cd completer
1010 to translate /'s to \'s again.
1013 to translate /'s to \'s again.
1011
1014
1012 * completer.py: prevent traceback on file completions w/
1015 * completer.py: prevent traceback on file completions w/
1013 backslash.
1016 backslash.
1014
1017
1015 * Release.py: Update release number to 0.7.3b3 for release
1018 * Release.py: Update release number to 0.7.3b3 for release
1016
1019
1017 2006-12-07 Ville Vainio <vivainio@gmail.com>
1020 2006-12-07 Ville Vainio <vivainio@gmail.com>
1018
1021
1019 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1022 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1020 while executing external code. Provides more shell-like behaviour
1023 while executing external code. Provides more shell-like behaviour
1021 and overall better response to ctrl + C / ctrl + break.
1024 and overall better response to ctrl + C / ctrl + break.
1022
1025
1023 * tools/make_tarball.py: new script to create tarball straight from svn
1026 * tools/make_tarball.py: new script to create tarball straight from svn
1024 (setup.py sdist doesn't work on win32).
1027 (setup.py sdist doesn't work on win32).
1025
1028
1026 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1029 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1027 on dirnames with spaces and use the default completer instead.
1030 on dirnames with spaces and use the default completer instead.
1028
1031
1029 * Revision.py: Change version to 0.7.3b2 for release.
1032 * Revision.py: Change version to 0.7.3b2 for release.
1030
1033
1031 2006-12-05 Ville Vainio <vivainio@gmail.com>
1034 2006-12-05 Ville Vainio <vivainio@gmail.com>
1032
1035
1033 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1036 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1034 pydb patch 4 (rm debug printing, py 2.5 checking)
1037 pydb patch 4 (rm debug printing, py 2.5 checking)
1035
1038
1036 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1039 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1037 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1040 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1038 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1041 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1039 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1042 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1040 object the cursor was on before the refresh. The command "markrange" is
1043 object the cursor was on before the refresh. The command "markrange" is
1041 mapped to "%" now.
1044 mapped to "%" now.
1042 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1045 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1043
1046
1044 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1047 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1045
1048
1046 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1049 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1047 interactive debugger on the last traceback, without having to call
1050 interactive debugger on the last traceback, without having to call
1048 %pdb and rerun your code. Made minor changes in various modules,
1051 %pdb and rerun your code. Made minor changes in various modules,
1049 should automatically recognize pydb if available.
1052 should automatically recognize pydb if available.
1050
1053
1051 2006-11-28 Ville Vainio <vivainio@gmail.com>
1054 2006-11-28 Ville Vainio <vivainio@gmail.com>
1052
1055
1053 * completer.py: If the text start with !, show file completions
1056 * completer.py: If the text start with !, show file completions
1054 properly. This helps when trying to complete command name
1057 properly. This helps when trying to complete command name
1055 for shell escapes.
1058 for shell escapes.
1056
1059
1057 2006-11-27 Ville Vainio <vivainio@gmail.com>
1060 2006-11-27 Ville Vainio <vivainio@gmail.com>
1058
1061
1059 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1062 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1060 der Walt. Clean up svn and hg completers by using a common
1063 der Walt. Clean up svn and hg completers by using a common
1061 vcs_completer.
1064 vcs_completer.
1062
1065
1063 2006-11-26 Ville Vainio <vivainio@gmail.com>
1066 2006-11-26 Ville Vainio <vivainio@gmail.com>
1064
1067
1065 * Remove ipconfig and %config; you should use _ip.options structure
1068 * Remove ipconfig and %config; you should use _ip.options structure
1066 directly instead!
1069 directly instead!
1067
1070
1068 * genutils.py: add wrap_deprecated function for deprecating callables
1071 * genutils.py: add wrap_deprecated function for deprecating callables
1069
1072
1070 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1073 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1071 _ip.system instead. ipalias is redundant.
1074 _ip.system instead. ipalias is redundant.
1072
1075
1073 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1076 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1074 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1077 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1075 explicit.
1078 explicit.
1076
1079
1077 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1080 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1078 completer. Try it by entering 'hg ' and pressing tab.
1081 completer. Try it by entering 'hg ' and pressing tab.
1079
1082
1080 * macro.py: Give Macro a useful __repr__ method
1083 * macro.py: Give Macro a useful __repr__ method
1081
1084
1082 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1085 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1083
1086
1084 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1087 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1085 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1088 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1086 we don't get a duplicate ipipe module, where registration of the xrepr
1089 we don't get a duplicate ipipe module, where registration of the xrepr
1087 implementation for Text is useless.
1090 implementation for Text is useless.
1088
1091
1089 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1092 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1090
1093
1091 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1094 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1092
1095
1093 2006-11-24 Ville Vainio <vivainio@gmail.com>
1096 2006-11-24 Ville Vainio <vivainio@gmail.com>
1094
1097
1095 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1098 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1096 try to use "cProfile" instead of the slower pure python
1099 try to use "cProfile" instead of the slower pure python
1097 "profile"
1100 "profile"
1098
1101
1099 2006-11-23 Ville Vainio <vivainio@gmail.com>
1102 2006-11-23 Ville Vainio <vivainio@gmail.com>
1100
1103
1101 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1104 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1102 Qt+IPython+Designer link in documentation.
1105 Qt+IPython+Designer link in documentation.
1103
1106
1104 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1107 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1105 correct Pdb object to %pydb.
1108 correct Pdb object to %pydb.
1106
1109
1107
1110
1108 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1111 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1109 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1112 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1110 generic xrepr(), otherwise the list implementation would kick in.
1113 generic xrepr(), otherwise the list implementation would kick in.
1111
1114
1112 2006-11-21 Ville Vainio <vivainio@gmail.com>
1115 2006-11-21 Ville Vainio <vivainio@gmail.com>
1113
1116
1114 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1117 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1115 with one from UserConfig.
1118 with one from UserConfig.
1116
1119
1117 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1120 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1118 it was missing which broke the sh profile.
1121 it was missing which broke the sh profile.
1119
1122
1120 * completer.py: file completer now uses explicit '/' instead
1123 * completer.py: file completer now uses explicit '/' instead
1121 of os.path.join, expansion of 'foo' was broken on win32
1124 of os.path.join, expansion of 'foo' was broken on win32
1122 if there was one directory with name 'foobar'.
1125 if there was one directory with name 'foobar'.
1123
1126
1124 * A bunch of patches from Kirill Smelkov:
1127 * A bunch of patches from Kirill Smelkov:
1125
1128
1126 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1129 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1127
1130
1128 * [patch 7/9] Implement %page -r (page in raw mode) -
1131 * [patch 7/9] Implement %page -r (page in raw mode) -
1129
1132
1130 * [patch 5/9] ScientificPython webpage has moved
1133 * [patch 5/9] ScientificPython webpage has moved
1131
1134
1132 * [patch 4/9] The manual mentions %ds, should be %dhist
1135 * [patch 4/9] The manual mentions %ds, should be %dhist
1133
1136
1134 * [patch 3/9] Kill old bits from %prun doc.
1137 * [patch 3/9] Kill old bits from %prun doc.
1135
1138
1136 * [patch 1/9] Fix typos here and there.
1139 * [patch 1/9] Fix typos here and there.
1137
1140
1138 2006-11-08 Ville Vainio <vivainio@gmail.com>
1141 2006-11-08 Ville Vainio <vivainio@gmail.com>
1139
1142
1140 * completer.py (attr_matches): catch all exceptions raised
1143 * completer.py (attr_matches): catch all exceptions raised
1141 by eval of expr with dots.
1144 by eval of expr with dots.
1142
1145
1143 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1146 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1144
1147
1145 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1148 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1146 input if it starts with whitespace. This allows you to paste
1149 input if it starts with whitespace. This allows you to paste
1147 indented input from any editor without manually having to type in
1150 indented input from any editor without manually having to type in
1148 the 'if 1:', which is convenient when working interactively.
1151 the 'if 1:', which is convenient when working interactively.
1149 Slightly modifed version of a patch by Bo Peng
1152 Slightly modifed version of a patch by Bo Peng
1150 <bpeng-AT-rice.edu>.
1153 <bpeng-AT-rice.edu>.
1151
1154
1152 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1155 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1153
1156
1154 * IPython/irunner.py (main): modified irunner so it automatically
1157 * IPython/irunner.py (main): modified irunner so it automatically
1155 recognizes the right runner to use based on the extension (.py for
1158 recognizes the right runner to use based on the extension (.py for
1156 python, .ipy for ipython and .sage for sage).
1159 python, .ipy for ipython and .sage for sage).
1157
1160
1158 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1161 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1159 visible in ipapi as ip.config(), to programatically control the
1162 visible in ipapi as ip.config(), to programatically control the
1160 internal rc object. There's an accompanying %config magic for
1163 internal rc object. There's an accompanying %config magic for
1161 interactive use, which has been enhanced to match the
1164 interactive use, which has been enhanced to match the
1162 funtionality in ipconfig.
1165 funtionality in ipconfig.
1163
1166
1164 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1167 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1165 so it's not just a toggle, it now takes an argument. Add support
1168 so it's not just a toggle, it now takes an argument. Add support
1166 for a customizable header when making system calls, as the new
1169 for a customizable header when making system calls, as the new
1167 system_header variable in the ipythonrc file.
1170 system_header variable in the ipythonrc file.
1168
1171
1169 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1172 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1170
1173
1171 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1174 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1172 generic functions (using Philip J. Eby's simplegeneric package).
1175 generic functions (using Philip J. Eby's simplegeneric package).
1173 This makes it possible to customize the display of third-party classes
1176 This makes it possible to customize the display of third-party classes
1174 without having to monkeypatch them. xiter() no longer supports a mode
1177 without having to monkeypatch them. xiter() no longer supports a mode
1175 argument and the XMode class has been removed. The same functionality can
1178 argument and the XMode class has been removed. The same functionality can
1176 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1179 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1177 One consequence of the switch to generic functions is that xrepr() and
1180 One consequence of the switch to generic functions is that xrepr() and
1178 xattrs() implementation must define the default value for the mode
1181 xattrs() implementation must define the default value for the mode
1179 argument themselves and xattrs() implementations must return real
1182 argument themselves and xattrs() implementations must return real
1180 descriptors.
1183 descriptors.
1181
1184
1182 * IPython/external: This new subpackage will contain all third-party
1185 * IPython/external: This new subpackage will contain all third-party
1183 packages that are bundled with IPython. (The first one is simplegeneric).
1186 packages that are bundled with IPython. (The first one is simplegeneric).
1184
1187
1185 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1188 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1186 directory which as been dropped in r1703.
1189 directory which as been dropped in r1703.
1187
1190
1188 * IPython/Extensions/ipipe.py (iless): Fixed.
1191 * IPython/Extensions/ipipe.py (iless): Fixed.
1189
1192
1190 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1193 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1191
1194
1192 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1195 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1193
1196
1194 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1197 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1195 handling in variable expansion so that shells and magics recognize
1198 handling in variable expansion so that shells and magics recognize
1196 function local scopes correctly. Bug reported by Brian.
1199 function local scopes correctly. Bug reported by Brian.
1197
1200
1198 * scripts/ipython: remove the very first entry in sys.path which
1201 * scripts/ipython: remove the very first entry in sys.path which
1199 Python auto-inserts for scripts, so that sys.path under IPython is
1202 Python auto-inserts for scripts, so that sys.path under IPython is
1200 as similar as possible to that under plain Python.
1203 as similar as possible to that under plain Python.
1201
1204
1202 * IPython/completer.py (IPCompleter.file_matches): Fix
1205 * IPython/completer.py (IPCompleter.file_matches): Fix
1203 tab-completion so that quotes are not closed unless the completion
1206 tab-completion so that quotes are not closed unless the completion
1204 is unambiguous. After a request by Stefan. Minor cleanups in
1207 is unambiguous. After a request by Stefan. Minor cleanups in
1205 ipy_stock_completers.
1208 ipy_stock_completers.
1206
1209
1207 2006-11-02 Ville Vainio <vivainio@gmail.com>
1210 2006-11-02 Ville Vainio <vivainio@gmail.com>
1208
1211
1209 * ipy_stock_completers.py: Add %run and %cd completers.
1212 * ipy_stock_completers.py: Add %run and %cd completers.
1210
1213
1211 * completer.py: Try running custom completer for both
1214 * completer.py: Try running custom completer for both
1212 "foo" and "%foo" if the command is just "foo". Ignore case
1215 "foo" and "%foo" if the command is just "foo". Ignore case
1213 when filtering possible completions.
1216 when filtering possible completions.
1214
1217
1215 * UserConfig/ipy_user_conf.py: install stock completers as default
1218 * UserConfig/ipy_user_conf.py: install stock completers as default
1216
1219
1217 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1220 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1218 simplified readline history save / restore through a wrapper
1221 simplified readline history save / restore through a wrapper
1219 function
1222 function
1220
1223
1221
1224
1222 2006-10-31 Ville Vainio <vivainio@gmail.com>
1225 2006-10-31 Ville Vainio <vivainio@gmail.com>
1223
1226
1224 * strdispatch.py, completer.py, ipy_stock_completers.py:
1227 * strdispatch.py, completer.py, ipy_stock_completers.py:
1225 Allow str_key ("command") in completer hooks. Implement
1228 Allow str_key ("command") in completer hooks. Implement
1226 trivial completer for 'import' (stdlib modules only). Rename
1229 trivial completer for 'import' (stdlib modules only). Rename
1227 ipy_linux_package_managers.py to ipy_stock_completers.py.
1230 ipy_linux_package_managers.py to ipy_stock_completers.py.
1228 SVN completer.
1231 SVN completer.
1229
1232
1230 * Extensions/ledit.py: %magic line editor for easily and
1233 * Extensions/ledit.py: %magic line editor for easily and
1231 incrementally manipulating lists of strings. The magic command
1234 incrementally manipulating lists of strings. The magic command
1232 name is %led.
1235 name is %led.
1233
1236
1234 2006-10-30 Ville Vainio <vivainio@gmail.com>
1237 2006-10-30 Ville Vainio <vivainio@gmail.com>
1235
1238
1236 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1239 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1237 Bernsteins's patches for pydb integration.
1240 Bernsteins's patches for pydb integration.
1238 http://bashdb.sourceforge.net/pydb/
1241 http://bashdb.sourceforge.net/pydb/
1239
1242
1240 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1243 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1241 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1244 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1242 custom completer hook to allow the users to implement their own
1245 custom completer hook to allow the users to implement their own
1243 completers. See ipy_linux_package_managers.py for example. The
1246 completers. See ipy_linux_package_managers.py for example. The
1244 hook name is 'complete_command'.
1247 hook name is 'complete_command'.
1245
1248
1246 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1249 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1247
1250
1248 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1251 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1249 Numeric leftovers.
1252 Numeric leftovers.
1250
1253
1251 * ipython.el (py-execute-region): apply Stefan's patch to fix
1254 * ipython.el (py-execute-region): apply Stefan's patch to fix
1252 garbled results if the python shell hasn't been previously started.
1255 garbled results if the python shell hasn't been previously started.
1253
1256
1254 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1257 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1255 pretty generic function and useful for other things.
1258 pretty generic function and useful for other things.
1256
1259
1257 * IPython/OInspect.py (getsource): Add customizable source
1260 * IPython/OInspect.py (getsource): Add customizable source
1258 extractor. After a request/patch form W. Stein (SAGE).
1261 extractor. After a request/patch form W. Stein (SAGE).
1259
1262
1260 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1263 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1261 window size to a more reasonable value from what pexpect does,
1264 window size to a more reasonable value from what pexpect does,
1262 since their choice causes wrapping bugs with long input lines.
1265 since their choice causes wrapping bugs with long input lines.
1263
1266
1264 2006-10-28 Ville Vainio <vivainio@gmail.com>
1267 2006-10-28 Ville Vainio <vivainio@gmail.com>
1265
1268
1266 * Magic.py (%run): Save and restore the readline history from
1269 * Magic.py (%run): Save and restore the readline history from
1267 file around %run commands to prevent side effects from
1270 file around %run commands to prevent side effects from
1268 %runned programs that might use readline (e.g. pydb).
1271 %runned programs that might use readline (e.g. pydb).
1269
1272
1270 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1273 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1271 invoking the pydb enhanced debugger.
1274 invoking the pydb enhanced debugger.
1272
1275
1273 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1276 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1274
1277
1275 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1278 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1276 call the base class method and propagate the return value to
1279 call the base class method and propagate the return value to
1277 ifile. This is now done by path itself.
1280 ifile. This is now done by path itself.
1278
1281
1279 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1282 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1280
1283
1281 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1284 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1282 api: set_crash_handler(), to expose the ability to change the
1285 api: set_crash_handler(), to expose the ability to change the
1283 internal crash handler.
1286 internal crash handler.
1284
1287
1285 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1288 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1286 the various parameters of the crash handler so that apps using
1289 the various parameters of the crash handler so that apps using
1287 IPython as their engine can customize crash handling. Ipmlemented
1290 IPython as their engine can customize crash handling. Ipmlemented
1288 at the request of SAGE.
1291 at the request of SAGE.
1289
1292
1290 2006-10-14 Ville Vainio <vivainio@gmail.com>
1293 2006-10-14 Ville Vainio <vivainio@gmail.com>
1291
1294
1292 * Magic.py, ipython.el: applied first "safe" part of Rocky
1295 * Magic.py, ipython.el: applied first "safe" part of Rocky
1293 Bernstein's patch set for pydb integration.
1296 Bernstein's patch set for pydb integration.
1294
1297
1295 * Magic.py (%unalias, %alias): %store'd aliases can now be
1298 * Magic.py (%unalias, %alias): %store'd aliases can now be
1296 removed with '%unalias'. %alias w/o args now shows most
1299 removed with '%unalias'. %alias w/o args now shows most
1297 interesting (stored / manually defined) aliases last
1300 interesting (stored / manually defined) aliases last
1298 where they catch the eye w/o scrolling.
1301 where they catch the eye w/o scrolling.
1299
1302
1300 * Magic.py (%rehashx), ext_rehashdir.py: files with
1303 * Magic.py (%rehashx), ext_rehashdir.py: files with
1301 'py' extension are always considered executable, even
1304 'py' extension are always considered executable, even
1302 when not in PATHEXT environment variable.
1305 when not in PATHEXT environment variable.
1303
1306
1304 2006-10-12 Ville Vainio <vivainio@gmail.com>
1307 2006-10-12 Ville Vainio <vivainio@gmail.com>
1305
1308
1306 * jobctrl.py: Add new "jobctrl" extension for spawning background
1309 * jobctrl.py: Add new "jobctrl" extension for spawning background
1307 processes with "&find /". 'import jobctrl' to try it out. Requires
1310 processes with "&find /". 'import jobctrl' to try it out. Requires
1308 'subprocess' module, standard in python 2.4+.
1311 'subprocess' module, standard in python 2.4+.
1309
1312
1310 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1313 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1311 so if foo -> bar and bar -> baz, then foo -> baz.
1314 so if foo -> bar and bar -> baz, then foo -> baz.
1312
1315
1313 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1316 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1314
1317
1315 * IPython/Magic.py (Magic.parse_options): add a new posix option
1318 * IPython/Magic.py (Magic.parse_options): add a new posix option
1316 to allow parsing of input args in magics that doesn't strip quotes
1319 to allow parsing of input args in magics that doesn't strip quotes
1317 (if posix=False). This also closes %timeit bug reported by
1320 (if posix=False). This also closes %timeit bug reported by
1318 Stefan.
1321 Stefan.
1319
1322
1320 2006-10-03 Ville Vainio <vivainio@gmail.com>
1323 2006-10-03 Ville Vainio <vivainio@gmail.com>
1321
1324
1322 * iplib.py (raw_input, interact): Return ValueError catching for
1325 * iplib.py (raw_input, interact): Return ValueError catching for
1323 raw_input. Fixes infinite loop for sys.stdin.close() or
1326 raw_input. Fixes infinite loop for sys.stdin.close() or
1324 sys.stdout.close().
1327 sys.stdout.close().
1325
1328
1326 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1329 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1327
1330
1328 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1331 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1329 to help in handling doctests. irunner is now pretty useful for
1332 to help in handling doctests. irunner is now pretty useful for
1330 running standalone scripts and simulate a full interactive session
1333 running standalone scripts and simulate a full interactive session
1331 in a format that can be then pasted as a doctest.
1334 in a format that can be then pasted as a doctest.
1332
1335
1333 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1336 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1334 on top of the default (useless) ones. This also fixes the nasty
1337 on top of the default (useless) ones. This also fixes the nasty
1335 way in which 2.5's Quitter() exits (reverted [1785]).
1338 way in which 2.5's Quitter() exits (reverted [1785]).
1336
1339
1337 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1340 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1338 2.5.
1341 2.5.
1339
1342
1340 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1343 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1341 color scheme is updated as well when color scheme is changed
1344 color scheme is updated as well when color scheme is changed
1342 interactively.
1345 interactively.
1343
1346
1344 2006-09-27 Ville Vainio <vivainio@gmail.com>
1347 2006-09-27 Ville Vainio <vivainio@gmail.com>
1345
1348
1346 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1349 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1347 infinite loop and just exit. It's a hack, but will do for a while.
1350 infinite loop and just exit. It's a hack, but will do for a while.
1348
1351
1349 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1352 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1350
1353
1351 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1354 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1352 the constructor, this makes it possible to get a list of only directories
1355 the constructor, this makes it possible to get a list of only directories
1353 or only files.
1356 or only files.
1354
1357
1355 2006-08-12 Ville Vainio <vivainio@gmail.com>
1358 2006-08-12 Ville Vainio <vivainio@gmail.com>
1356
1359
1357 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1360 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1358 they broke unittest
1361 they broke unittest
1359
1362
1360 2006-08-11 Ville Vainio <vivainio@gmail.com>
1363 2006-08-11 Ville Vainio <vivainio@gmail.com>
1361
1364
1362 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1365 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1363 by resolving issue properly, i.e. by inheriting FakeModule
1366 by resolving issue properly, i.e. by inheriting FakeModule
1364 from types.ModuleType. Pickling ipython interactive data
1367 from types.ModuleType. Pickling ipython interactive data
1365 should still work as usual (testing appreciated).
1368 should still work as usual (testing appreciated).
1366
1369
1367 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1370 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1368
1371
1369 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1372 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1370 running under python 2.3 with code from 2.4 to fix a bug with
1373 running under python 2.3 with code from 2.4 to fix a bug with
1371 help(). Reported by the Debian maintainers, Norbert Tretkowski
1374 help(). Reported by the Debian maintainers, Norbert Tretkowski
1372 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1375 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1373 <afayolle-AT-debian.org>.
1376 <afayolle-AT-debian.org>.
1374
1377
1375 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1378 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1376
1379
1377 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1380 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1378 (which was displaying "quit" twice).
1381 (which was displaying "quit" twice).
1379
1382
1380 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1383 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1381
1384
1382 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1385 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1383 the mode argument).
1386 the mode argument).
1384
1387
1385 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1388 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1386
1389
1387 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1390 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1388 not running under IPython.
1391 not running under IPython.
1389
1392
1390 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1393 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1391 and make it iterable (iterating over the attribute itself). Add two new
1394 and make it iterable (iterating over the attribute itself). Add two new
1392 magic strings for __xattrs__(): If the string starts with "-", the attribute
1395 magic strings for __xattrs__(): If the string starts with "-", the attribute
1393 will not be displayed in ibrowse's detail view (but it can still be
1396 will not be displayed in ibrowse's detail view (but it can still be
1394 iterated over). This makes it possible to add attributes that are large
1397 iterated over). This makes it possible to add attributes that are large
1395 lists or generator methods to the detail view. Replace magic attribute names
1398 lists or generator methods to the detail view. Replace magic attribute names
1396 and _attrname() and _getattr() with "descriptors": For each type of magic
1399 and _attrname() and _getattr() with "descriptors": For each type of magic
1397 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1400 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1398 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1401 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1399 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1402 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1400 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1403 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1401 are still supported.
1404 are still supported.
1402
1405
1403 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1406 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1404 fails in ibrowse.fetch(), the exception object is added as the last item
1407 fails in ibrowse.fetch(), the exception object is added as the last item
1405 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1408 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1406 a generator throws an exception midway through execution.
1409 a generator throws an exception midway through execution.
1407
1410
1408 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1411 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1409 encoding into methods.
1412 encoding into methods.
1410
1413
1411 2006-07-26 Ville Vainio <vivainio@gmail.com>
1414 2006-07-26 Ville Vainio <vivainio@gmail.com>
1412
1415
1413 * iplib.py: history now stores multiline input as single
1416 * iplib.py: history now stores multiline input as single
1414 history entries. Patch by Jorgen Cederlof.
1417 history entries. Patch by Jorgen Cederlof.
1415
1418
1416 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1419 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1417
1420
1418 * IPython/Extensions/ibrowse.py: Make cursor visible over
1421 * IPython/Extensions/ibrowse.py: Make cursor visible over
1419 non existing attributes.
1422 non existing attributes.
1420
1423
1421 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1424 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1422
1425
1423 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1426 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1424 error output of the running command doesn't mess up the screen.
1427 error output of the running command doesn't mess up the screen.
1425
1428
1426 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1429 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1427
1430
1428 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1431 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1429 argument. This sorts the items themselves.
1432 argument. This sorts the items themselves.
1430
1433
1431 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1434 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1432
1435
1433 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1436 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1434 Compile expression strings into code objects. This should speed
1437 Compile expression strings into code objects. This should speed
1435 up ifilter and friends somewhat.
1438 up ifilter and friends somewhat.
1436
1439
1437 2006-07-08 Ville Vainio <vivainio@gmail.com>
1440 2006-07-08 Ville Vainio <vivainio@gmail.com>
1438
1441
1439 * Magic.py: %cpaste now strips > from the beginning of lines
1442 * Magic.py: %cpaste now strips > from the beginning of lines
1440 to ease pasting quoted code from emails. Contributed by
1443 to ease pasting quoted code from emails. Contributed by
1441 Stefan van der Walt.
1444 Stefan van der Walt.
1442
1445
1443 2006-06-29 Ville Vainio <vivainio@gmail.com>
1446 2006-06-29 Ville Vainio <vivainio@gmail.com>
1444
1447
1445 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1448 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1446 mode, patch contributed by Darren Dale. NEEDS TESTING!
1449 mode, patch contributed by Darren Dale. NEEDS TESTING!
1447
1450
1448 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1451 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1449
1452
1450 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1453 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1451 a blue background. Fix fetching new display rows when the browser
1454 a blue background. Fix fetching new display rows when the browser
1452 scrolls more than a screenful (e.g. by using the goto command).
1455 scrolls more than a screenful (e.g. by using the goto command).
1453
1456
1454 2006-06-27 Ville Vainio <vivainio@gmail.com>
1457 2006-06-27 Ville Vainio <vivainio@gmail.com>
1455
1458
1456 * Magic.py (_inspect, _ofind) Apply David Huard's
1459 * Magic.py (_inspect, _ofind) Apply David Huard's
1457 patch for displaying the correct docstring for 'property'
1460 patch for displaying the correct docstring for 'property'
1458 attributes.
1461 attributes.
1459
1462
1460 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1463 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1461
1464
1462 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1465 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1463 commands into the methods implementing them.
1466 commands into the methods implementing them.
1464
1467
1465 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1468 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1466
1469
1467 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1470 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1468 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1471 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1469 autoindent support was authored by Jin Liu.
1472 autoindent support was authored by Jin Liu.
1470
1473
1471 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1474 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1472
1475
1473 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1476 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1474 for keymaps with a custom class that simplifies handling.
1477 for keymaps with a custom class that simplifies handling.
1475
1478
1476 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1479 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1477
1480
1478 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1481 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1479 resizing. This requires Python 2.5 to work.
1482 resizing. This requires Python 2.5 to work.
1480
1483
1481 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1484 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1482
1485
1483 * IPython/Extensions/ibrowse.py: Add two new commands to
1486 * IPython/Extensions/ibrowse.py: Add two new commands to
1484 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1487 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1485 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1488 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1486 attributes again. Remapped the help command to "?". Display
1489 attributes again. Remapped the help command to "?". Display
1487 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1490 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1488 as keys for the "home" and "end" commands. Add three new commands
1491 as keys for the "home" and "end" commands. Add three new commands
1489 to the input mode for "find" and friends: "delend" (CTRL-K)
1492 to the input mode for "find" and friends: "delend" (CTRL-K)
1490 deletes to the end of line. "incsearchup" searches upwards in the
1493 deletes to the end of line. "incsearchup" searches upwards in the
1491 command history for an input that starts with the text before the cursor.
1494 command history for an input that starts with the text before the cursor.
1492 "incsearchdown" does the same downwards. Removed a bogus mapping of
1495 "incsearchdown" does the same downwards. Removed a bogus mapping of
1493 the x key to "delete".
1496 the x key to "delete".
1494
1497
1495 2006-06-15 Ville Vainio <vivainio@gmail.com>
1498 2006-06-15 Ville Vainio <vivainio@gmail.com>
1496
1499
1497 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1500 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1498 used to create prompts dynamically, instead of the "old" way of
1501 used to create prompts dynamically, instead of the "old" way of
1499 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1502 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1500 way still works (it's invoked by the default hook), of course.
1503 way still works (it's invoked by the default hook), of course.
1501
1504
1502 * Prompts.py: added generate_output_prompt hook for altering output
1505 * Prompts.py: added generate_output_prompt hook for altering output
1503 prompt
1506 prompt
1504
1507
1505 * Release.py: Changed version string to 0.7.3.svn.
1508 * Release.py: Changed version string to 0.7.3.svn.
1506
1509
1507 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1510 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1508
1511
1509 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1512 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1510 the call to fetch() always tries to fetch enough data for at least one
1513 the call to fetch() always tries to fetch enough data for at least one
1511 full screen. This makes it possible to simply call moveto(0,0,True) in
1514 full screen. This makes it possible to simply call moveto(0,0,True) in
1512 the constructor. Fix typos and removed the obsolete goto attribute.
1515 the constructor. Fix typos and removed the obsolete goto attribute.
1513
1516
1514 2006-06-12 Ville Vainio <vivainio@gmail.com>
1517 2006-06-12 Ville Vainio <vivainio@gmail.com>
1515
1518
1516 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1519 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1517 allowing $variable interpolation within multiline statements,
1520 allowing $variable interpolation within multiline statements,
1518 though so far only with "sh" profile for a testing period.
1521 though so far only with "sh" profile for a testing period.
1519 The patch also enables splitting long commands with \ but it
1522 The patch also enables splitting long commands with \ but it
1520 doesn't work properly yet.
1523 doesn't work properly yet.
1521
1524
1522 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1525 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1523
1526
1524 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1527 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1525 input history and the position of the cursor in the input history for
1528 input history and the position of the cursor in the input history for
1526 the find, findbackwards and goto command.
1529 the find, findbackwards and goto command.
1527
1530
1528 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1531 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1529
1532
1530 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1533 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1531 implements the basic functionality of browser commands that require
1534 implements the basic functionality of browser commands that require
1532 input. Reimplement the goto, find and findbackwards commands as
1535 input. Reimplement the goto, find and findbackwards commands as
1533 subclasses of _CommandInput. Add an input history and keymaps to those
1536 subclasses of _CommandInput. Add an input history and keymaps to those
1534 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1537 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1535 execute commands.
1538 execute commands.
1536
1539
1537 2006-06-07 Ville Vainio <vivainio@gmail.com>
1540 2006-06-07 Ville Vainio <vivainio@gmail.com>
1538
1541
1539 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1542 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1540 running the batch files instead of leaving the session open.
1543 running the batch files instead of leaving the session open.
1541
1544
1542 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1545 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1543
1546
1544 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1547 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1545 the original fix was incomplete. Patch submitted by W. Maier.
1548 the original fix was incomplete. Patch submitted by W. Maier.
1546
1549
1547 2006-06-07 Ville Vainio <vivainio@gmail.com>
1550 2006-06-07 Ville Vainio <vivainio@gmail.com>
1548
1551
1549 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1552 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1550 Confirmation prompts can be supressed by 'quiet' option.
1553 Confirmation prompts can be supressed by 'quiet' option.
1551 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1554 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1552
1555
1553 2006-06-06 *** Released version 0.7.2
1556 2006-06-06 *** Released version 0.7.2
1554
1557
1555 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1558 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1556
1559
1557 * IPython/Release.py (version): Made 0.7.2 final for release.
1560 * IPython/Release.py (version): Made 0.7.2 final for release.
1558 Repo tagged and release cut.
1561 Repo tagged and release cut.
1559
1562
1560 2006-06-05 Ville Vainio <vivainio@gmail.com>
1563 2006-06-05 Ville Vainio <vivainio@gmail.com>
1561
1564
1562 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1565 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1563 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1566 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1564
1567
1565 * upgrade_dir.py: try import 'path' module a bit harder
1568 * upgrade_dir.py: try import 'path' module a bit harder
1566 (for %upgrade)
1569 (for %upgrade)
1567
1570
1568 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1571 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1569
1572
1570 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1573 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1571 instead of looping 20 times.
1574 instead of looping 20 times.
1572
1575
1573 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1576 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1574 correctly at initialization time. Bug reported by Krishna Mohan
1577 correctly at initialization time. Bug reported by Krishna Mohan
1575 Gundu <gkmohan-AT-gmail.com> on the user list.
1578 Gundu <gkmohan-AT-gmail.com> on the user list.
1576
1579
1577 * IPython/Release.py (version): Mark 0.7.2 version to start
1580 * IPython/Release.py (version): Mark 0.7.2 version to start
1578 testing for release on 06/06.
1581 testing for release on 06/06.
1579
1582
1580 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1583 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1581
1584
1582 * scripts/irunner: thin script interface so users don't have to
1585 * scripts/irunner: thin script interface so users don't have to
1583 find the module and call it as an executable, since modules rarely
1586 find the module and call it as an executable, since modules rarely
1584 live in people's PATH.
1587 live in people's PATH.
1585
1588
1586 * IPython/irunner.py (InteractiveRunner.__init__): added
1589 * IPython/irunner.py (InteractiveRunner.__init__): added
1587 delaybeforesend attribute to control delays with newer versions of
1590 delaybeforesend attribute to control delays with newer versions of
1588 pexpect. Thanks to detailed help from pexpect's author, Noah
1591 pexpect. Thanks to detailed help from pexpect's author, Noah
1589 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1592 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1590 correctly (it works in NoColor mode).
1593 correctly (it works in NoColor mode).
1591
1594
1592 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1595 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1593 SAGE list, from improper log() calls.
1596 SAGE list, from improper log() calls.
1594
1597
1595 2006-05-31 Ville Vainio <vivainio@gmail.com>
1598 2006-05-31 Ville Vainio <vivainio@gmail.com>
1596
1599
1597 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1600 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1598 with args in parens to work correctly with dirs that have spaces.
1601 with args in parens to work correctly with dirs that have spaces.
1599
1602
1600 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1603 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1601
1604
1602 * IPython/Logger.py (Logger.logstart): add option to log raw input
1605 * IPython/Logger.py (Logger.logstart): add option to log raw input
1603 instead of the processed one. A -r flag was added to the
1606 instead of the processed one. A -r flag was added to the
1604 %logstart magic used for controlling logging.
1607 %logstart magic used for controlling logging.
1605
1608
1606 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1609 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1607
1610
1608 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1611 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1609 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1612 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1610 recognize the option. After a bug report by Will Maier. This
1613 recognize the option. After a bug report by Will Maier. This
1611 closes #64 (will do it after confirmation from W. Maier).
1614 closes #64 (will do it after confirmation from W. Maier).
1612
1615
1613 * IPython/irunner.py: New module to run scripts as if manually
1616 * IPython/irunner.py: New module to run scripts as if manually
1614 typed into an interactive environment, based on pexpect. After a
1617 typed into an interactive environment, based on pexpect. After a
1615 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1618 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1616 ipython-user list. Simple unittests in the tests/ directory.
1619 ipython-user list. Simple unittests in the tests/ directory.
1617
1620
1618 * tools/release: add Will Maier, OpenBSD port maintainer, to
1621 * tools/release: add Will Maier, OpenBSD port maintainer, to
1619 recepients list. We are now officially part of the OpenBSD ports:
1622 recepients list. We are now officially part of the OpenBSD ports:
1620 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1623 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1621 work.
1624 work.
1622
1625
1623 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1626 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1624
1627
1625 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1628 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1626 so that it doesn't break tkinter apps.
1629 so that it doesn't break tkinter apps.
1627
1630
1628 * IPython/iplib.py (_prefilter): fix bug where aliases would
1631 * IPython/iplib.py (_prefilter): fix bug where aliases would
1629 shadow variables when autocall was fully off. Reported by SAGE
1632 shadow variables when autocall was fully off. Reported by SAGE
1630 author William Stein.
1633 author William Stein.
1631
1634
1632 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1635 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1633 at what detail level strings are computed when foo? is requested.
1636 at what detail level strings are computed when foo? is requested.
1634 This allows users to ask for example that the string form of an
1637 This allows users to ask for example that the string form of an
1635 object is only computed when foo?? is called, or even never, by
1638 object is only computed when foo?? is called, or even never, by
1636 setting the object_info_string_level >= 2 in the configuration
1639 setting the object_info_string_level >= 2 in the configuration
1637 file. This new option has been added and documented. After a
1640 file. This new option has been added and documented. After a
1638 request by SAGE to be able to control the printing of very large
1641 request by SAGE to be able to control the printing of very large
1639 objects more easily.
1642 objects more easily.
1640
1643
1641 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1644 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1642
1645
1643 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1646 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1644 from sys.argv, to be 100% consistent with how Python itself works
1647 from sys.argv, to be 100% consistent with how Python itself works
1645 (as seen for example with python -i file.py). After a bug report
1648 (as seen for example with python -i file.py). After a bug report
1646 by Jeffrey Collins.
1649 by Jeffrey Collins.
1647
1650
1648 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1651 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1649 nasty bug which was preventing custom namespaces with -pylab,
1652 nasty bug which was preventing custom namespaces with -pylab,
1650 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1653 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1651 compatibility (long gone from mpl).
1654 compatibility (long gone from mpl).
1652
1655
1653 * IPython/ipapi.py (make_session): name change: create->make. We
1656 * IPython/ipapi.py (make_session): name change: create->make. We
1654 use make in other places (ipmaker,...), it's shorter and easier to
1657 use make in other places (ipmaker,...), it's shorter and easier to
1655 type and say, etc. I'm trying to clean things before 0.7.2 so
1658 type and say, etc. I'm trying to clean things before 0.7.2 so
1656 that I can keep things stable wrt to ipapi in the chainsaw branch.
1659 that I can keep things stable wrt to ipapi in the chainsaw branch.
1657
1660
1658 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1661 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1659 python-mode recognizes our debugger mode. Add support for
1662 python-mode recognizes our debugger mode. Add support for
1660 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1663 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1661 <m.liu.jin-AT-gmail.com> originally written by
1664 <m.liu.jin-AT-gmail.com> originally written by
1662 doxgen-AT-newsmth.net (with minor modifications for xemacs
1665 doxgen-AT-newsmth.net (with minor modifications for xemacs
1663 compatibility)
1666 compatibility)
1664
1667
1665 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1668 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1666 tracebacks when walking the stack so that the stack tracking system
1669 tracebacks when walking the stack so that the stack tracking system
1667 in emacs' python-mode can identify the frames correctly.
1670 in emacs' python-mode can identify the frames correctly.
1668
1671
1669 * IPython/ipmaker.py (make_IPython): make the internal (and
1672 * IPython/ipmaker.py (make_IPython): make the internal (and
1670 default config) autoedit_syntax value false by default. Too many
1673 default config) autoedit_syntax value false by default. Too many
1671 users have complained to me (both on and off-list) about problems
1674 users have complained to me (both on and off-list) about problems
1672 with this option being on by default, so I'm making it default to
1675 with this option being on by default, so I'm making it default to
1673 off. It can still be enabled by anyone via the usual mechanisms.
1676 off. It can still be enabled by anyone via the usual mechanisms.
1674
1677
1675 * IPython/completer.py (Completer.attr_matches): add support for
1678 * IPython/completer.py (Completer.attr_matches): add support for
1676 PyCrust-style _getAttributeNames magic method. Patch contributed
1679 PyCrust-style _getAttributeNames magic method. Patch contributed
1677 by <mscott-AT-goldenspud.com>. Closes #50.
1680 by <mscott-AT-goldenspud.com>. Closes #50.
1678
1681
1679 * IPython/iplib.py (InteractiveShell.__init__): remove the
1682 * IPython/iplib.py (InteractiveShell.__init__): remove the
1680 deletion of exit/quit from __builtin__, which can break
1683 deletion of exit/quit from __builtin__, which can break
1681 third-party tools like the Zope debugging console. The
1684 third-party tools like the Zope debugging console. The
1682 %exit/%quit magics remain. In general, it's probably a good idea
1685 %exit/%quit magics remain. In general, it's probably a good idea
1683 not to delete anything from __builtin__, since we never know what
1686 not to delete anything from __builtin__, since we never know what
1684 that will break. In any case, python now (for 2.5) will support
1687 that will break. In any case, python now (for 2.5) will support
1685 'real' exit/quit, so this issue is moot. Closes #55.
1688 'real' exit/quit, so this issue is moot. Closes #55.
1686
1689
1687 * IPython/genutils.py (with_obj): rename the 'with' function to
1690 * IPython/genutils.py (with_obj): rename the 'with' function to
1688 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1691 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1689 becomes a language keyword. Closes #53.
1692 becomes a language keyword. Closes #53.
1690
1693
1691 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1694 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1692 __file__ attribute to this so it fools more things into thinking
1695 __file__ attribute to this so it fools more things into thinking
1693 it is a real module. Closes #59.
1696 it is a real module. Closes #59.
1694
1697
1695 * IPython/Magic.py (magic_edit): add -n option to open the editor
1698 * IPython/Magic.py (magic_edit): add -n option to open the editor
1696 at a specific line number. After a patch by Stefan van der Walt.
1699 at a specific line number. After a patch by Stefan van der Walt.
1697
1700
1698 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1701 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1699
1702
1700 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1703 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1701 reason the file could not be opened. After automatic crash
1704 reason the file could not be opened. After automatic crash
1702 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1705 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1703 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1706 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1704 (_should_recompile): Don't fire editor if using %bg, since there
1707 (_should_recompile): Don't fire editor if using %bg, since there
1705 is no file in the first place. From the same report as above.
1708 is no file in the first place. From the same report as above.
1706 (raw_input): protect against faulty third-party prefilters. After
1709 (raw_input): protect against faulty third-party prefilters. After
1707 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1710 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1708 while running under SAGE.
1711 while running under SAGE.
1709
1712
1710 2006-05-23 Ville Vainio <vivainio@gmail.com>
1713 2006-05-23 Ville Vainio <vivainio@gmail.com>
1711
1714
1712 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1715 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1713 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1716 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1714 now returns None (again), unless dummy is specifically allowed by
1717 now returns None (again), unless dummy is specifically allowed by
1715 ipapi.get(allow_dummy=True).
1718 ipapi.get(allow_dummy=True).
1716
1719
1717 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1720 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1718
1721
1719 * IPython: remove all 2.2-compatibility objects and hacks from
1722 * IPython: remove all 2.2-compatibility objects and hacks from
1720 everywhere, since we only support 2.3 at this point. Docs
1723 everywhere, since we only support 2.3 at this point. Docs
1721 updated.
1724 updated.
1722
1725
1723 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1726 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1724 Anything requiring extra validation can be turned into a Python
1727 Anything requiring extra validation can be turned into a Python
1725 property in the future. I used a property for the db one b/c
1728 property in the future. I used a property for the db one b/c
1726 there was a nasty circularity problem with the initialization
1729 there was a nasty circularity problem with the initialization
1727 order, which right now I don't have time to clean up.
1730 order, which right now I don't have time to clean up.
1728
1731
1729 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1732 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1730 another locking bug reported by Jorgen. I'm not 100% sure though,
1733 another locking bug reported by Jorgen. I'm not 100% sure though,
1731 so more testing is needed...
1734 so more testing is needed...
1732
1735
1733 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1736 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1734
1737
1735 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1738 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1736 local variables from any routine in user code (typically executed
1739 local variables from any routine in user code (typically executed
1737 with %run) directly into the interactive namespace. Very useful
1740 with %run) directly into the interactive namespace. Very useful
1738 when doing complex debugging.
1741 when doing complex debugging.
1739 (IPythonNotRunning): Changed the default None object to a dummy
1742 (IPythonNotRunning): Changed the default None object to a dummy
1740 whose attributes can be queried as well as called without
1743 whose attributes can be queried as well as called without
1741 exploding, to ease writing code which works transparently both in
1744 exploding, to ease writing code which works transparently both in
1742 and out of ipython and uses some of this API.
1745 and out of ipython and uses some of this API.
1743
1746
1744 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1747 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1745
1748
1746 * IPython/hooks.py (result_display): Fix the fact that our display
1749 * IPython/hooks.py (result_display): Fix the fact that our display
1747 hook was using str() instead of repr(), as the default python
1750 hook was using str() instead of repr(), as the default python
1748 console does. This had gone unnoticed b/c it only happened if
1751 console does. This had gone unnoticed b/c it only happened if
1749 %Pprint was off, but the inconsistency was there.
1752 %Pprint was off, but the inconsistency was there.
1750
1753
1751 2006-05-15 Ville Vainio <vivainio@gmail.com>
1754 2006-05-15 Ville Vainio <vivainio@gmail.com>
1752
1755
1753 * Oinspect.py: Only show docstring for nonexisting/binary files
1756 * Oinspect.py: Only show docstring for nonexisting/binary files
1754 when doing object??, closing ticket #62
1757 when doing object??, closing ticket #62
1755
1758
1756 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1759 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1757
1760
1758 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1761 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1759 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1762 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1760 was being released in a routine which hadn't checked if it had
1763 was being released in a routine which hadn't checked if it had
1761 been the one to acquire it.
1764 been the one to acquire it.
1762
1765
1763 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1766 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1764
1767
1765 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1768 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1766
1769
1767 2006-04-11 Ville Vainio <vivainio@gmail.com>
1770 2006-04-11 Ville Vainio <vivainio@gmail.com>
1768
1771
1769 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1772 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1770 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1773 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1771 prefilters, allowing stuff like magics and aliases in the file.
1774 prefilters, allowing stuff like magics and aliases in the file.
1772
1775
1773 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1776 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1774 added. Supported now are "%clear in" and "%clear out" (clear input and
1777 added. Supported now are "%clear in" and "%clear out" (clear input and
1775 output history, respectively). Also fixed CachedOutput.flush to
1778 output history, respectively). Also fixed CachedOutput.flush to
1776 properly flush the output cache.
1779 properly flush the output cache.
1777
1780
1778 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1781 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1779 half-success (and fail explicitly).
1782 half-success (and fail explicitly).
1780
1783
1781 2006-03-28 Ville Vainio <vivainio@gmail.com>
1784 2006-03-28 Ville Vainio <vivainio@gmail.com>
1782
1785
1783 * iplib.py: Fix quoting of aliases so that only argless ones
1786 * iplib.py: Fix quoting of aliases so that only argless ones
1784 are quoted
1787 are quoted
1785
1788
1786 2006-03-28 Ville Vainio <vivainio@gmail.com>
1789 2006-03-28 Ville Vainio <vivainio@gmail.com>
1787
1790
1788 * iplib.py: Quote aliases with spaces in the name.
1791 * iplib.py: Quote aliases with spaces in the name.
1789 "c:\program files\blah\bin" is now legal alias target.
1792 "c:\program files\blah\bin" is now legal alias target.
1790
1793
1791 * ext_rehashdir.py: Space no longer allowed as arg
1794 * ext_rehashdir.py: Space no longer allowed as arg
1792 separator, since space is legal in path names.
1795 separator, since space is legal in path names.
1793
1796
1794 2006-03-16 Ville Vainio <vivainio@gmail.com>
1797 2006-03-16 Ville Vainio <vivainio@gmail.com>
1795
1798
1796 * upgrade_dir.py: Take path.py from Extensions, correcting
1799 * upgrade_dir.py: Take path.py from Extensions, correcting
1797 %upgrade magic
1800 %upgrade magic
1798
1801
1799 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1802 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1800
1803
1801 * hooks.py: Only enclose editor binary in quotes if legal and
1804 * hooks.py: Only enclose editor binary in quotes if legal and
1802 necessary (space in the name, and is an existing file). Fixes a bug
1805 necessary (space in the name, and is an existing file). Fixes a bug
1803 reported by Zachary Pincus.
1806 reported by Zachary Pincus.
1804
1807
1805 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1808 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1806
1809
1807 * Manual: thanks to a tip on proper color handling for Emacs, by
1810 * Manual: thanks to a tip on proper color handling for Emacs, by
1808 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1811 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1809
1812
1810 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1813 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1811 by applying the provided patch. Thanks to Liu Jin
1814 by applying the provided patch. Thanks to Liu Jin
1812 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1815 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1813 XEmacs/Linux, I'm trusting the submitter that it actually helps
1816 XEmacs/Linux, I'm trusting the submitter that it actually helps
1814 under win32/GNU Emacs. Will revisit if any problems are reported.
1817 under win32/GNU Emacs. Will revisit if any problems are reported.
1815
1818
1816 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1819 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1817
1820
1818 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1821 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1819 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1822 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1820
1823
1821 2006-03-12 Ville Vainio <vivainio@gmail.com>
1824 2006-03-12 Ville Vainio <vivainio@gmail.com>
1822
1825
1823 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1826 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1824 Torsten Marek.
1827 Torsten Marek.
1825
1828
1826 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1829 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1827
1830
1828 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1831 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1829 line ranges works again.
1832 line ranges works again.
1830
1833
1831 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1834 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1832
1835
1833 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1836 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1834 and friends, after a discussion with Zach Pincus on ipython-user.
1837 and friends, after a discussion with Zach Pincus on ipython-user.
1835 I'm not 100% sure, but after thinking about it quite a bit, it may
1838 I'm not 100% sure, but after thinking about it quite a bit, it may
1836 be OK. Testing with the multithreaded shells didn't reveal any
1839 be OK. Testing with the multithreaded shells didn't reveal any
1837 problems, but let's keep an eye out.
1840 problems, but let's keep an eye out.
1838
1841
1839 In the process, I fixed a few things which were calling
1842 In the process, I fixed a few things which were calling
1840 self.InteractiveTB() directly (like safe_execfile), which is a
1843 self.InteractiveTB() directly (like safe_execfile), which is a
1841 mistake: ALL exception reporting should be done by calling
1844 mistake: ALL exception reporting should be done by calling
1842 self.showtraceback(), which handles state and tab-completion and
1845 self.showtraceback(), which handles state and tab-completion and
1843 more.
1846 more.
1844
1847
1845 2006-03-01 Ville Vainio <vivainio@gmail.com>
1848 2006-03-01 Ville Vainio <vivainio@gmail.com>
1846
1849
1847 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1850 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1848 To use, do "from ipipe import *".
1851 To use, do "from ipipe import *".
1849
1852
1850 2006-02-24 Ville Vainio <vivainio@gmail.com>
1853 2006-02-24 Ville Vainio <vivainio@gmail.com>
1851
1854
1852 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1855 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1853 "cleanly" and safely than the older upgrade mechanism.
1856 "cleanly" and safely than the older upgrade mechanism.
1854
1857
1855 2006-02-21 Ville Vainio <vivainio@gmail.com>
1858 2006-02-21 Ville Vainio <vivainio@gmail.com>
1856
1859
1857 * Magic.py: %save works again.
1860 * Magic.py: %save works again.
1858
1861
1859 2006-02-15 Ville Vainio <vivainio@gmail.com>
1862 2006-02-15 Ville Vainio <vivainio@gmail.com>
1860
1863
1861 * Magic.py: %Pprint works again
1864 * Magic.py: %Pprint works again
1862
1865
1863 * Extensions/ipy_sane_defaults.py: Provide everything provided
1866 * Extensions/ipy_sane_defaults.py: Provide everything provided
1864 in default ipythonrc, to make it possible to have a completely empty
1867 in default ipythonrc, to make it possible to have a completely empty
1865 ipythonrc (and thus completely rc-file free configuration)
1868 ipythonrc (and thus completely rc-file free configuration)
1866
1869
1867 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1870 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1868
1871
1869 * IPython/hooks.py (editor): quote the call to the editor command,
1872 * IPython/hooks.py (editor): quote the call to the editor command,
1870 to allow commands with spaces in them. Problem noted by watching
1873 to allow commands with spaces in them. Problem noted by watching
1871 Ian Oswald's video about textpad under win32 at
1874 Ian Oswald's video about textpad under win32 at
1872 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1875 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1873
1876
1874 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1877 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1875 describing magics (we haven't used @ for a loong time).
1878 describing magics (we haven't used @ for a loong time).
1876
1879
1877 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1880 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1878 contributed by marienz to close
1881 contributed by marienz to close
1879 http://www.scipy.net/roundup/ipython/issue53.
1882 http://www.scipy.net/roundup/ipython/issue53.
1880
1883
1881 2006-02-10 Ville Vainio <vivainio@gmail.com>
1884 2006-02-10 Ville Vainio <vivainio@gmail.com>
1882
1885
1883 * genutils.py: getoutput now works in win32 too
1886 * genutils.py: getoutput now works in win32 too
1884
1887
1885 * completer.py: alias and magic completion only invoked
1888 * completer.py: alias and magic completion only invoked
1886 at the first "item" in the line, to avoid "cd %store"
1889 at the first "item" in the line, to avoid "cd %store"
1887 nonsense.
1890 nonsense.
1888
1891
1889 2006-02-09 Ville Vainio <vivainio@gmail.com>
1892 2006-02-09 Ville Vainio <vivainio@gmail.com>
1890
1893
1891 * test/*: Added a unit testing framework (finally).
1894 * test/*: Added a unit testing framework (finally).
1892 '%run runtests.py' to run test_*.
1895 '%run runtests.py' to run test_*.
1893
1896
1894 * ipapi.py: Exposed runlines and set_custom_exc
1897 * ipapi.py: Exposed runlines and set_custom_exc
1895
1898
1896 2006-02-07 Ville Vainio <vivainio@gmail.com>
1899 2006-02-07 Ville Vainio <vivainio@gmail.com>
1897
1900
1898 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1901 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1899 instead use "f(1 2)" as before.
1902 instead use "f(1 2)" as before.
1900
1903
1901 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1904 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1902
1905
1903 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1906 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1904 facilities, for demos processed by the IPython input filter
1907 facilities, for demos processed by the IPython input filter
1905 (IPythonDemo), and for running a script one-line-at-a-time as a
1908 (IPythonDemo), and for running a script one-line-at-a-time as a
1906 demo, both for pure Python (LineDemo) and for IPython-processed
1909 demo, both for pure Python (LineDemo) and for IPython-processed
1907 input (IPythonLineDemo). After a request by Dave Kohel, from the
1910 input (IPythonLineDemo). After a request by Dave Kohel, from the
1908 SAGE team.
1911 SAGE team.
1909 (Demo.edit): added an edit() method to the demo objects, to edit
1912 (Demo.edit): added an edit() method to the demo objects, to edit
1910 the in-memory copy of the last executed block.
1913 the in-memory copy of the last executed block.
1911
1914
1912 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1915 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1913 processing to %edit, %macro and %save. These commands can now be
1916 processing to %edit, %macro and %save. These commands can now be
1914 invoked on the unprocessed input as it was typed by the user
1917 invoked on the unprocessed input as it was typed by the user
1915 (without any prefilters applied). After requests by the SAGE team
1918 (without any prefilters applied). After requests by the SAGE team
1916 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1919 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1917
1920
1918 2006-02-01 Ville Vainio <vivainio@gmail.com>
1921 2006-02-01 Ville Vainio <vivainio@gmail.com>
1919
1922
1920 * setup.py, eggsetup.py: easy_install ipython==dev works
1923 * setup.py, eggsetup.py: easy_install ipython==dev works
1921 correctly now (on Linux)
1924 correctly now (on Linux)
1922
1925
1923 * ipy_user_conf,ipmaker: user config changes, removed spurious
1926 * ipy_user_conf,ipmaker: user config changes, removed spurious
1924 warnings
1927 warnings
1925
1928
1926 * iplib: if rc.banner is string, use it as is.
1929 * iplib: if rc.banner is string, use it as is.
1927
1930
1928 * Magic: %pycat accepts a string argument and pages it's contents.
1931 * Magic: %pycat accepts a string argument and pages it's contents.
1929
1932
1930
1933
1931 2006-01-30 Ville Vainio <vivainio@gmail.com>
1934 2006-01-30 Ville Vainio <vivainio@gmail.com>
1932
1935
1933 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1936 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1934 Now %store and bookmarks work through PickleShare, meaning that
1937 Now %store and bookmarks work through PickleShare, meaning that
1935 concurrent access is possible and all ipython sessions see the
1938 concurrent access is possible and all ipython sessions see the
1936 same database situation all the time, instead of snapshot of
1939 same database situation all the time, instead of snapshot of
1937 the situation when the session was started. Hence, %bookmark
1940 the situation when the session was started. Hence, %bookmark
1938 results are immediately accessible from othes sessions. The database
1941 results are immediately accessible from othes sessions. The database
1939 is also available for use by user extensions. See:
1942 is also available for use by user extensions. See:
1940 http://www.python.org/pypi/pickleshare
1943 http://www.python.org/pypi/pickleshare
1941
1944
1942 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1945 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1943
1946
1944 * aliases can now be %store'd
1947 * aliases can now be %store'd
1945
1948
1946 * path.py moved to Extensions so that pickleshare does not need
1949 * path.py moved to Extensions so that pickleshare does not need
1947 IPython-specific import. Extensions added to pythonpath right
1950 IPython-specific import. Extensions added to pythonpath right
1948 at __init__.
1951 at __init__.
1949
1952
1950 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1953 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1951 called with _ip.system and the pre-transformed command string.
1954 called with _ip.system and the pre-transformed command string.
1952
1955
1953 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1956 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1954
1957
1955 * IPython/iplib.py (interact): Fix that we were not catching
1958 * IPython/iplib.py (interact): Fix that we were not catching
1956 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1959 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1957 logic here had to change, but it's fixed now.
1960 logic here had to change, but it's fixed now.
1958
1961
1959 2006-01-29 Ville Vainio <vivainio@gmail.com>
1962 2006-01-29 Ville Vainio <vivainio@gmail.com>
1960
1963
1961 * iplib.py: Try to import pyreadline on Windows.
1964 * iplib.py: Try to import pyreadline on Windows.
1962
1965
1963 2006-01-27 Ville Vainio <vivainio@gmail.com>
1966 2006-01-27 Ville Vainio <vivainio@gmail.com>
1964
1967
1965 * iplib.py: Expose ipapi as _ip in builtin namespace.
1968 * iplib.py: Expose ipapi as _ip in builtin namespace.
1966 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1969 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1967 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1970 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1968 syntax now produce _ip.* variant of the commands.
1971 syntax now produce _ip.* variant of the commands.
1969
1972
1970 * "_ip.options().autoedit_syntax = 2" automatically throws
1973 * "_ip.options().autoedit_syntax = 2" automatically throws
1971 user to editor for syntax error correction without prompting.
1974 user to editor for syntax error correction without prompting.
1972
1975
1973 2006-01-27 Ville Vainio <vivainio@gmail.com>
1976 2006-01-27 Ville Vainio <vivainio@gmail.com>
1974
1977
1975 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1978 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1976 'ipython' at argv[0]) executed through command line.
1979 'ipython' at argv[0]) executed through command line.
1977 NOTE: this DEPRECATES calling ipython with multiple scripts
1980 NOTE: this DEPRECATES calling ipython with multiple scripts
1978 ("ipython a.py b.py c.py")
1981 ("ipython a.py b.py c.py")
1979
1982
1980 * iplib.py, hooks.py: Added configurable input prefilter,
1983 * iplib.py, hooks.py: Added configurable input prefilter,
1981 named 'input_prefilter'. See ext_rescapture.py for example
1984 named 'input_prefilter'. See ext_rescapture.py for example
1982 usage.
1985 usage.
1983
1986
1984 * ext_rescapture.py, Magic.py: Better system command output capture
1987 * ext_rescapture.py, Magic.py: Better system command output capture
1985 through 'var = !ls' (deprecates user-visible %sc). Same notation
1988 through 'var = !ls' (deprecates user-visible %sc). Same notation
1986 applies for magics, 'var = %alias' assigns alias list to var.
1989 applies for magics, 'var = %alias' assigns alias list to var.
1987
1990
1988 * ipapi.py: added meta() for accessing extension-usable data store.
1991 * ipapi.py: added meta() for accessing extension-usable data store.
1989
1992
1990 * iplib.py: added InteractiveShell.getapi(). New magics should be
1993 * iplib.py: added InteractiveShell.getapi(). New magics should be
1991 written doing self.getapi() instead of using the shell directly.
1994 written doing self.getapi() instead of using the shell directly.
1992
1995
1993 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1996 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1994 %store foo >> ~/myfoo.txt to store variables to files (in clean
1997 %store foo >> ~/myfoo.txt to store variables to files (in clean
1995 textual form, not a restorable pickle).
1998 textual form, not a restorable pickle).
1996
1999
1997 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2000 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1998
2001
1999 * usage.py, Magic.py: added %quickref
2002 * usage.py, Magic.py: added %quickref
2000
2003
2001 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2004 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2002
2005
2003 * GetoptErrors when invoking magics etc. with wrong args
2006 * GetoptErrors when invoking magics etc. with wrong args
2004 are now more helpful:
2007 are now more helpful:
2005 GetoptError: option -l not recognized (allowed: "qb" )
2008 GetoptError: option -l not recognized (allowed: "qb" )
2006
2009
2007 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2010 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2008
2011
2009 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2012 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2010 computationally intensive blocks don't appear to stall the demo.
2013 computationally intensive blocks don't appear to stall the demo.
2011
2014
2012 2006-01-24 Ville Vainio <vivainio@gmail.com>
2015 2006-01-24 Ville Vainio <vivainio@gmail.com>
2013
2016
2014 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2017 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2015 value to manipulate resulting history entry.
2018 value to manipulate resulting history entry.
2016
2019
2017 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2020 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2018 to instance methods of IPApi class, to make extending an embedded
2021 to instance methods of IPApi class, to make extending an embedded
2019 IPython feasible. See ext_rehashdir.py for example usage.
2022 IPython feasible. See ext_rehashdir.py for example usage.
2020
2023
2021 * Merged 1071-1076 from branches/0.7.1
2024 * Merged 1071-1076 from branches/0.7.1
2022
2025
2023
2026
2024 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2027 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2025
2028
2026 * tools/release (daystamp): Fix build tools to use the new
2029 * tools/release (daystamp): Fix build tools to use the new
2027 eggsetup.py script to build lightweight eggs.
2030 eggsetup.py script to build lightweight eggs.
2028
2031
2029 * Applied changesets 1062 and 1064 before 0.7.1 release.
2032 * Applied changesets 1062 and 1064 before 0.7.1 release.
2030
2033
2031 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2034 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2032 see the raw input history (without conversions like %ls ->
2035 see the raw input history (without conversions like %ls ->
2033 ipmagic("ls")). After a request from W. Stein, SAGE
2036 ipmagic("ls")). After a request from W. Stein, SAGE
2034 (http://modular.ucsd.edu/sage) developer. This information is
2037 (http://modular.ucsd.edu/sage) developer. This information is
2035 stored in the input_hist_raw attribute of the IPython instance, so
2038 stored in the input_hist_raw attribute of the IPython instance, so
2036 developers can access it if needed (it's an InputList instance).
2039 developers can access it if needed (it's an InputList instance).
2037
2040
2038 * Versionstring = 0.7.2.svn
2041 * Versionstring = 0.7.2.svn
2039
2042
2040 * eggsetup.py: A separate script for constructing eggs, creates
2043 * eggsetup.py: A separate script for constructing eggs, creates
2041 proper launch scripts even on Windows (an .exe file in
2044 proper launch scripts even on Windows (an .exe file in
2042 \python24\scripts).
2045 \python24\scripts).
2043
2046
2044 * ipapi.py: launch_new_instance, launch entry point needed for the
2047 * ipapi.py: launch_new_instance, launch entry point needed for the
2045 egg.
2048 egg.
2046
2049
2047 2006-01-23 Ville Vainio <vivainio@gmail.com>
2050 2006-01-23 Ville Vainio <vivainio@gmail.com>
2048
2051
2049 * Added %cpaste magic for pasting python code
2052 * Added %cpaste magic for pasting python code
2050
2053
2051 2006-01-22 Ville Vainio <vivainio@gmail.com>
2054 2006-01-22 Ville Vainio <vivainio@gmail.com>
2052
2055
2053 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2056 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2054
2057
2055 * Versionstring = 0.7.2.svn
2058 * Versionstring = 0.7.2.svn
2056
2059
2057 * eggsetup.py: A separate script for constructing eggs, creates
2060 * eggsetup.py: A separate script for constructing eggs, creates
2058 proper launch scripts even on Windows (an .exe file in
2061 proper launch scripts even on Windows (an .exe file in
2059 \python24\scripts).
2062 \python24\scripts).
2060
2063
2061 * ipapi.py: launch_new_instance, launch entry point needed for the
2064 * ipapi.py: launch_new_instance, launch entry point needed for the
2062 egg.
2065 egg.
2063
2066
2064 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2067 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2065
2068
2066 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2069 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2067 %pfile foo would print the file for foo even if it was a binary.
2070 %pfile foo would print the file for foo even if it was a binary.
2068 Now, extensions '.so' and '.dll' are skipped.
2071 Now, extensions '.so' and '.dll' are skipped.
2069
2072
2070 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2073 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2071 bug, where macros would fail in all threaded modes. I'm not 100%
2074 bug, where macros would fail in all threaded modes. I'm not 100%
2072 sure, so I'm going to put out an rc instead of making a release
2075 sure, so I'm going to put out an rc instead of making a release
2073 today, and wait for feedback for at least a few days.
2076 today, and wait for feedback for at least a few days.
2074
2077
2075 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2078 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2076 it...) the handling of pasting external code with autoindent on.
2079 it...) the handling of pasting external code with autoindent on.
2077 To get out of a multiline input, the rule will appear for most
2080 To get out of a multiline input, the rule will appear for most
2078 users unchanged: two blank lines or change the indent level
2081 users unchanged: two blank lines or change the indent level
2079 proposed by IPython. But there is a twist now: you can
2082 proposed by IPython. But there is a twist now: you can
2080 add/subtract only *one or two spaces*. If you add/subtract three
2083 add/subtract only *one or two spaces*. If you add/subtract three
2081 or more (unless you completely delete the line), IPython will
2084 or more (unless you completely delete the line), IPython will
2082 accept that line, and you'll need to enter a second one of pure
2085 accept that line, and you'll need to enter a second one of pure
2083 whitespace. I know it sounds complicated, but I can't find a
2086 whitespace. I know it sounds complicated, but I can't find a
2084 different solution that covers all the cases, with the right
2087 different solution that covers all the cases, with the right
2085 heuristics. Hopefully in actual use, nobody will really notice
2088 heuristics. Hopefully in actual use, nobody will really notice
2086 all these strange rules and things will 'just work'.
2089 all these strange rules and things will 'just work'.
2087
2090
2088 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2091 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2089
2092
2090 * IPython/iplib.py (interact): catch exceptions which can be
2093 * IPython/iplib.py (interact): catch exceptions which can be
2091 triggered asynchronously by signal handlers. Thanks to an
2094 triggered asynchronously by signal handlers. Thanks to an
2092 automatic crash report, submitted by Colin Kingsley
2095 automatic crash report, submitted by Colin Kingsley
2093 <tercel-AT-gentoo.org>.
2096 <tercel-AT-gentoo.org>.
2094
2097
2095 2006-01-20 Ville Vainio <vivainio@gmail.com>
2098 2006-01-20 Ville Vainio <vivainio@gmail.com>
2096
2099
2097 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2100 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2098 (%rehashdir, very useful, try it out) of how to extend ipython
2101 (%rehashdir, very useful, try it out) of how to extend ipython
2099 with new magics. Also added Extensions dir to pythonpath to make
2102 with new magics. Also added Extensions dir to pythonpath to make
2100 importing extensions easy.
2103 importing extensions easy.
2101
2104
2102 * %store now complains when trying to store interactively declared
2105 * %store now complains when trying to store interactively declared
2103 classes / instances of those classes.
2106 classes / instances of those classes.
2104
2107
2105 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2108 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2106 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2109 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2107 if they exist, and ipy_user_conf.py with some defaults is created for
2110 if they exist, and ipy_user_conf.py with some defaults is created for
2108 the user.
2111 the user.
2109
2112
2110 * Startup rehashing done by the config file, not InterpreterExec.
2113 * Startup rehashing done by the config file, not InterpreterExec.
2111 This means system commands are available even without selecting the
2114 This means system commands are available even without selecting the
2112 pysh profile. It's the sensible default after all.
2115 pysh profile. It's the sensible default after all.
2113
2116
2114 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2117 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2115
2118
2116 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2119 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2117 multiline code with autoindent on working. But I am really not
2120 multiline code with autoindent on working. But I am really not
2118 sure, so this needs more testing. Will commit a debug-enabled
2121 sure, so this needs more testing. Will commit a debug-enabled
2119 version for now, while I test it some more, so that Ville and
2122 version for now, while I test it some more, so that Ville and
2120 others may also catch any problems. Also made
2123 others may also catch any problems. Also made
2121 self.indent_current_str() a method, to ensure that there's no
2124 self.indent_current_str() a method, to ensure that there's no
2122 chance of the indent space count and the corresponding string
2125 chance of the indent space count and the corresponding string
2123 falling out of sync. All code needing the string should just call
2126 falling out of sync. All code needing the string should just call
2124 the method.
2127 the method.
2125
2128
2126 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2129 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2127
2130
2128 * IPython/Magic.py (magic_edit): fix check for when users don't
2131 * IPython/Magic.py (magic_edit): fix check for when users don't
2129 save their output files, the try/except was in the wrong section.
2132 save their output files, the try/except was in the wrong section.
2130
2133
2131 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2134 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2132
2135
2133 * IPython/Magic.py (magic_run): fix __file__ global missing from
2136 * IPython/Magic.py (magic_run): fix __file__ global missing from
2134 script's namespace when executed via %run. After a report by
2137 script's namespace when executed via %run. After a report by
2135 Vivian.
2138 Vivian.
2136
2139
2137 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2140 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2138 when using python 2.4. The parent constructor changed in 2.4, and
2141 when using python 2.4. The parent constructor changed in 2.4, and
2139 we need to track it directly (we can't call it, as it messes up
2142 we need to track it directly (we can't call it, as it messes up
2140 readline and tab-completion inside our pdb would stop working).
2143 readline and tab-completion inside our pdb would stop working).
2141 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2144 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2142
2145
2143 2006-01-16 Ville Vainio <vivainio@gmail.com>
2146 2006-01-16 Ville Vainio <vivainio@gmail.com>
2144
2147
2145 * Ipython/magic.py: Reverted back to old %edit functionality
2148 * Ipython/magic.py: Reverted back to old %edit functionality
2146 that returns file contents on exit.
2149 that returns file contents on exit.
2147
2150
2148 * IPython/path.py: Added Jason Orendorff's "path" module to
2151 * IPython/path.py: Added Jason Orendorff's "path" module to
2149 IPython tree, http://www.jorendorff.com/articles/python/path/.
2152 IPython tree, http://www.jorendorff.com/articles/python/path/.
2150 You can get path objects conveniently through %sc, and !!, e.g.:
2153 You can get path objects conveniently through %sc, and !!, e.g.:
2151 sc files=ls
2154 sc files=ls
2152 for p in files.paths: # or files.p
2155 for p in files.paths: # or files.p
2153 print p,p.mtime
2156 print p,p.mtime
2154
2157
2155 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2158 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2156 now work again without considering the exclusion regexp -
2159 now work again without considering the exclusion regexp -
2157 hence, things like ',foo my/path' turn to 'foo("my/path")'
2160 hence, things like ',foo my/path' turn to 'foo("my/path")'
2158 instead of syntax error.
2161 instead of syntax error.
2159
2162
2160
2163
2161 2006-01-14 Ville Vainio <vivainio@gmail.com>
2164 2006-01-14 Ville Vainio <vivainio@gmail.com>
2162
2165
2163 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2166 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2164 ipapi decorators for python 2.4 users, options() provides access to rc
2167 ipapi decorators for python 2.4 users, options() provides access to rc
2165 data.
2168 data.
2166
2169
2167 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2170 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2168 as path separators (even on Linux ;-). Space character after
2171 as path separators (even on Linux ;-). Space character after
2169 backslash (as yielded by tab completer) is still space;
2172 backslash (as yielded by tab completer) is still space;
2170 "%cd long\ name" works as expected.
2173 "%cd long\ name" works as expected.
2171
2174
2172 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2175 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2173 as "chain of command", with priority. API stays the same,
2176 as "chain of command", with priority. API stays the same,
2174 TryNext exception raised by a hook function signals that
2177 TryNext exception raised by a hook function signals that
2175 current hook failed and next hook should try handling it, as
2178 current hook failed and next hook should try handling it, as
2176 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2179 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2177 requested configurable display hook, which is now implemented.
2180 requested configurable display hook, which is now implemented.
2178
2181
2179 2006-01-13 Ville Vainio <vivainio@gmail.com>
2182 2006-01-13 Ville Vainio <vivainio@gmail.com>
2180
2183
2181 * IPython/platutils*.py: platform specific utility functions,
2184 * IPython/platutils*.py: platform specific utility functions,
2182 so far only set_term_title is implemented (change terminal
2185 so far only set_term_title is implemented (change terminal
2183 label in windowing systems). %cd now changes the title to
2186 label in windowing systems). %cd now changes the title to
2184 current dir.
2187 current dir.
2185
2188
2186 * IPython/Release.py: Added myself to "authors" list,
2189 * IPython/Release.py: Added myself to "authors" list,
2187 had to create new files.
2190 had to create new files.
2188
2191
2189 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2192 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2190 shell escape; not a known bug but had potential to be one in the
2193 shell escape; not a known bug but had potential to be one in the
2191 future.
2194 future.
2192
2195
2193 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2196 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2194 extension API for IPython! See the module for usage example. Fix
2197 extension API for IPython! See the module for usage example. Fix
2195 OInspect for docstring-less magic functions.
2198 OInspect for docstring-less magic functions.
2196
2199
2197
2200
2198 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2201 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2199
2202
2200 * IPython/iplib.py (raw_input): temporarily deactivate all
2203 * IPython/iplib.py (raw_input): temporarily deactivate all
2201 attempts at allowing pasting of code with autoindent on. It
2204 attempts at allowing pasting of code with autoindent on. It
2202 introduced bugs (reported by Prabhu) and I can't seem to find a
2205 introduced bugs (reported by Prabhu) and I can't seem to find a
2203 robust combination which works in all cases. Will have to revisit
2206 robust combination which works in all cases. Will have to revisit
2204 later.
2207 later.
2205
2208
2206 * IPython/genutils.py: remove isspace() function. We've dropped
2209 * IPython/genutils.py: remove isspace() function. We've dropped
2207 2.2 compatibility, so it's OK to use the string method.
2210 2.2 compatibility, so it's OK to use the string method.
2208
2211
2209 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2212 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2210
2213
2211 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2214 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2212 matching what NOT to autocall on, to include all python binary
2215 matching what NOT to autocall on, to include all python binary
2213 operators (including things like 'and', 'or', 'is' and 'in').
2216 operators (including things like 'and', 'or', 'is' and 'in').
2214 Prompted by a bug report on 'foo & bar', but I realized we had
2217 Prompted by a bug report on 'foo & bar', but I realized we had
2215 many more potential bug cases with other operators. The regexp is
2218 many more potential bug cases with other operators. The regexp is
2216 self.re_exclude_auto, it's fairly commented.
2219 self.re_exclude_auto, it's fairly commented.
2217
2220
2218 2006-01-12 Ville Vainio <vivainio@gmail.com>
2221 2006-01-12 Ville Vainio <vivainio@gmail.com>
2219
2222
2220 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2223 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2221 Prettified and hardened string/backslash quoting with ipsystem(),
2224 Prettified and hardened string/backslash quoting with ipsystem(),
2222 ipalias() and ipmagic(). Now even \ characters are passed to
2225 ipalias() and ipmagic(). Now even \ characters are passed to
2223 %magics, !shell escapes and aliases exactly as they are in the
2226 %magics, !shell escapes and aliases exactly as they are in the
2224 ipython command line. Should improve backslash experience,
2227 ipython command line. Should improve backslash experience,
2225 particularly in Windows (path delimiter for some commands that
2228 particularly in Windows (path delimiter for some commands that
2226 won't understand '/'), but Unix benefits as well (regexps). %cd
2229 won't understand '/'), but Unix benefits as well (regexps). %cd
2227 magic still doesn't support backslash path delimiters, though. Also
2230 magic still doesn't support backslash path delimiters, though. Also
2228 deleted all pretense of supporting multiline command strings in
2231 deleted all pretense of supporting multiline command strings in
2229 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2232 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2230
2233
2231 * doc/build_doc_instructions.txt added. Documentation on how to
2234 * doc/build_doc_instructions.txt added. Documentation on how to
2232 use doc/update_manual.py, added yesterday. Both files contributed
2235 use doc/update_manual.py, added yesterday. Both files contributed
2233 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2236 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2234 doc/*.sh for deprecation at a later date.
2237 doc/*.sh for deprecation at a later date.
2235
2238
2236 * /ipython.py Added ipython.py to root directory for
2239 * /ipython.py Added ipython.py to root directory for
2237 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2240 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2238 ipython.py) and development convenience (no need to keep doing
2241 ipython.py) and development convenience (no need to keep doing
2239 "setup.py install" between changes).
2242 "setup.py install" between changes).
2240
2243
2241 * Made ! and !! shell escapes work (again) in multiline expressions:
2244 * Made ! and !! shell escapes work (again) in multiline expressions:
2242 if 1:
2245 if 1:
2243 !ls
2246 !ls
2244 !!ls
2247 !!ls
2245
2248
2246 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2249 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2247
2250
2248 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2251 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2249 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2252 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2250 module in case-insensitive installation. Was causing crashes
2253 module in case-insensitive installation. Was causing crashes
2251 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2254 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2252
2255
2253 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2256 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2254 <marienz-AT-gentoo.org>, closes
2257 <marienz-AT-gentoo.org>, closes
2255 http://www.scipy.net/roundup/ipython/issue51.
2258 http://www.scipy.net/roundup/ipython/issue51.
2256
2259
2257 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2260 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2258
2261
2259 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2262 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2260 problem of excessive CPU usage under *nix and keyboard lag under
2263 problem of excessive CPU usage under *nix and keyboard lag under
2261 win32.
2264 win32.
2262
2265
2263 2006-01-10 *** Released version 0.7.0
2266 2006-01-10 *** Released version 0.7.0
2264
2267
2265 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2268 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2266
2269
2267 * IPython/Release.py (revision): tag version number to 0.7.0,
2270 * IPython/Release.py (revision): tag version number to 0.7.0,
2268 ready for release.
2271 ready for release.
2269
2272
2270 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2273 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2271 it informs the user of the name of the temp. file used. This can
2274 it informs the user of the name of the temp. file used. This can
2272 help if you decide later to reuse that same file, so you know
2275 help if you decide later to reuse that same file, so you know
2273 where to copy the info from.
2276 where to copy the info from.
2274
2277
2275 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2278 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2276
2279
2277 * setup_bdist_egg.py: little script to build an egg. Added
2280 * setup_bdist_egg.py: little script to build an egg. Added
2278 support in the release tools as well.
2281 support in the release tools as well.
2279
2282
2280 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2283 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2281
2284
2282 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2285 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2283 version selection (new -wxversion command line and ipythonrc
2286 version selection (new -wxversion command line and ipythonrc
2284 parameter). Patch contributed by Arnd Baecker
2287 parameter). Patch contributed by Arnd Baecker
2285 <arnd.baecker-AT-web.de>.
2288 <arnd.baecker-AT-web.de>.
2286
2289
2287 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2290 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2288 embedded instances, for variables defined at the interactive
2291 embedded instances, for variables defined at the interactive
2289 prompt of the embedded ipython. Reported by Arnd.
2292 prompt of the embedded ipython. Reported by Arnd.
2290
2293
2291 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2294 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2292 it can be used as a (stateful) toggle, or with a direct parameter.
2295 it can be used as a (stateful) toggle, or with a direct parameter.
2293
2296
2294 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2297 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2295 could be triggered in certain cases and cause the traceback
2298 could be triggered in certain cases and cause the traceback
2296 printer not to work.
2299 printer not to work.
2297
2300
2298 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2301 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2299
2302
2300 * IPython/iplib.py (_should_recompile): Small fix, closes
2303 * IPython/iplib.py (_should_recompile): Small fix, closes
2301 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2304 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2302
2305
2303 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2306 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2304
2307
2305 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2308 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2306 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2309 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2307 Moad for help with tracking it down.
2310 Moad for help with tracking it down.
2308
2311
2309 * IPython/iplib.py (handle_auto): fix autocall handling for
2312 * IPython/iplib.py (handle_auto): fix autocall handling for
2310 objects which support BOTH __getitem__ and __call__ (so that f [x]
2313 objects which support BOTH __getitem__ and __call__ (so that f [x]
2311 is left alone, instead of becoming f([x]) automatically).
2314 is left alone, instead of becoming f([x]) automatically).
2312
2315
2313 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2316 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2314 Ville's patch.
2317 Ville's patch.
2315
2318
2316 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2319 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2317
2320
2318 * IPython/iplib.py (handle_auto): changed autocall semantics to
2321 * IPython/iplib.py (handle_auto): changed autocall semantics to
2319 include 'smart' mode, where the autocall transformation is NOT
2322 include 'smart' mode, where the autocall transformation is NOT
2320 applied if there are no arguments on the line. This allows you to
2323 applied if there are no arguments on the line. This allows you to
2321 just type 'foo' if foo is a callable to see its internal form,
2324 just type 'foo' if foo is a callable to see its internal form,
2322 instead of having it called with no arguments (typically a
2325 instead of having it called with no arguments (typically a
2323 mistake). The old 'full' autocall still exists: for that, you
2326 mistake). The old 'full' autocall still exists: for that, you
2324 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2327 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2325
2328
2326 * IPython/completer.py (Completer.attr_matches): add
2329 * IPython/completer.py (Completer.attr_matches): add
2327 tab-completion support for Enthoughts' traits. After a report by
2330 tab-completion support for Enthoughts' traits. After a report by
2328 Arnd and a patch by Prabhu.
2331 Arnd and a patch by Prabhu.
2329
2332
2330 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2333 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2331
2334
2332 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2335 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2333 Schmolck's patch to fix inspect.getinnerframes().
2336 Schmolck's patch to fix inspect.getinnerframes().
2334
2337
2335 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2338 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2336 for embedded instances, regarding handling of namespaces and items
2339 for embedded instances, regarding handling of namespaces and items
2337 added to the __builtin__ one. Multiple embedded instances and
2340 added to the __builtin__ one. Multiple embedded instances and
2338 recursive embeddings should work better now (though I'm not sure
2341 recursive embeddings should work better now (though I'm not sure
2339 I've got all the corner cases fixed, that code is a bit of a brain
2342 I've got all the corner cases fixed, that code is a bit of a brain
2340 twister).
2343 twister).
2341
2344
2342 * IPython/Magic.py (magic_edit): added support to edit in-memory
2345 * IPython/Magic.py (magic_edit): added support to edit in-memory
2343 macros (automatically creates the necessary temp files). %edit
2346 macros (automatically creates the necessary temp files). %edit
2344 also doesn't return the file contents anymore, it's just noise.
2347 also doesn't return the file contents anymore, it's just noise.
2345
2348
2346 * IPython/completer.py (Completer.attr_matches): revert change to
2349 * IPython/completer.py (Completer.attr_matches): revert change to
2347 complete only on attributes listed in __all__. I realized it
2350 complete only on attributes listed in __all__. I realized it
2348 cripples the tab-completion system as a tool for exploring the
2351 cripples the tab-completion system as a tool for exploring the
2349 internals of unknown libraries (it renders any non-__all__
2352 internals of unknown libraries (it renders any non-__all__
2350 attribute off-limits). I got bit by this when trying to see
2353 attribute off-limits). I got bit by this when trying to see
2351 something inside the dis module.
2354 something inside the dis module.
2352
2355
2353 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2356 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2354
2357
2355 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2358 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2356 namespace for users and extension writers to hold data in. This
2359 namespace for users and extension writers to hold data in. This
2357 follows the discussion in
2360 follows the discussion in
2358 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2361 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2359
2362
2360 * IPython/completer.py (IPCompleter.complete): small patch to help
2363 * IPython/completer.py (IPCompleter.complete): small patch to help
2361 tab-completion under Emacs, after a suggestion by John Barnard
2364 tab-completion under Emacs, after a suggestion by John Barnard
2362 <barnarj-AT-ccf.org>.
2365 <barnarj-AT-ccf.org>.
2363
2366
2364 * IPython/Magic.py (Magic.extract_input_slices): added support for
2367 * IPython/Magic.py (Magic.extract_input_slices): added support for
2365 the slice notation in magics to use N-M to represent numbers N...M
2368 the slice notation in magics to use N-M to represent numbers N...M
2366 (closed endpoints). This is used by %macro and %save.
2369 (closed endpoints). This is used by %macro and %save.
2367
2370
2368 * IPython/completer.py (Completer.attr_matches): for modules which
2371 * IPython/completer.py (Completer.attr_matches): for modules which
2369 define __all__, complete only on those. After a patch by Jeffrey
2372 define __all__, complete only on those. After a patch by Jeffrey
2370 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2373 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2371 speed up this routine.
2374 speed up this routine.
2372
2375
2373 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2376 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2374 don't know if this is the end of it, but the behavior now is
2377 don't know if this is the end of it, but the behavior now is
2375 certainly much more correct. Note that coupled with macros,
2378 certainly much more correct. Note that coupled with macros,
2376 slightly surprising (at first) behavior may occur: a macro will in
2379 slightly surprising (at first) behavior may occur: a macro will in
2377 general expand to multiple lines of input, so upon exiting, the
2380 general expand to multiple lines of input, so upon exiting, the
2378 in/out counters will both be bumped by the corresponding amount
2381 in/out counters will both be bumped by the corresponding amount
2379 (as if the macro's contents had been typed interactively). Typing
2382 (as if the macro's contents had been typed interactively). Typing
2380 %hist will reveal the intermediate (silently processed) lines.
2383 %hist will reveal the intermediate (silently processed) lines.
2381
2384
2382 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2385 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2383 pickle to fail (%run was overwriting __main__ and not restoring
2386 pickle to fail (%run was overwriting __main__ and not restoring
2384 it, but pickle relies on __main__ to operate).
2387 it, but pickle relies on __main__ to operate).
2385
2388
2386 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2389 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2387 using properties, but forgot to make the main InteractiveShell
2390 using properties, but forgot to make the main InteractiveShell
2388 class a new-style class. Properties fail silently, and
2391 class a new-style class. Properties fail silently, and
2389 mysteriously, with old-style class (getters work, but
2392 mysteriously, with old-style class (getters work, but
2390 setters don't do anything).
2393 setters don't do anything).
2391
2394
2392 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2395 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2393
2396
2394 * IPython/Magic.py (magic_history): fix history reporting bug (I
2397 * IPython/Magic.py (magic_history): fix history reporting bug (I
2395 know some nasties are still there, I just can't seem to find a
2398 know some nasties are still there, I just can't seem to find a
2396 reproducible test case to track them down; the input history is
2399 reproducible test case to track them down; the input history is
2397 falling out of sync...)
2400 falling out of sync...)
2398
2401
2399 * IPython/iplib.py (handle_shell_escape): fix bug where both
2402 * IPython/iplib.py (handle_shell_escape): fix bug where both
2400 aliases and system accesses where broken for indented code (such
2403 aliases and system accesses where broken for indented code (such
2401 as loops).
2404 as loops).
2402
2405
2403 * IPython/genutils.py (shell): fix small but critical bug for
2406 * IPython/genutils.py (shell): fix small but critical bug for
2404 win32 system access.
2407 win32 system access.
2405
2408
2406 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2409 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2407
2410
2408 * IPython/iplib.py (showtraceback): remove use of the
2411 * IPython/iplib.py (showtraceback): remove use of the
2409 sys.last_{type/value/traceback} structures, which are non
2412 sys.last_{type/value/traceback} structures, which are non
2410 thread-safe.
2413 thread-safe.
2411 (_prefilter): change control flow to ensure that we NEVER
2414 (_prefilter): change control flow to ensure that we NEVER
2412 introspect objects when autocall is off. This will guarantee that
2415 introspect objects when autocall is off. This will guarantee that
2413 having an input line of the form 'x.y', where access to attribute
2416 having an input line of the form 'x.y', where access to attribute
2414 'y' has side effects, doesn't trigger the side effect TWICE. It
2417 'y' has side effects, doesn't trigger the side effect TWICE. It
2415 is important to note that, with autocall on, these side effects
2418 is important to note that, with autocall on, these side effects
2416 can still happen.
2419 can still happen.
2417 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2420 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2418 trio. IPython offers these three kinds of special calls which are
2421 trio. IPython offers these three kinds of special calls which are
2419 not python code, and it's a good thing to have their call method
2422 not python code, and it's a good thing to have their call method
2420 be accessible as pure python functions (not just special syntax at
2423 be accessible as pure python functions (not just special syntax at
2421 the command line). It gives us a better internal implementation
2424 the command line). It gives us a better internal implementation
2422 structure, as well as exposing these for user scripting more
2425 structure, as well as exposing these for user scripting more
2423 cleanly.
2426 cleanly.
2424
2427
2425 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2428 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2426 file. Now that they'll be more likely to be used with the
2429 file. Now that they'll be more likely to be used with the
2427 persistance system (%store), I want to make sure their module path
2430 persistance system (%store), I want to make sure their module path
2428 doesn't change in the future, so that we don't break things for
2431 doesn't change in the future, so that we don't break things for
2429 users' persisted data.
2432 users' persisted data.
2430
2433
2431 * IPython/iplib.py (autoindent_update): move indentation
2434 * IPython/iplib.py (autoindent_update): move indentation
2432 management into the _text_ processing loop, not the keyboard
2435 management into the _text_ processing loop, not the keyboard
2433 interactive one. This is necessary to correctly process non-typed
2436 interactive one. This is necessary to correctly process non-typed
2434 multiline input (such as macros).
2437 multiline input (such as macros).
2435
2438
2436 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2439 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2437 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2440 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2438 which was producing problems in the resulting manual.
2441 which was producing problems in the resulting manual.
2439 (magic_whos): improve reporting of instances (show their class,
2442 (magic_whos): improve reporting of instances (show their class,
2440 instead of simply printing 'instance' which isn't terribly
2443 instead of simply printing 'instance' which isn't terribly
2441 informative).
2444 informative).
2442
2445
2443 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2446 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2444 (minor mods) to support network shares under win32.
2447 (minor mods) to support network shares under win32.
2445
2448
2446 * IPython/winconsole.py (get_console_size): add new winconsole
2449 * IPython/winconsole.py (get_console_size): add new winconsole
2447 module and fixes to page_dumb() to improve its behavior under
2450 module and fixes to page_dumb() to improve its behavior under
2448 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2451 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2449
2452
2450 * IPython/Magic.py (Macro): simplified Macro class to just
2453 * IPython/Magic.py (Macro): simplified Macro class to just
2451 subclass list. We've had only 2.2 compatibility for a very long
2454 subclass list. We've had only 2.2 compatibility for a very long
2452 time, yet I was still avoiding subclassing the builtin types. No
2455 time, yet I was still avoiding subclassing the builtin types. No
2453 more (I'm also starting to use properties, though I won't shift to
2456 more (I'm also starting to use properties, though I won't shift to
2454 2.3-specific features quite yet).
2457 2.3-specific features quite yet).
2455 (magic_store): added Ville's patch for lightweight variable
2458 (magic_store): added Ville's patch for lightweight variable
2456 persistence, after a request on the user list by Matt Wilkie
2459 persistence, after a request on the user list by Matt Wilkie
2457 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2460 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2458 details.
2461 details.
2459
2462
2460 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2463 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2461 changed the default logfile name from 'ipython.log' to
2464 changed the default logfile name from 'ipython.log' to
2462 'ipython_log.py'. These logs are real python files, and now that
2465 'ipython_log.py'. These logs are real python files, and now that
2463 we have much better multiline support, people are more likely to
2466 we have much better multiline support, people are more likely to
2464 want to use them as such. Might as well name them correctly.
2467 want to use them as such. Might as well name them correctly.
2465
2468
2466 * IPython/Magic.py: substantial cleanup. While we can't stop
2469 * IPython/Magic.py: substantial cleanup. While we can't stop
2467 using magics as mixins, due to the existing customizations 'out
2470 using magics as mixins, due to the existing customizations 'out
2468 there' which rely on the mixin naming conventions, at least I
2471 there' which rely on the mixin naming conventions, at least I
2469 cleaned out all cross-class name usage. So once we are OK with
2472 cleaned out all cross-class name usage. So once we are OK with
2470 breaking compatibility, the two systems can be separated.
2473 breaking compatibility, the two systems can be separated.
2471
2474
2472 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2475 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2473 anymore, and the class is a fair bit less hideous as well. New
2476 anymore, and the class is a fair bit less hideous as well. New
2474 features were also introduced: timestamping of input, and logging
2477 features were also introduced: timestamping of input, and logging
2475 of output results. These are user-visible with the -t and -o
2478 of output results. These are user-visible with the -t and -o
2476 options to %logstart. Closes
2479 options to %logstart. Closes
2477 http://www.scipy.net/roundup/ipython/issue11 and a request by
2480 http://www.scipy.net/roundup/ipython/issue11 and a request by
2478 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2481 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2479
2482
2480 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2483 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2481
2484
2482 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2485 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2483 better handle backslashes in paths. See the thread 'More Windows
2486 better handle backslashes in paths. See the thread 'More Windows
2484 questions part 2 - \/ characters revisited' on the iypthon user
2487 questions part 2 - \/ characters revisited' on the iypthon user
2485 list:
2488 list:
2486 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2489 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2487
2490
2488 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2491 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2489
2492
2490 (InteractiveShell.__init__): change threaded shells to not use the
2493 (InteractiveShell.__init__): change threaded shells to not use the
2491 ipython crash handler. This was causing more problems than not,
2494 ipython crash handler. This was causing more problems than not,
2492 as exceptions in the main thread (GUI code, typically) would
2495 as exceptions in the main thread (GUI code, typically) would
2493 always show up as a 'crash', when they really weren't.
2496 always show up as a 'crash', when they really weren't.
2494
2497
2495 The colors and exception mode commands (%colors/%xmode) have been
2498 The colors and exception mode commands (%colors/%xmode) have been
2496 synchronized to also take this into account, so users can get
2499 synchronized to also take this into account, so users can get
2497 verbose exceptions for their threaded code as well. I also added
2500 verbose exceptions for their threaded code as well. I also added
2498 support for activating pdb inside this exception handler as well,
2501 support for activating pdb inside this exception handler as well,
2499 so now GUI authors can use IPython's enhanced pdb at runtime.
2502 so now GUI authors can use IPython's enhanced pdb at runtime.
2500
2503
2501 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2504 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2502 true by default, and add it to the shipped ipythonrc file. Since
2505 true by default, and add it to the shipped ipythonrc file. Since
2503 this asks the user before proceeding, I think it's OK to make it
2506 this asks the user before proceeding, I think it's OK to make it
2504 true by default.
2507 true by default.
2505
2508
2506 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2509 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2507 of the previous special-casing of input in the eval loop. I think
2510 of the previous special-casing of input in the eval loop. I think
2508 this is cleaner, as they really are commands and shouldn't have
2511 this is cleaner, as they really are commands and shouldn't have
2509 a special role in the middle of the core code.
2512 a special role in the middle of the core code.
2510
2513
2511 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2514 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2512
2515
2513 * IPython/iplib.py (edit_syntax_error): added support for
2516 * IPython/iplib.py (edit_syntax_error): added support for
2514 automatically reopening the editor if the file had a syntax error
2517 automatically reopening the editor if the file had a syntax error
2515 in it. Thanks to scottt who provided the patch at:
2518 in it. Thanks to scottt who provided the patch at:
2516 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2519 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2517 version committed).
2520 version committed).
2518
2521
2519 * IPython/iplib.py (handle_normal): add suport for multi-line
2522 * IPython/iplib.py (handle_normal): add suport for multi-line
2520 input with emtpy lines. This fixes
2523 input with emtpy lines. This fixes
2521 http://www.scipy.net/roundup/ipython/issue43 and a similar
2524 http://www.scipy.net/roundup/ipython/issue43 and a similar
2522 discussion on the user list.
2525 discussion on the user list.
2523
2526
2524 WARNING: a behavior change is necessarily introduced to support
2527 WARNING: a behavior change is necessarily introduced to support
2525 blank lines: now a single blank line with whitespace does NOT
2528 blank lines: now a single blank line with whitespace does NOT
2526 break the input loop, which means that when autoindent is on, by
2529 break the input loop, which means that when autoindent is on, by
2527 default hitting return on the next (indented) line does NOT exit.
2530 default hitting return on the next (indented) line does NOT exit.
2528
2531
2529 Instead, to exit a multiline input you can either have:
2532 Instead, to exit a multiline input you can either have:
2530
2533
2531 - TWO whitespace lines (just hit return again), or
2534 - TWO whitespace lines (just hit return again), or
2532 - a single whitespace line of a different length than provided
2535 - a single whitespace line of a different length than provided
2533 by the autoindent (add or remove a space).
2536 by the autoindent (add or remove a space).
2534
2537
2535 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2538 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2536 module to better organize all readline-related functionality.
2539 module to better organize all readline-related functionality.
2537 I've deleted FlexCompleter and put all completion clases here.
2540 I've deleted FlexCompleter and put all completion clases here.
2538
2541
2539 * IPython/iplib.py (raw_input): improve indentation management.
2542 * IPython/iplib.py (raw_input): improve indentation management.
2540 It is now possible to paste indented code with autoindent on, and
2543 It is now possible to paste indented code with autoindent on, and
2541 the code is interpreted correctly (though it still looks bad on
2544 the code is interpreted correctly (though it still looks bad on
2542 screen, due to the line-oriented nature of ipython).
2545 screen, due to the line-oriented nature of ipython).
2543 (MagicCompleter.complete): change behavior so that a TAB key on an
2546 (MagicCompleter.complete): change behavior so that a TAB key on an
2544 otherwise empty line actually inserts a tab, instead of completing
2547 otherwise empty line actually inserts a tab, instead of completing
2545 on the entire global namespace. This makes it easier to use the
2548 on the entire global namespace. This makes it easier to use the
2546 TAB key for indentation. After a request by Hans Meine
2549 TAB key for indentation. After a request by Hans Meine
2547 <hans_meine-AT-gmx.net>
2550 <hans_meine-AT-gmx.net>
2548 (_prefilter): add support so that typing plain 'exit' or 'quit'
2551 (_prefilter): add support so that typing plain 'exit' or 'quit'
2549 does a sensible thing. Originally I tried to deviate as little as
2552 does a sensible thing. Originally I tried to deviate as little as
2550 possible from the default python behavior, but even that one may
2553 possible from the default python behavior, but even that one may
2551 change in this direction (thread on python-dev to that effect).
2554 change in this direction (thread on python-dev to that effect).
2552 Regardless, ipython should do the right thing even if CPython's
2555 Regardless, ipython should do the right thing even if CPython's
2553 '>>>' prompt doesn't.
2556 '>>>' prompt doesn't.
2554 (InteractiveShell): removed subclassing code.InteractiveConsole
2557 (InteractiveShell): removed subclassing code.InteractiveConsole
2555 class. By now we'd overridden just about all of its methods: I've
2558 class. By now we'd overridden just about all of its methods: I've
2556 copied the remaining two over, and now ipython is a standalone
2559 copied the remaining two over, and now ipython is a standalone
2557 class. This will provide a clearer picture for the chainsaw
2560 class. This will provide a clearer picture for the chainsaw
2558 branch refactoring.
2561 branch refactoring.
2559
2562
2560 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2563 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2561
2564
2562 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2565 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2563 failures for objects which break when dir() is called on them.
2566 failures for objects which break when dir() is called on them.
2564
2567
2565 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2568 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2566 distinct local and global namespaces in the completer API. This
2569 distinct local and global namespaces in the completer API. This
2567 change allows us to properly handle completion with distinct
2570 change allows us to properly handle completion with distinct
2568 scopes, including in embedded instances (this had never really
2571 scopes, including in embedded instances (this had never really
2569 worked correctly).
2572 worked correctly).
2570
2573
2571 Note: this introduces a change in the constructor for
2574 Note: this introduces a change in the constructor for
2572 MagicCompleter, as a new global_namespace parameter is now the
2575 MagicCompleter, as a new global_namespace parameter is now the
2573 second argument (the others were bumped one position).
2576 second argument (the others were bumped one position).
2574
2577
2575 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2578 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2576
2579
2577 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2580 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2578 embedded instances (which can be done now thanks to Vivian's
2581 embedded instances (which can be done now thanks to Vivian's
2579 frame-handling fixes for pdb).
2582 frame-handling fixes for pdb).
2580 (InteractiveShell.__init__): Fix namespace handling problem in
2583 (InteractiveShell.__init__): Fix namespace handling problem in
2581 embedded instances. We were overwriting __main__ unconditionally,
2584 embedded instances. We were overwriting __main__ unconditionally,
2582 and this should only be done for 'full' (non-embedded) IPython;
2585 and this should only be done for 'full' (non-embedded) IPython;
2583 embedded instances must respect the caller's __main__. Thanks to
2586 embedded instances must respect the caller's __main__. Thanks to
2584 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2587 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2585
2588
2586 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2589 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2587
2590
2588 * setup.py: added download_url to setup(). This registers the
2591 * setup.py: added download_url to setup(). This registers the
2589 download address at PyPI, which is not only useful to humans
2592 download address at PyPI, which is not only useful to humans
2590 browsing the site, but is also picked up by setuptools (the Eggs
2593 browsing the site, but is also picked up by setuptools (the Eggs
2591 machinery). Thanks to Ville and R. Kern for the info/discussion
2594 machinery). Thanks to Ville and R. Kern for the info/discussion
2592 on this.
2595 on this.
2593
2596
2594 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2597 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2595
2598
2596 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2599 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2597 This brings a lot of nice functionality to the pdb mode, which now
2600 This brings a lot of nice functionality to the pdb mode, which now
2598 has tab-completion, syntax highlighting, and better stack handling
2601 has tab-completion, syntax highlighting, and better stack handling
2599 than before. Many thanks to Vivian De Smedt
2602 than before. Many thanks to Vivian De Smedt
2600 <vivian-AT-vdesmedt.com> for the original patches.
2603 <vivian-AT-vdesmedt.com> for the original patches.
2601
2604
2602 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2605 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2603
2606
2604 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2607 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2605 sequence to consistently accept the banner argument. The
2608 sequence to consistently accept the banner argument. The
2606 inconsistency was tripping SAGE, thanks to Gary Zablackis
2609 inconsistency was tripping SAGE, thanks to Gary Zablackis
2607 <gzabl-AT-yahoo.com> for the report.
2610 <gzabl-AT-yahoo.com> for the report.
2608
2611
2609 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2612 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2610
2613
2611 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2614 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2612 Fix bug where a naked 'alias' call in the ipythonrc file would
2615 Fix bug where a naked 'alias' call in the ipythonrc file would
2613 cause a crash. Bug reported by Jorgen Stenarson.
2616 cause a crash. Bug reported by Jorgen Stenarson.
2614
2617
2615 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2618 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2616
2619
2617 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2620 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2618 startup time.
2621 startup time.
2619
2622
2620 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2623 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2621 instances had introduced a bug with globals in normal code. Now
2624 instances had introduced a bug with globals in normal code. Now
2622 it's working in all cases.
2625 it's working in all cases.
2623
2626
2624 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2627 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2625 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2628 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2626 has been introduced to set the default case sensitivity of the
2629 has been introduced to set the default case sensitivity of the
2627 searches. Users can still select either mode at runtime on a
2630 searches. Users can still select either mode at runtime on a
2628 per-search basis.
2631 per-search basis.
2629
2632
2630 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2633 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2631
2634
2632 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2635 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2633 attributes in wildcard searches for subclasses. Modified version
2636 attributes in wildcard searches for subclasses. Modified version
2634 of a patch by Jorgen.
2637 of a patch by Jorgen.
2635
2638
2636 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2639 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2637
2640
2638 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2641 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2639 embedded instances. I added a user_global_ns attribute to the
2642 embedded instances. I added a user_global_ns attribute to the
2640 InteractiveShell class to handle this.
2643 InteractiveShell class to handle this.
2641
2644
2642 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2645 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2643
2646
2644 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2647 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2645 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2648 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2646 (reported under win32, but may happen also in other platforms).
2649 (reported under win32, but may happen also in other platforms).
2647 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2650 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2648
2651
2649 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2652 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2650
2653
2651 * IPython/Magic.py (magic_psearch): new support for wildcard
2654 * IPython/Magic.py (magic_psearch): new support for wildcard
2652 patterns. Now, typing ?a*b will list all names which begin with a
2655 patterns. Now, typing ?a*b will list all names which begin with a
2653 and end in b, for example. The %psearch magic has full
2656 and end in b, for example. The %psearch magic has full
2654 docstrings. Many thanks to JΓΆrgen Stenarson
2657 docstrings. Many thanks to JΓΆrgen Stenarson
2655 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2658 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2656 implementing this functionality.
2659 implementing this functionality.
2657
2660
2658 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2661 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2659
2662
2660 * Manual: fixed long-standing annoyance of double-dashes (as in
2663 * Manual: fixed long-standing annoyance of double-dashes (as in
2661 --prefix=~, for example) being stripped in the HTML version. This
2664 --prefix=~, for example) being stripped in the HTML version. This
2662 is a latex2html bug, but a workaround was provided. Many thanks
2665 is a latex2html bug, but a workaround was provided. Many thanks
2663 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2666 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2664 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2667 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2665 rolling. This seemingly small issue had tripped a number of users
2668 rolling. This seemingly small issue had tripped a number of users
2666 when first installing, so I'm glad to see it gone.
2669 when first installing, so I'm glad to see it gone.
2667
2670
2668 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2671 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2669
2672
2670 * IPython/Extensions/numeric_formats.py: fix missing import,
2673 * IPython/Extensions/numeric_formats.py: fix missing import,
2671 reported by Stephen Walton.
2674 reported by Stephen Walton.
2672
2675
2673 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2676 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2674
2677
2675 * IPython/demo.py: finish demo module, fully documented now.
2678 * IPython/demo.py: finish demo module, fully documented now.
2676
2679
2677 * IPython/genutils.py (file_read): simple little utility to read a
2680 * IPython/genutils.py (file_read): simple little utility to read a
2678 file and ensure it's closed afterwards.
2681 file and ensure it's closed afterwards.
2679
2682
2680 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2683 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2681
2684
2682 * IPython/demo.py (Demo.__init__): added support for individually
2685 * IPython/demo.py (Demo.__init__): added support for individually
2683 tagging blocks for automatic execution.
2686 tagging blocks for automatic execution.
2684
2687
2685 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2688 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2686 syntax-highlighted python sources, requested by John.
2689 syntax-highlighted python sources, requested by John.
2687
2690
2688 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2691 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2689
2692
2690 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2693 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2691 finishing.
2694 finishing.
2692
2695
2693 * IPython/genutils.py (shlex_split): moved from Magic to here,
2696 * IPython/genutils.py (shlex_split): moved from Magic to here,
2694 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2697 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2695
2698
2696 * IPython/demo.py (Demo.__init__): added support for silent
2699 * IPython/demo.py (Demo.__init__): added support for silent
2697 blocks, improved marks as regexps, docstrings written.
2700 blocks, improved marks as regexps, docstrings written.
2698 (Demo.__init__): better docstring, added support for sys.argv.
2701 (Demo.__init__): better docstring, added support for sys.argv.
2699
2702
2700 * IPython/genutils.py (marquee): little utility used by the demo
2703 * IPython/genutils.py (marquee): little utility used by the demo
2701 code, handy in general.
2704 code, handy in general.
2702
2705
2703 * IPython/demo.py (Demo.__init__): new class for interactive
2706 * IPython/demo.py (Demo.__init__): new class for interactive
2704 demos. Not documented yet, I just wrote it in a hurry for
2707 demos. Not documented yet, I just wrote it in a hurry for
2705 scipy'05. Will docstring later.
2708 scipy'05. Will docstring later.
2706
2709
2707 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2710 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2708
2711
2709 * IPython/Shell.py (sigint_handler): Drastic simplification which
2712 * IPython/Shell.py (sigint_handler): Drastic simplification which
2710 also seems to make Ctrl-C work correctly across threads! This is
2713 also seems to make Ctrl-C work correctly across threads! This is
2711 so simple, that I can't beleive I'd missed it before. Needs more
2714 so simple, that I can't beleive I'd missed it before. Needs more
2712 testing, though.
2715 testing, though.
2713 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2716 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2714 like this before...
2717 like this before...
2715
2718
2716 * IPython/genutils.py (get_home_dir): add protection against
2719 * IPython/genutils.py (get_home_dir): add protection against
2717 non-dirs in win32 registry.
2720 non-dirs in win32 registry.
2718
2721
2719 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2722 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2720 bug where dict was mutated while iterating (pysh crash).
2723 bug where dict was mutated while iterating (pysh crash).
2721
2724
2722 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2725 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2723
2726
2724 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2727 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2725 spurious newlines added by this routine. After a report by
2728 spurious newlines added by this routine. After a report by
2726 F. Mantegazza.
2729 F. Mantegazza.
2727
2730
2728 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2731 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2729
2732
2730 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2733 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2731 calls. These were a leftover from the GTK 1.x days, and can cause
2734 calls. These were a leftover from the GTK 1.x days, and can cause
2732 problems in certain cases (after a report by John Hunter).
2735 problems in certain cases (after a report by John Hunter).
2733
2736
2734 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2737 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2735 os.getcwd() fails at init time. Thanks to patch from David Remahl
2738 os.getcwd() fails at init time. Thanks to patch from David Remahl
2736 <chmod007-AT-mac.com>.
2739 <chmod007-AT-mac.com>.
2737 (InteractiveShell.__init__): prevent certain special magics from
2740 (InteractiveShell.__init__): prevent certain special magics from
2738 being shadowed by aliases. Closes
2741 being shadowed by aliases. Closes
2739 http://www.scipy.net/roundup/ipython/issue41.
2742 http://www.scipy.net/roundup/ipython/issue41.
2740
2743
2741 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2744 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2742
2745
2743 * IPython/iplib.py (InteractiveShell.complete): Added new
2746 * IPython/iplib.py (InteractiveShell.complete): Added new
2744 top-level completion method to expose the completion mechanism
2747 top-level completion method to expose the completion mechanism
2745 beyond readline-based environments.
2748 beyond readline-based environments.
2746
2749
2747 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2750 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2748
2751
2749 * tools/ipsvnc (svnversion): fix svnversion capture.
2752 * tools/ipsvnc (svnversion): fix svnversion capture.
2750
2753
2751 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2754 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2752 attribute to self, which was missing. Before, it was set by a
2755 attribute to self, which was missing. Before, it was set by a
2753 routine which in certain cases wasn't being called, so the
2756 routine which in certain cases wasn't being called, so the
2754 instance could end up missing the attribute. This caused a crash.
2757 instance could end up missing the attribute. This caused a crash.
2755 Closes http://www.scipy.net/roundup/ipython/issue40.
2758 Closes http://www.scipy.net/roundup/ipython/issue40.
2756
2759
2757 2005-08-16 Fernando Perez <fperez@colorado.edu>
2760 2005-08-16 Fernando Perez <fperez@colorado.edu>
2758
2761
2759 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2762 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2760 contains non-string attribute. Closes
2763 contains non-string attribute. Closes
2761 http://www.scipy.net/roundup/ipython/issue38.
2764 http://www.scipy.net/roundup/ipython/issue38.
2762
2765
2763 2005-08-14 Fernando Perez <fperez@colorado.edu>
2766 2005-08-14 Fernando Perez <fperez@colorado.edu>
2764
2767
2765 * tools/ipsvnc: Minor improvements, to add changeset info.
2768 * tools/ipsvnc: Minor improvements, to add changeset info.
2766
2769
2767 2005-08-12 Fernando Perez <fperez@colorado.edu>
2770 2005-08-12 Fernando Perez <fperez@colorado.edu>
2768
2771
2769 * IPython/iplib.py (runsource): remove self.code_to_run_src
2772 * IPython/iplib.py (runsource): remove self.code_to_run_src
2770 attribute. I realized this is nothing more than
2773 attribute. I realized this is nothing more than
2771 '\n'.join(self.buffer), and having the same data in two different
2774 '\n'.join(self.buffer), and having the same data in two different
2772 places is just asking for synchronization bugs. This may impact
2775 places is just asking for synchronization bugs. This may impact
2773 people who have custom exception handlers, so I need to warn
2776 people who have custom exception handlers, so I need to warn
2774 ipython-dev about it (F. Mantegazza may use them).
2777 ipython-dev about it (F. Mantegazza may use them).
2775
2778
2776 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2779 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2777
2780
2778 * IPython/genutils.py: fix 2.2 compatibility (generators)
2781 * IPython/genutils.py: fix 2.2 compatibility (generators)
2779
2782
2780 2005-07-18 Fernando Perez <fperez@colorado.edu>
2783 2005-07-18 Fernando Perez <fperez@colorado.edu>
2781
2784
2782 * IPython/genutils.py (get_home_dir): fix to help users with
2785 * IPython/genutils.py (get_home_dir): fix to help users with
2783 invalid $HOME under win32.
2786 invalid $HOME under win32.
2784
2787
2785 2005-07-17 Fernando Perez <fperez@colorado.edu>
2788 2005-07-17 Fernando Perez <fperez@colorado.edu>
2786
2789
2787 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2790 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2788 some old hacks and clean up a bit other routines; code should be
2791 some old hacks and clean up a bit other routines; code should be
2789 simpler and a bit faster.
2792 simpler and a bit faster.
2790
2793
2791 * IPython/iplib.py (interact): removed some last-resort attempts
2794 * IPython/iplib.py (interact): removed some last-resort attempts
2792 to survive broken stdout/stderr. That code was only making it
2795 to survive broken stdout/stderr. That code was only making it
2793 harder to abstract out the i/o (necessary for gui integration),
2796 harder to abstract out the i/o (necessary for gui integration),
2794 and the crashes it could prevent were extremely rare in practice
2797 and the crashes it could prevent were extremely rare in practice
2795 (besides being fully user-induced in a pretty violent manner).
2798 (besides being fully user-induced in a pretty violent manner).
2796
2799
2797 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2800 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2798 Nothing major yet, but the code is simpler to read; this should
2801 Nothing major yet, but the code is simpler to read; this should
2799 make it easier to do more serious modifications in the future.
2802 make it easier to do more serious modifications in the future.
2800
2803
2801 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2804 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2802 which broke in .15 (thanks to a report by Ville).
2805 which broke in .15 (thanks to a report by Ville).
2803
2806
2804 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2807 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2805 be quite correct, I know next to nothing about unicode). This
2808 be quite correct, I know next to nothing about unicode). This
2806 will allow unicode strings to be used in prompts, amongst other
2809 will allow unicode strings to be used in prompts, amongst other
2807 cases. It also will prevent ipython from crashing when unicode
2810 cases. It also will prevent ipython from crashing when unicode
2808 shows up unexpectedly in many places. If ascii encoding fails, we
2811 shows up unexpectedly in many places. If ascii encoding fails, we
2809 assume utf_8. Currently the encoding is not a user-visible
2812 assume utf_8. Currently the encoding is not a user-visible
2810 setting, though it could be made so if there is demand for it.
2813 setting, though it could be made so if there is demand for it.
2811
2814
2812 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2815 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2813
2816
2814 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2817 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2815
2818
2816 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2819 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2817
2820
2818 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2821 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2819 code can work transparently for 2.2/2.3.
2822 code can work transparently for 2.2/2.3.
2820
2823
2821 2005-07-16 Fernando Perez <fperez@colorado.edu>
2824 2005-07-16 Fernando Perez <fperez@colorado.edu>
2822
2825
2823 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2826 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2824 out of the color scheme table used for coloring exception
2827 out of the color scheme table used for coloring exception
2825 tracebacks. This allows user code to add new schemes at runtime.
2828 tracebacks. This allows user code to add new schemes at runtime.
2826 This is a minimally modified version of the patch at
2829 This is a minimally modified version of the patch at
2827 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2830 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2828 for the contribution.
2831 for the contribution.
2829
2832
2830 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2833 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2831 slightly modified version of the patch in
2834 slightly modified version of the patch in
2832 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2835 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2833 to remove the previous try/except solution (which was costlier).
2836 to remove the previous try/except solution (which was costlier).
2834 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2837 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2835
2838
2836 2005-06-08 Fernando Perez <fperez@colorado.edu>
2839 2005-06-08 Fernando Perez <fperez@colorado.edu>
2837
2840
2838 * IPython/iplib.py (write/write_err): Add methods to abstract all
2841 * IPython/iplib.py (write/write_err): Add methods to abstract all
2839 I/O a bit more.
2842 I/O a bit more.
2840
2843
2841 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2844 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2842 warning, reported by Aric Hagberg, fix by JD Hunter.
2845 warning, reported by Aric Hagberg, fix by JD Hunter.
2843
2846
2844 2005-06-02 *** Released version 0.6.15
2847 2005-06-02 *** Released version 0.6.15
2845
2848
2846 2005-06-01 Fernando Perez <fperez@colorado.edu>
2849 2005-06-01 Fernando Perez <fperez@colorado.edu>
2847
2850
2848 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2851 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2849 tab-completion of filenames within open-quoted strings. Note that
2852 tab-completion of filenames within open-quoted strings. Note that
2850 this requires that in ~/.ipython/ipythonrc, users change the
2853 this requires that in ~/.ipython/ipythonrc, users change the
2851 readline delimiters configuration to read:
2854 readline delimiters configuration to read:
2852
2855
2853 readline_remove_delims -/~
2856 readline_remove_delims -/~
2854
2857
2855
2858
2856 2005-05-31 *** Released version 0.6.14
2859 2005-05-31 *** Released version 0.6.14
2857
2860
2858 2005-05-29 Fernando Perez <fperez@colorado.edu>
2861 2005-05-29 Fernando Perez <fperez@colorado.edu>
2859
2862
2860 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2863 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2861 with files not on the filesystem. Reported by Eliyahu Sandler
2864 with files not on the filesystem. Reported by Eliyahu Sandler
2862 <eli@gondolin.net>
2865 <eli@gondolin.net>
2863
2866
2864 2005-05-22 Fernando Perez <fperez@colorado.edu>
2867 2005-05-22 Fernando Perez <fperez@colorado.edu>
2865
2868
2866 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2869 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2867 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2870 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2868
2871
2869 2005-05-19 Fernando Perez <fperez@colorado.edu>
2872 2005-05-19 Fernando Perez <fperez@colorado.edu>
2870
2873
2871 * IPython/iplib.py (safe_execfile): close a file which could be
2874 * IPython/iplib.py (safe_execfile): close a file which could be
2872 left open (causing problems in win32, which locks open files).
2875 left open (causing problems in win32, which locks open files).
2873 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2876 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2874
2877
2875 2005-05-18 Fernando Perez <fperez@colorado.edu>
2878 2005-05-18 Fernando Perez <fperez@colorado.edu>
2876
2879
2877 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2880 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2878 keyword arguments correctly to safe_execfile().
2881 keyword arguments correctly to safe_execfile().
2879
2882
2880 2005-05-13 Fernando Perez <fperez@colorado.edu>
2883 2005-05-13 Fernando Perez <fperez@colorado.edu>
2881
2884
2882 * ipython.1: Added info about Qt to manpage, and threads warning
2885 * ipython.1: Added info about Qt to manpage, and threads warning
2883 to usage page (invoked with --help).
2886 to usage page (invoked with --help).
2884
2887
2885 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2888 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2886 new matcher (it goes at the end of the priority list) to do
2889 new matcher (it goes at the end of the priority list) to do
2887 tab-completion on named function arguments. Submitted by George
2890 tab-completion on named function arguments. Submitted by George
2888 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2891 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2889 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2892 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2890 for more details.
2893 for more details.
2891
2894
2892 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2895 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2893 SystemExit exceptions in the script being run. Thanks to a report
2896 SystemExit exceptions in the script being run. Thanks to a report
2894 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2897 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2895 producing very annoying behavior when running unit tests.
2898 producing very annoying behavior when running unit tests.
2896
2899
2897 2005-05-12 Fernando Perez <fperez@colorado.edu>
2900 2005-05-12 Fernando Perez <fperez@colorado.edu>
2898
2901
2899 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2902 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2900 which I'd broken (again) due to a changed regexp. In the process,
2903 which I'd broken (again) due to a changed regexp. In the process,
2901 added ';' as an escape to auto-quote the whole line without
2904 added ';' as an escape to auto-quote the whole line without
2902 splitting its arguments. Thanks to a report by Jerry McRae
2905 splitting its arguments. Thanks to a report by Jerry McRae
2903 <qrs0xyc02-AT-sneakemail.com>.
2906 <qrs0xyc02-AT-sneakemail.com>.
2904
2907
2905 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2908 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2906 possible crashes caused by a TokenError. Reported by Ed Schofield
2909 possible crashes caused by a TokenError. Reported by Ed Schofield
2907 <schofield-AT-ftw.at>.
2910 <schofield-AT-ftw.at>.
2908
2911
2909 2005-05-06 Fernando Perez <fperez@colorado.edu>
2912 2005-05-06 Fernando Perez <fperez@colorado.edu>
2910
2913
2911 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2914 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2912
2915
2913 2005-04-29 Fernando Perez <fperez@colorado.edu>
2916 2005-04-29 Fernando Perez <fperez@colorado.edu>
2914
2917
2915 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2918 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2916 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2919 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2917 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2920 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2918 which provides support for Qt interactive usage (similar to the
2921 which provides support for Qt interactive usage (similar to the
2919 existing one for WX and GTK). This had been often requested.
2922 existing one for WX and GTK). This had been often requested.
2920
2923
2921 2005-04-14 *** Released version 0.6.13
2924 2005-04-14 *** Released version 0.6.13
2922
2925
2923 2005-04-08 Fernando Perez <fperez@colorado.edu>
2926 2005-04-08 Fernando Perez <fperez@colorado.edu>
2924
2927
2925 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2928 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2926 from _ofind, which gets called on almost every input line. Now,
2929 from _ofind, which gets called on almost every input line. Now,
2927 we only try to get docstrings if they are actually going to be
2930 we only try to get docstrings if they are actually going to be
2928 used (the overhead of fetching unnecessary docstrings can be
2931 used (the overhead of fetching unnecessary docstrings can be
2929 noticeable for certain objects, such as Pyro proxies).
2932 noticeable for certain objects, such as Pyro proxies).
2930
2933
2931 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2934 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2932 for completers. For some reason I had been passing them the state
2935 for completers. For some reason I had been passing them the state
2933 variable, which completers never actually need, and was in
2936 variable, which completers never actually need, and was in
2934 conflict with the rlcompleter API. Custom completers ONLY need to
2937 conflict with the rlcompleter API. Custom completers ONLY need to
2935 take the text parameter.
2938 take the text parameter.
2936
2939
2937 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2940 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2938 work correctly in pysh. I've also moved all the logic which used
2941 work correctly in pysh. I've also moved all the logic which used
2939 to be in pysh.py here, which will prevent problems with future
2942 to be in pysh.py here, which will prevent problems with future
2940 upgrades. However, this time I must warn users to update their
2943 upgrades. However, this time I must warn users to update their
2941 pysh profile to include the line
2944 pysh profile to include the line
2942
2945
2943 import_all IPython.Extensions.InterpreterExec
2946 import_all IPython.Extensions.InterpreterExec
2944
2947
2945 because otherwise things won't work for them. They MUST also
2948 because otherwise things won't work for them. They MUST also
2946 delete pysh.py and the line
2949 delete pysh.py and the line
2947
2950
2948 execfile pysh.py
2951 execfile pysh.py
2949
2952
2950 from their ipythonrc-pysh.
2953 from their ipythonrc-pysh.
2951
2954
2952 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2955 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2953 robust in the face of objects whose dir() returns non-strings
2956 robust in the face of objects whose dir() returns non-strings
2954 (which it shouldn't, but some broken libs like ITK do). Thanks to
2957 (which it shouldn't, but some broken libs like ITK do). Thanks to
2955 a patch by John Hunter (implemented differently, though). Also
2958 a patch by John Hunter (implemented differently, though). Also
2956 minor improvements by using .extend instead of + on lists.
2959 minor improvements by using .extend instead of + on lists.
2957
2960
2958 * pysh.py:
2961 * pysh.py:
2959
2962
2960 2005-04-06 Fernando Perez <fperez@colorado.edu>
2963 2005-04-06 Fernando Perez <fperez@colorado.edu>
2961
2964
2962 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2965 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2963 by default, so that all users benefit from it. Those who don't
2966 by default, so that all users benefit from it. Those who don't
2964 want it can still turn it off.
2967 want it can still turn it off.
2965
2968
2966 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2969 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2967 config file, I'd forgotten about this, so users were getting it
2970 config file, I'd forgotten about this, so users were getting it
2968 off by default.
2971 off by default.
2969
2972
2970 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2973 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2971 consistency. Now magics can be called in multiline statements,
2974 consistency. Now magics can be called in multiline statements,
2972 and python variables can be expanded in magic calls via $var.
2975 and python variables can be expanded in magic calls via $var.
2973 This makes the magic system behave just like aliases or !system
2976 This makes the magic system behave just like aliases or !system
2974 calls.
2977 calls.
2975
2978
2976 2005-03-28 Fernando Perez <fperez@colorado.edu>
2979 2005-03-28 Fernando Perez <fperez@colorado.edu>
2977
2980
2978 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2981 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2979 expensive string additions for building command. Add support for
2982 expensive string additions for building command. Add support for
2980 trailing ';' when autocall is used.
2983 trailing ';' when autocall is used.
2981
2984
2982 2005-03-26 Fernando Perez <fperez@colorado.edu>
2985 2005-03-26 Fernando Perez <fperez@colorado.edu>
2983
2986
2984 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2987 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2985 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2988 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2986 ipython.el robust against prompts with any number of spaces
2989 ipython.el robust against prompts with any number of spaces
2987 (including 0) after the ':' character.
2990 (including 0) after the ':' character.
2988
2991
2989 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2992 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2990 continuation prompt, which misled users to think the line was
2993 continuation prompt, which misled users to think the line was
2991 already indented. Closes debian Bug#300847, reported to me by
2994 already indented. Closes debian Bug#300847, reported to me by
2992 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2995 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2993
2996
2994 2005-03-23 Fernando Perez <fperez@colorado.edu>
2997 2005-03-23 Fernando Perez <fperez@colorado.edu>
2995
2998
2996 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2999 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2997 properly aligned if they have embedded newlines.
3000 properly aligned if they have embedded newlines.
2998
3001
2999 * IPython/iplib.py (runlines): Add a public method to expose
3002 * IPython/iplib.py (runlines): Add a public method to expose
3000 IPython's code execution machinery, so that users can run strings
3003 IPython's code execution machinery, so that users can run strings
3001 as if they had been typed at the prompt interactively.
3004 as if they had been typed at the prompt interactively.
3002 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3005 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3003 methods which can call the system shell, but with python variable
3006 methods which can call the system shell, but with python variable
3004 expansion. The three such methods are: __IPYTHON__.system,
3007 expansion. The three such methods are: __IPYTHON__.system,
3005 .getoutput and .getoutputerror. These need to be documented in a
3008 .getoutput and .getoutputerror. These need to be documented in a
3006 'public API' section (to be written) of the manual.
3009 'public API' section (to be written) of the manual.
3007
3010
3008 2005-03-20 Fernando Perez <fperez@colorado.edu>
3011 2005-03-20 Fernando Perez <fperez@colorado.edu>
3009
3012
3010 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3013 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3011 for custom exception handling. This is quite powerful, and it
3014 for custom exception handling. This is quite powerful, and it
3012 allows for user-installable exception handlers which can trap
3015 allows for user-installable exception handlers which can trap
3013 custom exceptions at runtime and treat them separately from
3016 custom exceptions at runtime and treat them separately from
3014 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3017 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3015 Mantegazza <mantegazza-AT-ill.fr>.
3018 Mantegazza <mantegazza-AT-ill.fr>.
3016 (InteractiveShell.set_custom_completer): public API function to
3019 (InteractiveShell.set_custom_completer): public API function to
3017 add new completers at runtime.
3020 add new completers at runtime.
3018
3021
3019 2005-03-19 Fernando Perez <fperez@colorado.edu>
3022 2005-03-19 Fernando Perez <fperez@colorado.edu>
3020
3023
3021 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3024 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3022 allow objects which provide their docstrings via non-standard
3025 allow objects which provide their docstrings via non-standard
3023 mechanisms (like Pyro proxies) to still be inspected by ipython's
3026 mechanisms (like Pyro proxies) to still be inspected by ipython's
3024 ? system.
3027 ? system.
3025
3028
3026 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3029 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3027 automatic capture system. I tried quite hard to make it work
3030 automatic capture system. I tried quite hard to make it work
3028 reliably, and simply failed. I tried many combinations with the
3031 reliably, and simply failed. I tried many combinations with the
3029 subprocess module, but eventually nothing worked in all needed
3032 subprocess module, but eventually nothing worked in all needed
3030 cases (not blocking stdin for the child, duplicating stdout
3033 cases (not blocking stdin for the child, duplicating stdout
3031 without blocking, etc). The new %sc/%sx still do capture to these
3034 without blocking, etc). The new %sc/%sx still do capture to these
3032 magical list/string objects which make shell use much more
3035 magical list/string objects which make shell use much more
3033 conveninent, so not all is lost.
3036 conveninent, so not all is lost.
3034
3037
3035 XXX - FIX MANUAL for the change above!
3038 XXX - FIX MANUAL for the change above!
3036
3039
3037 (runsource): I copied code.py's runsource() into ipython to modify
3040 (runsource): I copied code.py's runsource() into ipython to modify
3038 it a bit. Now the code object and source to be executed are
3041 it a bit. Now the code object and source to be executed are
3039 stored in ipython. This makes this info accessible to third-party
3042 stored in ipython. This makes this info accessible to third-party
3040 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3043 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3041 Mantegazza <mantegazza-AT-ill.fr>.
3044 Mantegazza <mantegazza-AT-ill.fr>.
3042
3045
3043 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3046 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3044 history-search via readline (like C-p/C-n). I'd wanted this for a
3047 history-search via readline (like C-p/C-n). I'd wanted this for a
3045 long time, but only recently found out how to do it. For users
3048 long time, but only recently found out how to do it. For users
3046 who already have their ipythonrc files made and want this, just
3049 who already have their ipythonrc files made and want this, just
3047 add:
3050 add:
3048
3051
3049 readline_parse_and_bind "\e[A": history-search-backward
3052 readline_parse_and_bind "\e[A": history-search-backward
3050 readline_parse_and_bind "\e[B": history-search-forward
3053 readline_parse_and_bind "\e[B": history-search-forward
3051
3054
3052 2005-03-18 Fernando Perez <fperez@colorado.edu>
3055 2005-03-18 Fernando Perez <fperez@colorado.edu>
3053
3056
3054 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3057 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3055 LSString and SList classes which allow transparent conversions
3058 LSString and SList classes which allow transparent conversions
3056 between list mode and whitespace-separated string.
3059 between list mode and whitespace-separated string.
3057 (magic_r): Fix recursion problem in %r.
3060 (magic_r): Fix recursion problem in %r.
3058
3061
3059 * IPython/genutils.py (LSString): New class to be used for
3062 * IPython/genutils.py (LSString): New class to be used for
3060 automatic storage of the results of all alias/system calls in _o
3063 automatic storage of the results of all alias/system calls in _o
3061 and _e (stdout/err). These provide a .l/.list attribute which
3064 and _e (stdout/err). These provide a .l/.list attribute which
3062 does automatic splitting on newlines. This means that for most
3065 does automatic splitting on newlines. This means that for most
3063 uses, you'll never need to do capturing of output with %sc/%sx
3066 uses, you'll never need to do capturing of output with %sc/%sx
3064 anymore, since ipython keeps this always done for you. Note that
3067 anymore, since ipython keeps this always done for you. Note that
3065 only the LAST results are stored, the _o/e variables are
3068 only the LAST results are stored, the _o/e variables are
3066 overwritten on each call. If you need to save their contents
3069 overwritten on each call. If you need to save their contents
3067 further, simply bind them to any other name.
3070 further, simply bind them to any other name.
3068
3071
3069 2005-03-17 Fernando Perez <fperez@colorado.edu>
3072 2005-03-17 Fernando Perez <fperez@colorado.edu>
3070
3073
3071 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3074 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3072 prompt namespace handling.
3075 prompt namespace handling.
3073
3076
3074 2005-03-16 Fernando Perez <fperez@colorado.edu>
3077 2005-03-16 Fernando Perez <fperez@colorado.edu>
3075
3078
3076 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3079 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3077 classic prompts to be '>>> ' (final space was missing, and it
3080 classic prompts to be '>>> ' (final space was missing, and it
3078 trips the emacs python mode).
3081 trips the emacs python mode).
3079 (BasePrompt.__str__): Added safe support for dynamic prompt
3082 (BasePrompt.__str__): Added safe support for dynamic prompt
3080 strings. Now you can set your prompt string to be '$x', and the
3083 strings. Now you can set your prompt string to be '$x', and the
3081 value of x will be printed from your interactive namespace. The
3084 value of x will be printed from your interactive namespace. The
3082 interpolation syntax includes the full Itpl support, so
3085 interpolation syntax includes the full Itpl support, so
3083 ${foo()+x+bar()} is a valid prompt string now, and the function
3086 ${foo()+x+bar()} is a valid prompt string now, and the function
3084 calls will be made at runtime.
3087 calls will be made at runtime.
3085
3088
3086 2005-03-15 Fernando Perez <fperez@colorado.edu>
3089 2005-03-15 Fernando Perez <fperez@colorado.edu>
3087
3090
3088 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3091 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3089 avoid name clashes in pylab. %hist still works, it just forwards
3092 avoid name clashes in pylab. %hist still works, it just forwards
3090 the call to %history.
3093 the call to %history.
3091
3094
3092 2005-03-02 *** Released version 0.6.12
3095 2005-03-02 *** Released version 0.6.12
3093
3096
3094 2005-03-02 Fernando Perez <fperez@colorado.edu>
3097 2005-03-02 Fernando Perez <fperez@colorado.edu>
3095
3098
3096 * IPython/iplib.py (handle_magic): log magic calls properly as
3099 * IPython/iplib.py (handle_magic): log magic calls properly as
3097 ipmagic() function calls.
3100 ipmagic() function calls.
3098
3101
3099 * IPython/Magic.py (magic_time): Improved %time to support
3102 * IPython/Magic.py (magic_time): Improved %time to support
3100 statements and provide wall-clock as well as CPU time.
3103 statements and provide wall-clock as well as CPU time.
3101
3104
3102 2005-02-27 Fernando Perez <fperez@colorado.edu>
3105 2005-02-27 Fernando Perez <fperez@colorado.edu>
3103
3106
3104 * IPython/hooks.py: New hooks module, to expose user-modifiable
3107 * IPython/hooks.py: New hooks module, to expose user-modifiable
3105 IPython functionality in a clean manner. For now only the editor
3108 IPython functionality in a clean manner. For now only the editor
3106 hook is actually written, and other thigns which I intend to turn
3109 hook is actually written, and other thigns which I intend to turn
3107 into proper hooks aren't yet there. The display and prefilter
3110 into proper hooks aren't yet there. The display and prefilter
3108 stuff, for example, should be hooks. But at least now the
3111 stuff, for example, should be hooks. But at least now the
3109 framework is in place, and the rest can be moved here with more
3112 framework is in place, and the rest can be moved here with more
3110 time later. IPython had had a .hooks variable for a long time for
3113 time later. IPython had had a .hooks variable for a long time for
3111 this purpose, but I'd never actually used it for anything.
3114 this purpose, but I'd never actually used it for anything.
3112
3115
3113 2005-02-26 Fernando Perez <fperez@colorado.edu>
3116 2005-02-26 Fernando Perez <fperez@colorado.edu>
3114
3117
3115 * IPython/ipmaker.py (make_IPython): make the default ipython
3118 * IPython/ipmaker.py (make_IPython): make the default ipython
3116 directory be called _ipython under win32, to follow more the
3119 directory be called _ipython under win32, to follow more the
3117 naming peculiarities of that platform (where buggy software like
3120 naming peculiarities of that platform (where buggy software like
3118 Visual Sourcesafe breaks with .named directories). Reported by
3121 Visual Sourcesafe breaks with .named directories). Reported by
3119 Ville Vainio.
3122 Ville Vainio.
3120
3123
3121 2005-02-23 Fernando Perez <fperez@colorado.edu>
3124 2005-02-23 Fernando Perez <fperez@colorado.edu>
3122
3125
3123 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3126 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3124 auto_aliases for win32 which were causing problems. Users can
3127 auto_aliases for win32 which were causing problems. Users can
3125 define the ones they personally like.
3128 define the ones they personally like.
3126
3129
3127 2005-02-21 Fernando Perez <fperez@colorado.edu>
3130 2005-02-21 Fernando Perez <fperez@colorado.edu>
3128
3131
3129 * IPython/Magic.py (magic_time): new magic to time execution of
3132 * IPython/Magic.py (magic_time): new magic to time execution of
3130 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3133 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3131
3134
3132 2005-02-19 Fernando Perez <fperez@colorado.edu>
3135 2005-02-19 Fernando Perez <fperez@colorado.edu>
3133
3136
3134 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3137 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3135 into keys (for prompts, for example).
3138 into keys (for prompts, for example).
3136
3139
3137 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3140 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3138 prompts in case users want them. This introduces a small behavior
3141 prompts in case users want them. This introduces a small behavior
3139 change: ipython does not automatically add a space to all prompts
3142 change: ipython does not automatically add a space to all prompts
3140 anymore. To get the old prompts with a space, users should add it
3143 anymore. To get the old prompts with a space, users should add it
3141 manually to their ipythonrc file, so for example prompt_in1 should
3144 manually to their ipythonrc file, so for example prompt_in1 should
3142 now read 'In [\#]: ' instead of 'In [\#]:'.
3145 now read 'In [\#]: ' instead of 'In [\#]:'.
3143 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3146 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3144 file) to control left-padding of secondary prompts.
3147 file) to control left-padding of secondary prompts.
3145
3148
3146 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3149 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3147 the profiler can't be imported. Fix for Debian, which removed
3150 the profiler can't be imported. Fix for Debian, which removed
3148 profile.py because of License issues. I applied a slightly
3151 profile.py because of License issues. I applied a slightly
3149 modified version of the original Debian patch at
3152 modified version of the original Debian patch at
3150 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3153 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3151
3154
3152 2005-02-17 Fernando Perez <fperez@colorado.edu>
3155 2005-02-17 Fernando Perez <fperez@colorado.edu>
3153
3156
3154 * IPython/genutils.py (native_line_ends): Fix bug which would
3157 * IPython/genutils.py (native_line_ends): Fix bug which would
3155 cause improper line-ends under win32 b/c I was not opening files
3158 cause improper line-ends under win32 b/c I was not opening files
3156 in binary mode. Bug report and fix thanks to Ville.
3159 in binary mode. Bug report and fix thanks to Ville.
3157
3160
3158 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3161 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3159 trying to catch spurious foo[1] autocalls. My fix actually broke
3162 trying to catch spurious foo[1] autocalls. My fix actually broke
3160 ',/' autoquote/call with explicit escape (bad regexp).
3163 ',/' autoquote/call with explicit escape (bad regexp).
3161
3164
3162 2005-02-15 *** Released version 0.6.11
3165 2005-02-15 *** Released version 0.6.11
3163
3166
3164 2005-02-14 Fernando Perez <fperez@colorado.edu>
3167 2005-02-14 Fernando Perez <fperez@colorado.edu>
3165
3168
3166 * IPython/background_jobs.py: New background job management
3169 * IPython/background_jobs.py: New background job management
3167 subsystem. This is implemented via a new set of classes, and
3170 subsystem. This is implemented via a new set of classes, and
3168 IPython now provides a builtin 'jobs' object for background job
3171 IPython now provides a builtin 'jobs' object for background job
3169 execution. A convenience %bg magic serves as a lightweight
3172 execution. A convenience %bg magic serves as a lightweight
3170 frontend for starting the more common type of calls. This was
3173 frontend for starting the more common type of calls. This was
3171 inspired by discussions with B. Granger and the BackgroundCommand
3174 inspired by discussions with B. Granger and the BackgroundCommand
3172 class described in the book Python Scripting for Computational
3175 class described in the book Python Scripting for Computational
3173 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3176 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3174 (although ultimately no code from this text was used, as IPython's
3177 (although ultimately no code from this text was used, as IPython's
3175 system is a separate implementation).
3178 system is a separate implementation).
3176
3179
3177 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3180 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3178 to control the completion of single/double underscore names
3181 to control the completion of single/double underscore names
3179 separately. As documented in the example ipytonrc file, the
3182 separately. As documented in the example ipytonrc file, the
3180 readline_omit__names variable can now be set to 2, to omit even
3183 readline_omit__names variable can now be set to 2, to omit even
3181 single underscore names. Thanks to a patch by Brian Wong
3184 single underscore names. Thanks to a patch by Brian Wong
3182 <BrianWong-AT-AirgoNetworks.Com>.
3185 <BrianWong-AT-AirgoNetworks.Com>.
3183 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3186 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3184 be autocalled as foo([1]) if foo were callable. A problem for
3187 be autocalled as foo([1]) if foo were callable. A problem for
3185 things which are both callable and implement __getitem__.
3188 things which are both callable and implement __getitem__.
3186 (init_readline): Fix autoindentation for win32. Thanks to a patch
3189 (init_readline): Fix autoindentation for win32. Thanks to a patch
3187 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3190 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3188
3191
3189 2005-02-12 Fernando Perez <fperez@colorado.edu>
3192 2005-02-12 Fernando Perez <fperez@colorado.edu>
3190
3193
3191 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3194 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3192 which I had written long ago to sort out user error messages which
3195 which I had written long ago to sort out user error messages which
3193 may occur during startup. This seemed like a good idea initially,
3196 may occur during startup. This seemed like a good idea initially,
3194 but it has proven a disaster in retrospect. I don't want to
3197 but it has proven a disaster in retrospect. I don't want to
3195 change much code for now, so my fix is to set the internal 'debug'
3198 change much code for now, so my fix is to set the internal 'debug'
3196 flag to true everywhere, whose only job was precisely to control
3199 flag to true everywhere, whose only job was precisely to control
3197 this subsystem. This closes issue 28 (as well as avoiding all
3200 this subsystem. This closes issue 28 (as well as avoiding all
3198 sorts of strange hangups which occur from time to time).
3201 sorts of strange hangups which occur from time to time).
3199
3202
3200 2005-02-07 Fernando Perez <fperez@colorado.edu>
3203 2005-02-07 Fernando Perez <fperez@colorado.edu>
3201
3204
3202 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3205 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3203 previous call produced a syntax error.
3206 previous call produced a syntax error.
3204
3207
3205 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3208 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3206 classes without constructor.
3209 classes without constructor.
3207
3210
3208 2005-02-06 Fernando Perez <fperez@colorado.edu>
3211 2005-02-06 Fernando Perez <fperez@colorado.edu>
3209
3212
3210 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3213 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3211 completions with the results of each matcher, so we return results
3214 completions with the results of each matcher, so we return results
3212 to the user from all namespaces. This breaks with ipython
3215 to the user from all namespaces. This breaks with ipython
3213 tradition, but I think it's a nicer behavior. Now you get all
3216 tradition, but I think it's a nicer behavior. Now you get all
3214 possible completions listed, from all possible namespaces (python,
3217 possible completions listed, from all possible namespaces (python,
3215 filesystem, magics...) After a request by John Hunter
3218 filesystem, magics...) After a request by John Hunter
3216 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3219 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3217
3220
3218 2005-02-05 Fernando Perez <fperez@colorado.edu>
3221 2005-02-05 Fernando Perez <fperez@colorado.edu>
3219
3222
3220 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3223 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3221 the call had quote characters in it (the quotes were stripped).
3224 the call had quote characters in it (the quotes were stripped).
3222
3225
3223 2005-01-31 Fernando Perez <fperez@colorado.edu>
3226 2005-01-31 Fernando Perez <fperez@colorado.edu>
3224
3227
3225 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3228 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3226 Itpl.itpl() to make the code more robust against psyco
3229 Itpl.itpl() to make the code more robust against psyco
3227 optimizations.
3230 optimizations.
3228
3231
3229 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3232 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3230 of causing an exception. Quicker, cleaner.
3233 of causing an exception. Quicker, cleaner.
3231
3234
3232 2005-01-28 Fernando Perez <fperez@colorado.edu>
3235 2005-01-28 Fernando Perez <fperez@colorado.edu>
3233
3236
3234 * scripts/ipython_win_post_install.py (install): hardcode
3237 * scripts/ipython_win_post_install.py (install): hardcode
3235 sys.prefix+'python.exe' as the executable path. It turns out that
3238 sys.prefix+'python.exe' as the executable path. It turns out that
3236 during the post-installation run, sys.executable resolves to the
3239 during the post-installation run, sys.executable resolves to the
3237 name of the binary installer! I should report this as a distutils
3240 name of the binary installer! I should report this as a distutils
3238 bug, I think. I updated the .10 release with this tiny fix, to
3241 bug, I think. I updated the .10 release with this tiny fix, to
3239 avoid annoying the lists further.
3242 avoid annoying the lists further.
3240
3243
3241 2005-01-27 *** Released version 0.6.10
3244 2005-01-27 *** Released version 0.6.10
3242
3245
3243 2005-01-27 Fernando Perez <fperez@colorado.edu>
3246 2005-01-27 Fernando Perez <fperez@colorado.edu>
3244
3247
3245 * IPython/numutils.py (norm): Added 'inf' as optional name for
3248 * IPython/numutils.py (norm): Added 'inf' as optional name for
3246 L-infinity norm, included references to mathworld.com for vector
3249 L-infinity norm, included references to mathworld.com for vector
3247 norm definitions.
3250 norm definitions.
3248 (amin/amax): added amin/amax for array min/max. Similar to what
3251 (amin/amax): added amin/amax for array min/max. Similar to what
3249 pylab ships with after the recent reorganization of names.
3252 pylab ships with after the recent reorganization of names.
3250 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3253 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3251
3254
3252 * ipython.el: committed Alex's recent fixes and improvements.
3255 * ipython.el: committed Alex's recent fixes and improvements.
3253 Tested with python-mode from CVS, and it looks excellent. Since
3256 Tested with python-mode from CVS, and it looks excellent. Since
3254 python-mode hasn't released anything in a while, I'm temporarily
3257 python-mode hasn't released anything in a while, I'm temporarily
3255 putting a copy of today's CVS (v 4.70) of python-mode in:
3258 putting a copy of today's CVS (v 4.70) of python-mode in:
3256 http://ipython.scipy.org/tmp/python-mode.el
3259 http://ipython.scipy.org/tmp/python-mode.el
3257
3260
3258 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3261 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3259 sys.executable for the executable name, instead of assuming it's
3262 sys.executable for the executable name, instead of assuming it's
3260 called 'python.exe' (the post-installer would have produced broken
3263 called 'python.exe' (the post-installer would have produced broken
3261 setups on systems with a differently named python binary).
3264 setups on systems with a differently named python binary).
3262
3265
3263 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3266 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3264 references to os.linesep, to make the code more
3267 references to os.linesep, to make the code more
3265 platform-independent. This is also part of the win32 coloring
3268 platform-independent. This is also part of the win32 coloring
3266 fixes.
3269 fixes.
3267
3270
3268 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3271 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3269 lines, which actually cause coloring bugs because the length of
3272 lines, which actually cause coloring bugs because the length of
3270 the line is very difficult to correctly compute with embedded
3273 the line is very difficult to correctly compute with embedded
3271 escapes. This was the source of all the coloring problems under
3274 escapes. This was the source of all the coloring problems under
3272 Win32. I think that _finally_, Win32 users have a properly
3275 Win32. I think that _finally_, Win32 users have a properly
3273 working ipython in all respects. This would never have happened
3276 working ipython in all respects. This would never have happened
3274 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3277 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3275
3278
3276 2005-01-26 *** Released version 0.6.9
3279 2005-01-26 *** Released version 0.6.9
3277
3280
3278 2005-01-25 Fernando Perez <fperez@colorado.edu>
3281 2005-01-25 Fernando Perez <fperez@colorado.edu>
3279
3282
3280 * setup.py: finally, we have a true Windows installer, thanks to
3283 * setup.py: finally, we have a true Windows installer, thanks to
3281 the excellent work of Viktor Ransmayr
3284 the excellent work of Viktor Ransmayr
3282 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3285 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3283 Windows users. The setup routine is quite a bit cleaner thanks to
3286 Windows users. The setup routine is quite a bit cleaner thanks to
3284 this, and the post-install script uses the proper functions to
3287 this, and the post-install script uses the proper functions to
3285 allow a clean de-installation using the standard Windows Control
3288 allow a clean de-installation using the standard Windows Control
3286 Panel.
3289 Panel.
3287
3290
3288 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3291 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3289 environment variable under all OSes (including win32) if
3292 environment variable under all OSes (including win32) if
3290 available. This will give consistency to win32 users who have set
3293 available. This will give consistency to win32 users who have set
3291 this variable for any reason. If os.environ['HOME'] fails, the
3294 this variable for any reason. If os.environ['HOME'] fails, the
3292 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3295 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3293
3296
3294 2005-01-24 Fernando Perez <fperez@colorado.edu>
3297 2005-01-24 Fernando Perez <fperez@colorado.edu>
3295
3298
3296 * IPython/numutils.py (empty_like): add empty_like(), similar to
3299 * IPython/numutils.py (empty_like): add empty_like(), similar to
3297 zeros_like() but taking advantage of the new empty() Numeric routine.
3300 zeros_like() but taking advantage of the new empty() Numeric routine.
3298
3301
3299 2005-01-23 *** Released version 0.6.8
3302 2005-01-23 *** Released version 0.6.8
3300
3303
3301 2005-01-22 Fernando Perez <fperez@colorado.edu>
3304 2005-01-22 Fernando Perez <fperez@colorado.edu>
3302
3305
3303 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3306 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3304 automatic show() calls. After discussing things with JDH, it
3307 automatic show() calls. After discussing things with JDH, it
3305 turns out there are too many corner cases where this can go wrong.
3308 turns out there are too many corner cases where this can go wrong.
3306 It's best not to try to be 'too smart', and simply have ipython
3309 It's best not to try to be 'too smart', and simply have ipython
3307 reproduce as much as possible the default behavior of a normal
3310 reproduce as much as possible the default behavior of a normal
3308 python shell.
3311 python shell.
3309
3312
3310 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3313 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3311 line-splitting regexp and _prefilter() to avoid calling getattr()
3314 line-splitting regexp and _prefilter() to avoid calling getattr()
3312 on assignments. This closes
3315 on assignments. This closes
3313 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3316 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3314 readline uses getattr(), so a simple <TAB> keypress is still
3317 readline uses getattr(), so a simple <TAB> keypress is still
3315 enough to trigger getattr() calls on an object.
3318 enough to trigger getattr() calls on an object.
3316
3319
3317 2005-01-21 Fernando Perez <fperez@colorado.edu>
3320 2005-01-21 Fernando Perez <fperez@colorado.edu>
3318
3321
3319 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3322 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3320 docstring under pylab so it doesn't mask the original.
3323 docstring under pylab so it doesn't mask the original.
3321
3324
3322 2005-01-21 *** Released version 0.6.7
3325 2005-01-21 *** Released version 0.6.7
3323
3326
3324 2005-01-21 Fernando Perez <fperez@colorado.edu>
3327 2005-01-21 Fernando Perez <fperez@colorado.edu>
3325
3328
3326 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3329 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3327 signal handling for win32 users in multithreaded mode.
3330 signal handling for win32 users in multithreaded mode.
3328
3331
3329 2005-01-17 Fernando Perez <fperez@colorado.edu>
3332 2005-01-17 Fernando Perez <fperez@colorado.edu>
3330
3333
3331 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3334 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3332 instances with no __init__. After a crash report by Norbert Nemec
3335 instances with no __init__. After a crash report by Norbert Nemec
3333 <Norbert-AT-nemec-online.de>.
3336 <Norbert-AT-nemec-online.de>.
3334
3337
3335 2005-01-14 Fernando Perez <fperez@colorado.edu>
3338 2005-01-14 Fernando Perez <fperez@colorado.edu>
3336
3339
3337 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3340 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3338 names for verbose exceptions, when multiple dotted names and the
3341 names for verbose exceptions, when multiple dotted names and the
3339 'parent' object were present on the same line.
3342 'parent' object were present on the same line.
3340
3343
3341 2005-01-11 Fernando Perez <fperez@colorado.edu>
3344 2005-01-11 Fernando Perez <fperez@colorado.edu>
3342
3345
3343 * IPython/genutils.py (flag_calls): new utility to trap and flag
3346 * IPython/genutils.py (flag_calls): new utility to trap and flag
3344 calls in functions. I need it to clean up matplotlib support.
3347 calls in functions. I need it to clean up matplotlib support.
3345 Also removed some deprecated code in genutils.
3348 Also removed some deprecated code in genutils.
3346
3349
3347 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3350 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3348 that matplotlib scripts called with %run, which don't call show()
3351 that matplotlib scripts called with %run, which don't call show()
3349 themselves, still have their plotting windows open.
3352 themselves, still have their plotting windows open.
3350
3353
3351 2005-01-05 Fernando Perez <fperez@colorado.edu>
3354 2005-01-05 Fernando Perez <fperez@colorado.edu>
3352
3355
3353 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3356 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3354 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3357 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3355
3358
3356 2004-12-19 Fernando Perez <fperez@colorado.edu>
3359 2004-12-19 Fernando Perez <fperez@colorado.edu>
3357
3360
3358 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3361 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3359 parent_runcode, which was an eyesore. The same result can be
3362 parent_runcode, which was an eyesore. The same result can be
3360 obtained with Python's regular superclass mechanisms.
3363 obtained with Python's regular superclass mechanisms.
3361
3364
3362 2004-12-17 Fernando Perez <fperez@colorado.edu>
3365 2004-12-17 Fernando Perez <fperez@colorado.edu>
3363
3366
3364 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3367 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3365 reported by Prabhu.
3368 reported by Prabhu.
3366 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3369 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3367 sys.stderr) instead of explicitly calling sys.stderr. This helps
3370 sys.stderr) instead of explicitly calling sys.stderr. This helps
3368 maintain our I/O abstractions clean, for future GUI embeddings.
3371 maintain our I/O abstractions clean, for future GUI embeddings.
3369
3372
3370 * IPython/genutils.py (info): added new utility for sys.stderr
3373 * IPython/genutils.py (info): added new utility for sys.stderr
3371 unified info message handling (thin wrapper around warn()).
3374 unified info message handling (thin wrapper around warn()).
3372
3375
3373 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3376 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3374 composite (dotted) names on verbose exceptions.
3377 composite (dotted) names on verbose exceptions.
3375 (VerboseTB.nullrepr): harden against another kind of errors which
3378 (VerboseTB.nullrepr): harden against another kind of errors which
3376 Python's inspect module can trigger, and which were crashing
3379 Python's inspect module can trigger, and which were crashing
3377 IPython. Thanks to a report by Marco Lombardi
3380 IPython. Thanks to a report by Marco Lombardi
3378 <mlombard-AT-ma010192.hq.eso.org>.
3381 <mlombard-AT-ma010192.hq.eso.org>.
3379
3382
3380 2004-12-13 *** Released version 0.6.6
3383 2004-12-13 *** Released version 0.6.6
3381
3384
3382 2004-12-12 Fernando Perez <fperez@colorado.edu>
3385 2004-12-12 Fernando Perez <fperez@colorado.edu>
3383
3386
3384 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3387 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3385 generated by pygtk upon initialization if it was built without
3388 generated by pygtk upon initialization if it was built without
3386 threads (for matplotlib users). After a crash reported by
3389 threads (for matplotlib users). After a crash reported by
3387 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3390 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3388
3391
3389 * IPython/ipmaker.py (make_IPython): fix small bug in the
3392 * IPython/ipmaker.py (make_IPython): fix small bug in the
3390 import_some parameter for multiple imports.
3393 import_some parameter for multiple imports.
3391
3394
3392 * IPython/iplib.py (ipmagic): simplified the interface of
3395 * IPython/iplib.py (ipmagic): simplified the interface of
3393 ipmagic() to take a single string argument, just as it would be
3396 ipmagic() to take a single string argument, just as it would be
3394 typed at the IPython cmd line.
3397 typed at the IPython cmd line.
3395 (ipalias): Added new ipalias() with an interface identical to
3398 (ipalias): Added new ipalias() with an interface identical to
3396 ipmagic(). This completes exposing a pure python interface to the
3399 ipmagic(). This completes exposing a pure python interface to the
3397 alias and magic system, which can be used in loops or more complex
3400 alias and magic system, which can be used in loops or more complex
3398 code where IPython's automatic line mangling is not active.
3401 code where IPython's automatic line mangling is not active.
3399
3402
3400 * IPython/genutils.py (timing): changed interface of timing to
3403 * IPython/genutils.py (timing): changed interface of timing to
3401 simply run code once, which is the most common case. timings()
3404 simply run code once, which is the most common case. timings()
3402 remains unchanged, for the cases where you want multiple runs.
3405 remains unchanged, for the cases where you want multiple runs.
3403
3406
3404 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3407 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3405 bug where Python2.2 crashes with exec'ing code which does not end
3408 bug where Python2.2 crashes with exec'ing code which does not end
3406 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3409 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3407 before.
3410 before.
3408
3411
3409 2004-12-10 Fernando Perez <fperez@colorado.edu>
3412 2004-12-10 Fernando Perez <fperez@colorado.edu>
3410
3413
3411 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3414 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3412 -t to -T, to accomodate the new -t flag in %run (the %run and
3415 -t to -T, to accomodate the new -t flag in %run (the %run and
3413 %prun options are kind of intermixed, and it's not easy to change
3416 %prun options are kind of intermixed, and it's not easy to change
3414 this with the limitations of python's getopt).
3417 this with the limitations of python's getopt).
3415
3418
3416 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3419 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3417 the execution of scripts. It's not as fine-tuned as timeit.py,
3420 the execution of scripts. It's not as fine-tuned as timeit.py,
3418 but it works from inside ipython (and under 2.2, which lacks
3421 but it works from inside ipython (and under 2.2, which lacks
3419 timeit.py). Optionally a number of runs > 1 can be given for
3422 timeit.py). Optionally a number of runs > 1 can be given for
3420 timing very short-running code.
3423 timing very short-running code.
3421
3424
3422 * IPython/genutils.py (uniq_stable): new routine which returns a
3425 * IPython/genutils.py (uniq_stable): new routine which returns a
3423 list of unique elements in any iterable, but in stable order of
3426 list of unique elements in any iterable, but in stable order of
3424 appearance. I needed this for the ultraTB fixes, and it's a handy
3427 appearance. I needed this for the ultraTB fixes, and it's a handy
3425 utility.
3428 utility.
3426
3429
3427 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3430 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3428 dotted names in Verbose exceptions. This had been broken since
3431 dotted names in Verbose exceptions. This had been broken since
3429 the very start, now x.y will properly be printed in a Verbose
3432 the very start, now x.y will properly be printed in a Verbose
3430 traceback, instead of x being shown and y appearing always as an
3433 traceback, instead of x being shown and y appearing always as an
3431 'undefined global'. Getting this to work was a bit tricky,
3434 'undefined global'. Getting this to work was a bit tricky,
3432 because by default python tokenizers are stateless. Saved by
3435 because by default python tokenizers are stateless. Saved by
3433 python's ability to easily add a bit of state to an arbitrary
3436 python's ability to easily add a bit of state to an arbitrary
3434 function (without needing to build a full-blown callable object).
3437 function (without needing to build a full-blown callable object).
3435
3438
3436 Also big cleanup of this code, which had horrendous runtime
3439 Also big cleanup of this code, which had horrendous runtime
3437 lookups of zillions of attributes for colorization. Moved all
3440 lookups of zillions of attributes for colorization. Moved all
3438 this code into a few templates, which make it cleaner and quicker.
3441 this code into a few templates, which make it cleaner and quicker.
3439
3442
3440 Printout quality was also improved for Verbose exceptions: one
3443 Printout quality was also improved for Verbose exceptions: one
3441 variable per line, and memory addresses are printed (this can be
3444 variable per line, and memory addresses are printed (this can be
3442 quite handy in nasty debugging situations, which is what Verbose
3445 quite handy in nasty debugging situations, which is what Verbose
3443 is for).
3446 is for).
3444
3447
3445 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3448 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3446 the command line as scripts to be loaded by embedded instances.
3449 the command line as scripts to be loaded by embedded instances.
3447 Doing so has the potential for an infinite recursion if there are
3450 Doing so has the potential for an infinite recursion if there are
3448 exceptions thrown in the process. This fixes a strange crash
3451 exceptions thrown in the process. This fixes a strange crash
3449 reported by Philippe MULLER <muller-AT-irit.fr>.
3452 reported by Philippe MULLER <muller-AT-irit.fr>.
3450
3453
3451 2004-12-09 Fernando Perez <fperez@colorado.edu>
3454 2004-12-09 Fernando Perez <fperez@colorado.edu>
3452
3455
3453 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3456 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3454 to reflect new names in matplotlib, which now expose the
3457 to reflect new names in matplotlib, which now expose the
3455 matlab-compatible interface via a pylab module instead of the
3458 matlab-compatible interface via a pylab module instead of the
3456 'matlab' name. The new code is backwards compatible, so users of
3459 'matlab' name. The new code is backwards compatible, so users of
3457 all matplotlib versions are OK. Patch by J. Hunter.
3460 all matplotlib versions are OK. Patch by J. Hunter.
3458
3461
3459 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3462 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3460 of __init__ docstrings for instances (class docstrings are already
3463 of __init__ docstrings for instances (class docstrings are already
3461 automatically printed). Instances with customized docstrings
3464 automatically printed). Instances with customized docstrings
3462 (indep. of the class) are also recognized and all 3 separate
3465 (indep. of the class) are also recognized and all 3 separate
3463 docstrings are printed (instance, class, constructor). After some
3466 docstrings are printed (instance, class, constructor). After some
3464 comments/suggestions by J. Hunter.
3467 comments/suggestions by J. Hunter.
3465
3468
3466 2004-12-05 Fernando Perez <fperez@colorado.edu>
3469 2004-12-05 Fernando Perez <fperez@colorado.edu>
3467
3470
3468 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3471 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3469 warnings when tab-completion fails and triggers an exception.
3472 warnings when tab-completion fails and triggers an exception.
3470
3473
3471 2004-12-03 Fernando Perez <fperez@colorado.edu>
3474 2004-12-03 Fernando Perez <fperez@colorado.edu>
3472
3475
3473 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3476 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3474 be triggered when using 'run -p'. An incorrect option flag was
3477 be triggered when using 'run -p'. An incorrect option flag was
3475 being set ('d' instead of 'D').
3478 being set ('d' instead of 'D').
3476 (manpage): fix missing escaped \- sign.
3479 (manpage): fix missing escaped \- sign.
3477
3480
3478 2004-11-30 *** Released version 0.6.5
3481 2004-11-30 *** Released version 0.6.5
3479
3482
3480 2004-11-30 Fernando Perez <fperez@colorado.edu>
3483 2004-11-30 Fernando Perez <fperez@colorado.edu>
3481
3484
3482 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3485 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3483 setting with -d option.
3486 setting with -d option.
3484
3487
3485 * setup.py (docfiles): Fix problem where the doc glob I was using
3488 * setup.py (docfiles): Fix problem where the doc glob I was using
3486 was COMPLETELY BROKEN. It was giving the right files by pure
3489 was COMPLETELY BROKEN. It was giving the right files by pure
3487 accident, but failed once I tried to include ipython.el. Note:
3490 accident, but failed once I tried to include ipython.el. Note:
3488 glob() does NOT allow you to do exclusion on multiple endings!
3491 glob() does NOT allow you to do exclusion on multiple endings!
3489
3492
3490 2004-11-29 Fernando Perez <fperez@colorado.edu>
3493 2004-11-29 Fernando Perez <fperez@colorado.edu>
3491
3494
3492 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3495 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3493 the manpage as the source. Better formatting & consistency.
3496 the manpage as the source. Better formatting & consistency.
3494
3497
3495 * IPython/Magic.py (magic_run): Added new -d option, to run
3498 * IPython/Magic.py (magic_run): Added new -d option, to run
3496 scripts under the control of the python pdb debugger. Note that
3499 scripts under the control of the python pdb debugger. Note that
3497 this required changing the %prun option -d to -D, to avoid a clash
3500 this required changing the %prun option -d to -D, to avoid a clash
3498 (since %run must pass options to %prun, and getopt is too dumb to
3501 (since %run must pass options to %prun, and getopt is too dumb to
3499 handle options with string values with embedded spaces). Thanks
3502 handle options with string values with embedded spaces). Thanks
3500 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3503 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3501 (magic_who_ls): added type matching to %who and %whos, so that one
3504 (magic_who_ls): added type matching to %who and %whos, so that one
3502 can filter their output to only include variables of certain
3505 can filter their output to only include variables of certain
3503 types. Another suggestion by Matthew.
3506 types. Another suggestion by Matthew.
3504 (magic_whos): Added memory summaries in kb and Mb for arrays.
3507 (magic_whos): Added memory summaries in kb and Mb for arrays.
3505 (magic_who): Improve formatting (break lines every 9 vars).
3508 (magic_who): Improve formatting (break lines every 9 vars).
3506
3509
3507 2004-11-28 Fernando Perez <fperez@colorado.edu>
3510 2004-11-28 Fernando Perez <fperez@colorado.edu>
3508
3511
3509 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3512 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3510 cache when empty lines were present.
3513 cache when empty lines were present.
3511
3514
3512 2004-11-24 Fernando Perez <fperez@colorado.edu>
3515 2004-11-24 Fernando Perez <fperez@colorado.edu>
3513
3516
3514 * IPython/usage.py (__doc__): document the re-activated threading
3517 * IPython/usage.py (__doc__): document the re-activated threading
3515 options for WX and GTK.
3518 options for WX and GTK.
3516
3519
3517 2004-11-23 Fernando Perez <fperez@colorado.edu>
3520 2004-11-23 Fernando Perez <fperez@colorado.edu>
3518
3521
3519 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3522 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3520 the -wthread and -gthread options, along with a new -tk one to try
3523 the -wthread and -gthread options, along with a new -tk one to try
3521 and coordinate Tk threading with wx/gtk. The tk support is very
3524 and coordinate Tk threading with wx/gtk. The tk support is very
3522 platform dependent, since it seems to require Tcl and Tk to be
3525 platform dependent, since it seems to require Tcl and Tk to be
3523 built with threads (Fedora1/2 appears NOT to have it, but in
3526 built with threads (Fedora1/2 appears NOT to have it, but in
3524 Prabhu's Debian boxes it works OK). But even with some Tk
3527 Prabhu's Debian boxes it works OK). But even with some Tk
3525 limitations, this is a great improvement.
3528 limitations, this is a great improvement.
3526
3529
3527 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3530 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3528 info in user prompts. Patch by Prabhu.
3531 info in user prompts. Patch by Prabhu.
3529
3532
3530 2004-11-18 Fernando Perez <fperez@colorado.edu>
3533 2004-11-18 Fernando Perez <fperez@colorado.edu>
3531
3534
3532 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3535 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3533 EOFErrors and bail, to avoid infinite loops if a non-terminating
3536 EOFErrors and bail, to avoid infinite loops if a non-terminating
3534 file is fed into ipython. Patch submitted in issue 19 by user,
3537 file is fed into ipython. Patch submitted in issue 19 by user,
3535 many thanks.
3538 many thanks.
3536
3539
3537 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3540 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3538 autoquote/parens in continuation prompts, which can cause lots of
3541 autoquote/parens in continuation prompts, which can cause lots of
3539 problems. Closes roundup issue 20.
3542 problems. Closes roundup issue 20.
3540
3543
3541 2004-11-17 Fernando Perez <fperez@colorado.edu>
3544 2004-11-17 Fernando Perez <fperez@colorado.edu>
3542
3545
3543 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3546 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3544 reported as debian bug #280505. I'm not sure my local changelog
3547 reported as debian bug #280505. I'm not sure my local changelog
3545 entry has the proper debian format (Jack?).
3548 entry has the proper debian format (Jack?).
3546
3549
3547 2004-11-08 *** Released version 0.6.4
3550 2004-11-08 *** Released version 0.6.4
3548
3551
3549 2004-11-08 Fernando Perez <fperez@colorado.edu>
3552 2004-11-08 Fernando Perez <fperez@colorado.edu>
3550
3553
3551 * IPython/iplib.py (init_readline): Fix exit message for Windows
3554 * IPython/iplib.py (init_readline): Fix exit message for Windows
3552 when readline is active. Thanks to a report by Eric Jones
3555 when readline is active. Thanks to a report by Eric Jones
3553 <eric-AT-enthought.com>.
3556 <eric-AT-enthought.com>.
3554
3557
3555 2004-11-07 Fernando Perez <fperez@colorado.edu>
3558 2004-11-07 Fernando Perez <fperez@colorado.edu>
3556
3559
3557 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3560 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3558 sometimes seen by win2k/cygwin users.
3561 sometimes seen by win2k/cygwin users.
3559
3562
3560 2004-11-06 Fernando Perez <fperez@colorado.edu>
3563 2004-11-06 Fernando Perez <fperez@colorado.edu>
3561
3564
3562 * IPython/iplib.py (interact): Change the handling of %Exit from
3565 * IPython/iplib.py (interact): Change the handling of %Exit from
3563 trying to propagate a SystemExit to an internal ipython flag.
3566 trying to propagate a SystemExit to an internal ipython flag.
3564 This is less elegant than using Python's exception mechanism, but
3567 This is less elegant than using Python's exception mechanism, but
3565 I can't get that to work reliably with threads, so under -pylab
3568 I can't get that to work reliably with threads, so under -pylab
3566 %Exit was hanging IPython. Cross-thread exception handling is
3569 %Exit was hanging IPython. Cross-thread exception handling is
3567 really a bitch. Thaks to a bug report by Stephen Walton
3570 really a bitch. Thaks to a bug report by Stephen Walton
3568 <stephen.walton-AT-csun.edu>.
3571 <stephen.walton-AT-csun.edu>.
3569
3572
3570 2004-11-04 Fernando Perez <fperez@colorado.edu>
3573 2004-11-04 Fernando Perez <fperez@colorado.edu>
3571
3574
3572 * IPython/iplib.py (raw_input_original): store a pointer to the
3575 * IPython/iplib.py (raw_input_original): store a pointer to the
3573 true raw_input to harden against code which can modify it
3576 true raw_input to harden against code which can modify it
3574 (wx.py.PyShell does this and would otherwise crash ipython).
3577 (wx.py.PyShell does this and would otherwise crash ipython).
3575 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3578 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3576
3579
3577 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3580 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3578 Ctrl-C problem, which does not mess up the input line.
3581 Ctrl-C problem, which does not mess up the input line.
3579
3582
3580 2004-11-03 Fernando Perez <fperez@colorado.edu>
3583 2004-11-03 Fernando Perez <fperez@colorado.edu>
3581
3584
3582 * IPython/Release.py: Changed licensing to BSD, in all files.
3585 * IPython/Release.py: Changed licensing to BSD, in all files.
3583 (name): lowercase name for tarball/RPM release.
3586 (name): lowercase name for tarball/RPM release.
3584
3587
3585 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3588 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3586 use throughout ipython.
3589 use throughout ipython.
3587
3590
3588 * IPython/Magic.py (Magic._ofind): Switch to using the new
3591 * IPython/Magic.py (Magic._ofind): Switch to using the new
3589 OInspect.getdoc() function.
3592 OInspect.getdoc() function.
3590
3593
3591 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3594 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3592 of the line currently being canceled via Ctrl-C. It's extremely
3595 of the line currently being canceled via Ctrl-C. It's extremely
3593 ugly, but I don't know how to do it better (the problem is one of
3596 ugly, but I don't know how to do it better (the problem is one of
3594 handling cross-thread exceptions).
3597 handling cross-thread exceptions).
3595
3598
3596 2004-10-28 Fernando Perez <fperez@colorado.edu>
3599 2004-10-28 Fernando Perez <fperez@colorado.edu>
3597
3600
3598 * IPython/Shell.py (signal_handler): add signal handlers to trap
3601 * IPython/Shell.py (signal_handler): add signal handlers to trap
3599 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3602 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3600 report by Francesc Alted.
3603 report by Francesc Alted.
3601
3604
3602 2004-10-21 Fernando Perez <fperez@colorado.edu>
3605 2004-10-21 Fernando Perez <fperez@colorado.edu>
3603
3606
3604 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3607 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3605 to % for pysh syntax extensions.
3608 to % for pysh syntax extensions.
3606
3609
3607 2004-10-09 Fernando Perez <fperez@colorado.edu>
3610 2004-10-09 Fernando Perez <fperez@colorado.edu>
3608
3611
3609 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3612 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3610 arrays to print a more useful summary, without calling str(arr).
3613 arrays to print a more useful summary, without calling str(arr).
3611 This avoids the problem of extremely lengthy computations which
3614 This avoids the problem of extremely lengthy computations which
3612 occur if arr is large, and appear to the user as a system lockup
3615 occur if arr is large, and appear to the user as a system lockup
3613 with 100% cpu activity. After a suggestion by Kristian Sandberg
3616 with 100% cpu activity. After a suggestion by Kristian Sandberg
3614 <Kristian.Sandberg@colorado.edu>.
3617 <Kristian.Sandberg@colorado.edu>.
3615 (Magic.__init__): fix bug in global magic escapes not being
3618 (Magic.__init__): fix bug in global magic escapes not being
3616 correctly set.
3619 correctly set.
3617
3620
3618 2004-10-08 Fernando Perez <fperez@colorado.edu>
3621 2004-10-08 Fernando Perez <fperez@colorado.edu>
3619
3622
3620 * IPython/Magic.py (__license__): change to absolute imports of
3623 * IPython/Magic.py (__license__): change to absolute imports of
3621 ipython's own internal packages, to start adapting to the absolute
3624 ipython's own internal packages, to start adapting to the absolute
3622 import requirement of PEP-328.
3625 import requirement of PEP-328.
3623
3626
3624 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3627 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3625 files, and standardize author/license marks through the Release
3628 files, and standardize author/license marks through the Release
3626 module instead of having per/file stuff (except for files with
3629 module instead of having per/file stuff (except for files with
3627 particular licenses, like the MIT/PSF-licensed codes).
3630 particular licenses, like the MIT/PSF-licensed codes).
3628
3631
3629 * IPython/Debugger.py: remove dead code for python 2.1
3632 * IPython/Debugger.py: remove dead code for python 2.1
3630
3633
3631 2004-10-04 Fernando Perez <fperez@colorado.edu>
3634 2004-10-04 Fernando Perez <fperez@colorado.edu>
3632
3635
3633 * IPython/iplib.py (ipmagic): New function for accessing magics
3636 * IPython/iplib.py (ipmagic): New function for accessing magics
3634 via a normal python function call.
3637 via a normal python function call.
3635
3638
3636 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3639 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3637 from '@' to '%', to accomodate the new @decorator syntax of python
3640 from '@' to '%', to accomodate the new @decorator syntax of python
3638 2.4.
3641 2.4.
3639
3642
3640 2004-09-29 Fernando Perez <fperez@colorado.edu>
3643 2004-09-29 Fernando Perez <fperez@colorado.edu>
3641
3644
3642 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3645 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3643 matplotlib.use to prevent running scripts which try to switch
3646 matplotlib.use to prevent running scripts which try to switch
3644 interactive backends from within ipython. This will just crash
3647 interactive backends from within ipython. This will just crash
3645 the python interpreter, so we can't allow it (but a detailed error
3648 the python interpreter, so we can't allow it (but a detailed error
3646 is given to the user).
3649 is given to the user).
3647
3650
3648 2004-09-28 Fernando Perez <fperez@colorado.edu>
3651 2004-09-28 Fernando Perez <fperez@colorado.edu>
3649
3652
3650 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3653 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3651 matplotlib-related fixes so that using @run with non-matplotlib
3654 matplotlib-related fixes so that using @run with non-matplotlib
3652 scripts doesn't pop up spurious plot windows. This requires
3655 scripts doesn't pop up spurious plot windows. This requires
3653 matplotlib >= 0.63, where I had to make some changes as well.
3656 matplotlib >= 0.63, where I had to make some changes as well.
3654
3657
3655 * IPython/ipmaker.py (make_IPython): update version requirement to
3658 * IPython/ipmaker.py (make_IPython): update version requirement to
3656 python 2.2.
3659 python 2.2.
3657
3660
3658 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3661 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3659 banner arg for embedded customization.
3662 banner arg for embedded customization.
3660
3663
3661 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3664 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3662 explicit uses of __IP as the IPython's instance name. Now things
3665 explicit uses of __IP as the IPython's instance name. Now things
3663 are properly handled via the shell.name value. The actual code
3666 are properly handled via the shell.name value. The actual code
3664 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3667 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3665 is much better than before. I'll clean things completely when the
3668 is much better than before. I'll clean things completely when the
3666 magic stuff gets a real overhaul.
3669 magic stuff gets a real overhaul.
3667
3670
3668 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3671 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3669 minor changes to debian dir.
3672 minor changes to debian dir.
3670
3673
3671 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3674 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3672 pointer to the shell itself in the interactive namespace even when
3675 pointer to the shell itself in the interactive namespace even when
3673 a user-supplied dict is provided. This is needed for embedding
3676 a user-supplied dict is provided. This is needed for embedding
3674 purposes (found by tests with Michel Sanner).
3677 purposes (found by tests with Michel Sanner).
3675
3678
3676 2004-09-27 Fernando Perez <fperez@colorado.edu>
3679 2004-09-27 Fernando Perez <fperez@colorado.edu>
3677
3680
3678 * IPython/UserConfig/ipythonrc: remove []{} from
3681 * IPython/UserConfig/ipythonrc: remove []{} from
3679 readline_remove_delims, so that things like [modname.<TAB> do
3682 readline_remove_delims, so that things like [modname.<TAB> do
3680 proper completion. This disables [].TAB, but that's a less common
3683 proper completion. This disables [].TAB, but that's a less common
3681 case than module names in list comprehensions, for example.
3684 case than module names in list comprehensions, for example.
3682 Thanks to a report by Andrea Riciputi.
3685 Thanks to a report by Andrea Riciputi.
3683
3686
3684 2004-09-09 Fernando Perez <fperez@colorado.edu>
3687 2004-09-09 Fernando Perez <fperez@colorado.edu>
3685
3688
3686 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3689 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3687 blocking problems in win32 and osx. Fix by John.
3690 blocking problems in win32 and osx. Fix by John.
3688
3691
3689 2004-09-08 Fernando Perez <fperez@colorado.edu>
3692 2004-09-08 Fernando Perez <fperez@colorado.edu>
3690
3693
3691 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3694 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3692 for Win32 and OSX. Fix by John Hunter.
3695 for Win32 and OSX. Fix by John Hunter.
3693
3696
3694 2004-08-30 *** Released version 0.6.3
3697 2004-08-30 *** Released version 0.6.3
3695
3698
3696 2004-08-30 Fernando Perez <fperez@colorado.edu>
3699 2004-08-30 Fernando Perez <fperez@colorado.edu>
3697
3700
3698 * setup.py (isfile): Add manpages to list of dependent files to be
3701 * setup.py (isfile): Add manpages to list of dependent files to be
3699 updated.
3702 updated.
3700
3703
3701 2004-08-27 Fernando Perez <fperez@colorado.edu>
3704 2004-08-27 Fernando Perez <fperez@colorado.edu>
3702
3705
3703 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3706 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3704 for now. They don't really work with standalone WX/GTK code
3707 for now. They don't really work with standalone WX/GTK code
3705 (though matplotlib IS working fine with both of those backends).
3708 (though matplotlib IS working fine with both of those backends).
3706 This will neeed much more testing. I disabled most things with
3709 This will neeed much more testing. I disabled most things with
3707 comments, so turning it back on later should be pretty easy.
3710 comments, so turning it back on later should be pretty easy.
3708
3711
3709 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3712 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3710 autocalling of expressions like r'foo', by modifying the line
3713 autocalling of expressions like r'foo', by modifying the line
3711 split regexp. Closes
3714 split regexp. Closes
3712 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3715 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3713 Riley <ipythonbugs-AT-sabi.net>.
3716 Riley <ipythonbugs-AT-sabi.net>.
3714 (InteractiveShell.mainloop): honor --nobanner with banner
3717 (InteractiveShell.mainloop): honor --nobanner with banner
3715 extensions.
3718 extensions.
3716
3719
3717 * IPython/Shell.py: Significant refactoring of all classes, so
3720 * IPython/Shell.py: Significant refactoring of all classes, so
3718 that we can really support ALL matplotlib backends and threading
3721 that we can really support ALL matplotlib backends and threading
3719 models (John spotted a bug with Tk which required this). Now we
3722 models (John spotted a bug with Tk which required this). Now we
3720 should support single-threaded, WX-threads and GTK-threads, both
3723 should support single-threaded, WX-threads and GTK-threads, both
3721 for generic code and for matplotlib.
3724 for generic code and for matplotlib.
3722
3725
3723 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3726 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3724 -pylab, to simplify things for users. Will also remove the pylab
3727 -pylab, to simplify things for users. Will also remove the pylab
3725 profile, since now all of matplotlib configuration is directly
3728 profile, since now all of matplotlib configuration is directly
3726 handled here. This also reduces startup time.
3729 handled here. This also reduces startup time.
3727
3730
3728 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3731 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3729 shell wasn't being correctly called. Also in IPShellWX.
3732 shell wasn't being correctly called. Also in IPShellWX.
3730
3733
3731 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3734 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3732 fine-tune banner.
3735 fine-tune banner.
3733
3736
3734 * IPython/numutils.py (spike): Deprecate these spike functions,
3737 * IPython/numutils.py (spike): Deprecate these spike functions,
3735 delete (long deprecated) gnuplot_exec handler.
3738 delete (long deprecated) gnuplot_exec handler.
3736
3739
3737 2004-08-26 Fernando Perez <fperez@colorado.edu>
3740 2004-08-26 Fernando Perez <fperez@colorado.edu>
3738
3741
3739 * ipython.1: Update for threading options, plus some others which
3742 * ipython.1: Update for threading options, plus some others which
3740 were missing.
3743 were missing.
3741
3744
3742 * IPython/ipmaker.py (__call__): Added -wthread option for
3745 * IPython/ipmaker.py (__call__): Added -wthread option for
3743 wxpython thread handling. Make sure threading options are only
3746 wxpython thread handling. Make sure threading options are only
3744 valid at the command line.
3747 valid at the command line.
3745
3748
3746 * scripts/ipython: moved shell selection into a factory function
3749 * scripts/ipython: moved shell selection into a factory function
3747 in Shell.py, to keep the starter script to a minimum.
3750 in Shell.py, to keep the starter script to a minimum.
3748
3751
3749 2004-08-25 Fernando Perez <fperez@colorado.edu>
3752 2004-08-25 Fernando Perez <fperez@colorado.edu>
3750
3753
3751 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3754 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3752 John. Along with some recent changes he made to matplotlib, the
3755 John. Along with some recent changes he made to matplotlib, the
3753 next versions of both systems should work very well together.
3756 next versions of both systems should work very well together.
3754
3757
3755 2004-08-24 Fernando Perez <fperez@colorado.edu>
3758 2004-08-24 Fernando Perez <fperez@colorado.edu>
3756
3759
3757 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3760 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3758 tried to switch the profiling to using hotshot, but I'm getting
3761 tried to switch the profiling to using hotshot, but I'm getting
3759 strange errors from prof.runctx() there. I may be misreading the
3762 strange errors from prof.runctx() there. I may be misreading the
3760 docs, but it looks weird. For now the profiling code will
3763 docs, but it looks weird. For now the profiling code will
3761 continue to use the standard profiler.
3764 continue to use the standard profiler.
3762
3765
3763 2004-08-23 Fernando Perez <fperez@colorado.edu>
3766 2004-08-23 Fernando Perez <fperez@colorado.edu>
3764
3767
3765 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3768 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3766 threaded shell, by John Hunter. It's not quite ready yet, but
3769 threaded shell, by John Hunter. It's not quite ready yet, but
3767 close.
3770 close.
3768
3771
3769 2004-08-22 Fernando Perez <fperez@colorado.edu>
3772 2004-08-22 Fernando Perez <fperez@colorado.edu>
3770
3773
3771 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3774 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3772 in Magic and ultraTB.
3775 in Magic and ultraTB.
3773
3776
3774 * ipython.1: document threading options in manpage.
3777 * ipython.1: document threading options in manpage.
3775
3778
3776 * scripts/ipython: Changed name of -thread option to -gthread,
3779 * scripts/ipython: Changed name of -thread option to -gthread,
3777 since this is GTK specific. I want to leave the door open for a
3780 since this is GTK specific. I want to leave the door open for a
3778 -wthread option for WX, which will most likely be necessary. This
3781 -wthread option for WX, which will most likely be necessary. This
3779 change affects usage and ipmaker as well.
3782 change affects usage and ipmaker as well.
3780
3783
3781 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3784 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3782 handle the matplotlib shell issues. Code by John Hunter
3785 handle the matplotlib shell issues. Code by John Hunter
3783 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3786 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3784 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3787 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3785 broken (and disabled for end users) for now, but it puts the
3788 broken (and disabled for end users) for now, but it puts the
3786 infrastructure in place.
3789 infrastructure in place.
3787
3790
3788 2004-08-21 Fernando Perez <fperez@colorado.edu>
3791 2004-08-21 Fernando Perez <fperez@colorado.edu>
3789
3792
3790 * ipythonrc-pylab: Add matplotlib support.
3793 * ipythonrc-pylab: Add matplotlib support.
3791
3794
3792 * matplotlib_config.py: new files for matplotlib support, part of
3795 * matplotlib_config.py: new files for matplotlib support, part of
3793 the pylab profile.
3796 the pylab profile.
3794
3797
3795 * IPython/usage.py (__doc__): documented the threading options.
3798 * IPython/usage.py (__doc__): documented the threading options.
3796
3799
3797 2004-08-20 Fernando Perez <fperez@colorado.edu>
3800 2004-08-20 Fernando Perez <fperez@colorado.edu>
3798
3801
3799 * ipython: Modified the main calling routine to handle the -thread
3802 * ipython: Modified the main calling routine to handle the -thread
3800 and -mpthread options. This needs to be done as a top-level hack,
3803 and -mpthread options. This needs to be done as a top-level hack,
3801 because it determines which class to instantiate for IPython
3804 because it determines which class to instantiate for IPython
3802 itself.
3805 itself.
3803
3806
3804 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3807 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3805 classes to support multithreaded GTK operation without blocking,
3808 classes to support multithreaded GTK operation without blocking,
3806 and matplotlib with all backends. This is a lot of still very
3809 and matplotlib with all backends. This is a lot of still very
3807 experimental code, and threads are tricky. So it may still have a
3810 experimental code, and threads are tricky. So it may still have a
3808 few rough edges... This code owes a lot to
3811 few rough edges... This code owes a lot to
3809 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3812 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3810 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3813 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3811 to John Hunter for all the matplotlib work.
3814 to John Hunter for all the matplotlib work.
3812
3815
3813 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3816 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3814 options for gtk thread and matplotlib support.
3817 options for gtk thread and matplotlib support.
3815
3818
3816 2004-08-16 Fernando Perez <fperez@colorado.edu>
3819 2004-08-16 Fernando Perez <fperez@colorado.edu>
3817
3820
3818 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3821 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3819 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3822 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3820 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3823 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3821
3824
3822 2004-08-11 Fernando Perez <fperez@colorado.edu>
3825 2004-08-11 Fernando Perez <fperez@colorado.edu>
3823
3826
3824 * setup.py (isfile): Fix build so documentation gets updated for
3827 * setup.py (isfile): Fix build so documentation gets updated for
3825 rpms (it was only done for .tgz builds).
3828 rpms (it was only done for .tgz builds).
3826
3829
3827 2004-08-10 Fernando Perez <fperez@colorado.edu>
3830 2004-08-10 Fernando Perez <fperez@colorado.edu>
3828
3831
3829 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3832 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3830
3833
3831 * iplib.py : Silence syntax error exceptions in tab-completion.
3834 * iplib.py : Silence syntax error exceptions in tab-completion.
3832
3835
3833 2004-08-05 Fernando Perez <fperez@colorado.edu>
3836 2004-08-05 Fernando Perez <fperez@colorado.edu>
3834
3837
3835 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3838 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3836 'color off' mark for continuation prompts. This was causing long
3839 'color off' mark for continuation prompts. This was causing long
3837 continuation lines to mis-wrap.
3840 continuation lines to mis-wrap.
3838
3841
3839 2004-08-01 Fernando Perez <fperez@colorado.edu>
3842 2004-08-01 Fernando Perez <fperez@colorado.edu>
3840
3843
3841 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3844 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3842 for building ipython to be a parameter. All this is necessary
3845 for building ipython to be a parameter. All this is necessary
3843 right now to have a multithreaded version, but this insane
3846 right now to have a multithreaded version, but this insane
3844 non-design will be cleaned up soon. For now, it's a hack that
3847 non-design will be cleaned up soon. For now, it's a hack that
3845 works.
3848 works.
3846
3849
3847 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3850 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3848 args in various places. No bugs so far, but it's a dangerous
3851 args in various places. No bugs so far, but it's a dangerous
3849 practice.
3852 practice.
3850
3853
3851 2004-07-31 Fernando Perez <fperez@colorado.edu>
3854 2004-07-31 Fernando Perez <fperez@colorado.edu>
3852
3855
3853 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3856 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3854 fix completion of files with dots in their names under most
3857 fix completion of files with dots in their names under most
3855 profiles (pysh was OK because the completion order is different).
3858 profiles (pysh was OK because the completion order is different).
3856
3859
3857 2004-07-27 Fernando Perez <fperez@colorado.edu>
3860 2004-07-27 Fernando Perez <fperez@colorado.edu>
3858
3861
3859 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3862 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3860 keywords manually, b/c the one in keyword.py was removed in python
3863 keywords manually, b/c the one in keyword.py was removed in python
3861 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3864 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3862 This is NOT a bug under python 2.3 and earlier.
3865 This is NOT a bug under python 2.3 and earlier.
3863
3866
3864 2004-07-26 Fernando Perez <fperez@colorado.edu>
3867 2004-07-26 Fernando Perez <fperez@colorado.edu>
3865
3868
3866 * IPython/ultraTB.py (VerboseTB.text): Add another
3869 * IPython/ultraTB.py (VerboseTB.text): Add another
3867 linecache.checkcache() call to try to prevent inspect.py from
3870 linecache.checkcache() call to try to prevent inspect.py from
3868 crashing under python 2.3. I think this fixes
3871 crashing under python 2.3. I think this fixes
3869 http://www.scipy.net/roundup/ipython/issue17.
3872 http://www.scipy.net/roundup/ipython/issue17.
3870
3873
3871 2004-07-26 *** Released version 0.6.2
3874 2004-07-26 *** Released version 0.6.2
3872
3875
3873 2004-07-26 Fernando Perez <fperez@colorado.edu>
3876 2004-07-26 Fernando Perez <fperez@colorado.edu>
3874
3877
3875 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3878 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3876 fail for any number.
3879 fail for any number.
3877 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3880 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3878 empty bookmarks.
3881 empty bookmarks.
3879
3882
3880 2004-07-26 *** Released version 0.6.1
3883 2004-07-26 *** Released version 0.6.1
3881
3884
3882 2004-07-26 Fernando Perez <fperez@colorado.edu>
3885 2004-07-26 Fernando Perez <fperez@colorado.edu>
3883
3886
3884 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3887 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3885
3888
3886 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3889 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3887 escaping '()[]{}' in filenames.
3890 escaping '()[]{}' in filenames.
3888
3891
3889 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3892 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3890 Python 2.2 users who lack a proper shlex.split.
3893 Python 2.2 users who lack a proper shlex.split.
3891
3894
3892 2004-07-19 Fernando Perez <fperez@colorado.edu>
3895 2004-07-19 Fernando Perez <fperez@colorado.edu>
3893
3896
3894 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3897 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3895 for reading readline's init file. I follow the normal chain:
3898 for reading readline's init file. I follow the normal chain:
3896 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3899 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3897 report by Mike Heeter. This closes
3900 report by Mike Heeter. This closes
3898 http://www.scipy.net/roundup/ipython/issue16.
3901 http://www.scipy.net/roundup/ipython/issue16.
3899
3902
3900 2004-07-18 Fernando Perez <fperez@colorado.edu>
3903 2004-07-18 Fernando Perez <fperez@colorado.edu>
3901
3904
3902 * IPython/iplib.py (__init__): Add better handling of '\' under
3905 * IPython/iplib.py (__init__): Add better handling of '\' under
3903 Win32 for filenames. After a patch by Ville.
3906 Win32 for filenames. After a patch by Ville.
3904
3907
3905 2004-07-17 Fernando Perez <fperez@colorado.edu>
3908 2004-07-17 Fernando Perez <fperez@colorado.edu>
3906
3909
3907 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3910 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3908 autocalling would be triggered for 'foo is bar' if foo is
3911 autocalling would be triggered for 'foo is bar' if foo is
3909 callable. I also cleaned up the autocall detection code to use a
3912 callable. I also cleaned up the autocall detection code to use a
3910 regexp, which is faster. Bug reported by Alexander Schmolck.
3913 regexp, which is faster. Bug reported by Alexander Schmolck.
3911
3914
3912 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3915 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3913 '?' in them would confuse the help system. Reported by Alex
3916 '?' in them would confuse the help system. Reported by Alex
3914 Schmolck.
3917 Schmolck.
3915
3918
3916 2004-07-16 Fernando Perez <fperez@colorado.edu>
3919 2004-07-16 Fernando Perez <fperez@colorado.edu>
3917
3920
3918 * IPython/GnuplotInteractive.py (__all__): added plot2.
3921 * IPython/GnuplotInteractive.py (__all__): added plot2.
3919
3922
3920 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3923 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3921 plotting dictionaries, lists or tuples of 1d arrays.
3924 plotting dictionaries, lists or tuples of 1d arrays.
3922
3925
3923 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3926 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3924 optimizations.
3927 optimizations.
3925
3928
3926 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3929 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3927 the information which was there from Janko's original IPP code:
3930 the information which was there from Janko's original IPP code:
3928
3931
3929 03.05.99 20:53 porto.ifm.uni-kiel.de
3932 03.05.99 20:53 porto.ifm.uni-kiel.de
3930 --Started changelog.
3933 --Started changelog.
3931 --make clear do what it say it does
3934 --make clear do what it say it does
3932 --added pretty output of lines from inputcache
3935 --added pretty output of lines from inputcache
3933 --Made Logger a mixin class, simplifies handling of switches
3936 --Made Logger a mixin class, simplifies handling of switches
3934 --Added own completer class. .string<TAB> expands to last history
3937 --Added own completer class. .string<TAB> expands to last history
3935 line which starts with string. The new expansion is also present
3938 line which starts with string. The new expansion is also present
3936 with Ctrl-r from the readline library. But this shows, who this
3939 with Ctrl-r from the readline library. But this shows, who this
3937 can be done for other cases.
3940 can be done for other cases.
3938 --Added convention that all shell functions should accept a
3941 --Added convention that all shell functions should accept a
3939 parameter_string This opens the door for different behaviour for
3942 parameter_string This opens the door for different behaviour for
3940 each function. @cd is a good example of this.
3943 each function. @cd is a good example of this.
3941
3944
3942 04.05.99 12:12 porto.ifm.uni-kiel.de
3945 04.05.99 12:12 porto.ifm.uni-kiel.de
3943 --added logfile rotation
3946 --added logfile rotation
3944 --added new mainloop method which freezes first the namespace
3947 --added new mainloop method which freezes first the namespace
3945
3948
3946 07.05.99 21:24 porto.ifm.uni-kiel.de
3949 07.05.99 21:24 porto.ifm.uni-kiel.de
3947 --added the docreader classes. Now there is a help system.
3950 --added the docreader classes. Now there is a help system.
3948 -This is only a first try. Currently it's not easy to put new
3951 -This is only a first try. Currently it's not easy to put new
3949 stuff in the indices. But this is the way to go. Info would be
3952 stuff in the indices. But this is the way to go. Info would be
3950 better, but HTML is every where and not everybody has an info
3953 better, but HTML is every where and not everybody has an info
3951 system installed and it's not so easy to change html-docs to info.
3954 system installed and it's not so easy to change html-docs to info.
3952 --added global logfile option
3955 --added global logfile option
3953 --there is now a hook for object inspection method pinfo needs to
3956 --there is now a hook for object inspection method pinfo needs to
3954 be provided for this. Can be reached by two '??'.
3957 be provided for this. Can be reached by two '??'.
3955
3958
3956 08.05.99 20:51 porto.ifm.uni-kiel.de
3959 08.05.99 20:51 porto.ifm.uni-kiel.de
3957 --added a README
3960 --added a README
3958 --bug in rc file. Something has changed so functions in the rc
3961 --bug in rc file. Something has changed so functions in the rc
3959 file need to reference the shell and not self. Not clear if it's a
3962 file need to reference the shell and not self. Not clear if it's a
3960 bug or feature.
3963 bug or feature.
3961 --changed rc file for new behavior
3964 --changed rc file for new behavior
3962
3965
3963 2004-07-15 Fernando Perez <fperez@colorado.edu>
3966 2004-07-15 Fernando Perez <fperez@colorado.edu>
3964
3967
3965 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3968 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3966 cache was falling out of sync in bizarre manners when multi-line
3969 cache was falling out of sync in bizarre manners when multi-line
3967 input was present. Minor optimizations and cleanup.
3970 input was present. Minor optimizations and cleanup.
3968
3971
3969 (Logger): Remove old Changelog info for cleanup. This is the
3972 (Logger): Remove old Changelog info for cleanup. This is the
3970 information which was there from Janko's original code:
3973 information which was there from Janko's original code:
3971
3974
3972 Changes to Logger: - made the default log filename a parameter
3975 Changes to Logger: - made the default log filename a parameter
3973
3976
3974 - put a check for lines beginning with !@? in log(). Needed
3977 - put a check for lines beginning with !@? in log(). Needed
3975 (even if the handlers properly log their lines) for mid-session
3978 (even if the handlers properly log their lines) for mid-session
3976 logging activation to work properly. Without this, lines logged
3979 logging activation to work properly. Without this, lines logged
3977 in mid session, which get read from the cache, would end up
3980 in mid session, which get read from the cache, would end up
3978 'bare' (with !@? in the open) in the log. Now they are caught
3981 'bare' (with !@? in the open) in the log. Now they are caught
3979 and prepended with a #.
3982 and prepended with a #.
3980
3983
3981 * IPython/iplib.py (InteractiveShell.init_readline): added check
3984 * IPython/iplib.py (InteractiveShell.init_readline): added check
3982 in case MagicCompleter fails to be defined, so we don't crash.
3985 in case MagicCompleter fails to be defined, so we don't crash.
3983
3986
3984 2004-07-13 Fernando Perez <fperez@colorado.edu>
3987 2004-07-13 Fernando Perez <fperez@colorado.edu>
3985
3988
3986 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3989 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3987 of EPS if the requested filename ends in '.eps'.
3990 of EPS if the requested filename ends in '.eps'.
3988
3991
3989 2004-07-04 Fernando Perez <fperez@colorado.edu>
3992 2004-07-04 Fernando Perez <fperez@colorado.edu>
3990
3993
3991 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3994 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3992 escaping of quotes when calling the shell.
3995 escaping of quotes when calling the shell.
3993
3996
3994 2004-07-02 Fernando Perez <fperez@colorado.edu>
3997 2004-07-02 Fernando Perez <fperez@colorado.edu>
3995
3998
3996 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3999 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3997 gettext not working because we were clobbering '_'. Fixes
4000 gettext not working because we were clobbering '_'. Fixes
3998 http://www.scipy.net/roundup/ipython/issue6.
4001 http://www.scipy.net/roundup/ipython/issue6.
3999
4002
4000 2004-07-01 Fernando Perez <fperez@colorado.edu>
4003 2004-07-01 Fernando Perez <fperez@colorado.edu>
4001
4004
4002 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4005 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4003 into @cd. Patch by Ville.
4006 into @cd. Patch by Ville.
4004
4007
4005 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4008 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4006 new function to store things after ipmaker runs. Patch by Ville.
4009 new function to store things after ipmaker runs. Patch by Ville.
4007 Eventually this will go away once ipmaker is removed and the class
4010 Eventually this will go away once ipmaker is removed and the class
4008 gets cleaned up, but for now it's ok. Key functionality here is
4011 gets cleaned up, but for now it's ok. Key functionality here is
4009 the addition of the persistent storage mechanism, a dict for
4012 the addition of the persistent storage mechanism, a dict for
4010 keeping data across sessions (for now just bookmarks, but more can
4013 keeping data across sessions (for now just bookmarks, but more can
4011 be implemented later).
4014 be implemented later).
4012
4015
4013 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4016 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4014 persistent across sections. Patch by Ville, I modified it
4017 persistent across sections. Patch by Ville, I modified it
4015 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4018 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4016 added a '-l' option to list all bookmarks.
4019 added a '-l' option to list all bookmarks.
4017
4020
4018 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4021 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4019 center for cleanup. Registered with atexit.register(). I moved
4022 center for cleanup. Registered with atexit.register(). I moved
4020 here the old exit_cleanup(). After a patch by Ville.
4023 here the old exit_cleanup(). After a patch by Ville.
4021
4024
4022 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4025 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4023 characters in the hacked shlex_split for python 2.2.
4026 characters in the hacked shlex_split for python 2.2.
4024
4027
4025 * IPython/iplib.py (file_matches): more fixes to filenames with
4028 * IPython/iplib.py (file_matches): more fixes to filenames with
4026 whitespace in them. It's not perfect, but limitations in python's
4029 whitespace in them. It's not perfect, but limitations in python's
4027 readline make it impossible to go further.
4030 readline make it impossible to go further.
4028
4031
4029 2004-06-29 Fernando Perez <fperez@colorado.edu>
4032 2004-06-29 Fernando Perez <fperez@colorado.edu>
4030
4033
4031 * IPython/iplib.py (file_matches): escape whitespace correctly in
4034 * IPython/iplib.py (file_matches): escape whitespace correctly in
4032 filename completions. Bug reported by Ville.
4035 filename completions. Bug reported by Ville.
4033
4036
4034 2004-06-28 Fernando Perez <fperez@colorado.edu>
4037 2004-06-28 Fernando Perez <fperez@colorado.edu>
4035
4038
4036 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4039 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4037 the history file will be called 'history-PROFNAME' (or just
4040 the history file will be called 'history-PROFNAME' (or just
4038 'history' if no profile is loaded). I was getting annoyed at
4041 'history' if no profile is loaded). I was getting annoyed at
4039 getting my Numerical work history clobbered by pysh sessions.
4042 getting my Numerical work history clobbered by pysh sessions.
4040
4043
4041 * IPython/iplib.py (InteractiveShell.__init__): Internal
4044 * IPython/iplib.py (InteractiveShell.__init__): Internal
4042 getoutputerror() function so that we can honor the system_verbose
4045 getoutputerror() function so that we can honor the system_verbose
4043 flag for _all_ system calls. I also added escaping of #
4046 flag for _all_ system calls. I also added escaping of #
4044 characters here to avoid confusing Itpl.
4047 characters here to avoid confusing Itpl.
4045
4048
4046 * IPython/Magic.py (shlex_split): removed call to shell in
4049 * IPython/Magic.py (shlex_split): removed call to shell in
4047 parse_options and replaced it with shlex.split(). The annoying
4050 parse_options and replaced it with shlex.split(). The annoying
4048 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4051 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4049 to backport it from 2.3, with several frail hacks (the shlex
4052 to backport it from 2.3, with several frail hacks (the shlex
4050 module is rather limited in 2.2). Thanks to a suggestion by Ville
4053 module is rather limited in 2.2). Thanks to a suggestion by Ville
4051 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4054 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4052 problem.
4055 problem.
4053
4056
4054 (Magic.magic_system_verbose): new toggle to print the actual
4057 (Magic.magic_system_verbose): new toggle to print the actual
4055 system calls made by ipython. Mainly for debugging purposes.
4058 system calls made by ipython. Mainly for debugging purposes.
4056
4059
4057 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4060 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4058 doesn't support persistence. Reported (and fix suggested) by
4061 doesn't support persistence. Reported (and fix suggested) by
4059 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4062 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4060
4063
4061 2004-06-26 Fernando Perez <fperez@colorado.edu>
4064 2004-06-26 Fernando Perez <fperez@colorado.edu>
4062
4065
4063 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4066 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4064 continue prompts.
4067 continue prompts.
4065
4068
4066 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4069 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4067 function (basically a big docstring) and a few more things here to
4070 function (basically a big docstring) and a few more things here to
4068 speedup startup. pysh.py is now very lightweight. We want because
4071 speedup startup. pysh.py is now very lightweight. We want because
4069 it gets execfile'd, while InterpreterExec gets imported, so
4072 it gets execfile'd, while InterpreterExec gets imported, so
4070 byte-compilation saves time.
4073 byte-compilation saves time.
4071
4074
4072 2004-06-25 Fernando Perez <fperez@colorado.edu>
4075 2004-06-25 Fernando Perez <fperez@colorado.edu>
4073
4076
4074 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4077 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4075 -NUM', which was recently broken.
4078 -NUM', which was recently broken.
4076
4079
4077 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4080 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4078 in multi-line input (but not !!, which doesn't make sense there).
4081 in multi-line input (but not !!, which doesn't make sense there).
4079
4082
4080 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4083 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4081 It's just too useful, and people can turn it off in the less
4084 It's just too useful, and people can turn it off in the less
4082 common cases where it's a problem.
4085 common cases where it's a problem.
4083
4086
4084 2004-06-24 Fernando Perez <fperez@colorado.edu>
4087 2004-06-24 Fernando Perez <fperez@colorado.edu>
4085
4088
4086 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4089 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4087 special syntaxes (like alias calling) is now allied in multi-line
4090 special syntaxes (like alias calling) is now allied in multi-line
4088 input. This is still _very_ experimental, but it's necessary for
4091 input. This is still _very_ experimental, but it's necessary for
4089 efficient shell usage combining python looping syntax with system
4092 efficient shell usage combining python looping syntax with system
4090 calls. For now it's restricted to aliases, I don't think it
4093 calls. For now it's restricted to aliases, I don't think it
4091 really even makes sense to have this for magics.
4094 really even makes sense to have this for magics.
4092
4095
4093 2004-06-23 Fernando Perez <fperez@colorado.edu>
4096 2004-06-23 Fernando Perez <fperez@colorado.edu>
4094
4097
4095 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4098 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4096 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4099 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4097
4100
4098 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4101 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4099 extensions under Windows (after code sent by Gary Bishop). The
4102 extensions under Windows (after code sent by Gary Bishop). The
4100 extensions considered 'executable' are stored in IPython's rc
4103 extensions considered 'executable' are stored in IPython's rc
4101 structure as win_exec_ext.
4104 structure as win_exec_ext.
4102
4105
4103 * IPython/genutils.py (shell): new function, like system() but
4106 * IPython/genutils.py (shell): new function, like system() but
4104 without return value. Very useful for interactive shell work.
4107 without return value. Very useful for interactive shell work.
4105
4108
4106 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4109 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4107 delete aliases.
4110 delete aliases.
4108
4111
4109 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4112 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4110 sure that the alias table doesn't contain python keywords.
4113 sure that the alias table doesn't contain python keywords.
4111
4114
4112 2004-06-21 Fernando Perez <fperez@colorado.edu>
4115 2004-06-21 Fernando Perez <fperez@colorado.edu>
4113
4116
4114 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4117 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4115 non-existent items are found in $PATH. Reported by Thorsten.
4118 non-existent items are found in $PATH. Reported by Thorsten.
4116
4119
4117 2004-06-20 Fernando Perez <fperez@colorado.edu>
4120 2004-06-20 Fernando Perez <fperez@colorado.edu>
4118
4121
4119 * IPython/iplib.py (complete): modified the completer so that the
4122 * IPython/iplib.py (complete): modified the completer so that the
4120 order of priorities can be easily changed at runtime.
4123 order of priorities can be easily changed at runtime.
4121
4124
4122 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4125 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4123 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4126 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4124
4127
4125 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4128 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4126 expand Python variables prepended with $ in all system calls. The
4129 expand Python variables prepended with $ in all system calls. The
4127 same was done to InteractiveShell.handle_shell_escape. Now all
4130 same was done to InteractiveShell.handle_shell_escape. Now all
4128 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4131 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4129 expansion of python variables and expressions according to the
4132 expansion of python variables and expressions according to the
4130 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4133 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4131
4134
4132 Though PEP-215 has been rejected, a similar (but simpler) one
4135 Though PEP-215 has been rejected, a similar (but simpler) one
4133 seems like it will go into Python 2.4, PEP-292 -
4136 seems like it will go into Python 2.4, PEP-292 -
4134 http://www.python.org/peps/pep-0292.html.
4137 http://www.python.org/peps/pep-0292.html.
4135
4138
4136 I'll keep the full syntax of PEP-215, since IPython has since the
4139 I'll keep the full syntax of PEP-215, since IPython has since the
4137 start used Ka-Ping Yee's reference implementation discussed there
4140 start used Ka-Ping Yee's reference implementation discussed there
4138 (Itpl), and I actually like the powerful semantics it offers.
4141 (Itpl), and I actually like the powerful semantics it offers.
4139
4142
4140 In order to access normal shell variables, the $ has to be escaped
4143 In order to access normal shell variables, the $ has to be escaped
4141 via an extra $. For example:
4144 via an extra $. For example:
4142
4145
4143 In [7]: PATH='a python variable'
4146 In [7]: PATH='a python variable'
4144
4147
4145 In [8]: !echo $PATH
4148 In [8]: !echo $PATH
4146 a python variable
4149 a python variable
4147
4150
4148 In [9]: !echo $$PATH
4151 In [9]: !echo $$PATH
4149 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4152 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4150
4153
4151 (Magic.parse_options): escape $ so the shell doesn't evaluate
4154 (Magic.parse_options): escape $ so the shell doesn't evaluate
4152 things prematurely.
4155 things prematurely.
4153
4156
4154 * IPython/iplib.py (InteractiveShell.call_alias): added the
4157 * IPython/iplib.py (InteractiveShell.call_alias): added the
4155 ability for aliases to expand python variables via $.
4158 ability for aliases to expand python variables via $.
4156
4159
4157 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4160 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4158 system, now there's a @rehash/@rehashx pair of magics. These work
4161 system, now there's a @rehash/@rehashx pair of magics. These work
4159 like the csh rehash command, and can be invoked at any time. They
4162 like the csh rehash command, and can be invoked at any time. They
4160 build a table of aliases to everything in the user's $PATH
4163 build a table of aliases to everything in the user's $PATH
4161 (@rehash uses everything, @rehashx is slower but only adds
4164 (@rehash uses everything, @rehashx is slower but only adds
4162 executable files). With this, the pysh.py-based shell profile can
4165 executable files). With this, the pysh.py-based shell profile can
4163 now simply call rehash upon startup, and full access to all
4166 now simply call rehash upon startup, and full access to all
4164 programs in the user's path is obtained.
4167 programs in the user's path is obtained.
4165
4168
4166 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4169 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4167 functionality is now fully in place. I removed the old dynamic
4170 functionality is now fully in place. I removed the old dynamic
4168 code generation based approach, in favor of a much lighter one
4171 code generation based approach, in favor of a much lighter one
4169 based on a simple dict. The advantage is that this allows me to
4172 based on a simple dict. The advantage is that this allows me to
4170 now have thousands of aliases with negligible cost (unthinkable
4173 now have thousands of aliases with negligible cost (unthinkable
4171 with the old system).
4174 with the old system).
4172
4175
4173 2004-06-19 Fernando Perez <fperez@colorado.edu>
4176 2004-06-19 Fernando Perez <fperez@colorado.edu>
4174
4177
4175 * IPython/iplib.py (__init__): extended MagicCompleter class to
4178 * IPython/iplib.py (__init__): extended MagicCompleter class to
4176 also complete (last in priority) on user aliases.
4179 also complete (last in priority) on user aliases.
4177
4180
4178 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4181 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4179 call to eval.
4182 call to eval.
4180 (ItplNS.__init__): Added a new class which functions like Itpl,
4183 (ItplNS.__init__): Added a new class which functions like Itpl,
4181 but allows configuring the namespace for the evaluation to occur
4184 but allows configuring the namespace for the evaluation to occur
4182 in.
4185 in.
4183
4186
4184 2004-06-18 Fernando Perez <fperez@colorado.edu>
4187 2004-06-18 Fernando Perez <fperez@colorado.edu>
4185
4188
4186 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4189 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4187 better message when 'exit' or 'quit' are typed (a common newbie
4190 better message when 'exit' or 'quit' are typed (a common newbie
4188 confusion).
4191 confusion).
4189
4192
4190 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4193 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4191 check for Windows users.
4194 check for Windows users.
4192
4195
4193 * IPython/iplib.py (InteractiveShell.user_setup): removed
4196 * IPython/iplib.py (InteractiveShell.user_setup): removed
4194 disabling of colors for Windows. I'll test at runtime and issue a
4197 disabling of colors for Windows. I'll test at runtime and issue a
4195 warning if Gary's readline isn't found, as to nudge users to
4198 warning if Gary's readline isn't found, as to nudge users to
4196 download it.
4199 download it.
4197
4200
4198 2004-06-16 Fernando Perez <fperez@colorado.edu>
4201 2004-06-16 Fernando Perez <fperez@colorado.edu>
4199
4202
4200 * IPython/genutils.py (Stream.__init__): changed to print errors
4203 * IPython/genutils.py (Stream.__init__): changed to print errors
4201 to sys.stderr. I had a circular dependency here. Now it's
4204 to sys.stderr. I had a circular dependency here. Now it's
4202 possible to run ipython as IDLE's shell (consider this pre-alpha,
4205 possible to run ipython as IDLE's shell (consider this pre-alpha,
4203 since true stdout things end up in the starting terminal instead
4206 since true stdout things end up in the starting terminal instead
4204 of IDLE's out).
4207 of IDLE's out).
4205
4208
4206 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4209 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4207 users who haven't # updated their prompt_in2 definitions. Remove
4210 users who haven't # updated their prompt_in2 definitions. Remove
4208 eventually.
4211 eventually.
4209 (multiple_replace): added credit to original ASPN recipe.
4212 (multiple_replace): added credit to original ASPN recipe.
4210
4213
4211 2004-06-15 Fernando Perez <fperez@colorado.edu>
4214 2004-06-15 Fernando Perez <fperez@colorado.edu>
4212
4215
4213 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4216 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4214 list of auto-defined aliases.
4217 list of auto-defined aliases.
4215
4218
4216 2004-06-13 Fernando Perez <fperez@colorado.edu>
4219 2004-06-13 Fernando Perez <fperez@colorado.edu>
4217
4220
4218 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4221 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4219 install was really requested (so setup.py can be used for other
4222 install was really requested (so setup.py can be used for other
4220 things under Windows).
4223 things under Windows).
4221
4224
4222 2004-06-10 Fernando Perez <fperez@colorado.edu>
4225 2004-06-10 Fernando Perez <fperez@colorado.edu>
4223
4226
4224 * IPython/Logger.py (Logger.create_log): Manually remove any old
4227 * IPython/Logger.py (Logger.create_log): Manually remove any old
4225 backup, since os.remove may fail under Windows. Fixes bug
4228 backup, since os.remove may fail under Windows. Fixes bug
4226 reported by Thorsten.
4229 reported by Thorsten.
4227
4230
4228 2004-06-09 Fernando Perez <fperez@colorado.edu>
4231 2004-06-09 Fernando Perez <fperez@colorado.edu>
4229
4232
4230 * examples/example-embed.py: fixed all references to %n (replaced
4233 * examples/example-embed.py: fixed all references to %n (replaced
4231 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4234 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4232 for all examples and the manual as well.
4235 for all examples and the manual as well.
4233
4236
4234 2004-06-08 Fernando Perez <fperez@colorado.edu>
4237 2004-06-08 Fernando Perez <fperez@colorado.edu>
4235
4238
4236 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4239 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4237 alignment and color management. All 3 prompt subsystems now
4240 alignment and color management. All 3 prompt subsystems now
4238 inherit from BasePrompt.
4241 inherit from BasePrompt.
4239
4242
4240 * tools/release: updates for windows installer build and tag rpms
4243 * tools/release: updates for windows installer build and tag rpms
4241 with python version (since paths are fixed).
4244 with python version (since paths are fixed).
4242
4245
4243 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4246 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4244 which will become eventually obsolete. Also fixed the default
4247 which will become eventually obsolete. Also fixed the default
4245 prompt_in2 to use \D, so at least new users start with the correct
4248 prompt_in2 to use \D, so at least new users start with the correct
4246 defaults.
4249 defaults.
4247 WARNING: Users with existing ipythonrc files will need to apply
4250 WARNING: Users with existing ipythonrc files will need to apply
4248 this fix manually!
4251 this fix manually!
4249
4252
4250 * setup.py: make windows installer (.exe). This is finally the
4253 * setup.py: make windows installer (.exe). This is finally the
4251 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4254 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4252 which I hadn't included because it required Python 2.3 (or recent
4255 which I hadn't included because it required Python 2.3 (or recent
4253 distutils).
4256 distutils).
4254
4257
4255 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4258 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4256 usage of new '\D' escape.
4259 usage of new '\D' escape.
4257
4260
4258 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4261 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4259 lacks os.getuid())
4262 lacks os.getuid())
4260 (CachedOutput.set_colors): Added the ability to turn coloring
4263 (CachedOutput.set_colors): Added the ability to turn coloring
4261 on/off with @colors even for manually defined prompt colors. It
4264 on/off with @colors even for manually defined prompt colors. It
4262 uses a nasty global, but it works safely and via the generic color
4265 uses a nasty global, but it works safely and via the generic color
4263 handling mechanism.
4266 handling mechanism.
4264 (Prompt2.__init__): Introduced new escape '\D' for continuation
4267 (Prompt2.__init__): Introduced new escape '\D' for continuation
4265 prompts. It represents the counter ('\#') as dots.
4268 prompts. It represents the counter ('\#') as dots.
4266 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4269 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4267 need to update their ipythonrc files and replace '%n' with '\D' in
4270 need to update their ipythonrc files and replace '%n' with '\D' in
4268 their prompt_in2 settings everywhere. Sorry, but there's
4271 their prompt_in2 settings everywhere. Sorry, but there's
4269 otherwise no clean way to get all prompts to properly align. The
4272 otherwise no clean way to get all prompts to properly align. The
4270 ipythonrc shipped with IPython has been updated.
4273 ipythonrc shipped with IPython has been updated.
4271
4274
4272 2004-06-07 Fernando Perez <fperez@colorado.edu>
4275 2004-06-07 Fernando Perez <fperez@colorado.edu>
4273
4276
4274 * setup.py (isfile): Pass local_icons option to latex2html, so the
4277 * setup.py (isfile): Pass local_icons option to latex2html, so the
4275 resulting HTML file is self-contained. Thanks to
4278 resulting HTML file is self-contained. Thanks to
4276 dryice-AT-liu.com.cn for the tip.
4279 dryice-AT-liu.com.cn for the tip.
4277
4280
4278 * pysh.py: I created a new profile 'shell', which implements a
4281 * pysh.py: I created a new profile 'shell', which implements a
4279 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4282 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4280 system shell, nor will it become one anytime soon. It's mainly
4283 system shell, nor will it become one anytime soon. It's mainly
4281 meant to illustrate the use of the new flexible bash-like prompts.
4284 meant to illustrate the use of the new flexible bash-like prompts.
4282 I guess it could be used by hardy souls for true shell management,
4285 I guess it could be used by hardy souls for true shell management,
4283 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4286 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4284 profile. This uses the InterpreterExec extension provided by
4287 profile. This uses the InterpreterExec extension provided by
4285 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4288 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4286
4289
4287 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4290 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4288 auto-align itself with the length of the previous input prompt
4291 auto-align itself with the length of the previous input prompt
4289 (taking into account the invisible color escapes).
4292 (taking into account the invisible color escapes).
4290 (CachedOutput.__init__): Large restructuring of this class. Now
4293 (CachedOutput.__init__): Large restructuring of this class. Now
4291 all three prompts (primary1, primary2, output) are proper objects,
4294 all three prompts (primary1, primary2, output) are proper objects,
4292 managed by the 'parent' CachedOutput class. The code is still a
4295 managed by the 'parent' CachedOutput class. The code is still a
4293 bit hackish (all prompts share state via a pointer to the cache),
4296 bit hackish (all prompts share state via a pointer to the cache),
4294 but it's overall far cleaner than before.
4297 but it's overall far cleaner than before.
4295
4298
4296 * IPython/genutils.py (getoutputerror): modified to add verbose,
4299 * IPython/genutils.py (getoutputerror): modified to add verbose,
4297 debug and header options. This makes the interface of all getout*
4300 debug and header options. This makes the interface of all getout*
4298 functions uniform.
4301 functions uniform.
4299 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4302 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4300
4303
4301 * IPython/Magic.py (Magic.default_option): added a function to
4304 * IPython/Magic.py (Magic.default_option): added a function to
4302 allow registering default options for any magic command. This
4305 allow registering default options for any magic command. This
4303 makes it easy to have profiles which customize the magics globally
4306 makes it easy to have profiles which customize the magics globally
4304 for a certain use. The values set through this function are
4307 for a certain use. The values set through this function are
4305 picked up by the parse_options() method, which all magics should
4308 picked up by the parse_options() method, which all magics should
4306 use to parse their options.
4309 use to parse their options.
4307
4310
4308 * IPython/genutils.py (warn): modified the warnings framework to
4311 * IPython/genutils.py (warn): modified the warnings framework to
4309 use the Term I/O class. I'm trying to slowly unify all of
4312 use the Term I/O class. I'm trying to slowly unify all of
4310 IPython's I/O operations to pass through Term.
4313 IPython's I/O operations to pass through Term.
4311
4314
4312 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4315 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4313 the secondary prompt to correctly match the length of the primary
4316 the secondary prompt to correctly match the length of the primary
4314 one for any prompt. Now multi-line code will properly line up
4317 one for any prompt. Now multi-line code will properly line up
4315 even for path dependent prompts, such as the new ones available
4318 even for path dependent prompts, such as the new ones available
4316 via the prompt_specials.
4319 via the prompt_specials.
4317
4320
4318 2004-06-06 Fernando Perez <fperez@colorado.edu>
4321 2004-06-06 Fernando Perez <fperez@colorado.edu>
4319
4322
4320 * IPython/Prompts.py (prompt_specials): Added the ability to have
4323 * IPython/Prompts.py (prompt_specials): Added the ability to have
4321 bash-like special sequences in the prompts, which get
4324 bash-like special sequences in the prompts, which get
4322 automatically expanded. Things like hostname, current working
4325 automatically expanded. Things like hostname, current working
4323 directory and username are implemented already, but it's easy to
4326 directory and username are implemented already, but it's easy to
4324 add more in the future. Thanks to a patch by W.J. van der Laan
4327 add more in the future. Thanks to a patch by W.J. van der Laan
4325 <gnufnork-AT-hetdigitalegat.nl>
4328 <gnufnork-AT-hetdigitalegat.nl>
4326 (prompt_specials): Added color support for prompt strings, so
4329 (prompt_specials): Added color support for prompt strings, so
4327 users can define arbitrary color setups for their prompts.
4330 users can define arbitrary color setups for their prompts.
4328
4331
4329 2004-06-05 Fernando Perez <fperez@colorado.edu>
4332 2004-06-05 Fernando Perez <fperez@colorado.edu>
4330
4333
4331 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4334 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4332 code to load Gary Bishop's readline and configure it
4335 code to load Gary Bishop's readline and configure it
4333 automatically. Thanks to Gary for help on this.
4336 automatically. Thanks to Gary for help on this.
4334
4337
4335 2004-06-01 Fernando Perez <fperez@colorado.edu>
4338 2004-06-01 Fernando Perez <fperez@colorado.edu>
4336
4339
4337 * IPython/Logger.py (Logger.create_log): fix bug for logging
4340 * IPython/Logger.py (Logger.create_log): fix bug for logging
4338 with no filename (previous fix was incomplete).
4341 with no filename (previous fix was incomplete).
4339
4342
4340 2004-05-25 Fernando Perez <fperez@colorado.edu>
4343 2004-05-25 Fernando Perez <fperez@colorado.edu>
4341
4344
4342 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4345 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4343 parens would get passed to the shell.
4346 parens would get passed to the shell.
4344
4347
4345 2004-05-20 Fernando Perez <fperez@colorado.edu>
4348 2004-05-20 Fernando Perez <fperez@colorado.edu>
4346
4349
4347 * IPython/Magic.py (Magic.magic_prun): changed default profile
4350 * IPython/Magic.py (Magic.magic_prun): changed default profile
4348 sort order to 'time' (the more common profiling need).
4351 sort order to 'time' (the more common profiling need).
4349
4352
4350 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4353 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4351 so that source code shown is guaranteed in sync with the file on
4354 so that source code shown is guaranteed in sync with the file on
4352 disk (also changed in psource). Similar fix to the one for
4355 disk (also changed in psource). Similar fix to the one for
4353 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4356 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4354 <yann.ledu-AT-noos.fr>.
4357 <yann.ledu-AT-noos.fr>.
4355
4358
4356 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4359 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4357 with a single option would not be correctly parsed. Closes
4360 with a single option would not be correctly parsed. Closes
4358 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4361 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4359 introduced in 0.6.0 (on 2004-05-06).
4362 introduced in 0.6.0 (on 2004-05-06).
4360
4363
4361 2004-05-13 *** Released version 0.6.0
4364 2004-05-13 *** Released version 0.6.0
4362
4365
4363 2004-05-13 Fernando Perez <fperez@colorado.edu>
4366 2004-05-13 Fernando Perez <fperez@colorado.edu>
4364
4367
4365 * debian/: Added debian/ directory to CVS, so that debian support
4368 * debian/: Added debian/ directory to CVS, so that debian support
4366 is publicly accessible. The debian package is maintained by Jack
4369 is publicly accessible. The debian package is maintained by Jack
4367 Moffit <jack-AT-xiph.org>.
4370 Moffit <jack-AT-xiph.org>.
4368
4371
4369 * Documentation: included the notes about an ipython-based system
4372 * Documentation: included the notes about an ipython-based system
4370 shell (the hypothetical 'pysh') into the new_design.pdf document,
4373 shell (the hypothetical 'pysh') into the new_design.pdf document,
4371 so that these ideas get distributed to users along with the
4374 so that these ideas get distributed to users along with the
4372 official documentation.
4375 official documentation.
4373
4376
4374 2004-05-10 Fernando Perez <fperez@colorado.edu>
4377 2004-05-10 Fernando Perez <fperez@colorado.edu>
4375
4378
4376 * IPython/Logger.py (Logger.create_log): fix recently introduced
4379 * IPython/Logger.py (Logger.create_log): fix recently introduced
4377 bug (misindented line) where logstart would fail when not given an
4380 bug (misindented line) where logstart would fail when not given an
4378 explicit filename.
4381 explicit filename.
4379
4382
4380 2004-05-09 Fernando Perez <fperez@colorado.edu>
4383 2004-05-09 Fernando Perez <fperez@colorado.edu>
4381
4384
4382 * IPython/Magic.py (Magic.parse_options): skip system call when
4385 * IPython/Magic.py (Magic.parse_options): skip system call when
4383 there are no options to look for. Faster, cleaner for the common
4386 there are no options to look for. Faster, cleaner for the common
4384 case.
4387 case.
4385
4388
4386 * Documentation: many updates to the manual: describing Windows
4389 * Documentation: many updates to the manual: describing Windows
4387 support better, Gnuplot updates, credits, misc small stuff. Also
4390 support better, Gnuplot updates, credits, misc small stuff. Also
4388 updated the new_design doc a bit.
4391 updated the new_design doc a bit.
4389
4392
4390 2004-05-06 *** Released version 0.6.0.rc1
4393 2004-05-06 *** Released version 0.6.0.rc1
4391
4394
4392 2004-05-06 Fernando Perez <fperez@colorado.edu>
4395 2004-05-06 Fernando Perez <fperez@colorado.edu>
4393
4396
4394 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4397 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4395 operations to use the vastly more efficient list/''.join() method.
4398 operations to use the vastly more efficient list/''.join() method.
4396 (FormattedTB.text): Fix
4399 (FormattedTB.text): Fix
4397 http://www.scipy.net/roundup/ipython/issue12 - exception source
4400 http://www.scipy.net/roundup/ipython/issue12 - exception source
4398 extract not updated after reload. Thanks to Mike Salib
4401 extract not updated after reload. Thanks to Mike Salib
4399 <msalib-AT-mit.edu> for pinning the source of the problem.
4402 <msalib-AT-mit.edu> for pinning the source of the problem.
4400 Fortunately, the solution works inside ipython and doesn't require
4403 Fortunately, the solution works inside ipython and doesn't require
4401 any changes to python proper.
4404 any changes to python proper.
4402
4405
4403 * IPython/Magic.py (Magic.parse_options): Improved to process the
4406 * IPython/Magic.py (Magic.parse_options): Improved to process the
4404 argument list as a true shell would (by actually using the
4407 argument list as a true shell would (by actually using the
4405 underlying system shell). This way, all @magics automatically get
4408 underlying system shell). This way, all @magics automatically get
4406 shell expansion for variables. Thanks to a comment by Alex
4409 shell expansion for variables. Thanks to a comment by Alex
4407 Schmolck.
4410 Schmolck.
4408
4411
4409 2004-04-04 Fernando Perez <fperez@colorado.edu>
4412 2004-04-04 Fernando Perez <fperez@colorado.edu>
4410
4413
4411 * IPython/iplib.py (InteractiveShell.interact): Added a special
4414 * IPython/iplib.py (InteractiveShell.interact): Added a special
4412 trap for a debugger quit exception, which is basically impossible
4415 trap for a debugger quit exception, which is basically impossible
4413 to handle by normal mechanisms, given what pdb does to the stack.
4416 to handle by normal mechanisms, given what pdb does to the stack.
4414 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4417 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4415
4418
4416 2004-04-03 Fernando Perez <fperez@colorado.edu>
4419 2004-04-03 Fernando Perez <fperez@colorado.edu>
4417
4420
4418 * IPython/genutils.py (Term): Standardized the names of the Term
4421 * IPython/genutils.py (Term): Standardized the names of the Term
4419 class streams to cin/cout/cerr, following C++ naming conventions
4422 class streams to cin/cout/cerr, following C++ naming conventions
4420 (I can't use in/out/err because 'in' is not a valid attribute
4423 (I can't use in/out/err because 'in' is not a valid attribute
4421 name).
4424 name).
4422
4425
4423 * IPython/iplib.py (InteractiveShell.interact): don't increment
4426 * IPython/iplib.py (InteractiveShell.interact): don't increment
4424 the prompt if there's no user input. By Daniel 'Dang' Griffith
4427 the prompt if there's no user input. By Daniel 'Dang' Griffith
4425 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4428 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4426 Francois Pinard.
4429 Francois Pinard.
4427
4430
4428 2004-04-02 Fernando Perez <fperez@colorado.edu>
4431 2004-04-02 Fernando Perez <fperez@colorado.edu>
4429
4432
4430 * IPython/genutils.py (Stream.__init__): Modified to survive at
4433 * IPython/genutils.py (Stream.__init__): Modified to survive at
4431 least importing in contexts where stdin/out/err aren't true file
4434 least importing in contexts where stdin/out/err aren't true file
4432 objects, such as PyCrust (they lack fileno() and mode). However,
4435 objects, such as PyCrust (they lack fileno() and mode). However,
4433 the recovery facilities which rely on these things existing will
4436 the recovery facilities which rely on these things existing will
4434 not work.
4437 not work.
4435
4438
4436 2004-04-01 Fernando Perez <fperez@colorado.edu>
4439 2004-04-01 Fernando Perez <fperez@colorado.edu>
4437
4440
4438 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4441 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4439 use the new getoutputerror() function, so it properly
4442 use the new getoutputerror() function, so it properly
4440 distinguishes stdout/err.
4443 distinguishes stdout/err.
4441
4444
4442 * IPython/genutils.py (getoutputerror): added a function to
4445 * IPython/genutils.py (getoutputerror): added a function to
4443 capture separately the standard output and error of a command.
4446 capture separately the standard output and error of a command.
4444 After a comment from dang on the mailing lists. This code is
4447 After a comment from dang on the mailing lists. This code is
4445 basically a modified version of commands.getstatusoutput(), from
4448 basically a modified version of commands.getstatusoutput(), from
4446 the standard library.
4449 the standard library.
4447
4450
4448 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4451 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4449 '!!' as a special syntax (shorthand) to access @sx.
4452 '!!' as a special syntax (shorthand) to access @sx.
4450
4453
4451 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4454 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4452 command and return its output as a list split on '\n'.
4455 command and return its output as a list split on '\n'.
4453
4456
4454 2004-03-31 Fernando Perez <fperez@colorado.edu>
4457 2004-03-31 Fernando Perez <fperez@colorado.edu>
4455
4458
4456 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4459 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4457 method to dictionaries used as FakeModule instances if they lack
4460 method to dictionaries used as FakeModule instances if they lack
4458 it. At least pydoc in python2.3 breaks for runtime-defined
4461 it. At least pydoc in python2.3 breaks for runtime-defined
4459 functions without this hack. At some point I need to _really_
4462 functions without this hack. At some point I need to _really_
4460 understand what FakeModule is doing, because it's a gross hack.
4463 understand what FakeModule is doing, because it's a gross hack.
4461 But it solves Arnd's problem for now...
4464 But it solves Arnd's problem for now...
4462
4465
4463 2004-02-27 Fernando Perez <fperez@colorado.edu>
4466 2004-02-27 Fernando Perez <fperez@colorado.edu>
4464
4467
4465 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4468 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4466 mode would behave erratically. Also increased the number of
4469 mode would behave erratically. Also increased the number of
4467 possible logs in rotate mod to 999. Thanks to Rod Holland
4470 possible logs in rotate mod to 999. Thanks to Rod Holland
4468 <rhh@StructureLABS.com> for the report and fixes.
4471 <rhh@StructureLABS.com> for the report and fixes.
4469
4472
4470 2004-02-26 Fernando Perez <fperez@colorado.edu>
4473 2004-02-26 Fernando Perez <fperez@colorado.edu>
4471
4474
4472 * IPython/genutils.py (page): Check that the curses module really
4475 * IPython/genutils.py (page): Check that the curses module really
4473 has the initscr attribute before trying to use it. For some
4476 has the initscr attribute before trying to use it. For some
4474 reason, the Solaris curses module is missing this. I think this
4477 reason, the Solaris curses module is missing this. I think this
4475 should be considered a Solaris python bug, but I'm not sure.
4478 should be considered a Solaris python bug, but I'm not sure.
4476
4479
4477 2004-01-17 Fernando Perez <fperez@colorado.edu>
4480 2004-01-17 Fernando Perez <fperez@colorado.edu>
4478
4481
4479 * IPython/genutils.py (Stream.__init__): Changes to try to make
4482 * IPython/genutils.py (Stream.__init__): Changes to try to make
4480 ipython robust against stdin/out/err being closed by the user.
4483 ipython robust against stdin/out/err being closed by the user.
4481 This is 'user error' (and blocks a normal python session, at least
4484 This is 'user error' (and blocks a normal python session, at least
4482 the stdout case). However, Ipython should be able to survive such
4485 the stdout case). However, Ipython should be able to survive such
4483 instances of abuse as gracefully as possible. To simplify the
4486 instances of abuse as gracefully as possible. To simplify the
4484 coding and maintain compatibility with Gary Bishop's Term
4487 coding and maintain compatibility with Gary Bishop's Term
4485 contributions, I've made use of classmethods for this. I think
4488 contributions, I've made use of classmethods for this. I think
4486 this introduces a dependency on python 2.2.
4489 this introduces a dependency on python 2.2.
4487
4490
4488 2004-01-13 Fernando Perez <fperez@colorado.edu>
4491 2004-01-13 Fernando Perez <fperez@colorado.edu>
4489
4492
4490 * IPython/numutils.py (exp_safe): simplified the code a bit and
4493 * IPython/numutils.py (exp_safe): simplified the code a bit and
4491 removed the need for importing the kinds module altogether.
4494 removed the need for importing the kinds module altogether.
4492
4495
4493 2004-01-06 Fernando Perez <fperez@colorado.edu>
4496 2004-01-06 Fernando Perez <fperez@colorado.edu>
4494
4497
4495 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4498 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4496 a magic function instead, after some community feedback. No
4499 a magic function instead, after some community feedback. No
4497 special syntax will exist for it, but its name is deliberately
4500 special syntax will exist for it, but its name is deliberately
4498 very short.
4501 very short.
4499
4502
4500 2003-12-20 Fernando Perez <fperez@colorado.edu>
4503 2003-12-20 Fernando Perez <fperez@colorado.edu>
4501
4504
4502 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4505 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4503 new functionality, to automagically assign the result of a shell
4506 new functionality, to automagically assign the result of a shell
4504 command to a variable. I'll solicit some community feedback on
4507 command to a variable. I'll solicit some community feedback on
4505 this before making it permanent.
4508 this before making it permanent.
4506
4509
4507 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4510 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4508 requested about callables for which inspect couldn't obtain a
4511 requested about callables for which inspect couldn't obtain a
4509 proper argspec. Thanks to a crash report sent by Etienne
4512 proper argspec. Thanks to a crash report sent by Etienne
4510 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4513 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4511
4514
4512 2003-12-09 Fernando Perez <fperez@colorado.edu>
4515 2003-12-09 Fernando Perez <fperez@colorado.edu>
4513
4516
4514 * IPython/genutils.py (page): patch for the pager to work across
4517 * IPython/genutils.py (page): patch for the pager to work across
4515 various versions of Windows. By Gary Bishop.
4518 various versions of Windows. By Gary Bishop.
4516
4519
4517 2003-12-04 Fernando Perez <fperez@colorado.edu>
4520 2003-12-04 Fernando Perez <fperez@colorado.edu>
4518
4521
4519 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4522 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4520 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4523 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4521 While I tested this and it looks ok, there may still be corner
4524 While I tested this and it looks ok, there may still be corner
4522 cases I've missed.
4525 cases I've missed.
4523
4526
4524 2003-12-01 Fernando Perez <fperez@colorado.edu>
4527 2003-12-01 Fernando Perez <fperez@colorado.edu>
4525
4528
4526 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4529 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4527 where a line like 'p,q=1,2' would fail because the automagic
4530 where a line like 'p,q=1,2' would fail because the automagic
4528 system would be triggered for @p.
4531 system would be triggered for @p.
4529
4532
4530 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4533 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4531 cleanups, code unmodified.
4534 cleanups, code unmodified.
4532
4535
4533 * IPython/genutils.py (Term): added a class for IPython to handle
4536 * IPython/genutils.py (Term): added a class for IPython to handle
4534 output. In most cases it will just be a proxy for stdout/err, but
4537 output. In most cases it will just be a proxy for stdout/err, but
4535 having this allows modifications to be made for some platforms,
4538 having this allows modifications to be made for some platforms,
4536 such as handling color escapes under Windows. All of this code
4539 such as handling color escapes under Windows. All of this code
4537 was contributed by Gary Bishop, with minor modifications by me.
4540 was contributed by Gary Bishop, with minor modifications by me.
4538 The actual changes affect many files.
4541 The actual changes affect many files.
4539
4542
4540 2003-11-30 Fernando Perez <fperez@colorado.edu>
4543 2003-11-30 Fernando Perez <fperez@colorado.edu>
4541
4544
4542 * IPython/iplib.py (file_matches): new completion code, courtesy
4545 * IPython/iplib.py (file_matches): new completion code, courtesy
4543 of Jeff Collins. This enables filename completion again under
4546 of Jeff Collins. This enables filename completion again under
4544 python 2.3, which disabled it at the C level.
4547 python 2.3, which disabled it at the C level.
4545
4548
4546 2003-11-11 Fernando Perez <fperez@colorado.edu>
4549 2003-11-11 Fernando Perez <fperez@colorado.edu>
4547
4550
4548 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4551 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4549 for Numeric.array(map(...)), but often convenient.
4552 for Numeric.array(map(...)), but often convenient.
4550
4553
4551 2003-11-05 Fernando Perez <fperez@colorado.edu>
4554 2003-11-05 Fernando Perez <fperez@colorado.edu>
4552
4555
4553 * IPython/numutils.py (frange): Changed a call from int() to
4556 * IPython/numutils.py (frange): Changed a call from int() to
4554 int(round()) to prevent a problem reported with arange() in the
4557 int(round()) to prevent a problem reported with arange() in the
4555 numpy list.
4558 numpy list.
4556
4559
4557 2003-10-06 Fernando Perez <fperez@colorado.edu>
4560 2003-10-06 Fernando Perez <fperez@colorado.edu>
4558
4561
4559 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4562 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4560 prevent crashes if sys lacks an argv attribute (it happens with
4563 prevent crashes if sys lacks an argv attribute (it happens with
4561 embedded interpreters which build a bare-bones sys module).
4564 embedded interpreters which build a bare-bones sys module).
4562 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4565 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4563
4566
4564 2003-09-24 Fernando Perez <fperez@colorado.edu>
4567 2003-09-24 Fernando Perez <fperez@colorado.edu>
4565
4568
4566 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4569 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4567 to protect against poorly written user objects where __getattr__
4570 to protect against poorly written user objects where __getattr__
4568 raises exceptions other than AttributeError. Thanks to a bug
4571 raises exceptions other than AttributeError. Thanks to a bug
4569 report by Oliver Sander <osander-AT-gmx.de>.
4572 report by Oliver Sander <osander-AT-gmx.de>.
4570
4573
4571 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4574 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4572 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4575 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4573
4576
4574 2003-09-09 Fernando Perez <fperez@colorado.edu>
4577 2003-09-09 Fernando Perez <fperez@colorado.edu>
4575
4578
4576 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4579 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4577 unpacking a list whith a callable as first element would
4580 unpacking a list whith a callable as first element would
4578 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4581 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4579 Collins.
4582 Collins.
4580
4583
4581 2003-08-25 *** Released version 0.5.0
4584 2003-08-25 *** Released version 0.5.0
4582
4585
4583 2003-08-22 Fernando Perez <fperez@colorado.edu>
4586 2003-08-22 Fernando Perez <fperez@colorado.edu>
4584
4587
4585 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4588 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4586 improperly defined user exceptions. Thanks to feedback from Mark
4589 improperly defined user exceptions. Thanks to feedback from Mark
4587 Russell <mrussell-AT-verio.net>.
4590 Russell <mrussell-AT-verio.net>.
4588
4591
4589 2003-08-20 Fernando Perez <fperez@colorado.edu>
4592 2003-08-20 Fernando Perez <fperez@colorado.edu>
4590
4593
4591 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4594 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4592 printing so that it would print multi-line string forms starting
4595 printing so that it would print multi-line string forms starting
4593 with a new line. This way the formatting is better respected for
4596 with a new line. This way the formatting is better respected for
4594 objects which work hard to make nice string forms.
4597 objects which work hard to make nice string forms.
4595
4598
4596 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4599 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4597 autocall would overtake data access for objects with both
4600 autocall would overtake data access for objects with both
4598 __getitem__ and __call__.
4601 __getitem__ and __call__.
4599
4602
4600 2003-08-19 *** Released version 0.5.0-rc1
4603 2003-08-19 *** Released version 0.5.0-rc1
4601
4604
4602 2003-08-19 Fernando Perez <fperez@colorado.edu>
4605 2003-08-19 Fernando Perez <fperez@colorado.edu>
4603
4606
4604 * IPython/deep_reload.py (load_tail): single tiny change here
4607 * IPython/deep_reload.py (load_tail): single tiny change here
4605 seems to fix the long-standing bug of dreload() failing to work
4608 seems to fix the long-standing bug of dreload() failing to work
4606 for dotted names. But this module is pretty tricky, so I may have
4609 for dotted names. But this module is pretty tricky, so I may have
4607 missed some subtlety. Needs more testing!.
4610 missed some subtlety. Needs more testing!.
4608
4611
4609 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4612 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4610 exceptions which have badly implemented __str__ methods.
4613 exceptions which have badly implemented __str__ methods.
4611 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4614 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4612 which I've been getting reports about from Python 2.3 users. I
4615 which I've been getting reports about from Python 2.3 users. I
4613 wish I had a simple test case to reproduce the problem, so I could
4616 wish I had a simple test case to reproduce the problem, so I could
4614 either write a cleaner workaround or file a bug report if
4617 either write a cleaner workaround or file a bug report if
4615 necessary.
4618 necessary.
4616
4619
4617 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4620 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4618 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4621 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4619 a bug report by Tjabo Kloppenburg.
4622 a bug report by Tjabo Kloppenburg.
4620
4623
4621 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4624 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4622 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4625 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4623 seems rather unstable. Thanks to a bug report by Tjabo
4626 seems rather unstable. Thanks to a bug report by Tjabo
4624 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4627 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4625
4628
4626 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4629 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4627 this out soon because of the critical fixes in the inner loop for
4630 this out soon because of the critical fixes in the inner loop for
4628 generators.
4631 generators.
4629
4632
4630 * IPython/Magic.py (Magic.getargspec): removed. This (and
4633 * IPython/Magic.py (Magic.getargspec): removed. This (and
4631 _get_def) have been obsoleted by OInspect for a long time, I
4634 _get_def) have been obsoleted by OInspect for a long time, I
4632 hadn't noticed that they were dead code.
4635 hadn't noticed that they were dead code.
4633 (Magic._ofind): restored _ofind functionality for a few literals
4636 (Magic._ofind): restored _ofind functionality for a few literals
4634 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4637 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4635 for things like "hello".capitalize?, since that would require a
4638 for things like "hello".capitalize?, since that would require a
4636 potentially dangerous eval() again.
4639 potentially dangerous eval() again.
4637
4640
4638 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4641 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4639 logic a bit more to clean up the escapes handling and minimize the
4642 logic a bit more to clean up the escapes handling and minimize the
4640 use of _ofind to only necessary cases. The interactive 'feel' of
4643 use of _ofind to only necessary cases. The interactive 'feel' of
4641 IPython should have improved quite a bit with the changes in
4644 IPython should have improved quite a bit with the changes in
4642 _prefilter and _ofind (besides being far safer than before).
4645 _prefilter and _ofind (besides being far safer than before).
4643
4646
4644 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4647 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4645 obscure, never reported). Edit would fail to find the object to
4648 obscure, never reported). Edit would fail to find the object to
4646 edit under some circumstances.
4649 edit under some circumstances.
4647 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4650 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4648 which were causing double-calling of generators. Those eval calls
4651 which were causing double-calling of generators. Those eval calls
4649 were _very_ dangerous, since code with side effects could be
4652 were _very_ dangerous, since code with side effects could be
4650 triggered. As they say, 'eval is evil'... These were the
4653 triggered. As they say, 'eval is evil'... These were the
4651 nastiest evals in IPython. Besides, _ofind is now far simpler,
4654 nastiest evals in IPython. Besides, _ofind is now far simpler,
4652 and it should also be quite a bit faster. Its use of inspect is
4655 and it should also be quite a bit faster. Its use of inspect is
4653 also safer, so perhaps some of the inspect-related crashes I've
4656 also safer, so perhaps some of the inspect-related crashes I've
4654 seen lately with Python 2.3 might be taken care of. That will
4657 seen lately with Python 2.3 might be taken care of. That will
4655 need more testing.
4658 need more testing.
4656
4659
4657 2003-08-17 Fernando Perez <fperez@colorado.edu>
4660 2003-08-17 Fernando Perez <fperez@colorado.edu>
4658
4661
4659 * IPython/iplib.py (InteractiveShell._prefilter): significant
4662 * IPython/iplib.py (InteractiveShell._prefilter): significant
4660 simplifications to the logic for handling user escapes. Faster
4663 simplifications to the logic for handling user escapes. Faster
4661 and simpler code.
4664 and simpler code.
4662
4665
4663 2003-08-14 Fernando Perez <fperez@colorado.edu>
4666 2003-08-14 Fernando Perez <fperez@colorado.edu>
4664
4667
4665 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4668 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4666 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4669 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4667 but it should be quite a bit faster. And the recursive version
4670 but it should be quite a bit faster. And the recursive version
4668 generated O(log N) intermediate storage for all rank>1 arrays,
4671 generated O(log N) intermediate storage for all rank>1 arrays,
4669 even if they were contiguous.
4672 even if they were contiguous.
4670 (l1norm): Added this function.
4673 (l1norm): Added this function.
4671 (norm): Added this function for arbitrary norms (including
4674 (norm): Added this function for arbitrary norms (including
4672 l-infinity). l1 and l2 are still special cases for convenience
4675 l-infinity). l1 and l2 are still special cases for convenience
4673 and speed.
4676 and speed.
4674
4677
4675 2003-08-03 Fernando Perez <fperez@colorado.edu>
4678 2003-08-03 Fernando Perez <fperez@colorado.edu>
4676
4679
4677 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4680 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4678 exceptions, which now raise PendingDeprecationWarnings in Python
4681 exceptions, which now raise PendingDeprecationWarnings in Python
4679 2.3. There were some in Magic and some in Gnuplot2.
4682 2.3. There were some in Magic and some in Gnuplot2.
4680
4683
4681 2003-06-30 Fernando Perez <fperez@colorado.edu>
4684 2003-06-30 Fernando Perez <fperez@colorado.edu>
4682
4685
4683 * IPython/genutils.py (page): modified to call curses only for
4686 * IPython/genutils.py (page): modified to call curses only for
4684 terminals where TERM=='xterm'. After problems under many other
4687 terminals where TERM=='xterm'. After problems under many other
4685 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4688 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4686
4689
4687 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4690 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4688 would be triggered when readline was absent. This was just an old
4691 would be triggered when readline was absent. This was just an old
4689 debugging statement I'd forgotten to take out.
4692 debugging statement I'd forgotten to take out.
4690
4693
4691 2003-06-20 Fernando Perez <fperez@colorado.edu>
4694 2003-06-20 Fernando Perez <fperez@colorado.edu>
4692
4695
4693 * IPython/genutils.py (clock): modified to return only user time
4696 * IPython/genutils.py (clock): modified to return only user time
4694 (not counting system time), after a discussion on scipy. While
4697 (not counting system time), after a discussion on scipy. While
4695 system time may be a useful quantity occasionally, it may much
4698 system time may be a useful quantity occasionally, it may much
4696 more easily be skewed by occasional swapping or other similar
4699 more easily be skewed by occasional swapping or other similar
4697 activity.
4700 activity.
4698
4701
4699 2003-06-05 Fernando Perez <fperez@colorado.edu>
4702 2003-06-05 Fernando Perez <fperez@colorado.edu>
4700
4703
4701 * IPython/numutils.py (identity): new function, for building
4704 * IPython/numutils.py (identity): new function, for building
4702 arbitrary rank Kronecker deltas (mostly backwards compatible with
4705 arbitrary rank Kronecker deltas (mostly backwards compatible with
4703 Numeric.identity)
4706 Numeric.identity)
4704
4707
4705 2003-06-03 Fernando Perez <fperez@colorado.edu>
4708 2003-06-03 Fernando Perez <fperez@colorado.edu>
4706
4709
4707 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4710 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4708 arguments passed to magics with spaces, to allow trailing '\' to
4711 arguments passed to magics with spaces, to allow trailing '\' to
4709 work normally (mainly for Windows users).
4712 work normally (mainly for Windows users).
4710
4713
4711 2003-05-29 Fernando Perez <fperez@colorado.edu>
4714 2003-05-29 Fernando Perez <fperez@colorado.edu>
4712
4715
4713 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4716 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4714 instead of pydoc.help. This fixes a bizarre behavior where
4717 instead of pydoc.help. This fixes a bizarre behavior where
4715 printing '%s' % locals() would trigger the help system. Now
4718 printing '%s' % locals() would trigger the help system. Now
4716 ipython behaves like normal python does.
4719 ipython behaves like normal python does.
4717
4720
4718 Note that if one does 'from pydoc import help', the bizarre
4721 Note that if one does 'from pydoc import help', the bizarre
4719 behavior returns, but this will also happen in normal python, so
4722 behavior returns, but this will also happen in normal python, so
4720 it's not an ipython bug anymore (it has to do with how pydoc.help
4723 it's not an ipython bug anymore (it has to do with how pydoc.help
4721 is implemented).
4724 is implemented).
4722
4725
4723 2003-05-22 Fernando Perez <fperez@colorado.edu>
4726 2003-05-22 Fernando Perez <fperez@colorado.edu>
4724
4727
4725 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4728 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4726 return [] instead of None when nothing matches, also match to end
4729 return [] instead of None when nothing matches, also match to end
4727 of line. Patch by Gary Bishop.
4730 of line. Patch by Gary Bishop.
4728
4731
4729 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4732 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4730 protection as before, for files passed on the command line. This
4733 protection as before, for files passed on the command line. This
4731 prevents the CrashHandler from kicking in if user files call into
4734 prevents the CrashHandler from kicking in if user files call into
4732 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4735 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4733 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4736 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4734
4737
4735 2003-05-20 *** Released version 0.4.0
4738 2003-05-20 *** Released version 0.4.0
4736
4739
4737 2003-05-20 Fernando Perez <fperez@colorado.edu>
4740 2003-05-20 Fernando Perez <fperez@colorado.edu>
4738
4741
4739 * setup.py: added support for manpages. It's a bit hackish b/c of
4742 * setup.py: added support for manpages. It's a bit hackish b/c of
4740 a bug in the way the bdist_rpm distutils target handles gzipped
4743 a bug in the way the bdist_rpm distutils target handles gzipped
4741 manpages, but it works. After a patch by Jack.
4744 manpages, but it works. After a patch by Jack.
4742
4745
4743 2003-05-19 Fernando Perez <fperez@colorado.edu>
4746 2003-05-19 Fernando Perez <fperez@colorado.edu>
4744
4747
4745 * IPython/numutils.py: added a mockup of the kinds module, since
4748 * IPython/numutils.py: added a mockup of the kinds module, since
4746 it was recently removed from Numeric. This way, numutils will
4749 it was recently removed from Numeric. This way, numutils will
4747 work for all users even if they are missing kinds.
4750 work for all users even if they are missing kinds.
4748
4751
4749 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4752 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4750 failure, which can occur with SWIG-wrapped extensions. After a
4753 failure, which can occur with SWIG-wrapped extensions. After a
4751 crash report from Prabhu.
4754 crash report from Prabhu.
4752
4755
4753 2003-05-16 Fernando Perez <fperez@colorado.edu>
4756 2003-05-16 Fernando Perez <fperez@colorado.edu>
4754
4757
4755 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4758 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4756 protect ipython from user code which may call directly
4759 protect ipython from user code which may call directly
4757 sys.excepthook (this looks like an ipython crash to the user, even
4760 sys.excepthook (this looks like an ipython crash to the user, even
4758 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4761 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4759 This is especially important to help users of WxWindows, but may
4762 This is especially important to help users of WxWindows, but may
4760 also be useful in other cases.
4763 also be useful in other cases.
4761
4764
4762 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4765 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4763 an optional tb_offset to be specified, and to preserve exception
4766 an optional tb_offset to be specified, and to preserve exception
4764 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4767 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4765
4768
4766 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4769 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4767
4770
4768 2003-05-15 Fernando Perez <fperez@colorado.edu>
4771 2003-05-15 Fernando Perez <fperez@colorado.edu>
4769
4772
4770 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4773 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4771 installing for a new user under Windows.
4774 installing for a new user under Windows.
4772
4775
4773 2003-05-12 Fernando Perez <fperez@colorado.edu>
4776 2003-05-12 Fernando Perez <fperez@colorado.edu>
4774
4777
4775 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4778 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4776 handler for Emacs comint-based lines. Currently it doesn't do
4779 handler for Emacs comint-based lines. Currently it doesn't do
4777 much (but importantly, it doesn't update the history cache). In
4780 much (but importantly, it doesn't update the history cache). In
4778 the future it may be expanded if Alex needs more functionality
4781 the future it may be expanded if Alex needs more functionality
4779 there.
4782 there.
4780
4783
4781 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4784 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4782 info to crash reports.
4785 info to crash reports.
4783
4786
4784 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4787 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4785 just like Python's -c. Also fixed crash with invalid -color
4788 just like Python's -c. Also fixed crash with invalid -color
4786 option value at startup. Thanks to Will French
4789 option value at startup. Thanks to Will French
4787 <wfrench-AT-bestweb.net> for the bug report.
4790 <wfrench-AT-bestweb.net> for the bug report.
4788
4791
4789 2003-05-09 Fernando Perez <fperez@colorado.edu>
4792 2003-05-09 Fernando Perez <fperez@colorado.edu>
4790
4793
4791 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4794 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4792 to EvalDict (it's a mapping, after all) and simplified its code
4795 to EvalDict (it's a mapping, after all) and simplified its code
4793 quite a bit, after a nice discussion on c.l.py where Gustavo
4796 quite a bit, after a nice discussion on c.l.py where Gustavo
4794 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4797 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4795
4798
4796 2003-04-30 Fernando Perez <fperez@colorado.edu>
4799 2003-04-30 Fernando Perez <fperez@colorado.edu>
4797
4800
4798 * IPython/genutils.py (timings_out): modified it to reduce its
4801 * IPython/genutils.py (timings_out): modified it to reduce its
4799 overhead in the common reps==1 case.
4802 overhead in the common reps==1 case.
4800
4803
4801 2003-04-29 Fernando Perez <fperez@colorado.edu>
4804 2003-04-29 Fernando Perez <fperez@colorado.edu>
4802
4805
4803 * IPython/genutils.py (timings_out): Modified to use the resource
4806 * IPython/genutils.py (timings_out): Modified to use the resource
4804 module, which avoids the wraparound problems of time.clock().
4807 module, which avoids the wraparound problems of time.clock().
4805
4808
4806 2003-04-17 *** Released version 0.2.15pre4
4809 2003-04-17 *** Released version 0.2.15pre4
4807
4810
4808 2003-04-17 Fernando Perez <fperez@colorado.edu>
4811 2003-04-17 Fernando Perez <fperez@colorado.edu>
4809
4812
4810 * setup.py (scriptfiles): Split windows-specific stuff over to a
4813 * setup.py (scriptfiles): Split windows-specific stuff over to a
4811 separate file, in an attempt to have a Windows GUI installer.
4814 separate file, in an attempt to have a Windows GUI installer.
4812 That didn't work, but part of the groundwork is done.
4815 That didn't work, but part of the groundwork is done.
4813
4816
4814 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4817 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4815 indent/unindent with 4 spaces. Particularly useful in combination
4818 indent/unindent with 4 spaces. Particularly useful in combination
4816 with the new auto-indent option.
4819 with the new auto-indent option.
4817
4820
4818 2003-04-16 Fernando Perez <fperez@colorado.edu>
4821 2003-04-16 Fernando Perez <fperez@colorado.edu>
4819
4822
4820 * IPython/Magic.py: various replacements of self.rc for
4823 * IPython/Magic.py: various replacements of self.rc for
4821 self.shell.rc. A lot more remains to be done to fully disentangle
4824 self.shell.rc. A lot more remains to be done to fully disentangle
4822 this class from the main Shell class.
4825 this class from the main Shell class.
4823
4826
4824 * IPython/GnuplotRuntime.py: added checks for mouse support so
4827 * IPython/GnuplotRuntime.py: added checks for mouse support so
4825 that we don't try to enable it if the current gnuplot doesn't
4828 that we don't try to enable it if the current gnuplot doesn't
4826 really support it. Also added checks so that we don't try to
4829 really support it. Also added checks so that we don't try to
4827 enable persist under Windows (where Gnuplot doesn't recognize the
4830 enable persist under Windows (where Gnuplot doesn't recognize the
4828 option).
4831 option).
4829
4832
4830 * IPython/iplib.py (InteractiveShell.interact): Added optional
4833 * IPython/iplib.py (InteractiveShell.interact): Added optional
4831 auto-indenting code, after a patch by King C. Shu
4834 auto-indenting code, after a patch by King C. Shu
4832 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4835 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4833 get along well with pasting indented code. If I ever figure out
4836 get along well with pasting indented code. If I ever figure out
4834 how to make that part go well, it will become on by default.
4837 how to make that part go well, it will become on by default.
4835
4838
4836 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4839 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4837 crash ipython if there was an unmatched '%' in the user's prompt
4840 crash ipython if there was an unmatched '%' in the user's prompt
4838 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4841 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4839
4842
4840 * IPython/iplib.py (InteractiveShell.interact): removed the
4843 * IPython/iplib.py (InteractiveShell.interact): removed the
4841 ability to ask the user whether he wants to crash or not at the
4844 ability to ask the user whether he wants to crash or not at the
4842 'last line' exception handler. Calling functions at that point
4845 'last line' exception handler. Calling functions at that point
4843 changes the stack, and the error reports would have incorrect
4846 changes the stack, and the error reports would have incorrect
4844 tracebacks.
4847 tracebacks.
4845
4848
4846 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4849 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4847 pass through a peger a pretty-printed form of any object. After a
4850 pass through a peger a pretty-printed form of any object. After a
4848 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4851 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4849
4852
4850 2003-04-14 Fernando Perez <fperez@colorado.edu>
4853 2003-04-14 Fernando Perez <fperez@colorado.edu>
4851
4854
4852 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4855 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4853 all files in ~ would be modified at first install (instead of
4856 all files in ~ would be modified at first install (instead of
4854 ~/.ipython). This could be potentially disastrous, as the
4857 ~/.ipython). This could be potentially disastrous, as the
4855 modification (make line-endings native) could damage binary files.
4858 modification (make line-endings native) could damage binary files.
4856
4859
4857 2003-04-10 Fernando Perez <fperez@colorado.edu>
4860 2003-04-10 Fernando Perez <fperez@colorado.edu>
4858
4861
4859 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4862 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4860 handle only lines which are invalid python. This now means that
4863 handle only lines which are invalid python. This now means that
4861 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4864 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4862 for the bug report.
4865 for the bug report.
4863
4866
4864 2003-04-01 Fernando Perez <fperez@colorado.edu>
4867 2003-04-01 Fernando Perez <fperez@colorado.edu>
4865
4868
4866 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4869 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4867 where failing to set sys.last_traceback would crash pdb.pm().
4870 where failing to set sys.last_traceback would crash pdb.pm().
4868 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4871 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4869 report.
4872 report.
4870
4873
4871 2003-03-25 Fernando Perez <fperez@colorado.edu>
4874 2003-03-25 Fernando Perez <fperez@colorado.edu>
4872
4875
4873 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4876 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4874 before printing it (it had a lot of spurious blank lines at the
4877 before printing it (it had a lot of spurious blank lines at the
4875 end).
4878 end).
4876
4879
4877 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4880 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4878 output would be sent 21 times! Obviously people don't use this
4881 output would be sent 21 times! Obviously people don't use this
4879 too often, or I would have heard about it.
4882 too often, or I would have heard about it.
4880
4883
4881 2003-03-24 Fernando Perez <fperez@colorado.edu>
4884 2003-03-24 Fernando Perez <fperez@colorado.edu>
4882
4885
4883 * setup.py (scriptfiles): renamed the data_files parameter from
4886 * setup.py (scriptfiles): renamed the data_files parameter from
4884 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4887 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4885 for the patch.
4888 for the patch.
4886
4889
4887 2003-03-20 Fernando Perez <fperez@colorado.edu>
4890 2003-03-20 Fernando Perez <fperez@colorado.edu>
4888
4891
4889 * IPython/genutils.py (error): added error() and fatal()
4892 * IPython/genutils.py (error): added error() and fatal()
4890 functions.
4893 functions.
4891
4894
4892 2003-03-18 *** Released version 0.2.15pre3
4895 2003-03-18 *** Released version 0.2.15pre3
4893
4896
4894 2003-03-18 Fernando Perez <fperez@colorado.edu>
4897 2003-03-18 Fernando Perez <fperez@colorado.edu>
4895
4898
4896 * setupext/install_data_ext.py
4899 * setupext/install_data_ext.py
4897 (install_data_ext.initialize_options): Class contributed by Jack
4900 (install_data_ext.initialize_options): Class contributed by Jack
4898 Moffit for fixing the old distutils hack. He is sending this to
4901 Moffit for fixing the old distutils hack. He is sending this to
4899 the distutils folks so in the future we may not need it as a
4902 the distutils folks so in the future we may not need it as a
4900 private fix.
4903 private fix.
4901
4904
4902 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4905 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4903 changes for Debian packaging. See his patch for full details.
4906 changes for Debian packaging. See his patch for full details.
4904 The old distutils hack of making the ipythonrc* files carry a
4907 The old distutils hack of making the ipythonrc* files carry a
4905 bogus .py extension is gone, at last. Examples were moved to a
4908 bogus .py extension is gone, at last. Examples were moved to a
4906 separate subdir under doc/, and the separate executable scripts
4909 separate subdir under doc/, and the separate executable scripts
4907 now live in their own directory. Overall a great cleanup. The
4910 now live in their own directory. Overall a great cleanup. The
4908 manual was updated to use the new files, and setup.py has been
4911 manual was updated to use the new files, and setup.py has been
4909 fixed for this setup.
4912 fixed for this setup.
4910
4913
4911 * IPython/PyColorize.py (Parser.usage): made non-executable and
4914 * IPython/PyColorize.py (Parser.usage): made non-executable and
4912 created a pycolor wrapper around it to be included as a script.
4915 created a pycolor wrapper around it to be included as a script.
4913
4916
4914 2003-03-12 *** Released version 0.2.15pre2
4917 2003-03-12 *** Released version 0.2.15pre2
4915
4918
4916 2003-03-12 Fernando Perez <fperez@colorado.edu>
4919 2003-03-12 Fernando Perez <fperez@colorado.edu>
4917
4920
4918 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4921 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4919 long-standing problem with garbage characters in some terminals.
4922 long-standing problem with garbage characters in some terminals.
4920 The issue was really that the \001 and \002 escapes must _only_ be
4923 The issue was really that the \001 and \002 escapes must _only_ be
4921 passed to input prompts (which call readline), but _never_ to
4924 passed to input prompts (which call readline), but _never_ to
4922 normal text to be printed on screen. I changed ColorANSI to have
4925 normal text to be printed on screen. I changed ColorANSI to have
4923 two classes: TermColors and InputTermColors, each with the
4926 two classes: TermColors and InputTermColors, each with the
4924 appropriate escapes for input prompts or normal text. The code in
4927 appropriate escapes for input prompts or normal text. The code in
4925 Prompts.py got slightly more complicated, but this very old and
4928 Prompts.py got slightly more complicated, but this very old and
4926 annoying bug is finally fixed.
4929 annoying bug is finally fixed.
4927
4930
4928 All the credit for nailing down the real origin of this problem
4931 All the credit for nailing down the real origin of this problem
4929 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4932 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4930 *Many* thanks to him for spending quite a bit of effort on this.
4933 *Many* thanks to him for spending quite a bit of effort on this.
4931
4934
4932 2003-03-05 *** Released version 0.2.15pre1
4935 2003-03-05 *** Released version 0.2.15pre1
4933
4936
4934 2003-03-03 Fernando Perez <fperez@colorado.edu>
4937 2003-03-03 Fernando Perez <fperez@colorado.edu>
4935
4938
4936 * IPython/FakeModule.py: Moved the former _FakeModule to a
4939 * IPython/FakeModule.py: Moved the former _FakeModule to a
4937 separate file, because it's also needed by Magic (to fix a similar
4940 separate file, because it's also needed by Magic (to fix a similar
4938 pickle-related issue in @run).
4941 pickle-related issue in @run).
4939
4942
4940 2003-03-02 Fernando Perez <fperez@colorado.edu>
4943 2003-03-02 Fernando Perez <fperez@colorado.edu>
4941
4944
4942 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4945 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4943 the autocall option at runtime.
4946 the autocall option at runtime.
4944 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4947 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4945 across Magic.py to start separating Magic from InteractiveShell.
4948 across Magic.py to start separating Magic from InteractiveShell.
4946 (Magic._ofind): Fixed to return proper namespace for dotted
4949 (Magic._ofind): Fixed to return proper namespace for dotted
4947 names. Before, a dotted name would always return 'not currently
4950 names. Before, a dotted name would always return 'not currently
4948 defined', because it would find the 'parent'. s.x would be found,
4951 defined', because it would find the 'parent'. s.x would be found,
4949 but since 'x' isn't defined by itself, it would get confused.
4952 but since 'x' isn't defined by itself, it would get confused.
4950 (Magic.magic_run): Fixed pickling problems reported by Ralf
4953 (Magic.magic_run): Fixed pickling problems reported by Ralf
4951 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4954 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4952 that I'd used when Mike Heeter reported similar issues at the
4955 that I'd used when Mike Heeter reported similar issues at the
4953 top-level, but now for @run. It boils down to injecting the
4956 top-level, but now for @run. It boils down to injecting the
4954 namespace where code is being executed with something that looks
4957 namespace where code is being executed with something that looks
4955 enough like a module to fool pickle.dump(). Since a pickle stores
4958 enough like a module to fool pickle.dump(). Since a pickle stores
4956 a named reference to the importing module, we need this for
4959 a named reference to the importing module, we need this for
4957 pickles to save something sensible.
4960 pickles to save something sensible.
4958
4961
4959 * IPython/ipmaker.py (make_IPython): added an autocall option.
4962 * IPython/ipmaker.py (make_IPython): added an autocall option.
4960
4963
4961 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4964 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4962 the auto-eval code. Now autocalling is an option, and the code is
4965 the auto-eval code. Now autocalling is an option, and the code is
4963 also vastly safer. There is no more eval() involved at all.
4966 also vastly safer. There is no more eval() involved at all.
4964
4967
4965 2003-03-01 Fernando Perez <fperez@colorado.edu>
4968 2003-03-01 Fernando Perez <fperez@colorado.edu>
4966
4969
4967 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4970 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4968 dict with named keys instead of a tuple.
4971 dict with named keys instead of a tuple.
4969
4972
4970 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4973 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4971
4974
4972 * setup.py (make_shortcut): Fixed message about directories
4975 * setup.py (make_shortcut): Fixed message about directories
4973 created during Windows installation (the directories were ok, just
4976 created during Windows installation (the directories were ok, just
4974 the printed message was misleading). Thanks to Chris Liechti
4977 the printed message was misleading). Thanks to Chris Liechti
4975 <cliechti-AT-gmx.net> for the heads up.
4978 <cliechti-AT-gmx.net> for the heads up.
4976
4979
4977 2003-02-21 Fernando Perez <fperez@colorado.edu>
4980 2003-02-21 Fernando Perez <fperez@colorado.edu>
4978
4981
4979 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4982 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4980 of ValueError exception when checking for auto-execution. This
4983 of ValueError exception when checking for auto-execution. This
4981 one is raised by things like Numeric arrays arr.flat when the
4984 one is raised by things like Numeric arrays arr.flat when the
4982 array is non-contiguous.
4985 array is non-contiguous.
4983
4986
4984 2003-01-31 Fernando Perez <fperez@colorado.edu>
4987 2003-01-31 Fernando Perez <fperez@colorado.edu>
4985
4988
4986 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4989 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4987 not return any value at all (even though the command would get
4990 not return any value at all (even though the command would get
4988 executed).
4991 executed).
4989 (xsys): Flush stdout right after printing the command to ensure
4992 (xsys): Flush stdout right after printing the command to ensure
4990 proper ordering of commands and command output in the total
4993 proper ordering of commands and command output in the total
4991 output.
4994 output.
4992 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4995 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4993 system/getoutput as defaults. The old ones are kept for
4996 system/getoutput as defaults. The old ones are kept for
4994 compatibility reasons, so no code which uses this library needs
4997 compatibility reasons, so no code which uses this library needs
4995 changing.
4998 changing.
4996
4999
4997 2003-01-27 *** Released version 0.2.14
5000 2003-01-27 *** Released version 0.2.14
4998
5001
4999 2003-01-25 Fernando Perez <fperez@colorado.edu>
5002 2003-01-25 Fernando Perez <fperez@colorado.edu>
5000
5003
5001 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5004 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5002 functions defined in previous edit sessions could not be re-edited
5005 functions defined in previous edit sessions could not be re-edited
5003 (because the temp files were immediately removed). Now temp files
5006 (because the temp files were immediately removed). Now temp files
5004 are removed only at IPython's exit.
5007 are removed only at IPython's exit.
5005 (Magic.magic_run): Improved @run to perform shell-like expansions
5008 (Magic.magic_run): Improved @run to perform shell-like expansions
5006 on its arguments (~users and $VARS). With this, @run becomes more
5009 on its arguments (~users and $VARS). With this, @run becomes more
5007 like a normal command-line.
5010 like a normal command-line.
5008
5011
5009 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5012 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5010 bugs related to embedding and cleaned up that code. A fairly
5013 bugs related to embedding and cleaned up that code. A fairly
5011 important one was the impossibility to access the global namespace
5014 important one was the impossibility to access the global namespace
5012 through the embedded IPython (only local variables were visible).
5015 through the embedded IPython (only local variables were visible).
5013
5016
5014 2003-01-14 Fernando Perez <fperez@colorado.edu>
5017 2003-01-14 Fernando Perez <fperez@colorado.edu>
5015
5018
5016 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5019 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5017 auto-calling to be a bit more conservative. Now it doesn't get
5020 auto-calling to be a bit more conservative. Now it doesn't get
5018 triggered if any of '!=()<>' are in the rest of the input line, to
5021 triggered if any of '!=()<>' are in the rest of the input line, to
5019 allow comparing callables. Thanks to Alex for the heads up.
5022 allow comparing callables. Thanks to Alex for the heads up.
5020
5023
5021 2003-01-07 Fernando Perez <fperez@colorado.edu>
5024 2003-01-07 Fernando Perez <fperez@colorado.edu>
5022
5025
5023 * IPython/genutils.py (page): fixed estimation of the number of
5026 * IPython/genutils.py (page): fixed estimation of the number of
5024 lines in a string to be paged to simply count newlines. This
5027 lines in a string to be paged to simply count newlines. This
5025 prevents over-guessing due to embedded escape sequences. A better
5028 prevents over-guessing due to embedded escape sequences. A better
5026 long-term solution would involve stripping out the control chars
5029 long-term solution would involve stripping out the control chars
5027 for the count, but it's potentially so expensive I just don't
5030 for the count, but it's potentially so expensive I just don't
5028 think it's worth doing.
5031 think it's worth doing.
5029
5032
5030 2002-12-19 *** Released version 0.2.14pre50
5033 2002-12-19 *** Released version 0.2.14pre50
5031
5034
5032 2002-12-19 Fernando Perez <fperez@colorado.edu>
5035 2002-12-19 Fernando Perez <fperez@colorado.edu>
5033
5036
5034 * tools/release (version): Changed release scripts to inform
5037 * tools/release (version): Changed release scripts to inform
5035 Andrea and build a NEWS file with a list of recent changes.
5038 Andrea and build a NEWS file with a list of recent changes.
5036
5039
5037 * IPython/ColorANSI.py (__all__): changed terminal detection
5040 * IPython/ColorANSI.py (__all__): changed terminal detection
5038 code. Seems to work better for xterms without breaking
5041 code. Seems to work better for xterms without breaking
5039 konsole. Will need more testing to determine if WinXP and Mac OSX
5042 konsole. Will need more testing to determine if WinXP and Mac OSX
5040 also work ok.
5043 also work ok.
5041
5044
5042 2002-12-18 *** Released version 0.2.14pre49
5045 2002-12-18 *** Released version 0.2.14pre49
5043
5046
5044 2002-12-18 Fernando Perez <fperez@colorado.edu>
5047 2002-12-18 Fernando Perez <fperez@colorado.edu>
5045
5048
5046 * Docs: added new info about Mac OSX, from Andrea.
5049 * Docs: added new info about Mac OSX, from Andrea.
5047
5050
5048 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5051 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5049 allow direct plotting of python strings whose format is the same
5052 allow direct plotting of python strings whose format is the same
5050 of gnuplot data files.
5053 of gnuplot data files.
5051
5054
5052 2002-12-16 Fernando Perez <fperez@colorado.edu>
5055 2002-12-16 Fernando Perez <fperez@colorado.edu>
5053
5056
5054 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5057 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5055 value of exit question to be acknowledged.
5058 value of exit question to be acknowledged.
5056
5059
5057 2002-12-03 Fernando Perez <fperez@colorado.edu>
5060 2002-12-03 Fernando Perez <fperez@colorado.edu>
5058
5061
5059 * IPython/ipmaker.py: removed generators, which had been added
5062 * IPython/ipmaker.py: removed generators, which had been added
5060 by mistake in an earlier debugging run. This was causing trouble
5063 by mistake in an earlier debugging run. This was causing trouble
5061 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5064 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5062 for pointing this out.
5065 for pointing this out.
5063
5066
5064 2002-11-17 Fernando Perez <fperez@colorado.edu>
5067 2002-11-17 Fernando Perez <fperez@colorado.edu>
5065
5068
5066 * Manual: updated the Gnuplot section.
5069 * Manual: updated the Gnuplot section.
5067
5070
5068 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5071 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5069 a much better split of what goes in Runtime and what goes in
5072 a much better split of what goes in Runtime and what goes in
5070 Interactive.
5073 Interactive.
5071
5074
5072 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5075 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5073 being imported from iplib.
5076 being imported from iplib.
5074
5077
5075 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5078 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5076 for command-passing. Now the global Gnuplot instance is called
5079 for command-passing. Now the global Gnuplot instance is called
5077 'gp' instead of 'g', which was really a far too fragile and
5080 'gp' instead of 'g', which was really a far too fragile and
5078 common name.
5081 common name.
5079
5082
5080 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5083 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5081 bounding boxes generated by Gnuplot for square plots.
5084 bounding boxes generated by Gnuplot for square plots.
5082
5085
5083 * IPython/genutils.py (popkey): new function added. I should
5086 * IPython/genutils.py (popkey): new function added. I should
5084 suggest this on c.l.py as a dict method, it seems useful.
5087 suggest this on c.l.py as a dict method, it seems useful.
5085
5088
5086 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5089 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5087 to transparently handle PostScript generation. MUCH better than
5090 to transparently handle PostScript generation. MUCH better than
5088 the previous plot_eps/replot_eps (which I removed now). The code
5091 the previous plot_eps/replot_eps (which I removed now). The code
5089 is also fairly clean and well documented now (including
5092 is also fairly clean and well documented now (including
5090 docstrings).
5093 docstrings).
5091
5094
5092 2002-11-13 Fernando Perez <fperez@colorado.edu>
5095 2002-11-13 Fernando Perez <fperez@colorado.edu>
5093
5096
5094 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5097 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5095 (inconsistent with options).
5098 (inconsistent with options).
5096
5099
5097 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5100 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5098 manually disabled, I don't know why. Fixed it.
5101 manually disabled, I don't know why. Fixed it.
5099 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5102 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5100 eps output.
5103 eps output.
5101
5104
5102 2002-11-12 Fernando Perez <fperez@colorado.edu>
5105 2002-11-12 Fernando Perez <fperez@colorado.edu>
5103
5106
5104 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5107 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5105 don't propagate up to caller. Fixes crash reported by François
5108 don't propagate up to caller. Fixes crash reported by François
5106 Pinard.
5109 Pinard.
5107
5110
5108 2002-11-09 Fernando Perez <fperez@colorado.edu>
5111 2002-11-09 Fernando Perez <fperez@colorado.edu>
5109
5112
5110 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5113 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5111 history file for new users.
5114 history file for new users.
5112 (make_IPython): fixed bug where initial install would leave the
5115 (make_IPython): fixed bug where initial install would leave the
5113 user running in the .ipython dir.
5116 user running in the .ipython dir.
5114 (make_IPython): fixed bug where config dir .ipython would be
5117 (make_IPython): fixed bug where config dir .ipython would be
5115 created regardless of the given -ipythondir option. Thanks to Cory
5118 created regardless of the given -ipythondir option. Thanks to Cory
5116 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5119 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5117
5120
5118 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5121 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5119 type confirmations. Will need to use it in all of IPython's code
5122 type confirmations. Will need to use it in all of IPython's code
5120 consistently.
5123 consistently.
5121
5124
5122 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5125 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5123 context to print 31 lines instead of the default 5. This will make
5126 context to print 31 lines instead of the default 5. This will make
5124 the crash reports extremely detailed in case the problem is in
5127 the crash reports extremely detailed in case the problem is in
5125 libraries I don't have access to.
5128 libraries I don't have access to.
5126
5129
5127 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5130 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5128 line of defense' code to still crash, but giving users fair
5131 line of defense' code to still crash, but giving users fair
5129 warning. I don't want internal errors to go unreported: if there's
5132 warning. I don't want internal errors to go unreported: if there's
5130 an internal problem, IPython should crash and generate a full
5133 an internal problem, IPython should crash and generate a full
5131 report.
5134 report.
5132
5135
5133 2002-11-08 Fernando Perez <fperez@colorado.edu>
5136 2002-11-08 Fernando Perez <fperez@colorado.edu>
5134
5137
5135 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5138 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5136 otherwise uncaught exceptions which can appear if people set
5139 otherwise uncaught exceptions which can appear if people set
5137 sys.stdout to something badly broken. Thanks to a crash report
5140 sys.stdout to something badly broken. Thanks to a crash report
5138 from henni-AT-mail.brainbot.com.
5141 from henni-AT-mail.brainbot.com.
5139
5142
5140 2002-11-04 Fernando Perez <fperez@colorado.edu>
5143 2002-11-04 Fernando Perez <fperez@colorado.edu>
5141
5144
5142 * IPython/iplib.py (InteractiveShell.interact): added
5145 * IPython/iplib.py (InteractiveShell.interact): added
5143 __IPYTHON__active to the builtins. It's a flag which goes on when
5146 __IPYTHON__active to the builtins. It's a flag which goes on when
5144 the interaction starts and goes off again when it stops. This
5147 the interaction starts and goes off again when it stops. This
5145 allows embedding code to detect being inside IPython. Before this
5148 allows embedding code to detect being inside IPython. Before this
5146 was done via __IPYTHON__, but that only shows that an IPython
5149 was done via __IPYTHON__, but that only shows that an IPython
5147 instance has been created.
5150 instance has been created.
5148
5151
5149 * IPython/Magic.py (Magic.magic_env): I realized that in a
5152 * IPython/Magic.py (Magic.magic_env): I realized that in a
5150 UserDict, instance.data holds the data as a normal dict. So I
5153 UserDict, instance.data holds the data as a normal dict. So I
5151 modified @env to return os.environ.data instead of rebuilding a
5154 modified @env to return os.environ.data instead of rebuilding a
5152 dict by hand.
5155 dict by hand.
5153
5156
5154 2002-11-02 Fernando Perez <fperez@colorado.edu>
5157 2002-11-02 Fernando Perez <fperez@colorado.edu>
5155
5158
5156 * IPython/genutils.py (warn): changed so that level 1 prints no
5159 * IPython/genutils.py (warn): changed so that level 1 prints no
5157 header. Level 2 is now the default (with 'WARNING' header, as
5160 header. Level 2 is now the default (with 'WARNING' header, as
5158 before). I think I tracked all places where changes were needed in
5161 before). I think I tracked all places where changes were needed in
5159 IPython, but outside code using the old level numbering may have
5162 IPython, but outside code using the old level numbering may have
5160 broken.
5163 broken.
5161
5164
5162 * IPython/iplib.py (InteractiveShell.runcode): added this to
5165 * IPython/iplib.py (InteractiveShell.runcode): added this to
5163 handle the tracebacks in SystemExit traps correctly. The previous
5166 handle the tracebacks in SystemExit traps correctly. The previous
5164 code (through interact) was printing more of the stack than
5167 code (through interact) was printing more of the stack than
5165 necessary, showing IPython internal code to the user.
5168 necessary, showing IPython internal code to the user.
5166
5169
5167 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5170 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5168 default. Now that the default at the confirmation prompt is yes,
5171 default. Now that the default at the confirmation prompt is yes,
5169 it's not so intrusive. François' argument that ipython sessions
5172 it's not so intrusive. François' argument that ipython sessions
5170 tend to be complex enough not to lose them from an accidental C-d,
5173 tend to be complex enough not to lose them from an accidental C-d,
5171 is a valid one.
5174 is a valid one.
5172
5175
5173 * IPython/iplib.py (InteractiveShell.interact): added a
5176 * IPython/iplib.py (InteractiveShell.interact): added a
5174 showtraceback() call to the SystemExit trap, and modified the exit
5177 showtraceback() call to the SystemExit trap, and modified the exit
5175 confirmation to have yes as the default.
5178 confirmation to have yes as the default.
5176
5179
5177 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5180 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5178 this file. It's been gone from the code for a long time, this was
5181 this file. It's been gone from the code for a long time, this was
5179 simply leftover junk.
5182 simply leftover junk.
5180
5183
5181 2002-11-01 Fernando Perez <fperez@colorado.edu>
5184 2002-11-01 Fernando Perez <fperez@colorado.edu>
5182
5185
5183 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5186 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5184 added. If set, IPython now traps EOF and asks for
5187 added. If set, IPython now traps EOF and asks for
5185 confirmation. After a request by François Pinard.
5188 confirmation. After a request by François Pinard.
5186
5189
5187 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5190 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5188 of @abort, and with a new (better) mechanism for handling the
5191 of @abort, and with a new (better) mechanism for handling the
5189 exceptions.
5192 exceptions.
5190
5193
5191 2002-10-27 Fernando Perez <fperez@colorado.edu>
5194 2002-10-27 Fernando Perez <fperez@colorado.edu>
5192
5195
5193 * IPython/usage.py (__doc__): updated the --help information and
5196 * IPython/usage.py (__doc__): updated the --help information and
5194 the ipythonrc file to indicate that -log generates
5197 the ipythonrc file to indicate that -log generates
5195 ./ipython.log. Also fixed the corresponding info in @logstart.
5198 ./ipython.log. Also fixed the corresponding info in @logstart.
5196 This and several other fixes in the manuals thanks to reports by
5199 This and several other fixes in the manuals thanks to reports by
5197 François Pinard <pinard-AT-iro.umontreal.ca>.
5200 François Pinard <pinard-AT-iro.umontreal.ca>.
5198
5201
5199 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5202 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5200 refer to @logstart (instead of @log, which doesn't exist).
5203 refer to @logstart (instead of @log, which doesn't exist).
5201
5204
5202 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5205 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5203 AttributeError crash. Thanks to Christopher Armstrong
5206 AttributeError crash. Thanks to Christopher Armstrong
5204 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5207 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5205 introduced recently (in 0.2.14pre37) with the fix to the eval
5208 introduced recently (in 0.2.14pre37) with the fix to the eval
5206 problem mentioned below.
5209 problem mentioned below.
5207
5210
5208 2002-10-17 Fernando Perez <fperez@colorado.edu>
5211 2002-10-17 Fernando Perez <fperez@colorado.edu>
5209
5212
5210 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5213 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5211 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5214 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5212
5215
5213 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5216 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5214 this function to fix a problem reported by Alex Schmolck. He saw
5217 this function to fix a problem reported by Alex Schmolck. He saw
5215 it with list comprehensions and generators, which were getting
5218 it with list comprehensions and generators, which were getting
5216 called twice. The real problem was an 'eval' call in testing for
5219 called twice. The real problem was an 'eval' call in testing for
5217 automagic which was evaluating the input line silently.
5220 automagic which was evaluating the input line silently.
5218
5221
5219 This is a potentially very nasty bug, if the input has side
5222 This is a potentially very nasty bug, if the input has side
5220 effects which must not be repeated. The code is much cleaner now,
5223 effects which must not be repeated. The code is much cleaner now,
5221 without any blanket 'except' left and with a regexp test for
5224 without any blanket 'except' left and with a regexp test for
5222 actual function names.
5225 actual function names.
5223
5226
5224 But an eval remains, which I'm not fully comfortable with. I just
5227 But an eval remains, which I'm not fully comfortable with. I just
5225 don't know how to find out if an expression could be a callable in
5228 don't know how to find out if an expression could be a callable in
5226 the user's namespace without doing an eval on the string. However
5229 the user's namespace without doing an eval on the string. However
5227 that string is now much more strictly checked so that no code
5230 that string is now much more strictly checked so that no code
5228 slips by, so the eval should only happen for things that can
5231 slips by, so the eval should only happen for things that can
5229 really be only function/method names.
5232 really be only function/method names.
5230
5233
5231 2002-10-15 Fernando Perez <fperez@colorado.edu>
5234 2002-10-15 Fernando Perez <fperez@colorado.edu>
5232
5235
5233 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5236 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5234 OSX information to main manual, removed README_Mac_OSX file from
5237 OSX information to main manual, removed README_Mac_OSX file from
5235 distribution. Also updated credits for recent additions.
5238 distribution. Also updated credits for recent additions.
5236
5239
5237 2002-10-10 Fernando Perez <fperez@colorado.edu>
5240 2002-10-10 Fernando Perez <fperez@colorado.edu>
5238
5241
5239 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5242 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5240 terminal-related issues. Many thanks to Andrea Riciputi
5243 terminal-related issues. Many thanks to Andrea Riciputi
5241 <andrea.riciputi-AT-libero.it> for writing it.
5244 <andrea.riciputi-AT-libero.it> for writing it.
5242
5245
5243 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5246 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5244 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5247 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5245
5248
5246 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5249 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5247 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5250 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5248 <syver-en-AT-online.no> who both submitted patches for this problem.
5251 <syver-en-AT-online.no> who both submitted patches for this problem.
5249
5252
5250 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5253 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5251 global embedding to make sure that things don't overwrite user
5254 global embedding to make sure that things don't overwrite user
5252 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5255 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5253
5256
5254 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5257 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5255 compatibility. Thanks to Hayden Callow
5258 compatibility. Thanks to Hayden Callow
5256 <h.callow-AT-elec.canterbury.ac.nz>
5259 <h.callow-AT-elec.canterbury.ac.nz>
5257
5260
5258 2002-10-04 Fernando Perez <fperez@colorado.edu>
5261 2002-10-04 Fernando Perez <fperez@colorado.edu>
5259
5262
5260 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5263 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5261 Gnuplot.File objects.
5264 Gnuplot.File objects.
5262
5265
5263 2002-07-23 Fernando Perez <fperez@colorado.edu>
5266 2002-07-23 Fernando Perez <fperez@colorado.edu>
5264
5267
5265 * IPython/genutils.py (timing): Added timings() and timing() for
5268 * IPython/genutils.py (timing): Added timings() and timing() for
5266 quick access to the most commonly needed data, the execution
5269 quick access to the most commonly needed data, the execution
5267 times. Old timing() renamed to timings_out().
5270 times. Old timing() renamed to timings_out().
5268
5271
5269 2002-07-18 Fernando Perez <fperez@colorado.edu>
5272 2002-07-18 Fernando Perez <fperez@colorado.edu>
5270
5273
5271 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5274 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5272 bug with nested instances disrupting the parent's tab completion.
5275 bug with nested instances disrupting the parent's tab completion.
5273
5276
5274 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5277 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5275 all_completions code to begin the emacs integration.
5278 all_completions code to begin the emacs integration.
5276
5279
5277 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5280 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5278 argument to allow titling individual arrays when plotting.
5281 argument to allow titling individual arrays when plotting.
5279
5282
5280 2002-07-15 Fernando Perez <fperez@colorado.edu>
5283 2002-07-15 Fernando Perez <fperez@colorado.edu>
5281
5284
5282 * setup.py (make_shortcut): changed to retrieve the value of
5285 * setup.py (make_shortcut): changed to retrieve the value of
5283 'Program Files' directory from the registry (this value changes in
5286 'Program Files' directory from the registry (this value changes in
5284 non-english versions of Windows). Thanks to Thomas Fanslau
5287 non-english versions of Windows). Thanks to Thomas Fanslau
5285 <tfanslau-AT-gmx.de> for the report.
5288 <tfanslau-AT-gmx.de> for the report.
5286
5289
5287 2002-07-10 Fernando Perez <fperez@colorado.edu>
5290 2002-07-10 Fernando Perez <fperez@colorado.edu>
5288
5291
5289 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5292 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5290 a bug in pdb, which crashes if a line with only whitespace is
5293 a bug in pdb, which crashes if a line with only whitespace is
5291 entered. Bug report submitted to sourceforge.
5294 entered. Bug report submitted to sourceforge.
5292
5295
5293 2002-07-09 Fernando Perez <fperez@colorado.edu>
5296 2002-07-09 Fernando Perez <fperez@colorado.edu>
5294
5297
5295 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5298 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5296 reporting exceptions (it's a bug in inspect.py, I just set a
5299 reporting exceptions (it's a bug in inspect.py, I just set a
5297 workaround).
5300 workaround).
5298
5301
5299 2002-07-08 Fernando Perez <fperez@colorado.edu>
5302 2002-07-08 Fernando Perez <fperez@colorado.edu>
5300
5303
5301 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5304 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5302 __IPYTHON__ in __builtins__ to show up in user_ns.
5305 __IPYTHON__ in __builtins__ to show up in user_ns.
5303
5306
5304 2002-07-03 Fernando Perez <fperez@colorado.edu>
5307 2002-07-03 Fernando Perez <fperez@colorado.edu>
5305
5308
5306 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5309 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5307 name from @gp_set_instance to @gp_set_default.
5310 name from @gp_set_instance to @gp_set_default.
5308
5311
5309 * IPython/ipmaker.py (make_IPython): default editor value set to
5312 * IPython/ipmaker.py (make_IPython): default editor value set to
5310 '0' (a string), to match the rc file. Otherwise will crash when
5313 '0' (a string), to match the rc file. Otherwise will crash when
5311 .strip() is called on it.
5314 .strip() is called on it.
5312
5315
5313
5316
5314 2002-06-28 Fernando Perez <fperez@colorado.edu>
5317 2002-06-28 Fernando Perez <fperez@colorado.edu>
5315
5318
5316 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5319 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5317 of files in current directory when a file is executed via
5320 of files in current directory when a file is executed via
5318 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5321 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5319
5322
5320 * setup.py (manfiles): fix for rpm builds, submitted by RA
5323 * setup.py (manfiles): fix for rpm builds, submitted by RA
5321 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5324 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5322
5325
5323 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5326 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5324 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5327 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5325 string!). A. Schmolck caught this one.
5328 string!). A. Schmolck caught this one.
5326
5329
5327 2002-06-27 Fernando Perez <fperez@colorado.edu>
5330 2002-06-27 Fernando Perez <fperez@colorado.edu>
5328
5331
5329 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5332 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5330 defined files at the cmd line. __name__ wasn't being set to
5333 defined files at the cmd line. __name__ wasn't being set to
5331 __main__.
5334 __main__.
5332
5335
5333 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5336 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5334 regular lists and tuples besides Numeric arrays.
5337 regular lists and tuples besides Numeric arrays.
5335
5338
5336 * IPython/Prompts.py (CachedOutput.__call__): Added output
5339 * IPython/Prompts.py (CachedOutput.__call__): Added output
5337 supression for input ending with ';'. Similar to Mathematica and
5340 supression for input ending with ';'. Similar to Mathematica and
5338 Matlab. The _* vars and Out[] list are still updated, just like
5341 Matlab. The _* vars and Out[] list are still updated, just like
5339 Mathematica behaves.
5342 Mathematica behaves.
5340
5343
5341 2002-06-25 Fernando Perez <fperez@colorado.edu>
5344 2002-06-25 Fernando Perez <fperez@colorado.edu>
5342
5345
5343 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5346 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5344 .ini extensions for profiels under Windows.
5347 .ini extensions for profiels under Windows.
5345
5348
5346 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5349 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5347 string form. Fix contributed by Alexander Schmolck
5350 string form. Fix contributed by Alexander Schmolck
5348 <a.schmolck-AT-gmx.net>
5351 <a.schmolck-AT-gmx.net>
5349
5352
5350 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5353 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5351 pre-configured Gnuplot instance.
5354 pre-configured Gnuplot instance.
5352
5355
5353 2002-06-21 Fernando Perez <fperez@colorado.edu>
5356 2002-06-21 Fernando Perez <fperez@colorado.edu>
5354
5357
5355 * IPython/numutils.py (exp_safe): new function, works around the
5358 * IPython/numutils.py (exp_safe): new function, works around the
5356 underflow problems in Numeric.
5359 underflow problems in Numeric.
5357 (log2): New fn. Safe log in base 2: returns exact integer answer
5360 (log2): New fn. Safe log in base 2: returns exact integer answer
5358 for exact integer powers of 2.
5361 for exact integer powers of 2.
5359
5362
5360 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5363 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5361 properly.
5364 properly.
5362
5365
5363 2002-06-20 Fernando Perez <fperez@colorado.edu>
5366 2002-06-20 Fernando Perez <fperez@colorado.edu>
5364
5367
5365 * IPython/genutils.py (timing): new function like
5368 * IPython/genutils.py (timing): new function like
5366 Mathematica's. Similar to time_test, but returns more info.
5369 Mathematica's. Similar to time_test, but returns more info.
5367
5370
5368 2002-06-18 Fernando Perez <fperez@colorado.edu>
5371 2002-06-18 Fernando Perez <fperez@colorado.edu>
5369
5372
5370 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5373 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5371 according to Mike Heeter's suggestions.
5374 according to Mike Heeter's suggestions.
5372
5375
5373 2002-06-16 Fernando Perez <fperez@colorado.edu>
5376 2002-06-16 Fernando Perez <fperez@colorado.edu>
5374
5377
5375 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5378 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5376 system. GnuplotMagic is gone as a user-directory option. New files
5379 system. GnuplotMagic is gone as a user-directory option. New files
5377 make it easier to use all the gnuplot stuff both from external
5380 make it easier to use all the gnuplot stuff both from external
5378 programs as well as from IPython. Had to rewrite part of
5381 programs as well as from IPython. Had to rewrite part of
5379 hardcopy() b/c of a strange bug: often the ps files simply don't
5382 hardcopy() b/c of a strange bug: often the ps files simply don't
5380 get created, and require a repeat of the command (often several
5383 get created, and require a repeat of the command (often several
5381 times).
5384 times).
5382
5385
5383 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5386 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5384 resolve output channel at call time, so that if sys.stderr has
5387 resolve output channel at call time, so that if sys.stderr has
5385 been redirected by user this gets honored.
5388 been redirected by user this gets honored.
5386
5389
5387 2002-06-13 Fernando Perez <fperez@colorado.edu>
5390 2002-06-13 Fernando Perez <fperez@colorado.edu>
5388
5391
5389 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5392 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5390 IPShell. Kept a copy with the old names to avoid breaking people's
5393 IPShell. Kept a copy with the old names to avoid breaking people's
5391 embedded code.
5394 embedded code.
5392
5395
5393 * IPython/ipython: simplified it to the bare minimum after
5396 * IPython/ipython: simplified it to the bare minimum after
5394 Holger's suggestions. Added info about how to use it in
5397 Holger's suggestions. Added info about how to use it in
5395 PYTHONSTARTUP.
5398 PYTHONSTARTUP.
5396
5399
5397 * IPython/Shell.py (IPythonShell): changed the options passing
5400 * IPython/Shell.py (IPythonShell): changed the options passing
5398 from a string with funky %s replacements to a straight list. Maybe
5401 from a string with funky %s replacements to a straight list. Maybe
5399 a bit more typing, but it follows sys.argv conventions, so there's
5402 a bit more typing, but it follows sys.argv conventions, so there's
5400 less special-casing to remember.
5403 less special-casing to remember.
5401
5404
5402 2002-06-12 Fernando Perez <fperez@colorado.edu>
5405 2002-06-12 Fernando Perez <fperez@colorado.edu>
5403
5406
5404 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5407 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5405 command. Thanks to a suggestion by Mike Heeter.
5408 command. Thanks to a suggestion by Mike Heeter.
5406 (Magic.magic_pfile): added behavior to look at filenames if given
5409 (Magic.magic_pfile): added behavior to look at filenames if given
5407 arg is not a defined object.
5410 arg is not a defined object.
5408 (Magic.magic_save): New @save function to save code snippets. Also
5411 (Magic.magic_save): New @save function to save code snippets. Also
5409 a Mike Heeter idea.
5412 a Mike Heeter idea.
5410
5413
5411 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5414 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5412 plot() and replot(). Much more convenient now, especially for
5415 plot() and replot(). Much more convenient now, especially for
5413 interactive use.
5416 interactive use.
5414
5417
5415 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5418 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5416 filenames.
5419 filenames.
5417
5420
5418 2002-06-02 Fernando Perez <fperez@colorado.edu>
5421 2002-06-02 Fernando Perez <fperez@colorado.edu>
5419
5422
5420 * IPython/Struct.py (Struct.__init__): modified to admit
5423 * IPython/Struct.py (Struct.__init__): modified to admit
5421 initialization via another struct.
5424 initialization via another struct.
5422
5425
5423 * IPython/genutils.py (SystemExec.__init__): New stateful
5426 * IPython/genutils.py (SystemExec.__init__): New stateful
5424 interface to xsys and bq. Useful for writing system scripts.
5427 interface to xsys and bq. Useful for writing system scripts.
5425
5428
5426 2002-05-30 Fernando Perez <fperez@colorado.edu>
5429 2002-05-30 Fernando Perez <fperez@colorado.edu>
5427
5430
5428 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5431 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5429 documents. This will make the user download smaller (it's getting
5432 documents. This will make the user download smaller (it's getting
5430 too big).
5433 too big).
5431
5434
5432 2002-05-29 Fernando Perez <fperez@colorado.edu>
5435 2002-05-29 Fernando Perez <fperez@colorado.edu>
5433
5436
5434 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5437 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5435 fix problems with shelve and pickle. Seems to work, but I don't
5438 fix problems with shelve and pickle. Seems to work, but I don't
5436 know if corner cases break it. Thanks to Mike Heeter
5439 know if corner cases break it. Thanks to Mike Heeter
5437 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5440 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5438
5441
5439 2002-05-24 Fernando Perez <fperez@colorado.edu>
5442 2002-05-24 Fernando Perez <fperez@colorado.edu>
5440
5443
5441 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5444 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5442 macros having broken.
5445 macros having broken.
5443
5446
5444 2002-05-21 Fernando Perez <fperez@colorado.edu>
5447 2002-05-21 Fernando Perez <fperez@colorado.edu>
5445
5448
5446 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5449 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5447 introduced logging bug: all history before logging started was
5450 introduced logging bug: all history before logging started was
5448 being written one character per line! This came from the redesign
5451 being written one character per line! This came from the redesign
5449 of the input history as a special list which slices to strings,
5452 of the input history as a special list which slices to strings,
5450 not to lists.
5453 not to lists.
5451
5454
5452 2002-05-20 Fernando Perez <fperez@colorado.edu>
5455 2002-05-20 Fernando Perez <fperez@colorado.edu>
5453
5456
5454 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5457 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5455 be an attribute of all classes in this module. The design of these
5458 be an attribute of all classes in this module. The design of these
5456 classes needs some serious overhauling.
5459 classes needs some serious overhauling.
5457
5460
5458 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5461 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5459 which was ignoring '_' in option names.
5462 which was ignoring '_' in option names.
5460
5463
5461 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5464 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5462 'Verbose_novars' to 'Context' and made it the new default. It's a
5465 'Verbose_novars' to 'Context' and made it the new default. It's a
5463 bit more readable and also safer than verbose.
5466 bit more readable and also safer than verbose.
5464
5467
5465 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5468 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5466 triple-quoted strings.
5469 triple-quoted strings.
5467
5470
5468 * IPython/OInspect.py (__all__): new module exposing the object
5471 * IPython/OInspect.py (__all__): new module exposing the object
5469 introspection facilities. Now the corresponding magics are dummy
5472 introspection facilities. Now the corresponding magics are dummy
5470 wrappers around this. Having this module will make it much easier
5473 wrappers around this. Having this module will make it much easier
5471 to put these functions into our modified pdb.
5474 to put these functions into our modified pdb.
5472 This new object inspector system uses the new colorizing module,
5475 This new object inspector system uses the new colorizing module,
5473 so source code and other things are nicely syntax highlighted.
5476 so source code and other things are nicely syntax highlighted.
5474
5477
5475 2002-05-18 Fernando Perez <fperez@colorado.edu>
5478 2002-05-18 Fernando Perez <fperez@colorado.edu>
5476
5479
5477 * IPython/ColorANSI.py: Split the coloring tools into a separate
5480 * IPython/ColorANSI.py: Split the coloring tools into a separate
5478 module so I can use them in other code easier (they were part of
5481 module so I can use them in other code easier (they were part of
5479 ultraTB).
5482 ultraTB).
5480
5483
5481 2002-05-17 Fernando Perez <fperez@colorado.edu>
5484 2002-05-17 Fernando Perez <fperez@colorado.edu>
5482
5485
5483 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5486 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5484 fixed it to set the global 'g' also to the called instance, as
5487 fixed it to set the global 'g' also to the called instance, as
5485 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5488 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5486 user's 'g' variables).
5489 user's 'g' variables).
5487
5490
5488 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5491 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5489 global variables (aliases to _ih,_oh) so that users which expect
5492 global variables (aliases to _ih,_oh) so that users which expect
5490 In[5] or Out[7] to work aren't unpleasantly surprised.
5493 In[5] or Out[7] to work aren't unpleasantly surprised.
5491 (InputList.__getslice__): new class to allow executing slices of
5494 (InputList.__getslice__): new class to allow executing slices of
5492 input history directly. Very simple class, complements the use of
5495 input history directly. Very simple class, complements the use of
5493 macros.
5496 macros.
5494
5497
5495 2002-05-16 Fernando Perez <fperez@colorado.edu>
5498 2002-05-16 Fernando Perez <fperez@colorado.edu>
5496
5499
5497 * setup.py (docdirbase): make doc directory be just doc/IPython
5500 * setup.py (docdirbase): make doc directory be just doc/IPython
5498 without version numbers, it will reduce clutter for users.
5501 without version numbers, it will reduce clutter for users.
5499
5502
5500 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5503 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5501 execfile call to prevent possible memory leak. See for details:
5504 execfile call to prevent possible memory leak. See for details:
5502 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5505 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5503
5506
5504 2002-05-15 Fernando Perez <fperez@colorado.edu>
5507 2002-05-15 Fernando Perez <fperez@colorado.edu>
5505
5508
5506 * IPython/Magic.py (Magic.magic_psource): made the object
5509 * IPython/Magic.py (Magic.magic_psource): made the object
5507 introspection names be more standard: pdoc, pdef, pfile and
5510 introspection names be more standard: pdoc, pdef, pfile and
5508 psource. They all print/page their output, and it makes
5511 psource. They all print/page their output, and it makes
5509 remembering them easier. Kept old names for compatibility as
5512 remembering them easier. Kept old names for compatibility as
5510 aliases.
5513 aliases.
5511
5514
5512 2002-05-14 Fernando Perez <fperez@colorado.edu>
5515 2002-05-14 Fernando Perez <fperez@colorado.edu>
5513
5516
5514 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5517 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5515 what the mouse problem was. The trick is to use gnuplot with temp
5518 what the mouse problem was. The trick is to use gnuplot with temp
5516 files and NOT with pipes (for data communication), because having
5519 files and NOT with pipes (for data communication), because having
5517 both pipes and the mouse on is bad news.
5520 both pipes and the mouse on is bad news.
5518
5521
5519 2002-05-13 Fernando Perez <fperez@colorado.edu>
5522 2002-05-13 Fernando Perez <fperez@colorado.edu>
5520
5523
5521 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5524 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5522 bug. Information would be reported about builtins even when
5525 bug. Information would be reported about builtins even when
5523 user-defined functions overrode them.
5526 user-defined functions overrode them.
5524
5527
5525 2002-05-11 Fernando Perez <fperez@colorado.edu>
5528 2002-05-11 Fernando Perez <fperez@colorado.edu>
5526
5529
5527 * IPython/__init__.py (__all__): removed FlexCompleter from
5530 * IPython/__init__.py (__all__): removed FlexCompleter from
5528 __all__ so that things don't fail in platforms without readline.
5531 __all__ so that things don't fail in platforms without readline.
5529
5532
5530 2002-05-10 Fernando Perez <fperez@colorado.edu>
5533 2002-05-10 Fernando Perez <fperez@colorado.edu>
5531
5534
5532 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5535 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5533 it requires Numeric, effectively making Numeric a dependency for
5536 it requires Numeric, effectively making Numeric a dependency for
5534 IPython.
5537 IPython.
5535
5538
5536 * Released 0.2.13
5539 * Released 0.2.13
5537
5540
5538 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5541 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5539 profiler interface. Now all the major options from the profiler
5542 profiler interface. Now all the major options from the profiler
5540 module are directly supported in IPython, both for single
5543 module are directly supported in IPython, both for single
5541 expressions (@prun) and for full programs (@run -p).
5544 expressions (@prun) and for full programs (@run -p).
5542
5545
5543 2002-05-09 Fernando Perez <fperez@colorado.edu>
5546 2002-05-09 Fernando Perez <fperez@colorado.edu>
5544
5547
5545 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5548 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5546 magic properly formatted for screen.
5549 magic properly formatted for screen.
5547
5550
5548 * setup.py (make_shortcut): Changed things to put pdf version in
5551 * setup.py (make_shortcut): Changed things to put pdf version in
5549 doc/ instead of doc/manual (had to change lyxport a bit).
5552 doc/ instead of doc/manual (had to change lyxport a bit).
5550
5553
5551 * IPython/Magic.py (Profile.string_stats): made profile runs go
5554 * IPython/Magic.py (Profile.string_stats): made profile runs go
5552 through pager (they are long and a pager allows searching, saving,
5555 through pager (they are long and a pager allows searching, saving,
5553 etc.)
5556 etc.)
5554
5557
5555 2002-05-08 Fernando Perez <fperez@colorado.edu>
5558 2002-05-08 Fernando Perez <fperez@colorado.edu>
5556
5559
5557 * Released 0.2.12
5560 * Released 0.2.12
5558
5561
5559 2002-05-06 Fernando Perez <fperez@colorado.edu>
5562 2002-05-06 Fernando Perez <fperez@colorado.edu>
5560
5563
5561 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5564 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5562 introduced); 'hist n1 n2' was broken.
5565 introduced); 'hist n1 n2' was broken.
5563 (Magic.magic_pdb): added optional on/off arguments to @pdb
5566 (Magic.magic_pdb): added optional on/off arguments to @pdb
5564 (Magic.magic_run): added option -i to @run, which executes code in
5567 (Magic.magic_run): added option -i to @run, which executes code in
5565 the IPython namespace instead of a clean one. Also added @irun as
5568 the IPython namespace instead of a clean one. Also added @irun as
5566 an alias to @run -i.
5569 an alias to @run -i.
5567
5570
5568 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5571 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5569 fixed (it didn't really do anything, the namespaces were wrong).
5572 fixed (it didn't really do anything, the namespaces were wrong).
5570
5573
5571 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5574 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5572
5575
5573 * IPython/__init__.py (__all__): Fixed package namespace, now
5576 * IPython/__init__.py (__all__): Fixed package namespace, now
5574 'import IPython' does give access to IPython.<all> as
5577 'import IPython' does give access to IPython.<all> as
5575 expected. Also renamed __release__ to Release.
5578 expected. Also renamed __release__ to Release.
5576
5579
5577 * IPython/Debugger.py (__license__): created new Pdb class which
5580 * IPython/Debugger.py (__license__): created new Pdb class which
5578 functions like a drop-in for the normal pdb.Pdb but does NOT
5581 functions like a drop-in for the normal pdb.Pdb but does NOT
5579 import readline by default. This way it doesn't muck up IPython's
5582 import readline by default. This way it doesn't muck up IPython's
5580 readline handling, and now tab-completion finally works in the
5583 readline handling, and now tab-completion finally works in the
5581 debugger -- sort of. It completes things globally visible, but the
5584 debugger -- sort of. It completes things globally visible, but the
5582 completer doesn't track the stack as pdb walks it. That's a bit
5585 completer doesn't track the stack as pdb walks it. That's a bit
5583 tricky, and I'll have to implement it later.
5586 tricky, and I'll have to implement it later.
5584
5587
5585 2002-05-05 Fernando Perez <fperez@colorado.edu>
5588 2002-05-05 Fernando Perez <fperez@colorado.edu>
5586
5589
5587 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5590 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5588 magic docstrings when printed via ? (explicit \'s were being
5591 magic docstrings when printed via ? (explicit \'s were being
5589 printed).
5592 printed).
5590
5593
5591 * IPython/ipmaker.py (make_IPython): fixed namespace
5594 * IPython/ipmaker.py (make_IPython): fixed namespace
5592 identification bug. Now variables loaded via logs or command-line
5595 identification bug. Now variables loaded via logs or command-line
5593 files are recognized in the interactive namespace by @who.
5596 files are recognized in the interactive namespace by @who.
5594
5597
5595 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5598 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5596 log replay system stemming from the string form of Structs.
5599 log replay system stemming from the string form of Structs.
5597
5600
5598 * IPython/Magic.py (Macro.__init__): improved macros to properly
5601 * IPython/Magic.py (Macro.__init__): improved macros to properly
5599 handle magic commands in them.
5602 handle magic commands in them.
5600 (Magic.magic_logstart): usernames are now expanded so 'logstart
5603 (Magic.magic_logstart): usernames are now expanded so 'logstart
5601 ~/mylog' now works.
5604 ~/mylog' now works.
5602
5605
5603 * IPython/iplib.py (complete): fixed bug where paths starting with
5606 * IPython/iplib.py (complete): fixed bug where paths starting with
5604 '/' would be completed as magic names.
5607 '/' would be completed as magic names.
5605
5608
5606 2002-05-04 Fernando Perez <fperez@colorado.edu>
5609 2002-05-04 Fernando Perez <fperez@colorado.edu>
5607
5610
5608 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5611 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5609 allow running full programs under the profiler's control.
5612 allow running full programs under the profiler's control.
5610
5613
5611 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5614 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5612 mode to report exceptions verbosely but without formatting
5615 mode to report exceptions verbosely but without formatting
5613 variables. This addresses the issue of ipython 'freezing' (it's
5616 variables. This addresses the issue of ipython 'freezing' (it's
5614 not frozen, but caught in an expensive formatting loop) when huge
5617 not frozen, but caught in an expensive formatting loop) when huge
5615 variables are in the context of an exception.
5618 variables are in the context of an exception.
5616 (VerboseTB.text): Added '--->' markers at line where exception was
5619 (VerboseTB.text): Added '--->' markers at line where exception was
5617 triggered. Much clearer to read, especially in NoColor modes.
5620 triggered. Much clearer to read, especially in NoColor modes.
5618
5621
5619 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5622 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5620 implemented in reverse when changing to the new parse_options().
5623 implemented in reverse when changing to the new parse_options().
5621
5624
5622 2002-05-03 Fernando Perez <fperez@colorado.edu>
5625 2002-05-03 Fernando Perez <fperez@colorado.edu>
5623
5626
5624 * IPython/Magic.py (Magic.parse_options): new function so that
5627 * IPython/Magic.py (Magic.parse_options): new function so that
5625 magics can parse options easier.
5628 magics can parse options easier.
5626 (Magic.magic_prun): new function similar to profile.run(),
5629 (Magic.magic_prun): new function similar to profile.run(),
5627 suggested by Chris Hart.
5630 suggested by Chris Hart.
5628 (Magic.magic_cd): fixed behavior so that it only changes if
5631 (Magic.magic_cd): fixed behavior so that it only changes if
5629 directory actually is in history.
5632 directory actually is in history.
5630
5633
5631 * IPython/usage.py (__doc__): added information about potential
5634 * IPython/usage.py (__doc__): added information about potential
5632 slowness of Verbose exception mode when there are huge data
5635 slowness of Verbose exception mode when there are huge data
5633 structures to be formatted (thanks to Archie Paulson).
5636 structures to be formatted (thanks to Archie Paulson).
5634
5637
5635 * IPython/ipmaker.py (make_IPython): Changed default logging
5638 * IPython/ipmaker.py (make_IPython): Changed default logging
5636 (when simply called with -log) to use curr_dir/ipython.log in
5639 (when simply called with -log) to use curr_dir/ipython.log in
5637 rotate mode. Fixed crash which was occuring with -log before
5640 rotate mode. Fixed crash which was occuring with -log before
5638 (thanks to Jim Boyle).
5641 (thanks to Jim Boyle).
5639
5642
5640 2002-05-01 Fernando Perez <fperez@colorado.edu>
5643 2002-05-01 Fernando Perez <fperez@colorado.edu>
5641
5644
5642 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5645 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5643 was nasty -- though somewhat of a corner case).
5646 was nasty -- though somewhat of a corner case).
5644
5647
5645 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5648 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5646 text (was a bug).
5649 text (was a bug).
5647
5650
5648 2002-04-30 Fernando Perez <fperez@colorado.edu>
5651 2002-04-30 Fernando Perez <fperez@colorado.edu>
5649
5652
5650 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5653 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5651 a print after ^D or ^C from the user so that the In[] prompt
5654 a print after ^D or ^C from the user so that the In[] prompt
5652 doesn't over-run the gnuplot one.
5655 doesn't over-run the gnuplot one.
5653
5656
5654 2002-04-29 Fernando Perez <fperez@colorado.edu>
5657 2002-04-29 Fernando Perez <fperez@colorado.edu>
5655
5658
5656 * Released 0.2.10
5659 * Released 0.2.10
5657
5660
5658 * IPython/__release__.py (version): get date dynamically.
5661 * IPython/__release__.py (version): get date dynamically.
5659
5662
5660 * Misc. documentation updates thanks to Arnd's comments. Also ran
5663 * Misc. documentation updates thanks to Arnd's comments. Also ran
5661 a full spellcheck on the manual (hadn't been done in a while).
5664 a full spellcheck on the manual (hadn't been done in a while).
5662
5665
5663 2002-04-27 Fernando Perez <fperez@colorado.edu>
5666 2002-04-27 Fernando Perez <fperez@colorado.edu>
5664
5667
5665 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5668 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5666 starting a log in mid-session would reset the input history list.
5669 starting a log in mid-session would reset the input history list.
5667
5670
5668 2002-04-26 Fernando Perez <fperez@colorado.edu>
5671 2002-04-26 Fernando Perez <fperez@colorado.edu>
5669
5672
5670 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5673 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5671 all files were being included in an update. Now anything in
5674 all files were being included in an update. Now anything in
5672 UserConfig that matches [A-Za-z]*.py will go (this excludes
5675 UserConfig that matches [A-Za-z]*.py will go (this excludes
5673 __init__.py)
5676 __init__.py)
5674
5677
5675 2002-04-25 Fernando Perez <fperez@colorado.edu>
5678 2002-04-25 Fernando Perez <fperez@colorado.edu>
5676
5679
5677 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5680 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5678 to __builtins__ so that any form of embedded or imported code can
5681 to __builtins__ so that any form of embedded or imported code can
5679 test for being inside IPython.
5682 test for being inside IPython.
5680
5683
5681 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5684 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5682 changed to GnuplotMagic because it's now an importable module,
5685 changed to GnuplotMagic because it's now an importable module,
5683 this makes the name follow that of the standard Gnuplot module.
5686 this makes the name follow that of the standard Gnuplot module.
5684 GnuplotMagic can now be loaded at any time in mid-session.
5687 GnuplotMagic can now be loaded at any time in mid-session.
5685
5688
5686 2002-04-24 Fernando Perez <fperez@colorado.edu>
5689 2002-04-24 Fernando Perez <fperez@colorado.edu>
5687
5690
5688 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5691 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5689 the globals (IPython has its own namespace) and the
5692 the globals (IPython has its own namespace) and the
5690 PhysicalQuantity stuff is much better anyway.
5693 PhysicalQuantity stuff is much better anyway.
5691
5694
5692 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5695 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5693 embedding example to standard user directory for
5696 embedding example to standard user directory for
5694 distribution. Also put it in the manual.
5697 distribution. Also put it in the manual.
5695
5698
5696 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5699 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5697 instance as first argument (so it doesn't rely on some obscure
5700 instance as first argument (so it doesn't rely on some obscure
5698 hidden global).
5701 hidden global).
5699
5702
5700 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5703 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5701 delimiters. While it prevents ().TAB from working, it allows
5704 delimiters. While it prevents ().TAB from working, it allows
5702 completions in open (... expressions. This is by far a more common
5705 completions in open (... expressions. This is by far a more common
5703 case.
5706 case.
5704
5707
5705 2002-04-23 Fernando Perez <fperez@colorado.edu>
5708 2002-04-23 Fernando Perez <fperez@colorado.edu>
5706
5709
5707 * IPython/Extensions/InterpreterPasteInput.py: new
5710 * IPython/Extensions/InterpreterPasteInput.py: new
5708 syntax-processing module for pasting lines with >>> or ... at the
5711 syntax-processing module for pasting lines with >>> or ... at the
5709 start.
5712 start.
5710
5713
5711 * IPython/Extensions/PhysicalQ_Interactive.py
5714 * IPython/Extensions/PhysicalQ_Interactive.py
5712 (PhysicalQuantityInteractive.__int__): fixed to work with either
5715 (PhysicalQuantityInteractive.__int__): fixed to work with either
5713 Numeric or math.
5716 Numeric or math.
5714
5717
5715 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5718 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5716 provided profiles. Now we have:
5719 provided profiles. Now we have:
5717 -math -> math module as * and cmath with its own namespace.
5720 -math -> math module as * and cmath with its own namespace.
5718 -numeric -> Numeric as *, plus gnuplot & grace
5721 -numeric -> Numeric as *, plus gnuplot & grace
5719 -physics -> same as before
5722 -physics -> same as before
5720
5723
5721 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5724 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5722 user-defined magics wouldn't be found by @magic if they were
5725 user-defined magics wouldn't be found by @magic if they were
5723 defined as class methods. Also cleaned up the namespace search
5726 defined as class methods. Also cleaned up the namespace search
5724 logic and the string building (to use %s instead of many repeated
5727 logic and the string building (to use %s instead of many repeated
5725 string adds).
5728 string adds).
5726
5729
5727 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5730 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5728 of user-defined magics to operate with class methods (cleaner, in
5731 of user-defined magics to operate with class methods (cleaner, in
5729 line with the gnuplot code).
5732 line with the gnuplot code).
5730
5733
5731 2002-04-22 Fernando Perez <fperez@colorado.edu>
5734 2002-04-22 Fernando Perez <fperez@colorado.edu>
5732
5735
5733 * setup.py: updated dependency list so that manual is updated when
5736 * setup.py: updated dependency list so that manual is updated when
5734 all included files change.
5737 all included files change.
5735
5738
5736 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5739 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5737 the delimiter removal option (the fix is ugly right now).
5740 the delimiter removal option (the fix is ugly right now).
5738
5741
5739 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5742 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5740 all of the math profile (quicker loading, no conflict between
5743 all of the math profile (quicker loading, no conflict between
5741 g-9.8 and g-gnuplot).
5744 g-9.8 and g-gnuplot).
5742
5745
5743 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5746 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5744 name of post-mortem files to IPython_crash_report.txt.
5747 name of post-mortem files to IPython_crash_report.txt.
5745
5748
5746 * Cleanup/update of the docs. Added all the new readline info and
5749 * Cleanup/update of the docs. Added all the new readline info and
5747 formatted all lists as 'real lists'.
5750 formatted all lists as 'real lists'.
5748
5751
5749 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5752 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5750 tab-completion options, since the full readline parse_and_bind is
5753 tab-completion options, since the full readline parse_and_bind is
5751 now accessible.
5754 now accessible.
5752
5755
5753 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5756 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5754 handling of readline options. Now users can specify any string to
5757 handling of readline options. Now users can specify any string to
5755 be passed to parse_and_bind(), as well as the delimiters to be
5758 be passed to parse_and_bind(), as well as the delimiters to be
5756 removed.
5759 removed.
5757 (InteractiveShell.__init__): Added __name__ to the global
5760 (InteractiveShell.__init__): Added __name__ to the global
5758 namespace so that things like Itpl which rely on its existence
5761 namespace so that things like Itpl which rely on its existence
5759 don't crash.
5762 don't crash.
5760 (InteractiveShell._prefilter): Defined the default with a _ so
5763 (InteractiveShell._prefilter): Defined the default with a _ so
5761 that prefilter() is easier to override, while the default one
5764 that prefilter() is easier to override, while the default one
5762 remains available.
5765 remains available.
5763
5766
5764 2002-04-18 Fernando Perez <fperez@colorado.edu>
5767 2002-04-18 Fernando Perez <fperez@colorado.edu>
5765
5768
5766 * Added information about pdb in the docs.
5769 * Added information about pdb in the docs.
5767
5770
5768 2002-04-17 Fernando Perez <fperez@colorado.edu>
5771 2002-04-17 Fernando Perez <fperez@colorado.edu>
5769
5772
5770 * IPython/ipmaker.py (make_IPython): added rc_override option to
5773 * IPython/ipmaker.py (make_IPython): added rc_override option to
5771 allow passing config options at creation time which may override
5774 allow passing config options at creation time which may override
5772 anything set in the config files or command line. This is
5775 anything set in the config files or command line. This is
5773 particularly useful for configuring embedded instances.
5776 particularly useful for configuring embedded instances.
5774
5777
5775 2002-04-15 Fernando Perez <fperez@colorado.edu>
5778 2002-04-15 Fernando Perez <fperez@colorado.edu>
5776
5779
5777 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5780 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5778 crash embedded instances because of the input cache falling out of
5781 crash embedded instances because of the input cache falling out of
5779 sync with the output counter.
5782 sync with the output counter.
5780
5783
5781 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5784 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5782 mode which calls pdb after an uncaught exception in IPython itself.
5785 mode which calls pdb after an uncaught exception in IPython itself.
5783
5786
5784 2002-04-14 Fernando Perez <fperez@colorado.edu>
5787 2002-04-14 Fernando Perez <fperez@colorado.edu>
5785
5788
5786 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5789 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5787 readline, fix it back after each call.
5790 readline, fix it back after each call.
5788
5791
5789 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5792 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5790 method to force all access via __call__(), which guarantees that
5793 method to force all access via __call__(), which guarantees that
5791 traceback references are properly deleted.
5794 traceback references are properly deleted.
5792
5795
5793 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5796 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5794 improve printing when pprint is in use.
5797 improve printing when pprint is in use.
5795
5798
5796 2002-04-13 Fernando Perez <fperez@colorado.edu>
5799 2002-04-13 Fernando Perez <fperez@colorado.edu>
5797
5800
5798 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5801 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5799 exceptions aren't caught anymore. If the user triggers one, he
5802 exceptions aren't caught anymore. If the user triggers one, he
5800 should know why he's doing it and it should go all the way up,
5803 should know why he's doing it and it should go all the way up,
5801 just like any other exception. So now @abort will fully kill the
5804 just like any other exception. So now @abort will fully kill the
5802 embedded interpreter and the embedding code (unless that happens
5805 embedded interpreter and the embedding code (unless that happens
5803 to catch SystemExit).
5806 to catch SystemExit).
5804
5807
5805 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5808 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5806 and a debugger() method to invoke the interactive pdb debugger
5809 and a debugger() method to invoke the interactive pdb debugger
5807 after printing exception information. Also added the corresponding
5810 after printing exception information. Also added the corresponding
5808 -pdb option and @pdb magic to control this feature, and updated
5811 -pdb option and @pdb magic to control this feature, and updated
5809 the docs. After a suggestion from Christopher Hart
5812 the docs. After a suggestion from Christopher Hart
5810 (hart-AT-caltech.edu).
5813 (hart-AT-caltech.edu).
5811
5814
5812 2002-04-12 Fernando Perez <fperez@colorado.edu>
5815 2002-04-12 Fernando Perez <fperez@colorado.edu>
5813
5816
5814 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5817 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5815 the exception handlers defined by the user (not the CrashHandler)
5818 the exception handlers defined by the user (not the CrashHandler)
5816 so that user exceptions don't trigger an ipython bug report.
5819 so that user exceptions don't trigger an ipython bug report.
5817
5820
5818 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5821 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5819 configurable (it should have always been so).
5822 configurable (it should have always been so).
5820
5823
5821 2002-03-26 Fernando Perez <fperez@colorado.edu>
5824 2002-03-26 Fernando Perez <fperez@colorado.edu>
5822
5825
5823 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5826 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5824 and there to fix embedding namespace issues. This should all be
5827 and there to fix embedding namespace issues. This should all be
5825 done in a more elegant way.
5828 done in a more elegant way.
5826
5829
5827 2002-03-25 Fernando Perez <fperez@colorado.edu>
5830 2002-03-25 Fernando Perez <fperez@colorado.edu>
5828
5831
5829 * IPython/genutils.py (get_home_dir): Try to make it work under
5832 * IPython/genutils.py (get_home_dir): Try to make it work under
5830 win9x also.
5833 win9x also.
5831
5834
5832 2002-03-20 Fernando Perez <fperez@colorado.edu>
5835 2002-03-20 Fernando Perez <fperez@colorado.edu>
5833
5836
5834 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5837 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5835 sys.displayhook untouched upon __init__.
5838 sys.displayhook untouched upon __init__.
5836
5839
5837 2002-03-19 Fernando Perez <fperez@colorado.edu>
5840 2002-03-19 Fernando Perez <fperez@colorado.edu>
5838
5841
5839 * Released 0.2.9 (for embedding bug, basically).
5842 * Released 0.2.9 (for embedding bug, basically).
5840
5843
5841 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5844 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5842 exceptions so that enclosing shell's state can be restored.
5845 exceptions so that enclosing shell's state can be restored.
5843
5846
5844 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5847 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5845 naming conventions in the .ipython/ dir.
5848 naming conventions in the .ipython/ dir.
5846
5849
5847 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5850 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5848 from delimiters list so filenames with - in them get expanded.
5851 from delimiters list so filenames with - in them get expanded.
5849
5852
5850 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5853 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5851 sys.displayhook not being properly restored after an embedded call.
5854 sys.displayhook not being properly restored after an embedded call.
5852
5855
5853 2002-03-18 Fernando Perez <fperez@colorado.edu>
5856 2002-03-18 Fernando Perez <fperez@colorado.edu>
5854
5857
5855 * Released 0.2.8
5858 * Released 0.2.8
5856
5859
5857 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5860 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5858 some files weren't being included in a -upgrade.
5861 some files weren't being included in a -upgrade.
5859 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5862 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5860 on' so that the first tab completes.
5863 on' so that the first tab completes.
5861 (InteractiveShell.handle_magic): fixed bug with spaces around
5864 (InteractiveShell.handle_magic): fixed bug with spaces around
5862 quotes breaking many magic commands.
5865 quotes breaking many magic commands.
5863
5866
5864 * setup.py: added note about ignoring the syntax error messages at
5867 * setup.py: added note about ignoring the syntax error messages at
5865 installation.
5868 installation.
5866
5869
5867 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5870 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5868 streamlining the gnuplot interface, now there's only one magic @gp.
5871 streamlining the gnuplot interface, now there's only one magic @gp.
5869
5872
5870 2002-03-17 Fernando Perez <fperez@colorado.edu>
5873 2002-03-17 Fernando Perez <fperez@colorado.edu>
5871
5874
5872 * IPython/UserConfig/magic_gnuplot.py: new name for the
5875 * IPython/UserConfig/magic_gnuplot.py: new name for the
5873 example-magic_pm.py file. Much enhanced system, now with a shell
5876 example-magic_pm.py file. Much enhanced system, now with a shell
5874 for communicating directly with gnuplot, one command at a time.
5877 for communicating directly with gnuplot, one command at a time.
5875
5878
5876 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5879 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5877 setting __name__=='__main__'.
5880 setting __name__=='__main__'.
5878
5881
5879 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5882 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5880 mini-shell for accessing gnuplot from inside ipython. Should
5883 mini-shell for accessing gnuplot from inside ipython. Should
5881 extend it later for grace access too. Inspired by Arnd's
5884 extend it later for grace access too. Inspired by Arnd's
5882 suggestion.
5885 suggestion.
5883
5886
5884 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5887 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5885 calling magic functions with () in their arguments. Thanks to Arnd
5888 calling magic functions with () in their arguments. Thanks to Arnd
5886 Baecker for pointing this to me.
5889 Baecker for pointing this to me.
5887
5890
5888 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5891 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5889 infinitely for integer or complex arrays (only worked with floats).
5892 infinitely for integer or complex arrays (only worked with floats).
5890
5893
5891 2002-03-16 Fernando Perez <fperez@colorado.edu>
5894 2002-03-16 Fernando Perez <fperez@colorado.edu>
5892
5895
5893 * setup.py: Merged setup and setup_windows into a single script
5896 * setup.py: Merged setup and setup_windows into a single script
5894 which properly handles things for windows users.
5897 which properly handles things for windows users.
5895
5898
5896 2002-03-15 Fernando Perez <fperez@colorado.edu>
5899 2002-03-15 Fernando Perez <fperez@colorado.edu>
5897
5900
5898 * Big change to the manual: now the magics are all automatically
5901 * Big change to the manual: now the magics are all automatically
5899 documented. This information is generated from their docstrings
5902 documented. This information is generated from their docstrings
5900 and put in a latex file included by the manual lyx file. This way
5903 and put in a latex file included by the manual lyx file. This way
5901 we get always up to date information for the magics. The manual
5904 we get always up to date information for the magics. The manual
5902 now also has proper version information, also auto-synced.
5905 now also has proper version information, also auto-synced.
5903
5906
5904 For this to work, an undocumented --magic_docstrings option was added.
5907 For this to work, an undocumented --magic_docstrings option was added.
5905
5908
5906 2002-03-13 Fernando Perez <fperez@colorado.edu>
5909 2002-03-13 Fernando Perez <fperez@colorado.edu>
5907
5910
5908 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5911 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5909 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5912 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5910
5913
5911 2002-03-12 Fernando Perez <fperez@colorado.edu>
5914 2002-03-12 Fernando Perez <fperez@colorado.edu>
5912
5915
5913 * IPython/ultraTB.py (TermColors): changed color escapes again to
5916 * IPython/ultraTB.py (TermColors): changed color escapes again to
5914 fix the (old, reintroduced) line-wrapping bug. Basically, if
5917 fix the (old, reintroduced) line-wrapping bug. Basically, if
5915 \001..\002 aren't given in the color escapes, lines get wrapped
5918 \001..\002 aren't given in the color escapes, lines get wrapped
5916 weirdly. But giving those screws up old xterms and emacs terms. So
5919 weirdly. But giving those screws up old xterms and emacs terms. So
5917 I added some logic for emacs terms to be ok, but I can't identify old
5920 I added some logic for emacs terms to be ok, but I can't identify old
5918 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5921 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5919
5922
5920 2002-03-10 Fernando Perez <fperez@colorado.edu>
5923 2002-03-10 Fernando Perez <fperez@colorado.edu>
5921
5924
5922 * IPython/usage.py (__doc__): Various documentation cleanups and
5925 * IPython/usage.py (__doc__): Various documentation cleanups and
5923 updates, both in usage docstrings and in the manual.
5926 updates, both in usage docstrings and in the manual.
5924
5927
5925 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5928 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5926 handling of caching. Set minimum acceptabe value for having a
5929 handling of caching. Set minimum acceptabe value for having a
5927 cache at 20 values.
5930 cache at 20 values.
5928
5931
5929 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5932 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5930 install_first_time function to a method, renamed it and added an
5933 install_first_time function to a method, renamed it and added an
5931 'upgrade' mode. Now people can update their config directory with
5934 'upgrade' mode. Now people can update their config directory with
5932 a simple command line switch (-upgrade, also new).
5935 a simple command line switch (-upgrade, also new).
5933
5936
5934 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5937 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5935 @file (convenient for automagic users under Python >= 2.2).
5938 @file (convenient for automagic users under Python >= 2.2).
5936 Removed @files (it seemed more like a plural than an abbrev. of
5939 Removed @files (it seemed more like a plural than an abbrev. of
5937 'file show').
5940 'file show').
5938
5941
5939 * IPython/iplib.py (install_first_time): Fixed crash if there were
5942 * IPython/iplib.py (install_first_time): Fixed crash if there were
5940 backup files ('~') in .ipython/ install directory.
5943 backup files ('~') in .ipython/ install directory.
5941
5944
5942 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5945 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5943 system. Things look fine, but these changes are fairly
5946 system. Things look fine, but these changes are fairly
5944 intrusive. Test them for a few days.
5947 intrusive. Test them for a few days.
5945
5948
5946 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5949 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5947 the prompts system. Now all in/out prompt strings are user
5950 the prompts system. Now all in/out prompt strings are user
5948 controllable. This is particularly useful for embedding, as one
5951 controllable. This is particularly useful for embedding, as one
5949 can tag embedded instances with particular prompts.
5952 can tag embedded instances with particular prompts.
5950
5953
5951 Also removed global use of sys.ps1/2, which now allows nested
5954 Also removed global use of sys.ps1/2, which now allows nested
5952 embeddings without any problems. Added command-line options for
5955 embeddings without any problems. Added command-line options for
5953 the prompt strings.
5956 the prompt strings.
5954
5957
5955 2002-03-08 Fernando Perez <fperez@colorado.edu>
5958 2002-03-08 Fernando Perez <fperez@colorado.edu>
5956
5959
5957 * IPython/UserConfig/example-embed-short.py (ipshell): added
5960 * IPython/UserConfig/example-embed-short.py (ipshell): added
5958 example file with the bare minimum code for embedding.
5961 example file with the bare minimum code for embedding.
5959
5962
5960 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5963 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5961 functionality for the embeddable shell to be activated/deactivated
5964 functionality for the embeddable shell to be activated/deactivated
5962 either globally or at each call.
5965 either globally or at each call.
5963
5966
5964 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5967 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5965 rewriting the prompt with '--->' for auto-inputs with proper
5968 rewriting the prompt with '--->' for auto-inputs with proper
5966 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5969 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5967 this is handled by the prompts class itself, as it should.
5970 this is handled by the prompts class itself, as it should.
5968
5971
5969 2002-03-05 Fernando Perez <fperez@colorado.edu>
5972 2002-03-05 Fernando Perez <fperez@colorado.edu>
5970
5973
5971 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5974 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5972 @logstart to avoid name clashes with the math log function.
5975 @logstart to avoid name clashes with the math log function.
5973
5976
5974 * Big updates to X/Emacs section of the manual.
5977 * Big updates to X/Emacs section of the manual.
5975
5978
5976 * Removed ipython_emacs. Milan explained to me how to pass
5979 * Removed ipython_emacs. Milan explained to me how to pass
5977 arguments to ipython through Emacs. Some day I'm going to end up
5980 arguments to ipython through Emacs. Some day I'm going to end up
5978 learning some lisp...
5981 learning some lisp...
5979
5982
5980 2002-03-04 Fernando Perez <fperez@colorado.edu>
5983 2002-03-04 Fernando Perez <fperez@colorado.edu>
5981
5984
5982 * IPython/ipython_emacs: Created script to be used as the
5985 * IPython/ipython_emacs: Created script to be used as the
5983 py-python-command Emacs variable so we can pass IPython
5986 py-python-command Emacs variable so we can pass IPython
5984 parameters. I can't figure out how to tell Emacs directly to pass
5987 parameters. I can't figure out how to tell Emacs directly to pass
5985 parameters to IPython, so a dummy shell script will do it.
5988 parameters to IPython, so a dummy shell script will do it.
5986
5989
5987 Other enhancements made for things to work better under Emacs'
5990 Other enhancements made for things to work better under Emacs'
5988 various types of terminals. Many thanks to Milan Zamazal
5991 various types of terminals. Many thanks to Milan Zamazal
5989 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5992 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5990
5993
5991 2002-03-01 Fernando Perez <fperez@colorado.edu>
5994 2002-03-01 Fernando Perez <fperez@colorado.edu>
5992
5995
5993 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5996 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5994 that loading of readline is now optional. This gives better
5997 that loading of readline is now optional. This gives better
5995 control to emacs users.
5998 control to emacs users.
5996
5999
5997 * IPython/ultraTB.py (__date__): Modified color escape sequences
6000 * IPython/ultraTB.py (__date__): Modified color escape sequences
5998 and now things work fine under xterm and in Emacs' term buffers
6001 and now things work fine under xterm and in Emacs' term buffers
5999 (though not shell ones). Well, in emacs you get colors, but all
6002 (though not shell ones). Well, in emacs you get colors, but all
6000 seem to be 'light' colors (no difference between dark and light
6003 seem to be 'light' colors (no difference between dark and light
6001 ones). But the garbage chars are gone, and also in xterms. It
6004 ones). But the garbage chars are gone, and also in xterms. It
6002 seems that now I'm using 'cleaner' ansi sequences.
6005 seems that now I'm using 'cleaner' ansi sequences.
6003
6006
6004 2002-02-21 Fernando Perez <fperez@colorado.edu>
6007 2002-02-21 Fernando Perez <fperez@colorado.edu>
6005
6008
6006 * Released 0.2.7 (mainly to publish the scoping fix).
6009 * Released 0.2.7 (mainly to publish the scoping fix).
6007
6010
6008 * IPython/Logger.py (Logger.logstate): added. A corresponding
6011 * IPython/Logger.py (Logger.logstate): added. A corresponding
6009 @logstate magic was created.
6012 @logstate magic was created.
6010
6013
6011 * IPython/Magic.py: fixed nested scoping problem under Python
6014 * IPython/Magic.py: fixed nested scoping problem under Python
6012 2.1.x (automagic wasn't working).
6015 2.1.x (automagic wasn't working).
6013
6016
6014 2002-02-20 Fernando Perez <fperez@colorado.edu>
6017 2002-02-20 Fernando Perez <fperez@colorado.edu>
6015
6018
6016 * Released 0.2.6.
6019 * Released 0.2.6.
6017
6020
6018 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6021 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6019 option so that logs can come out without any headers at all.
6022 option so that logs can come out without any headers at all.
6020
6023
6021 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6024 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6022 SciPy.
6025 SciPy.
6023
6026
6024 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6027 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6025 that embedded IPython calls don't require vars() to be explicitly
6028 that embedded IPython calls don't require vars() to be explicitly
6026 passed. Now they are extracted from the caller's frame (code
6029 passed. Now they are extracted from the caller's frame (code
6027 snatched from Eric Jones' weave). Added better documentation to
6030 snatched from Eric Jones' weave). Added better documentation to
6028 the section on embedding and the example file.
6031 the section on embedding and the example file.
6029
6032
6030 * IPython/genutils.py (page): Changed so that under emacs, it just
6033 * IPython/genutils.py (page): Changed so that under emacs, it just
6031 prints the string. You can then page up and down in the emacs
6034 prints the string. You can then page up and down in the emacs
6032 buffer itself. This is how the builtin help() works.
6035 buffer itself. This is how the builtin help() works.
6033
6036
6034 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6037 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6035 macro scoping: macros need to be executed in the user's namespace
6038 macro scoping: macros need to be executed in the user's namespace
6036 to work as if they had been typed by the user.
6039 to work as if they had been typed by the user.
6037
6040
6038 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6041 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6039 execute automatically (no need to type 'exec...'). They then
6042 execute automatically (no need to type 'exec...'). They then
6040 behave like 'true macros'. The printing system was also modified
6043 behave like 'true macros'. The printing system was also modified
6041 for this to work.
6044 for this to work.
6042
6045
6043 2002-02-19 Fernando Perez <fperez@colorado.edu>
6046 2002-02-19 Fernando Perez <fperez@colorado.edu>
6044
6047
6045 * IPython/genutils.py (page_file): new function for paging files
6048 * IPython/genutils.py (page_file): new function for paging files
6046 in an OS-independent way. Also necessary for file viewing to work
6049 in an OS-independent way. Also necessary for file viewing to work
6047 well inside Emacs buffers.
6050 well inside Emacs buffers.
6048 (page): Added checks for being in an emacs buffer.
6051 (page): Added checks for being in an emacs buffer.
6049 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6052 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6050 same bug in iplib.
6053 same bug in iplib.
6051
6054
6052 2002-02-18 Fernando Perez <fperez@colorado.edu>
6055 2002-02-18 Fernando Perez <fperez@colorado.edu>
6053
6056
6054 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6057 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6055 of readline so that IPython can work inside an Emacs buffer.
6058 of readline so that IPython can work inside an Emacs buffer.
6056
6059
6057 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6060 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6058 method signatures (they weren't really bugs, but it looks cleaner
6061 method signatures (they weren't really bugs, but it looks cleaner
6059 and keeps PyChecker happy).
6062 and keeps PyChecker happy).
6060
6063
6061 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6064 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6062 for implementing various user-defined hooks. Currently only
6065 for implementing various user-defined hooks. Currently only
6063 display is done.
6066 display is done.
6064
6067
6065 * IPython/Prompts.py (CachedOutput._display): changed display
6068 * IPython/Prompts.py (CachedOutput._display): changed display
6066 functions so that they can be dynamically changed by users easily.
6069 functions so that they can be dynamically changed by users easily.
6067
6070
6068 * IPython/Extensions/numeric_formats.py (num_display): added an
6071 * IPython/Extensions/numeric_formats.py (num_display): added an
6069 extension for printing NumPy arrays in flexible manners. It
6072 extension for printing NumPy arrays in flexible manners. It
6070 doesn't do anything yet, but all the structure is in
6073 doesn't do anything yet, but all the structure is in
6071 place. Ultimately the plan is to implement output format control
6074 place. Ultimately the plan is to implement output format control
6072 like in Octave.
6075 like in Octave.
6073
6076
6074 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6077 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6075 methods are found at run-time by all the automatic machinery.
6078 methods are found at run-time by all the automatic machinery.
6076
6079
6077 2002-02-17 Fernando Perez <fperez@colorado.edu>
6080 2002-02-17 Fernando Perez <fperez@colorado.edu>
6078
6081
6079 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6082 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6080 whole file a little.
6083 whole file a little.
6081
6084
6082 * ToDo: closed this document. Now there's a new_design.lyx
6085 * ToDo: closed this document. Now there's a new_design.lyx
6083 document for all new ideas. Added making a pdf of it for the
6086 document for all new ideas. Added making a pdf of it for the
6084 end-user distro.
6087 end-user distro.
6085
6088
6086 * IPython/Logger.py (Logger.switch_log): Created this to replace
6089 * IPython/Logger.py (Logger.switch_log): Created this to replace
6087 logon() and logoff(). It also fixes a nasty crash reported by
6090 logon() and logoff(). It also fixes a nasty crash reported by
6088 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6091 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6089
6092
6090 * IPython/iplib.py (complete): got auto-completion to work with
6093 * IPython/iplib.py (complete): got auto-completion to work with
6091 automagic (I had wanted this for a long time).
6094 automagic (I had wanted this for a long time).
6092
6095
6093 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6096 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6094 to @file, since file() is now a builtin and clashes with automagic
6097 to @file, since file() is now a builtin and clashes with automagic
6095 for @file.
6098 for @file.
6096
6099
6097 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6100 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6098 of this was previously in iplib, which had grown to more than 2000
6101 of this was previously in iplib, which had grown to more than 2000
6099 lines, way too long. No new functionality, but it makes managing
6102 lines, way too long. No new functionality, but it makes managing
6100 the code a bit easier.
6103 the code a bit easier.
6101
6104
6102 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6105 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6103 information to crash reports.
6106 information to crash reports.
6104
6107
6105 2002-02-12 Fernando Perez <fperez@colorado.edu>
6108 2002-02-12 Fernando Perez <fperez@colorado.edu>
6106
6109
6107 * Released 0.2.5.
6110 * Released 0.2.5.
6108
6111
6109 2002-02-11 Fernando Perez <fperez@colorado.edu>
6112 2002-02-11 Fernando Perez <fperez@colorado.edu>
6110
6113
6111 * Wrote a relatively complete Windows installer. It puts
6114 * Wrote a relatively complete Windows installer. It puts
6112 everything in place, creates Start Menu entries and fixes the
6115 everything in place, creates Start Menu entries and fixes the
6113 color issues. Nothing fancy, but it works.
6116 color issues. Nothing fancy, but it works.
6114
6117
6115 2002-02-10 Fernando Perez <fperez@colorado.edu>
6118 2002-02-10 Fernando Perez <fperez@colorado.edu>
6116
6119
6117 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6120 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6118 os.path.expanduser() call so that we can type @run ~/myfile.py and
6121 os.path.expanduser() call so that we can type @run ~/myfile.py and
6119 have thigs work as expected.
6122 have thigs work as expected.
6120
6123
6121 * IPython/genutils.py (page): fixed exception handling so things
6124 * IPython/genutils.py (page): fixed exception handling so things
6122 work both in Unix and Windows correctly. Quitting a pager triggers
6125 work both in Unix and Windows correctly. Quitting a pager triggers
6123 an IOError/broken pipe in Unix, and in windows not finding a pager
6126 an IOError/broken pipe in Unix, and in windows not finding a pager
6124 is also an IOError, so I had to actually look at the return value
6127 is also an IOError, so I had to actually look at the return value
6125 of the exception, not just the exception itself. Should be ok now.
6128 of the exception, not just the exception itself. Should be ok now.
6126
6129
6127 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6130 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6128 modified to allow case-insensitive color scheme changes.
6131 modified to allow case-insensitive color scheme changes.
6129
6132
6130 2002-02-09 Fernando Perez <fperez@colorado.edu>
6133 2002-02-09 Fernando Perez <fperez@colorado.edu>
6131
6134
6132 * IPython/genutils.py (native_line_ends): new function to leave
6135 * IPython/genutils.py (native_line_ends): new function to leave
6133 user config files with os-native line-endings.
6136 user config files with os-native line-endings.
6134
6137
6135 * README and manual updates.
6138 * README and manual updates.
6136
6139
6137 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6140 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6138 instead of StringType to catch Unicode strings.
6141 instead of StringType to catch Unicode strings.
6139
6142
6140 * IPython/genutils.py (filefind): fixed bug for paths with
6143 * IPython/genutils.py (filefind): fixed bug for paths with
6141 embedded spaces (very common in Windows).
6144 embedded spaces (very common in Windows).
6142
6145
6143 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6146 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6144 files under Windows, so that they get automatically associated
6147 files under Windows, so that they get automatically associated
6145 with a text editor. Windows makes it a pain to handle
6148 with a text editor. Windows makes it a pain to handle
6146 extension-less files.
6149 extension-less files.
6147
6150
6148 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6151 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6149 warning about readline only occur for Posix. In Windows there's no
6152 warning about readline only occur for Posix. In Windows there's no
6150 way to get readline, so why bother with the warning.
6153 way to get readline, so why bother with the warning.
6151
6154
6152 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6155 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6153 for __str__ instead of dir(self), since dir() changed in 2.2.
6156 for __str__ instead of dir(self), since dir() changed in 2.2.
6154
6157
6155 * Ported to Windows! Tested on XP, I suspect it should work fine
6158 * Ported to Windows! Tested on XP, I suspect it should work fine
6156 on NT/2000, but I don't think it will work on 98 et al. That
6159 on NT/2000, but I don't think it will work on 98 et al. That
6157 series of Windows is such a piece of junk anyway that I won't try
6160 series of Windows is such a piece of junk anyway that I won't try
6158 porting it there. The XP port was straightforward, showed a few
6161 porting it there. The XP port was straightforward, showed a few
6159 bugs here and there (fixed all), in particular some string
6162 bugs here and there (fixed all), in particular some string
6160 handling stuff which required considering Unicode strings (which
6163 handling stuff which required considering Unicode strings (which
6161 Windows uses). This is good, but hasn't been too tested :) No
6164 Windows uses). This is good, but hasn't been too tested :) No
6162 fancy installer yet, I'll put a note in the manual so people at
6165 fancy installer yet, I'll put a note in the manual so people at
6163 least make manually a shortcut.
6166 least make manually a shortcut.
6164
6167
6165 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6168 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6166 into a single one, "colors". This now controls both prompt and
6169 into a single one, "colors". This now controls both prompt and
6167 exception color schemes, and can be changed both at startup
6170 exception color schemes, and can be changed both at startup
6168 (either via command-line switches or via ipythonrc files) and at
6171 (either via command-line switches or via ipythonrc files) and at
6169 runtime, with @colors.
6172 runtime, with @colors.
6170 (Magic.magic_run): renamed @prun to @run and removed the old
6173 (Magic.magic_run): renamed @prun to @run and removed the old
6171 @run. The two were too similar to warrant keeping both.
6174 @run. The two were too similar to warrant keeping both.
6172
6175
6173 2002-02-03 Fernando Perez <fperez@colorado.edu>
6176 2002-02-03 Fernando Perez <fperez@colorado.edu>
6174
6177
6175 * IPython/iplib.py (install_first_time): Added comment on how to
6178 * IPython/iplib.py (install_first_time): Added comment on how to
6176 configure the color options for first-time users. Put a <return>
6179 configure the color options for first-time users. Put a <return>
6177 request at the end so that small-terminal users get a chance to
6180 request at the end so that small-terminal users get a chance to
6178 read the startup info.
6181 read the startup info.
6179
6182
6180 2002-01-23 Fernando Perez <fperez@colorado.edu>
6183 2002-01-23 Fernando Perez <fperez@colorado.edu>
6181
6184
6182 * IPython/iplib.py (CachedOutput.update): Changed output memory
6185 * IPython/iplib.py (CachedOutput.update): Changed output memory
6183 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6186 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6184 input history we still use _i. Did this b/c these variable are
6187 input history we still use _i. Did this b/c these variable are
6185 very commonly used in interactive work, so the less we need to
6188 very commonly used in interactive work, so the less we need to
6186 type the better off we are.
6189 type the better off we are.
6187 (Magic.magic_prun): updated @prun to better handle the namespaces
6190 (Magic.magic_prun): updated @prun to better handle the namespaces
6188 the file will run in, including a fix for __name__ not being set
6191 the file will run in, including a fix for __name__ not being set
6189 before.
6192 before.
6190
6193
6191 2002-01-20 Fernando Perez <fperez@colorado.edu>
6194 2002-01-20 Fernando Perez <fperez@colorado.edu>
6192
6195
6193 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6196 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6194 extra garbage for Python 2.2. Need to look more carefully into
6197 extra garbage for Python 2.2. Need to look more carefully into
6195 this later.
6198 this later.
6196
6199
6197 2002-01-19 Fernando Perez <fperez@colorado.edu>
6200 2002-01-19 Fernando Perez <fperez@colorado.edu>
6198
6201
6199 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6202 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6200 display SyntaxError exceptions properly formatted when they occur
6203 display SyntaxError exceptions properly formatted when they occur
6201 (they can be triggered by imported code).
6204 (they can be triggered by imported code).
6202
6205
6203 2002-01-18 Fernando Perez <fperez@colorado.edu>
6206 2002-01-18 Fernando Perez <fperez@colorado.edu>
6204
6207
6205 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6208 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6206 SyntaxError exceptions are reported nicely formatted, instead of
6209 SyntaxError exceptions are reported nicely formatted, instead of
6207 spitting out only offset information as before.
6210 spitting out only offset information as before.
6208 (Magic.magic_prun): Added the @prun function for executing
6211 (Magic.magic_prun): Added the @prun function for executing
6209 programs with command line args inside IPython.
6212 programs with command line args inside IPython.
6210
6213
6211 2002-01-16 Fernando Perez <fperez@colorado.edu>
6214 2002-01-16 Fernando Perez <fperez@colorado.edu>
6212
6215
6213 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6216 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6214 to *not* include the last item given in a range. This brings their
6217 to *not* include the last item given in a range. This brings their
6215 behavior in line with Python's slicing:
6218 behavior in line with Python's slicing:
6216 a[n1:n2] -> a[n1]...a[n2-1]
6219 a[n1:n2] -> a[n1]...a[n2-1]
6217 It may be a bit less convenient, but I prefer to stick to Python's
6220 It may be a bit less convenient, but I prefer to stick to Python's
6218 conventions *everywhere*, so users never have to wonder.
6221 conventions *everywhere*, so users never have to wonder.
6219 (Magic.magic_macro): Added @macro function to ease the creation of
6222 (Magic.magic_macro): Added @macro function to ease the creation of
6220 macros.
6223 macros.
6221
6224
6222 2002-01-05 Fernando Perez <fperez@colorado.edu>
6225 2002-01-05 Fernando Perez <fperez@colorado.edu>
6223
6226
6224 * Released 0.2.4.
6227 * Released 0.2.4.
6225
6228
6226 * IPython/iplib.py (Magic.magic_pdef):
6229 * IPython/iplib.py (Magic.magic_pdef):
6227 (InteractiveShell.safe_execfile): report magic lines and error
6230 (InteractiveShell.safe_execfile): report magic lines and error
6228 lines without line numbers so one can easily copy/paste them for
6231 lines without line numbers so one can easily copy/paste them for
6229 re-execution.
6232 re-execution.
6230
6233
6231 * Updated manual with recent changes.
6234 * Updated manual with recent changes.
6232
6235
6233 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6236 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6234 docstring printing when class? is called. Very handy for knowing
6237 docstring printing when class? is called. Very handy for knowing
6235 how to create class instances (as long as __init__ is well
6238 how to create class instances (as long as __init__ is well
6236 documented, of course :)
6239 documented, of course :)
6237 (Magic.magic_doc): print both class and constructor docstrings.
6240 (Magic.magic_doc): print both class and constructor docstrings.
6238 (Magic.magic_pdef): give constructor info if passed a class and
6241 (Magic.magic_pdef): give constructor info if passed a class and
6239 __call__ info for callable object instances.
6242 __call__ info for callable object instances.
6240
6243
6241 2002-01-04 Fernando Perez <fperez@colorado.edu>
6244 2002-01-04 Fernando Perez <fperez@colorado.edu>
6242
6245
6243 * Made deep_reload() off by default. It doesn't always work
6246 * Made deep_reload() off by default. It doesn't always work
6244 exactly as intended, so it's probably safer to have it off. It's
6247 exactly as intended, so it's probably safer to have it off. It's
6245 still available as dreload() anyway, so nothing is lost.
6248 still available as dreload() anyway, so nothing is lost.
6246
6249
6247 2002-01-02 Fernando Perez <fperez@colorado.edu>
6250 2002-01-02 Fernando Perez <fperez@colorado.edu>
6248
6251
6249 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6252 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6250 so I wanted an updated release).
6253 so I wanted an updated release).
6251
6254
6252 2001-12-27 Fernando Perez <fperez@colorado.edu>
6255 2001-12-27 Fernando Perez <fperez@colorado.edu>
6253
6256
6254 * IPython/iplib.py (InteractiveShell.interact): Added the original
6257 * IPython/iplib.py (InteractiveShell.interact): Added the original
6255 code from 'code.py' for this module in order to change the
6258 code from 'code.py' for this module in order to change the
6256 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6259 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6257 the history cache would break when the user hit Ctrl-C, and
6260 the history cache would break when the user hit Ctrl-C, and
6258 interact() offers no way to add any hooks to it.
6261 interact() offers no way to add any hooks to it.
6259
6262
6260 2001-12-23 Fernando Perez <fperez@colorado.edu>
6263 2001-12-23 Fernando Perez <fperez@colorado.edu>
6261
6264
6262 * setup.py: added check for 'MANIFEST' before trying to remove
6265 * setup.py: added check for 'MANIFEST' before trying to remove
6263 it. Thanks to Sean Reifschneider.
6266 it. Thanks to Sean Reifschneider.
6264
6267
6265 2001-12-22 Fernando Perez <fperez@colorado.edu>
6268 2001-12-22 Fernando Perez <fperez@colorado.edu>
6266
6269
6267 * Released 0.2.2.
6270 * Released 0.2.2.
6268
6271
6269 * Finished (reasonably) writing the manual. Later will add the
6272 * Finished (reasonably) writing the manual. Later will add the
6270 python-standard navigation stylesheets, but for the time being
6273 python-standard navigation stylesheets, but for the time being
6271 it's fairly complete. Distribution will include html and pdf
6274 it's fairly complete. Distribution will include html and pdf
6272 versions.
6275 versions.
6273
6276
6274 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6277 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6275 (MayaVi author).
6278 (MayaVi author).
6276
6279
6277 2001-12-21 Fernando Perez <fperez@colorado.edu>
6280 2001-12-21 Fernando Perez <fperez@colorado.edu>
6278
6281
6279 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6282 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6280 good public release, I think (with the manual and the distutils
6283 good public release, I think (with the manual and the distutils
6281 installer). The manual can use some work, but that can go
6284 installer). The manual can use some work, but that can go
6282 slowly. Otherwise I think it's quite nice for end users. Next
6285 slowly. Otherwise I think it's quite nice for end users. Next
6283 summer, rewrite the guts of it...
6286 summer, rewrite the guts of it...
6284
6287
6285 * Changed format of ipythonrc files to use whitespace as the
6288 * Changed format of ipythonrc files to use whitespace as the
6286 separator instead of an explicit '='. Cleaner.
6289 separator instead of an explicit '='. Cleaner.
6287
6290
6288 2001-12-20 Fernando Perez <fperez@colorado.edu>
6291 2001-12-20 Fernando Perez <fperez@colorado.edu>
6289
6292
6290 * Started a manual in LyX. For now it's just a quick merge of the
6293 * Started a manual in LyX. For now it's just a quick merge of the
6291 various internal docstrings and READMEs. Later it may grow into a
6294 various internal docstrings and READMEs. Later it may grow into a
6292 nice, full-blown manual.
6295 nice, full-blown manual.
6293
6296
6294 * Set up a distutils based installer. Installation should now be
6297 * Set up a distutils based installer. Installation should now be
6295 trivially simple for end-users.
6298 trivially simple for end-users.
6296
6299
6297 2001-12-11 Fernando Perez <fperez@colorado.edu>
6300 2001-12-11 Fernando Perez <fperez@colorado.edu>
6298
6301
6299 * Released 0.2.0. First public release, announced it at
6302 * Released 0.2.0. First public release, announced it at
6300 comp.lang.python. From now on, just bugfixes...
6303 comp.lang.python. From now on, just bugfixes...
6301
6304
6302 * Went through all the files, set copyright/license notices and
6305 * Went through all the files, set copyright/license notices and
6303 cleaned up things. Ready for release.
6306 cleaned up things. Ready for release.
6304
6307
6305 2001-12-10 Fernando Perez <fperez@colorado.edu>
6308 2001-12-10 Fernando Perez <fperez@colorado.edu>
6306
6309
6307 * Changed the first-time installer not to use tarfiles. It's more
6310 * Changed the first-time installer not to use tarfiles. It's more
6308 robust now and less unix-dependent. Also makes it easier for
6311 robust now and less unix-dependent. Also makes it easier for
6309 people to later upgrade versions.
6312 people to later upgrade versions.
6310
6313
6311 * Changed @exit to @abort to reflect the fact that it's pretty
6314 * Changed @exit to @abort to reflect the fact that it's pretty
6312 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6315 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6313 becomes significant only when IPyhton is embedded: in that case,
6316 becomes significant only when IPyhton is embedded: in that case,
6314 C-D closes IPython only, but @abort kills the enclosing program
6317 C-D closes IPython only, but @abort kills the enclosing program
6315 too (unless it had called IPython inside a try catching
6318 too (unless it had called IPython inside a try catching
6316 SystemExit).
6319 SystemExit).
6317
6320
6318 * Created Shell module which exposes the actuall IPython Shell
6321 * Created Shell module which exposes the actuall IPython Shell
6319 classes, currently the normal and the embeddable one. This at
6322 classes, currently the normal and the embeddable one. This at
6320 least offers a stable interface we won't need to change when
6323 least offers a stable interface we won't need to change when
6321 (later) the internals are rewritten. That rewrite will be confined
6324 (later) the internals are rewritten. That rewrite will be confined
6322 to iplib and ipmaker, but the Shell interface should remain as is.
6325 to iplib and ipmaker, but the Shell interface should remain as is.
6323
6326
6324 * Added embed module which offers an embeddable IPShell object,
6327 * Added embed module which offers an embeddable IPShell object,
6325 useful to fire up IPython *inside* a running program. Great for
6328 useful to fire up IPython *inside* a running program. Great for
6326 debugging or dynamical data analysis.
6329 debugging or dynamical data analysis.
6327
6330
6328 2001-12-08 Fernando Perez <fperez@colorado.edu>
6331 2001-12-08 Fernando Perez <fperez@colorado.edu>
6329
6332
6330 * Fixed small bug preventing seeing info from methods of defined
6333 * Fixed small bug preventing seeing info from methods of defined
6331 objects (incorrect namespace in _ofind()).
6334 objects (incorrect namespace in _ofind()).
6332
6335
6333 * Documentation cleanup. Moved the main usage docstrings to a
6336 * Documentation cleanup. Moved the main usage docstrings to a
6334 separate file, usage.py (cleaner to maintain, and hopefully in the
6337 separate file, usage.py (cleaner to maintain, and hopefully in the
6335 future some perlpod-like way of producing interactive, man and
6338 future some perlpod-like way of producing interactive, man and
6336 html docs out of it will be found).
6339 html docs out of it will be found).
6337
6340
6338 * Added @profile to see your profile at any time.
6341 * Added @profile to see your profile at any time.
6339
6342
6340 * Added @p as an alias for 'print'. It's especially convenient if
6343 * Added @p as an alias for 'print'. It's especially convenient if
6341 using automagic ('p x' prints x).
6344 using automagic ('p x' prints x).
6342
6345
6343 * Small cleanups and fixes after a pychecker run.
6346 * Small cleanups and fixes after a pychecker run.
6344
6347
6345 * Changed the @cd command to handle @cd - and @cd -<n> for
6348 * Changed the @cd command to handle @cd - and @cd -<n> for
6346 visiting any directory in _dh.
6349 visiting any directory in _dh.
6347
6350
6348 * Introduced _dh, a history of visited directories. @dhist prints
6351 * Introduced _dh, a history of visited directories. @dhist prints
6349 it out with numbers.
6352 it out with numbers.
6350
6353
6351 2001-12-07 Fernando Perez <fperez@colorado.edu>
6354 2001-12-07 Fernando Perez <fperez@colorado.edu>
6352
6355
6353 * Released 0.1.22
6356 * Released 0.1.22
6354
6357
6355 * Made initialization a bit more robust against invalid color
6358 * Made initialization a bit more robust against invalid color
6356 options in user input (exit, not traceback-crash).
6359 options in user input (exit, not traceback-crash).
6357
6360
6358 * Changed the bug crash reporter to write the report only in the
6361 * Changed the bug crash reporter to write the report only in the
6359 user's .ipython directory. That way IPython won't litter people's
6362 user's .ipython directory. That way IPython won't litter people's
6360 hard disks with crash files all over the place. Also print on
6363 hard disks with crash files all over the place. Also print on
6361 screen the necessary mail command.
6364 screen the necessary mail command.
6362
6365
6363 * With the new ultraTB, implemented LightBG color scheme for light
6366 * With the new ultraTB, implemented LightBG color scheme for light
6364 background terminals. A lot of people like white backgrounds, so I
6367 background terminals. A lot of people like white backgrounds, so I
6365 guess we should at least give them something readable.
6368 guess we should at least give them something readable.
6366
6369
6367 2001-12-06 Fernando Perez <fperez@colorado.edu>
6370 2001-12-06 Fernando Perez <fperez@colorado.edu>
6368
6371
6369 * Modified the structure of ultraTB. Now there's a proper class
6372 * Modified the structure of ultraTB. Now there's a proper class
6370 for tables of color schemes which allow adding schemes easily and
6373 for tables of color schemes which allow adding schemes easily and
6371 switching the active scheme without creating a new instance every
6374 switching the active scheme without creating a new instance every
6372 time (which was ridiculous). The syntax for creating new schemes
6375 time (which was ridiculous). The syntax for creating new schemes
6373 is also cleaner. I think ultraTB is finally done, with a clean
6376 is also cleaner. I think ultraTB is finally done, with a clean
6374 class structure. Names are also much cleaner (now there's proper
6377 class structure. Names are also much cleaner (now there's proper
6375 color tables, no need for every variable to also have 'color' in
6378 color tables, no need for every variable to also have 'color' in
6376 its name).
6379 its name).
6377
6380
6378 * Broke down genutils into separate files. Now genutils only
6381 * Broke down genutils into separate files. Now genutils only
6379 contains utility functions, and classes have been moved to their
6382 contains utility functions, and classes have been moved to their
6380 own files (they had enough independent functionality to warrant
6383 own files (they had enough independent functionality to warrant
6381 it): ConfigLoader, OutputTrap, Struct.
6384 it): ConfigLoader, OutputTrap, Struct.
6382
6385
6383 2001-12-05 Fernando Perez <fperez@colorado.edu>
6386 2001-12-05 Fernando Perez <fperez@colorado.edu>
6384
6387
6385 * IPython turns 21! Released version 0.1.21, as a candidate for
6388 * IPython turns 21! Released version 0.1.21, as a candidate for
6386 public consumption. If all goes well, release in a few days.
6389 public consumption. If all goes well, release in a few days.
6387
6390
6388 * Fixed path bug (files in Extensions/ directory wouldn't be found
6391 * Fixed path bug (files in Extensions/ directory wouldn't be found
6389 unless IPython/ was explicitly in sys.path).
6392 unless IPython/ was explicitly in sys.path).
6390
6393
6391 * Extended the FlexCompleter class as MagicCompleter to allow
6394 * Extended the FlexCompleter class as MagicCompleter to allow
6392 completion of @-starting lines.
6395 completion of @-starting lines.
6393
6396
6394 * Created __release__.py file as a central repository for release
6397 * Created __release__.py file as a central repository for release
6395 info that other files can read from.
6398 info that other files can read from.
6396
6399
6397 * Fixed small bug in logging: when logging was turned on in
6400 * Fixed small bug in logging: when logging was turned on in
6398 mid-session, old lines with special meanings (!@?) were being
6401 mid-session, old lines with special meanings (!@?) were being
6399 logged without the prepended comment, which is necessary since
6402 logged without the prepended comment, which is necessary since
6400 they are not truly valid python syntax. This should make session
6403 they are not truly valid python syntax. This should make session
6401 restores produce less errors.
6404 restores produce less errors.
6402
6405
6403 * The namespace cleanup forced me to make a FlexCompleter class
6406 * The namespace cleanup forced me to make a FlexCompleter class
6404 which is nothing but a ripoff of rlcompleter, but with selectable
6407 which is nothing but a ripoff of rlcompleter, but with selectable
6405 namespace (rlcompleter only works in __main__.__dict__). I'll try
6408 namespace (rlcompleter only works in __main__.__dict__). I'll try
6406 to submit a note to the authors to see if this change can be
6409 to submit a note to the authors to see if this change can be
6407 incorporated in future rlcompleter releases (Dec.6: done)
6410 incorporated in future rlcompleter releases (Dec.6: done)
6408
6411
6409 * More fixes to namespace handling. It was a mess! Now all
6412 * More fixes to namespace handling. It was a mess! Now all
6410 explicit references to __main__.__dict__ are gone (except when
6413 explicit references to __main__.__dict__ are gone (except when
6411 really needed) and everything is handled through the namespace
6414 really needed) and everything is handled through the namespace
6412 dicts in the IPython instance. We seem to be getting somewhere
6415 dicts in the IPython instance. We seem to be getting somewhere
6413 with this, finally...
6416 with this, finally...
6414
6417
6415 * Small documentation updates.
6418 * Small documentation updates.
6416
6419
6417 * Created the Extensions directory under IPython (with an
6420 * Created the Extensions directory under IPython (with an
6418 __init__.py). Put the PhysicalQ stuff there. This directory should
6421 __init__.py). Put the PhysicalQ stuff there. This directory should
6419 be used for all special-purpose extensions.
6422 be used for all special-purpose extensions.
6420
6423
6421 * File renaming:
6424 * File renaming:
6422 ipythonlib --> ipmaker
6425 ipythonlib --> ipmaker
6423 ipplib --> iplib
6426 ipplib --> iplib
6424 This makes a bit more sense in terms of what these files actually do.
6427 This makes a bit more sense in terms of what these files actually do.
6425
6428
6426 * Moved all the classes and functions in ipythonlib to ipplib, so
6429 * Moved all the classes and functions in ipythonlib to ipplib, so
6427 now ipythonlib only has make_IPython(). This will ease up its
6430 now ipythonlib only has make_IPython(). This will ease up its
6428 splitting in smaller functional chunks later.
6431 splitting in smaller functional chunks later.
6429
6432
6430 * Cleaned up (done, I think) output of @whos. Better column
6433 * Cleaned up (done, I think) output of @whos. Better column
6431 formatting, and now shows str(var) for as much as it can, which is
6434 formatting, and now shows str(var) for as much as it can, which is
6432 typically what one gets with a 'print var'.
6435 typically what one gets with a 'print var'.
6433
6436
6434 2001-12-04 Fernando Perez <fperez@colorado.edu>
6437 2001-12-04 Fernando Perez <fperez@colorado.edu>
6435
6438
6436 * Fixed namespace problems. Now builtin/IPyhton/user names get
6439 * Fixed namespace problems. Now builtin/IPyhton/user names get
6437 properly reported in their namespace. Internal namespace handling
6440 properly reported in their namespace. Internal namespace handling
6438 is finally getting decent (not perfect yet, but much better than
6441 is finally getting decent (not perfect yet, but much better than
6439 the ad-hoc mess we had).
6442 the ad-hoc mess we had).
6440
6443
6441 * Removed -exit option. If people just want to run a python
6444 * Removed -exit option. If people just want to run a python
6442 script, that's what the normal interpreter is for. Less
6445 script, that's what the normal interpreter is for. Less
6443 unnecessary options, less chances for bugs.
6446 unnecessary options, less chances for bugs.
6444
6447
6445 * Added a crash handler which generates a complete post-mortem if
6448 * Added a crash handler which generates a complete post-mortem if
6446 IPython crashes. This will help a lot in tracking bugs down the
6449 IPython crashes. This will help a lot in tracking bugs down the
6447 road.
6450 road.
6448
6451
6449 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6452 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6450 which were boud to functions being reassigned would bypass the
6453 which were boud to functions being reassigned would bypass the
6451 logger, breaking the sync of _il with the prompt counter. This
6454 logger, breaking the sync of _il with the prompt counter. This
6452 would then crash IPython later when a new line was logged.
6455 would then crash IPython later when a new line was logged.
6453
6456
6454 2001-12-02 Fernando Perez <fperez@colorado.edu>
6457 2001-12-02 Fernando Perez <fperez@colorado.edu>
6455
6458
6456 * Made IPython a package. This means people don't have to clutter
6459 * Made IPython a package. This means people don't have to clutter
6457 their sys.path with yet another directory. Changed the INSTALL
6460 their sys.path with yet another directory. Changed the INSTALL
6458 file accordingly.
6461 file accordingly.
6459
6462
6460 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6463 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6461 sorts its output (so @who shows it sorted) and @whos formats the
6464 sorts its output (so @who shows it sorted) and @whos formats the
6462 table according to the width of the first column. Nicer, easier to
6465 table according to the width of the first column. Nicer, easier to
6463 read. Todo: write a generic table_format() which takes a list of
6466 read. Todo: write a generic table_format() which takes a list of
6464 lists and prints it nicely formatted, with optional row/column
6467 lists and prints it nicely formatted, with optional row/column
6465 separators and proper padding and justification.
6468 separators and proper padding and justification.
6466
6469
6467 * Released 0.1.20
6470 * Released 0.1.20
6468
6471
6469 * Fixed bug in @log which would reverse the inputcache list (a
6472 * Fixed bug in @log which would reverse the inputcache list (a
6470 copy operation was missing).
6473 copy operation was missing).
6471
6474
6472 * Code cleanup. @config was changed to use page(). Better, since
6475 * Code cleanup. @config was changed to use page(). Better, since
6473 its output is always quite long.
6476 its output is always quite long.
6474
6477
6475 * Itpl is back as a dependency. I was having too many problems
6478 * Itpl is back as a dependency. I was having too many problems
6476 getting the parametric aliases to work reliably, and it's just
6479 getting the parametric aliases to work reliably, and it's just
6477 easier to code weird string operations with it than playing %()s
6480 easier to code weird string operations with it than playing %()s
6478 games. It's only ~6k, so I don't think it's too big a deal.
6481 games. It's only ~6k, so I don't think it's too big a deal.
6479
6482
6480 * Found (and fixed) a very nasty bug with history. !lines weren't
6483 * Found (and fixed) a very nasty bug with history. !lines weren't
6481 getting cached, and the out of sync caches would crash
6484 getting cached, and the out of sync caches would crash
6482 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6485 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6483 division of labor a bit better. Bug fixed, cleaner structure.
6486 division of labor a bit better. Bug fixed, cleaner structure.
6484
6487
6485 2001-12-01 Fernando Perez <fperez@colorado.edu>
6488 2001-12-01 Fernando Perez <fperez@colorado.edu>
6486
6489
6487 * Released 0.1.19
6490 * Released 0.1.19
6488
6491
6489 * Added option -n to @hist to prevent line number printing. Much
6492 * Added option -n to @hist to prevent line number printing. Much
6490 easier to copy/paste code this way.
6493 easier to copy/paste code this way.
6491
6494
6492 * Created global _il to hold the input list. Allows easy
6495 * Created global _il to hold the input list. Allows easy
6493 re-execution of blocks of code by slicing it (inspired by Janko's
6496 re-execution of blocks of code by slicing it (inspired by Janko's
6494 comment on 'macros').
6497 comment on 'macros').
6495
6498
6496 * Small fixes and doc updates.
6499 * Small fixes and doc updates.
6497
6500
6498 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6501 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6499 much too fragile with automagic. Handles properly multi-line
6502 much too fragile with automagic. Handles properly multi-line
6500 statements and takes parameters.
6503 statements and takes parameters.
6501
6504
6502 2001-11-30 Fernando Perez <fperez@colorado.edu>
6505 2001-11-30 Fernando Perez <fperez@colorado.edu>
6503
6506
6504 * Version 0.1.18 released.
6507 * Version 0.1.18 released.
6505
6508
6506 * Fixed nasty namespace bug in initial module imports.
6509 * Fixed nasty namespace bug in initial module imports.
6507
6510
6508 * Added copyright/license notes to all code files (except
6511 * Added copyright/license notes to all code files (except
6509 DPyGetOpt). For the time being, LGPL. That could change.
6512 DPyGetOpt). For the time being, LGPL. That could change.
6510
6513
6511 * Rewrote a much nicer README, updated INSTALL, cleaned up
6514 * Rewrote a much nicer README, updated INSTALL, cleaned up
6512 ipythonrc-* samples.
6515 ipythonrc-* samples.
6513
6516
6514 * Overall code/documentation cleanup. Basically ready for
6517 * Overall code/documentation cleanup. Basically ready for
6515 release. Only remaining thing: licence decision (LGPL?).
6518 release. Only remaining thing: licence decision (LGPL?).
6516
6519
6517 * Converted load_config to a class, ConfigLoader. Now recursion
6520 * Converted load_config to a class, ConfigLoader. Now recursion
6518 control is better organized. Doesn't include the same file twice.
6521 control is better organized. Doesn't include the same file twice.
6519
6522
6520 2001-11-29 Fernando Perez <fperez@colorado.edu>
6523 2001-11-29 Fernando Perez <fperez@colorado.edu>
6521
6524
6522 * Got input history working. Changed output history variables from
6525 * Got input history working. Changed output history variables from
6523 _p to _o so that _i is for input and _o for output. Just cleaner
6526 _p to _o so that _i is for input and _o for output. Just cleaner
6524 convention.
6527 convention.
6525
6528
6526 * Implemented parametric aliases. This pretty much allows the
6529 * Implemented parametric aliases. This pretty much allows the
6527 alias system to offer full-blown shell convenience, I think.
6530 alias system to offer full-blown shell convenience, I think.
6528
6531
6529 * Version 0.1.17 released, 0.1.18 opened.
6532 * Version 0.1.17 released, 0.1.18 opened.
6530
6533
6531 * dot_ipython/ipythonrc (alias): added documentation.
6534 * dot_ipython/ipythonrc (alias): added documentation.
6532 (xcolor): Fixed small bug (xcolors -> xcolor)
6535 (xcolor): Fixed small bug (xcolors -> xcolor)
6533
6536
6534 * Changed the alias system. Now alias is a magic command to define
6537 * Changed the alias system. Now alias is a magic command to define
6535 aliases just like the shell. Rationale: the builtin magics should
6538 aliases just like the shell. Rationale: the builtin magics should
6536 be there for things deeply connected to IPython's
6539 be there for things deeply connected to IPython's
6537 architecture. And this is a much lighter system for what I think
6540 architecture. And this is a much lighter system for what I think
6538 is the really important feature: allowing users to define quickly
6541 is the really important feature: allowing users to define quickly
6539 magics that will do shell things for them, so they can customize
6542 magics that will do shell things for them, so they can customize
6540 IPython easily to match their work habits. If someone is really
6543 IPython easily to match their work habits. If someone is really
6541 desperate to have another name for a builtin alias, they can
6544 desperate to have another name for a builtin alias, they can
6542 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6545 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6543 works.
6546 works.
6544
6547
6545 2001-11-28 Fernando Perez <fperez@colorado.edu>
6548 2001-11-28 Fernando Perez <fperez@colorado.edu>
6546
6549
6547 * Changed @file so that it opens the source file at the proper
6550 * Changed @file so that it opens the source file at the proper
6548 line. Since it uses less, if your EDITOR environment is
6551 line. Since it uses less, if your EDITOR environment is
6549 configured, typing v will immediately open your editor of choice
6552 configured, typing v will immediately open your editor of choice
6550 right at the line where the object is defined. Not as quick as
6553 right at the line where the object is defined. Not as quick as
6551 having a direct @edit command, but for all intents and purposes it
6554 having a direct @edit command, but for all intents and purposes it
6552 works. And I don't have to worry about writing @edit to deal with
6555 works. And I don't have to worry about writing @edit to deal with
6553 all the editors, less does that.
6556 all the editors, less does that.
6554
6557
6555 * Version 0.1.16 released, 0.1.17 opened.
6558 * Version 0.1.16 released, 0.1.17 opened.
6556
6559
6557 * Fixed some nasty bugs in the page/page_dumb combo that could
6560 * Fixed some nasty bugs in the page/page_dumb combo that could
6558 crash IPython.
6561 crash IPython.
6559
6562
6560 2001-11-27 Fernando Perez <fperez@colorado.edu>
6563 2001-11-27 Fernando Perez <fperez@colorado.edu>
6561
6564
6562 * Version 0.1.15 released, 0.1.16 opened.
6565 * Version 0.1.15 released, 0.1.16 opened.
6563
6566
6564 * Finally got ? and ?? to work for undefined things: now it's
6567 * Finally got ? and ?? to work for undefined things: now it's
6565 possible to type {}.get? and get information about the get method
6568 possible to type {}.get? and get information about the get method
6566 of dicts, or os.path? even if only os is defined (so technically
6569 of dicts, or os.path? even if only os is defined (so technically
6567 os.path isn't). Works at any level. For example, after import os,
6570 os.path isn't). Works at any level. For example, after import os,
6568 os?, os.path?, os.path.abspath? all work. This is great, took some
6571 os?, os.path?, os.path.abspath? all work. This is great, took some
6569 work in _ofind.
6572 work in _ofind.
6570
6573
6571 * Fixed more bugs with logging. The sanest way to do it was to add
6574 * Fixed more bugs with logging. The sanest way to do it was to add
6572 to @log a 'mode' parameter. Killed two in one shot (this mode
6575 to @log a 'mode' parameter. Killed two in one shot (this mode
6573 option was a request of Janko's). I think it's finally clean
6576 option was a request of Janko's). I think it's finally clean
6574 (famous last words).
6577 (famous last words).
6575
6578
6576 * Added a page_dumb() pager which does a decent job of paging on
6579 * Added a page_dumb() pager which does a decent job of paging on
6577 screen, if better things (like less) aren't available. One less
6580 screen, if better things (like less) aren't available. One less
6578 unix dependency (someday maybe somebody will port this to
6581 unix dependency (someday maybe somebody will port this to
6579 windows).
6582 windows).
6580
6583
6581 * Fixed problem in magic_log: would lock of logging out if log
6584 * Fixed problem in magic_log: would lock of logging out if log
6582 creation failed (because it would still think it had succeeded).
6585 creation failed (because it would still think it had succeeded).
6583
6586
6584 * Improved the page() function using curses to auto-detect screen
6587 * Improved the page() function using curses to auto-detect screen
6585 size. Now it can make a much better decision on whether to print
6588 size. Now it can make a much better decision on whether to print
6586 or page a string. Option screen_length was modified: a value 0
6589 or page a string. Option screen_length was modified: a value 0
6587 means auto-detect, and that's the default now.
6590 means auto-detect, and that's the default now.
6588
6591
6589 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6592 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6590 go out. I'll test it for a few days, then talk to Janko about
6593 go out. I'll test it for a few days, then talk to Janko about
6591 licences and announce it.
6594 licences and announce it.
6592
6595
6593 * Fixed the length of the auto-generated ---> prompt which appears
6596 * Fixed the length of the auto-generated ---> prompt which appears
6594 for auto-parens and auto-quotes. Getting this right isn't trivial,
6597 for auto-parens and auto-quotes. Getting this right isn't trivial,
6595 with all the color escapes, different prompt types and optional
6598 with all the color escapes, different prompt types and optional
6596 separators. But it seems to be working in all the combinations.
6599 separators. But it seems to be working in all the combinations.
6597
6600
6598 2001-11-26 Fernando Perez <fperez@colorado.edu>
6601 2001-11-26 Fernando Perez <fperez@colorado.edu>
6599
6602
6600 * Wrote a regexp filter to get option types from the option names
6603 * Wrote a regexp filter to get option types from the option names
6601 string. This eliminates the need to manually keep two duplicate
6604 string. This eliminates the need to manually keep two duplicate
6602 lists.
6605 lists.
6603
6606
6604 * Removed the unneeded check_option_names. Now options are handled
6607 * Removed the unneeded check_option_names. Now options are handled
6605 in a much saner manner and it's easy to visually check that things
6608 in a much saner manner and it's easy to visually check that things
6606 are ok.
6609 are ok.
6607
6610
6608 * Updated version numbers on all files I modified to carry a
6611 * Updated version numbers on all files I modified to carry a
6609 notice so Janko and Nathan have clear version markers.
6612 notice so Janko and Nathan have clear version markers.
6610
6613
6611 * Updated docstring for ultraTB with my changes. I should send
6614 * Updated docstring for ultraTB with my changes. I should send
6612 this to Nathan.
6615 this to Nathan.
6613
6616
6614 * Lots of small fixes. Ran everything through pychecker again.
6617 * Lots of small fixes. Ran everything through pychecker again.
6615
6618
6616 * Made loading of deep_reload an cmd line option. If it's not too
6619 * Made loading of deep_reload an cmd line option. If it's not too
6617 kosher, now people can just disable it. With -nodeep_reload it's
6620 kosher, now people can just disable it. With -nodeep_reload it's
6618 still available as dreload(), it just won't overwrite reload().
6621 still available as dreload(), it just won't overwrite reload().
6619
6622
6620 * Moved many options to the no| form (-opt and -noopt
6623 * Moved many options to the no| form (-opt and -noopt
6621 accepted). Cleaner.
6624 accepted). Cleaner.
6622
6625
6623 * Changed magic_log so that if called with no parameters, it uses
6626 * Changed magic_log so that if called with no parameters, it uses
6624 'rotate' mode. That way auto-generated logs aren't automatically
6627 'rotate' mode. That way auto-generated logs aren't automatically
6625 over-written. For normal logs, now a backup is made if it exists
6628 over-written. For normal logs, now a backup is made if it exists
6626 (only 1 level of backups). A new 'backup' mode was added to the
6629 (only 1 level of backups). A new 'backup' mode was added to the
6627 Logger class to support this. This was a request by Janko.
6630 Logger class to support this. This was a request by Janko.
6628
6631
6629 * Added @logoff/@logon to stop/restart an active log.
6632 * Added @logoff/@logon to stop/restart an active log.
6630
6633
6631 * Fixed a lot of bugs in log saving/replay. It was pretty
6634 * Fixed a lot of bugs in log saving/replay. It was pretty
6632 broken. Now special lines (!@,/) appear properly in the command
6635 broken. Now special lines (!@,/) appear properly in the command
6633 history after a log replay.
6636 history after a log replay.
6634
6637
6635 * Tried and failed to implement full session saving via pickle. My
6638 * Tried and failed to implement full session saving via pickle. My
6636 idea was to pickle __main__.__dict__, but modules can't be
6639 idea was to pickle __main__.__dict__, but modules can't be
6637 pickled. This would be a better alternative to replaying logs, but
6640 pickled. This would be a better alternative to replaying logs, but
6638 seems quite tricky to get to work. Changed -session to be called
6641 seems quite tricky to get to work. Changed -session to be called
6639 -logplay, which more accurately reflects what it does. And if we
6642 -logplay, which more accurately reflects what it does. And if we
6640 ever get real session saving working, -session is now available.
6643 ever get real session saving working, -session is now available.
6641
6644
6642 * Implemented color schemes for prompts also. As for tracebacks,
6645 * Implemented color schemes for prompts also. As for tracebacks,
6643 currently only NoColor and Linux are supported. But now the
6646 currently only NoColor and Linux are supported. But now the
6644 infrastructure is in place, based on a generic ColorScheme
6647 infrastructure is in place, based on a generic ColorScheme
6645 class. So writing and activating new schemes both for the prompts
6648 class. So writing and activating new schemes both for the prompts
6646 and the tracebacks should be straightforward.
6649 and the tracebacks should be straightforward.
6647
6650
6648 * Version 0.1.13 released, 0.1.14 opened.
6651 * Version 0.1.13 released, 0.1.14 opened.
6649
6652
6650 * Changed handling of options for output cache. Now counter is
6653 * Changed handling of options for output cache. Now counter is
6651 hardwired starting at 1 and one specifies the maximum number of
6654 hardwired starting at 1 and one specifies the maximum number of
6652 entries *in the outcache* (not the max prompt counter). This is
6655 entries *in the outcache* (not the max prompt counter). This is
6653 much better, since many statements won't increase the cache
6656 much better, since many statements won't increase the cache
6654 count. It also eliminated some confusing options, now there's only
6657 count. It also eliminated some confusing options, now there's only
6655 one: cache_size.
6658 one: cache_size.
6656
6659
6657 * Added 'alias' magic function and magic_alias option in the
6660 * Added 'alias' magic function and magic_alias option in the
6658 ipythonrc file. Now the user can easily define whatever names he
6661 ipythonrc file. Now the user can easily define whatever names he
6659 wants for the magic functions without having to play weird
6662 wants for the magic functions without having to play weird
6660 namespace games. This gives IPython a real shell-like feel.
6663 namespace games. This gives IPython a real shell-like feel.
6661
6664
6662 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6665 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6663 @ or not).
6666 @ or not).
6664
6667
6665 This was one of the last remaining 'visible' bugs (that I know
6668 This was one of the last remaining 'visible' bugs (that I know
6666 of). I think if I can clean up the session loading so it works
6669 of). I think if I can clean up the session loading so it works
6667 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6670 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6668 about licensing).
6671 about licensing).
6669
6672
6670 2001-11-25 Fernando Perez <fperez@colorado.edu>
6673 2001-11-25 Fernando Perez <fperez@colorado.edu>
6671
6674
6672 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6675 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6673 there's a cleaner distinction between what ? and ?? show.
6676 there's a cleaner distinction between what ? and ?? show.
6674
6677
6675 * Added screen_length option. Now the user can define his own
6678 * Added screen_length option. Now the user can define his own
6676 screen size for page() operations.
6679 screen size for page() operations.
6677
6680
6678 * Implemented magic shell-like functions with automatic code
6681 * Implemented magic shell-like functions with automatic code
6679 generation. Now adding another function is just a matter of adding
6682 generation. Now adding another function is just a matter of adding
6680 an entry to a dict, and the function is dynamically generated at
6683 an entry to a dict, and the function is dynamically generated at
6681 run-time. Python has some really cool features!
6684 run-time. Python has some really cool features!
6682
6685
6683 * Renamed many options to cleanup conventions a little. Now all
6686 * Renamed many options to cleanup conventions a little. Now all
6684 are lowercase, and only underscores where needed. Also in the code
6687 are lowercase, and only underscores where needed. Also in the code
6685 option name tables are clearer.
6688 option name tables are clearer.
6686
6689
6687 * Changed prompts a little. Now input is 'In [n]:' instead of
6690 * Changed prompts a little. Now input is 'In [n]:' instead of
6688 'In[n]:='. This allows it the numbers to be aligned with the
6691 'In[n]:='. This allows it the numbers to be aligned with the
6689 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6692 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6690 Python (it was a Mathematica thing). The '...' continuation prompt
6693 Python (it was a Mathematica thing). The '...' continuation prompt
6691 was also changed a little to align better.
6694 was also changed a little to align better.
6692
6695
6693 * Fixed bug when flushing output cache. Not all _p<n> variables
6696 * Fixed bug when flushing output cache. Not all _p<n> variables
6694 exist, so their deletion needs to be wrapped in a try:
6697 exist, so their deletion needs to be wrapped in a try:
6695
6698
6696 * Figured out how to properly use inspect.formatargspec() (it
6699 * Figured out how to properly use inspect.formatargspec() (it
6697 requires the args preceded by *). So I removed all the code from
6700 requires the args preceded by *). So I removed all the code from
6698 _get_pdef in Magic, which was just replicating that.
6701 _get_pdef in Magic, which was just replicating that.
6699
6702
6700 * Added test to prefilter to allow redefining magic function names
6703 * Added test to prefilter to allow redefining magic function names
6701 as variables. This is ok, since the @ form is always available,
6704 as variables. This is ok, since the @ form is always available,
6702 but whe should allow the user to define a variable called 'ls' if
6705 but whe should allow the user to define a variable called 'ls' if
6703 he needs it.
6706 he needs it.
6704
6707
6705 * Moved the ToDo information from README into a separate ToDo.
6708 * Moved the ToDo information from README into a separate ToDo.
6706
6709
6707 * General code cleanup and small bugfixes. I think it's close to a
6710 * General code cleanup and small bugfixes. I think it's close to a
6708 state where it can be released, obviously with a big 'beta'
6711 state where it can be released, obviously with a big 'beta'
6709 warning on it.
6712 warning on it.
6710
6713
6711 * Got the magic function split to work. Now all magics are defined
6714 * Got the magic function split to work. Now all magics are defined
6712 in a separate class. It just organizes things a bit, and now
6715 in a separate class. It just organizes things a bit, and now
6713 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6716 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6714 was too long).
6717 was too long).
6715
6718
6716 * Changed @clear to @reset to avoid potential confusions with
6719 * Changed @clear to @reset to avoid potential confusions with
6717 the shell command clear. Also renamed @cl to @clear, which does
6720 the shell command clear. Also renamed @cl to @clear, which does
6718 exactly what people expect it to from their shell experience.
6721 exactly what people expect it to from their shell experience.
6719
6722
6720 Added a check to the @reset command (since it's so
6723 Added a check to the @reset command (since it's so
6721 destructive, it's probably a good idea to ask for confirmation).
6724 destructive, it's probably a good idea to ask for confirmation).
6722 But now reset only works for full namespace resetting. Since the
6725 But now reset only works for full namespace resetting. Since the
6723 del keyword is already there for deleting a few specific
6726 del keyword is already there for deleting a few specific
6724 variables, I don't see the point of having a redundant magic
6727 variables, I don't see the point of having a redundant magic
6725 function for the same task.
6728 function for the same task.
6726
6729
6727 2001-11-24 Fernando Perez <fperez@colorado.edu>
6730 2001-11-24 Fernando Perez <fperez@colorado.edu>
6728
6731
6729 * Updated the builtin docs (esp. the ? ones).
6732 * Updated the builtin docs (esp. the ? ones).
6730
6733
6731 * Ran all the code through pychecker. Not terribly impressed with
6734 * Ran all the code through pychecker. Not terribly impressed with
6732 it: lots of spurious warnings and didn't really find anything of
6735 it: lots of spurious warnings and didn't really find anything of
6733 substance (just a few modules being imported and not used).
6736 substance (just a few modules being imported and not used).
6734
6737
6735 * Implemented the new ultraTB functionality into IPython. New
6738 * Implemented the new ultraTB functionality into IPython. New
6736 option: xcolors. This chooses color scheme. xmode now only selects
6739 option: xcolors. This chooses color scheme. xmode now only selects
6737 between Plain and Verbose. Better orthogonality.
6740 between Plain and Verbose. Better orthogonality.
6738
6741
6739 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6742 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6740 mode and color scheme for the exception handlers. Now it's
6743 mode and color scheme for the exception handlers. Now it's
6741 possible to have the verbose traceback with no coloring.
6744 possible to have the verbose traceback with no coloring.
6742
6745
6743 2001-11-23 Fernando Perez <fperez@colorado.edu>
6746 2001-11-23 Fernando Perez <fperez@colorado.edu>
6744
6747
6745 * Version 0.1.12 released, 0.1.13 opened.
6748 * Version 0.1.12 released, 0.1.13 opened.
6746
6749
6747 * Removed option to set auto-quote and auto-paren escapes by
6750 * Removed option to set auto-quote and auto-paren escapes by
6748 user. The chances of breaking valid syntax are just too high. If
6751 user. The chances of breaking valid syntax are just too high. If
6749 someone *really* wants, they can always dig into the code.
6752 someone *really* wants, they can always dig into the code.
6750
6753
6751 * Made prompt separators configurable.
6754 * Made prompt separators configurable.
6752
6755
6753 2001-11-22 Fernando Perez <fperez@colorado.edu>
6756 2001-11-22 Fernando Perez <fperez@colorado.edu>
6754
6757
6755 * Small bugfixes in many places.
6758 * Small bugfixes in many places.
6756
6759
6757 * Removed the MyCompleter class from ipplib. It seemed redundant
6760 * Removed the MyCompleter class from ipplib. It seemed redundant
6758 with the C-p,C-n history search functionality. Less code to
6761 with the C-p,C-n history search functionality. Less code to
6759 maintain.
6762 maintain.
6760
6763
6761 * Moved all the original ipython.py code into ipythonlib.py. Right
6764 * Moved all the original ipython.py code into ipythonlib.py. Right
6762 now it's just one big dump into a function called make_IPython, so
6765 now it's just one big dump into a function called make_IPython, so
6763 no real modularity has been gained. But at least it makes the
6766 no real modularity has been gained. But at least it makes the
6764 wrapper script tiny, and since ipythonlib is a module, it gets
6767 wrapper script tiny, and since ipythonlib is a module, it gets
6765 compiled and startup is much faster.
6768 compiled and startup is much faster.
6766
6769
6767 This is a reasobably 'deep' change, so we should test it for a
6770 This is a reasobably 'deep' change, so we should test it for a
6768 while without messing too much more with the code.
6771 while without messing too much more with the code.
6769
6772
6770 2001-11-21 Fernando Perez <fperez@colorado.edu>
6773 2001-11-21 Fernando Perez <fperez@colorado.edu>
6771
6774
6772 * Version 0.1.11 released, 0.1.12 opened for further work.
6775 * Version 0.1.11 released, 0.1.12 opened for further work.
6773
6776
6774 * Removed dependency on Itpl. It was only needed in one place. It
6777 * Removed dependency on Itpl. It was only needed in one place. It
6775 would be nice if this became part of python, though. It makes life
6778 would be nice if this became part of python, though. It makes life
6776 *a lot* easier in some cases.
6779 *a lot* easier in some cases.
6777
6780
6778 * Simplified the prefilter code a bit. Now all handlers are
6781 * Simplified the prefilter code a bit. Now all handlers are
6779 expected to explicitly return a value (at least a blank string).
6782 expected to explicitly return a value (at least a blank string).
6780
6783
6781 * Heavy edits in ipplib. Removed the help system altogether. Now
6784 * Heavy edits in ipplib. Removed the help system altogether. Now
6782 obj?/?? is used for inspecting objects, a magic @doc prints
6785 obj?/?? is used for inspecting objects, a magic @doc prints
6783 docstrings, and full-blown Python help is accessed via the 'help'
6786 docstrings, and full-blown Python help is accessed via the 'help'
6784 keyword. This cleans up a lot of code (less to maintain) and does
6787 keyword. This cleans up a lot of code (less to maintain) and does
6785 the job. Since 'help' is now a standard Python component, might as
6788 the job. Since 'help' is now a standard Python component, might as
6786 well use it and remove duplicate functionality.
6789 well use it and remove duplicate functionality.
6787
6790
6788 Also removed the option to use ipplib as a standalone program. By
6791 Also removed the option to use ipplib as a standalone program. By
6789 now it's too dependent on other parts of IPython to function alone.
6792 now it's too dependent on other parts of IPython to function alone.
6790
6793
6791 * Fixed bug in genutils.pager. It would crash if the pager was
6794 * Fixed bug in genutils.pager. It would crash if the pager was
6792 exited immediately after opening (broken pipe).
6795 exited immediately after opening (broken pipe).
6793
6796
6794 * Trimmed down the VerboseTB reporting a little. The header is
6797 * Trimmed down the VerboseTB reporting a little. The header is
6795 much shorter now and the repeated exception arguments at the end
6798 much shorter now and the repeated exception arguments at the end
6796 have been removed. For interactive use the old header seemed a bit
6799 have been removed. For interactive use the old header seemed a bit
6797 excessive.
6800 excessive.
6798
6801
6799 * Fixed small bug in output of @whos for variables with multi-word
6802 * Fixed small bug in output of @whos for variables with multi-word
6800 types (only first word was displayed).
6803 types (only first word was displayed).
6801
6804
6802 2001-11-17 Fernando Perez <fperez@colorado.edu>
6805 2001-11-17 Fernando Perez <fperez@colorado.edu>
6803
6806
6804 * Version 0.1.10 released, 0.1.11 opened for further work.
6807 * Version 0.1.10 released, 0.1.11 opened for further work.
6805
6808
6806 * Modified dirs and friends. dirs now *returns* the stack (not
6809 * Modified dirs and friends. dirs now *returns* the stack (not
6807 prints), so one can manipulate it as a variable. Convenient to
6810 prints), so one can manipulate it as a variable. Convenient to
6808 travel along many directories.
6811 travel along many directories.
6809
6812
6810 * Fixed bug in magic_pdef: would only work with functions with
6813 * Fixed bug in magic_pdef: would only work with functions with
6811 arguments with default values.
6814 arguments with default values.
6812
6815
6813 2001-11-14 Fernando Perez <fperez@colorado.edu>
6816 2001-11-14 Fernando Perez <fperez@colorado.edu>
6814
6817
6815 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6818 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6816 example with IPython. Various other minor fixes and cleanups.
6819 example with IPython. Various other minor fixes and cleanups.
6817
6820
6818 * Version 0.1.9 released, 0.1.10 opened for further work.
6821 * Version 0.1.9 released, 0.1.10 opened for further work.
6819
6822
6820 * Added sys.path to the list of directories searched in the
6823 * Added sys.path to the list of directories searched in the
6821 execfile= option. It used to be the current directory and the
6824 execfile= option. It used to be the current directory and the
6822 user's IPYTHONDIR only.
6825 user's IPYTHONDIR only.
6823
6826
6824 2001-11-13 Fernando Perez <fperez@colorado.edu>
6827 2001-11-13 Fernando Perez <fperez@colorado.edu>
6825
6828
6826 * Reinstated the raw_input/prefilter separation that Janko had
6829 * Reinstated the raw_input/prefilter separation that Janko had
6827 initially. This gives a more convenient setup for extending the
6830 initially. This gives a more convenient setup for extending the
6828 pre-processor from the outside: raw_input always gets a string,
6831 pre-processor from the outside: raw_input always gets a string,
6829 and prefilter has to process it. We can then redefine prefilter
6832 and prefilter has to process it. We can then redefine prefilter
6830 from the outside and implement extensions for special
6833 from the outside and implement extensions for special
6831 purposes.
6834 purposes.
6832
6835
6833 Today I got one for inputting PhysicalQuantity objects
6836 Today I got one for inputting PhysicalQuantity objects
6834 (from Scientific) without needing any function calls at
6837 (from Scientific) without needing any function calls at
6835 all. Extremely convenient, and it's all done as a user-level
6838 all. Extremely convenient, and it's all done as a user-level
6836 extension (no IPython code was touched). Now instead of:
6839 extension (no IPython code was touched). Now instead of:
6837 a = PhysicalQuantity(4.2,'m/s**2')
6840 a = PhysicalQuantity(4.2,'m/s**2')
6838 one can simply say
6841 one can simply say
6839 a = 4.2 m/s**2
6842 a = 4.2 m/s**2
6840 or even
6843 or even
6841 a = 4.2 m/s^2
6844 a = 4.2 m/s^2
6842
6845
6843 I use this, but it's also a proof of concept: IPython really is
6846 I use this, but it's also a proof of concept: IPython really is
6844 fully user-extensible, even at the level of the parsing of the
6847 fully user-extensible, even at the level of the parsing of the
6845 command line. It's not trivial, but it's perfectly doable.
6848 command line. It's not trivial, but it's perfectly doable.
6846
6849
6847 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6850 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6848 the problem of modules being loaded in the inverse order in which
6851 the problem of modules being loaded in the inverse order in which
6849 they were defined in
6852 they were defined in
6850
6853
6851 * Version 0.1.8 released, 0.1.9 opened for further work.
6854 * Version 0.1.8 released, 0.1.9 opened for further work.
6852
6855
6853 * Added magics pdef, source and file. They respectively show the
6856 * Added magics pdef, source and file. They respectively show the
6854 definition line ('prototype' in C), source code and full python
6857 definition line ('prototype' in C), source code and full python
6855 file for any callable object. The object inspector oinfo uses
6858 file for any callable object. The object inspector oinfo uses
6856 these to show the same information.
6859 these to show the same information.
6857
6860
6858 * Version 0.1.7 released, 0.1.8 opened for further work.
6861 * Version 0.1.7 released, 0.1.8 opened for further work.
6859
6862
6860 * Separated all the magic functions into a class called Magic. The
6863 * Separated all the magic functions into a class called Magic. The
6861 InteractiveShell class was becoming too big for Xemacs to handle
6864 InteractiveShell class was becoming too big for Xemacs to handle
6862 (de-indenting a line would lock it up for 10 seconds while it
6865 (de-indenting a line would lock it up for 10 seconds while it
6863 backtracked on the whole class!)
6866 backtracked on the whole class!)
6864
6867
6865 FIXME: didn't work. It can be done, but right now namespaces are
6868 FIXME: didn't work. It can be done, but right now namespaces are
6866 all messed up. Do it later (reverted it for now, so at least
6869 all messed up. Do it later (reverted it for now, so at least
6867 everything works as before).
6870 everything works as before).
6868
6871
6869 * Got the object introspection system (magic_oinfo) working! I
6872 * Got the object introspection system (magic_oinfo) working! I
6870 think this is pretty much ready for release to Janko, so he can
6873 think this is pretty much ready for release to Janko, so he can
6871 test it for a while and then announce it. Pretty much 100% of what
6874 test it for a while and then announce it. Pretty much 100% of what
6872 I wanted for the 'phase 1' release is ready. Happy, tired.
6875 I wanted for the 'phase 1' release is ready. Happy, tired.
6873
6876
6874 2001-11-12 Fernando Perez <fperez@colorado.edu>
6877 2001-11-12 Fernando Perez <fperez@colorado.edu>
6875
6878
6876 * Version 0.1.6 released, 0.1.7 opened for further work.
6879 * Version 0.1.6 released, 0.1.7 opened for further work.
6877
6880
6878 * Fixed bug in printing: it used to test for truth before
6881 * Fixed bug in printing: it used to test for truth before
6879 printing, so 0 wouldn't print. Now checks for None.
6882 printing, so 0 wouldn't print. Now checks for None.
6880
6883
6881 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6884 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6882 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6885 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6883 reaches by hand into the outputcache. Think of a better way to do
6886 reaches by hand into the outputcache. Think of a better way to do
6884 this later.
6887 this later.
6885
6888
6886 * Various small fixes thanks to Nathan's comments.
6889 * Various small fixes thanks to Nathan's comments.
6887
6890
6888 * Changed magic_pprint to magic_Pprint. This way it doesn't
6891 * Changed magic_pprint to magic_Pprint. This way it doesn't
6889 collide with pprint() and the name is consistent with the command
6892 collide with pprint() and the name is consistent with the command
6890 line option.
6893 line option.
6891
6894
6892 * Changed prompt counter behavior to be fully like
6895 * Changed prompt counter behavior to be fully like
6893 Mathematica's. That is, even input that doesn't return a result
6896 Mathematica's. That is, even input that doesn't return a result
6894 raises the prompt counter. The old behavior was kind of confusing
6897 raises the prompt counter. The old behavior was kind of confusing
6895 (getting the same prompt number several times if the operation
6898 (getting the same prompt number several times if the operation
6896 didn't return a result).
6899 didn't return a result).
6897
6900
6898 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6901 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6899
6902
6900 * Fixed -Classic mode (wasn't working anymore).
6903 * Fixed -Classic mode (wasn't working anymore).
6901
6904
6902 * Added colored prompts using Nathan's new code. Colors are
6905 * Added colored prompts using Nathan's new code. Colors are
6903 currently hardwired, they can be user-configurable. For
6906 currently hardwired, they can be user-configurable. For
6904 developers, they can be chosen in file ipythonlib.py, at the
6907 developers, they can be chosen in file ipythonlib.py, at the
6905 beginning of the CachedOutput class def.
6908 beginning of the CachedOutput class def.
6906
6909
6907 2001-11-11 Fernando Perez <fperez@colorado.edu>
6910 2001-11-11 Fernando Perez <fperez@colorado.edu>
6908
6911
6909 * Version 0.1.5 released, 0.1.6 opened for further work.
6912 * Version 0.1.5 released, 0.1.6 opened for further work.
6910
6913
6911 * Changed magic_env to *return* the environment as a dict (not to
6914 * Changed magic_env to *return* the environment as a dict (not to
6912 print it). This way it prints, but it can also be processed.
6915 print it). This way it prints, but it can also be processed.
6913
6916
6914 * Added Verbose exception reporting to interactive
6917 * Added Verbose exception reporting to interactive
6915 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6918 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6916 traceback. Had to make some changes to the ultraTB file. This is
6919 traceback. Had to make some changes to the ultraTB file. This is
6917 probably the last 'big' thing in my mental todo list. This ties
6920 probably the last 'big' thing in my mental todo list. This ties
6918 in with the next entry:
6921 in with the next entry:
6919
6922
6920 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6923 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6921 has to specify is Plain, Color or Verbose for all exception
6924 has to specify is Plain, Color or Verbose for all exception
6922 handling.
6925 handling.
6923
6926
6924 * Removed ShellServices option. All this can really be done via
6927 * Removed ShellServices option. All this can really be done via
6925 the magic system. It's easier to extend, cleaner and has automatic
6928 the magic system. It's easier to extend, cleaner and has automatic
6926 namespace protection and documentation.
6929 namespace protection and documentation.
6927
6930
6928 2001-11-09 Fernando Perez <fperez@colorado.edu>
6931 2001-11-09 Fernando Perez <fperez@colorado.edu>
6929
6932
6930 * Fixed bug in output cache flushing (missing parameter to
6933 * Fixed bug in output cache flushing (missing parameter to
6931 __init__). Other small bugs fixed (found using pychecker).
6934 __init__). Other small bugs fixed (found using pychecker).
6932
6935
6933 * Version 0.1.4 opened for bugfixing.
6936 * Version 0.1.4 opened for bugfixing.
6934
6937
6935 2001-11-07 Fernando Perez <fperez@colorado.edu>
6938 2001-11-07 Fernando Perez <fperez@colorado.edu>
6936
6939
6937 * Version 0.1.3 released, mainly because of the raw_input bug.
6940 * Version 0.1.3 released, mainly because of the raw_input bug.
6938
6941
6939 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6942 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6940 and when testing for whether things were callable, a call could
6943 and when testing for whether things were callable, a call could
6941 actually be made to certain functions. They would get called again
6944 actually be made to certain functions. They would get called again
6942 once 'really' executed, with a resulting double call. A disaster
6945 once 'really' executed, with a resulting double call. A disaster
6943 in many cases (list.reverse() would never work!).
6946 in many cases (list.reverse() would never work!).
6944
6947
6945 * Removed prefilter() function, moved its code to raw_input (which
6948 * Removed prefilter() function, moved its code to raw_input (which
6946 after all was just a near-empty caller for prefilter). This saves
6949 after all was just a near-empty caller for prefilter). This saves
6947 a function call on every prompt, and simplifies the class a tiny bit.
6950 a function call on every prompt, and simplifies the class a tiny bit.
6948
6951
6949 * Fix _ip to __ip name in magic example file.
6952 * Fix _ip to __ip name in magic example file.
6950
6953
6951 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6954 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6952 work with non-gnu versions of tar.
6955 work with non-gnu versions of tar.
6953
6956
6954 2001-11-06 Fernando Perez <fperez@colorado.edu>
6957 2001-11-06 Fernando Perez <fperez@colorado.edu>
6955
6958
6956 * Version 0.1.2. Just to keep track of the recent changes.
6959 * Version 0.1.2. Just to keep track of the recent changes.
6957
6960
6958 * Fixed nasty bug in output prompt routine. It used to check 'if
6961 * Fixed nasty bug in output prompt routine. It used to check 'if
6959 arg != None...'. Problem is, this fails if arg implements a
6962 arg != None...'. Problem is, this fails if arg implements a
6960 special comparison (__cmp__) which disallows comparing to
6963 special comparison (__cmp__) which disallows comparing to
6961 None. Found it when trying to use the PhysicalQuantity module from
6964 None. Found it when trying to use the PhysicalQuantity module from
6962 ScientificPython.
6965 ScientificPython.
6963
6966
6964 2001-11-05 Fernando Perez <fperez@colorado.edu>
6967 2001-11-05 Fernando Perez <fperez@colorado.edu>
6965
6968
6966 * Also added dirs. Now the pushd/popd/dirs family functions
6969 * Also added dirs. Now the pushd/popd/dirs family functions
6967 basically like the shell, with the added convenience of going home
6970 basically like the shell, with the added convenience of going home
6968 when called with no args.
6971 when called with no args.
6969
6972
6970 * pushd/popd slightly modified to mimic shell behavior more
6973 * pushd/popd slightly modified to mimic shell behavior more
6971 closely.
6974 closely.
6972
6975
6973 * Added env,pushd,popd from ShellServices as magic functions. I
6976 * Added env,pushd,popd from ShellServices as magic functions. I
6974 think the cleanest will be to port all desired functions from
6977 think the cleanest will be to port all desired functions from
6975 ShellServices as magics and remove ShellServices altogether. This
6978 ShellServices as magics and remove ShellServices altogether. This
6976 will provide a single, clean way of adding functionality
6979 will provide a single, clean way of adding functionality
6977 (shell-type or otherwise) to IP.
6980 (shell-type or otherwise) to IP.
6978
6981
6979 2001-11-04 Fernando Perez <fperez@colorado.edu>
6982 2001-11-04 Fernando Perez <fperez@colorado.edu>
6980
6983
6981 * Added .ipython/ directory to sys.path. This way users can keep
6984 * Added .ipython/ directory to sys.path. This way users can keep
6982 customizations there and access them via import.
6985 customizations there and access them via import.
6983
6986
6984 2001-11-03 Fernando Perez <fperez@colorado.edu>
6987 2001-11-03 Fernando Perez <fperez@colorado.edu>
6985
6988
6986 * Opened version 0.1.1 for new changes.
6989 * Opened version 0.1.1 for new changes.
6987
6990
6988 * Changed version number to 0.1.0: first 'public' release, sent to
6991 * Changed version number to 0.1.0: first 'public' release, sent to
6989 Nathan and Janko.
6992 Nathan and Janko.
6990
6993
6991 * Lots of small fixes and tweaks.
6994 * Lots of small fixes and tweaks.
6992
6995
6993 * Minor changes to whos format. Now strings are shown, snipped if
6996 * Minor changes to whos format. Now strings are shown, snipped if
6994 too long.
6997 too long.
6995
6998
6996 * Changed ShellServices to work on __main__ so they show up in @who
6999 * Changed ShellServices to work on __main__ so they show up in @who
6997
7000
6998 * Help also works with ? at the end of a line:
7001 * Help also works with ? at the end of a line:
6999 ?sin and sin?
7002 ?sin and sin?
7000 both produce the same effect. This is nice, as often I use the
7003 both produce the same effect. This is nice, as often I use the
7001 tab-complete to find the name of a method, but I used to then have
7004 tab-complete to find the name of a method, but I used to then have
7002 to go to the beginning of the line to put a ? if I wanted more
7005 to go to the beginning of the line to put a ? if I wanted more
7003 info. Now I can just add the ? and hit return. Convenient.
7006 info. Now I can just add the ? and hit return. Convenient.
7004
7007
7005 2001-11-02 Fernando Perez <fperez@colorado.edu>
7008 2001-11-02 Fernando Perez <fperez@colorado.edu>
7006
7009
7007 * Python version check (>=2.1) added.
7010 * Python version check (>=2.1) added.
7008
7011
7009 * Added LazyPython documentation. At this point the docs are quite
7012 * Added LazyPython documentation. At this point the docs are quite
7010 a mess. A cleanup is in order.
7013 a mess. A cleanup is in order.
7011
7014
7012 * Auto-installer created. For some bizarre reason, the zipfiles
7015 * Auto-installer created. For some bizarre reason, the zipfiles
7013 module isn't working on my system. So I made a tar version
7016 module isn't working on my system. So I made a tar version
7014 (hopefully the command line options in various systems won't kill
7017 (hopefully the command line options in various systems won't kill
7015 me).
7018 me).
7016
7019
7017 * Fixes to Struct in genutils. Now all dictionary-like methods are
7020 * Fixes to Struct in genutils. Now all dictionary-like methods are
7018 protected (reasonably).
7021 protected (reasonably).
7019
7022
7020 * Added pager function to genutils and changed ? to print usage
7023 * Added pager function to genutils and changed ? to print usage
7021 note through it (it was too long).
7024 note through it (it was too long).
7022
7025
7023 * Added the LazyPython functionality. Works great! I changed the
7026 * Added the LazyPython functionality. Works great! I changed the
7024 auto-quote escape to ';', it's on home row and next to '. But
7027 auto-quote escape to ';', it's on home row and next to '. But
7025 both auto-quote and auto-paren (still /) escapes are command-line
7028 both auto-quote and auto-paren (still /) escapes are command-line
7026 parameters.
7029 parameters.
7027
7030
7028
7031
7029 2001-11-01 Fernando Perez <fperez@colorado.edu>
7032 2001-11-01 Fernando Perez <fperez@colorado.edu>
7030
7033
7031 * Version changed to 0.0.7. Fairly large change: configuration now
7034 * Version changed to 0.0.7. Fairly large change: configuration now
7032 is all stored in a directory, by default .ipython. There, all
7035 is all stored in a directory, by default .ipython. There, all
7033 config files have normal looking names (not .names)
7036 config files have normal looking names (not .names)
7034
7037
7035 * Version 0.0.6 Released first to Lucas and Archie as a test
7038 * Version 0.0.6 Released first to Lucas and Archie as a test
7036 run. Since it's the first 'semi-public' release, change version to
7039 run. Since it's the first 'semi-public' release, change version to
7037 > 0.0.6 for any changes now.
7040 > 0.0.6 for any changes now.
7038
7041
7039 * Stuff I had put in the ipplib.py changelog:
7042 * Stuff I had put in the ipplib.py changelog:
7040
7043
7041 Changes to InteractiveShell:
7044 Changes to InteractiveShell:
7042
7045
7043 - Made the usage message a parameter.
7046 - Made the usage message a parameter.
7044
7047
7045 - Require the name of the shell variable to be given. It's a bit
7048 - Require the name of the shell variable to be given. It's a bit
7046 of a hack, but allows the name 'shell' not to be hardwired in the
7049 of a hack, but allows the name 'shell' not to be hardwired in the
7047 magic (@) handler, which is problematic b/c it requires
7050 magic (@) handler, which is problematic b/c it requires
7048 polluting the global namespace with 'shell'. This in turn is
7051 polluting the global namespace with 'shell'. This in turn is
7049 fragile: if a user redefines a variable called shell, things
7052 fragile: if a user redefines a variable called shell, things
7050 break.
7053 break.
7051
7054
7052 - magic @: all functions available through @ need to be defined
7055 - magic @: all functions available through @ need to be defined
7053 as magic_<name>, even though they can be called simply as
7056 as magic_<name>, even though they can be called simply as
7054 @<name>. This allows the special command @magic to gather
7057 @<name>. This allows the special command @magic to gather
7055 information automatically about all existing magic functions,
7058 information automatically about all existing magic functions,
7056 even if they are run-time user extensions, by parsing the shell
7059 even if they are run-time user extensions, by parsing the shell
7057 instance __dict__ looking for special magic_ names.
7060 instance __dict__ looking for special magic_ names.
7058
7061
7059 - mainloop: added *two* local namespace parameters. This allows
7062 - mainloop: added *two* local namespace parameters. This allows
7060 the class to differentiate between parameters which were there
7063 the class to differentiate between parameters which were there
7061 before and after command line initialization was processed. This
7064 before and after command line initialization was processed. This
7062 way, later @who can show things loaded at startup by the
7065 way, later @who can show things loaded at startup by the
7063 user. This trick was necessary to make session saving/reloading
7066 user. This trick was necessary to make session saving/reloading
7064 really work: ideally after saving/exiting/reloading a session,
7067 really work: ideally after saving/exiting/reloading a session,
7065 *everything* should look the same, including the output of @who. I
7068 *everything* should look the same, including the output of @who. I
7066 was only able to make this work with this double namespace
7069 was only able to make this work with this double namespace
7067 trick.
7070 trick.
7068
7071
7069 - added a header to the logfile which allows (almost) full
7072 - added a header to the logfile which allows (almost) full
7070 session restoring.
7073 session restoring.
7071
7074
7072 - prepend lines beginning with @ or !, with a and log
7075 - prepend lines beginning with @ or !, with a and log
7073 them. Why? !lines: may be useful to know what you did @lines:
7076 them. Why? !lines: may be useful to know what you did @lines:
7074 they may affect session state. So when restoring a session, at
7077 they may affect session state. So when restoring a session, at
7075 least inform the user of their presence. I couldn't quite get
7078 least inform the user of their presence. I couldn't quite get
7076 them to properly re-execute, but at least the user is warned.
7079 them to properly re-execute, but at least the user is warned.
7077
7080
7078 * Started ChangeLog.
7081 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now