##// END OF EJS Templates
Small fix to sys.argv, match python's default behavior.
fperez -
Show More
@@ -1,73 +1,72 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 One of Python's nicest features is its interactive interpreter. This allows
5 One of Python's nicest features is its interactive interpreter. This allows
6 very fast testing of ideas without the overhead of creating test files as is
6 very fast testing of ideas without the overhead of creating test files as is
7 typical in most programming languages. However, the interpreter supplied with
7 typical in most programming languages. However, the interpreter supplied with
8 the standard Python distribution is fairly primitive (and IDLE isn't really
8 the standard Python distribution is fairly primitive (and IDLE isn't really
9 much better).
9 much better).
10
10
11 IPython tries to:
11 IPython tries to:
12
12
13 i - provide an efficient environment for interactive work in Python
13 i - provide an efficient environment for interactive work in Python
14 programming. It tries to address what we see as shortcomings of the standard
14 programming. It tries to address what we see as shortcomings of the standard
15 Python prompt, and adds many features to make interactive work much more
15 Python prompt, and adds many features to make interactive work much more
16 efficient.
16 efficient.
17
17
18 ii - offer a flexible framework so that it can be used as the base
18 ii - offer a flexible framework so that it can be used as the base
19 environment for other projects and problems where Python can be the
19 environment for other projects and problems where Python can be the
20 underlying language. Specifically scientific environments like Mathematica,
20 underlying language. Specifically scientific environments like Mathematica,
21 IDL and Mathcad inspired its design, but similar ideas can be useful in many
21 IDL and Mathcad inspired its design, but similar ideas can be useful in many
22 fields. Python is a fabulous language for implementing this kind of system
22 fields. Python is a fabulous language for implementing this kind of system
23 (due to its dynamic and introspective features), and with suitable libraries
23 (due to its dynamic and introspective features), and with suitable libraries
24 entire systems could be built leveraging Python's power.
24 entire systems could be built leveraging Python's power.
25
25
26 iii - serve as an embeddable, ready to go interpreter for your own programs.
26 iii - serve as an embeddable, ready to go interpreter for your own programs.
27
27
28 IPython requires Python 2.3 or newer.
28 IPython requires Python 2.3 or newer.
29
29
30 $Id: __init__.py 1314 2006-05-19 18:24:14Z fperez $"""
30 $Id: __init__.py 1328 2006-05-25 07:47:56Z fperez $"""
31
31
32 #*****************************************************************************
32 #*****************************************************************************
33 # Copyright (C) 2001-2004 Fernando Perez. <fperez@colorado.edu>
33 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
34 #
34 #
35 # Distributed under the terms of the BSD License. The full license is in
35 # Distributed under the terms of the BSD License. The full license is in
36 # the file COPYING, distributed as part of this software.
36 # the file COPYING, distributed as part of this software.
37 #*****************************************************************************
37 #*****************************************************************************
38
38
39 # Enforce proper version requirements
39 # Enforce proper version requirements
40 import sys
40 import sys
41
41
42 if sys.version[0:3] < '2.3':
42 if sys.version[0:3] < '2.3':
43 raise ImportError, 'Python Version 2.3 or above is required.'
43 raise ImportError('Python Version 2.3 or above is required for IPython.')
44
44
45 # Make it easy to import extensions - they are always directly on pythonpath.
45 # Make it easy to import extensions - they are always directly on pythonpath.
46 # Therefore, non-IPython modules can be added to Extensions directory
46 # Therefore, non-IPython modules can be added to Extensions directory
47
48 import os
47 import os
49 sys.path.append(os.path.dirname(__file__) + "/Extensions")
48 sys.path.append(os.path.dirname(__file__) + "/Extensions")
50
49
51 # Define what gets imported with a 'from IPython import *'
50 # Define what gets imported with a 'from IPython import *'
52 __all__ = ['deep_reload','genutils','ipstruct','ultraTB','DPyGetOpt',
51 __all__ = ['deep_reload','genutils','ipstruct','ultraTB','DPyGetOpt',
53 'Itpl','hooks','ConfigLoader','OutputTrap','Release','Shell',
52 'Itpl','hooks','ConfigLoader','OutputTrap','Release','Shell',
54 'platutils','platutils_win32','platutils_posix','platutils_dummy',
53 'platutils','platutils_win32','platutils_posix','platutils_dummy',
55 'ipapi','rlineimpl']
54 'ipapi','rlineimpl']
56
55
57 # Load __all__ in IPython namespace so that a simple 'import IPython' gives
56 # Load __all__ in IPython namespace so that a simple 'import IPython' gives
58 # access to them via IPython.<name>
57 # access to them via IPython.<name>
59 glob,loc = globals(),locals()
58 glob,loc = globals(),locals()
60 for name in __all__:
59 for name in __all__:
61 __import__(name,glob,loc,[])
60 __import__(name,glob,loc,[])
62
61
63 # Release data
62 # Release data
64 from IPython import Release # do it explicitly so pydoc can see it - pydoc bug
63 from IPython import Release # do it explicitly so pydoc can see it - pydoc bug
65 __author__ = '%s <%s>\n%s <%s>\n%s <%s>' % \
64 __author__ = '%s <%s>\n%s <%s>\n%s <%s>' % \
66 ( Release.authors['Fernando'] + Release.authors['Janko'] + \
65 ( Release.authors['Fernando'] + Release.authors['Janko'] + \
67 Release.authors['Nathan'] )
66 Release.authors['Nathan'] )
68 __license__ = Release.license
67 __license__ = Release.license
69 __version__ = Release.version
68 __version__ = Release.version
70 __revision__ = Release.revision
69 __revision__ = Release.revision
71
70
72 # Namespace cleanup
71 # Namespace cleanup
73 del name,glob,loc
72 del name,glob,loc
@@ -1,750 +1,755 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 1324 2006-05-24 20:25:11Z fperez $"""
9 $Id: ipmaker.py 1328 2006-05-25 07:47:56Z fperez $"""
10
10
11 #*****************************************************************************
11 #*****************************************************************************
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
12 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
13 #
13 #
14 # Distributed under the terms of the BSD License. The full license is in
14 # Distributed under the terms of the BSD License. The full license is in
15 # the file COPYING, distributed as part of this software.
15 # the file COPYING, distributed as part of this software.
16 #*****************************************************************************
16 #*****************************************************************************
17
17
18 from IPython import Release
18 from IPython import Release
19 __author__ = '%s <%s>' % Release.authors['Fernando']
19 __author__ = '%s <%s>' % Release.authors['Fernando']
20 __license__ = Release.license
20 __license__ = Release.license
21 __version__ = Release.version
21 __version__ = Release.version
22
22
23 credits._Printer__data = """
23 credits._Printer__data = """
24 Python: %s
24 Python: %s
25
25
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
26 IPython: Fernando Perez, Janko Hauser, Nathan Gray, and many users.
27 See http://ipython.scipy.org for more information.""" \
27 See http://ipython.scipy.org for more information.""" \
28 % credits._Printer__data
28 % credits._Printer__data
29
29
30 copyright._Printer__data += """
30 copyright._Printer__data += """
31
31
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
32 Copyright (c) 2001-2004 Fernando Perez, Janko Hauser, Nathan Gray.
33 All Rights Reserved."""
33 All Rights Reserved."""
34
34
35 #****************************************************************************
35 #****************************************************************************
36 # Required modules
36 # Required modules
37
37
38 # From the standard library
38 # From the standard library
39 import __main__
39 import __main__
40 import __builtin__
40 import __builtin__
41 import os
41 import os
42 import re
42 import re
43 import sys
43 import sys
44 import types
44 import types
45 from pprint import pprint,pformat
45 from pprint import pprint,pformat
46
46
47 # Our own
47 # Our own
48 from IPython import DPyGetOpt
48 from IPython import DPyGetOpt
49 from IPython.ipstruct import Struct
49 from IPython.ipstruct import Struct
50 from IPython.OutputTrap import OutputTrap
50 from IPython.OutputTrap import OutputTrap
51 from IPython.ConfigLoader import ConfigLoader
51 from IPython.ConfigLoader import ConfigLoader
52 from IPython.iplib import InteractiveShell
52 from IPython.iplib import InteractiveShell
53 from IPython.usage import cmd_line_usage,interactive_usage
53 from IPython.usage import cmd_line_usage,interactive_usage
54 from IPython.genutils import *
54 from IPython.genutils import *
55
55
56 #-----------------------------------------------------------------------------
56 #-----------------------------------------------------------------------------
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
57 def make_IPython(argv=None,user_ns=None,user_global_ns=None,debug=1,
58 rc_override=None,shell_class=InteractiveShell,
58 rc_override=None,shell_class=InteractiveShell,
59 embedded=False,**kw):
59 embedded=False,**kw):
60 """This is a dump of IPython into a single function.
60 """This is a dump of IPython into a single function.
61
61
62 Later it will have to be broken up in a sensible manner.
62 Later it will have to be broken up in a sensible manner.
63
63
64 Arguments:
64 Arguments:
65
65
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
66 - argv: a list similar to sys.argv[1:]. It should NOT contain the desired
67 script name, b/c DPyGetOpt strips the first argument only for the real
67 script name, b/c DPyGetOpt strips the first argument only for the real
68 sys.argv.
68 sys.argv.
69
69
70 - user_ns: a dict to be used as the user's namespace."""
70 - user_ns: a dict to be used as the user's namespace."""
71
71
72 #----------------------------------------------------------------------
72 #----------------------------------------------------------------------
73 # Defaults and initialization
73 # Defaults and initialization
74
74
75 # For developer debugging, deactivates crash handler and uses pdb.
75 # For developer debugging, deactivates crash handler and uses pdb.
76 DEVDEBUG = False
76 DEVDEBUG = False
77
77
78 if argv is None:
78 if argv is None:
79 argv = sys.argv
79 argv = sys.argv
80
80
81 # __IP is the main global that lives throughout and represents the whole
81 # __IP is the main global that lives throughout and represents the whole
82 # application. If the user redefines it, all bets are off as to what
82 # application. If the user redefines it, all bets are off as to what
83 # happens.
83 # happens.
84
84
85 # __IP is the name of he global which the caller will have accessible as
85 # __IP is the name of he global which the caller will have accessible as
86 # __IP.name. We set its name via the first parameter passed to
86 # __IP.name. We set its name via the first parameter passed to
87 # InteractiveShell:
87 # InteractiveShell:
88
88
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
89 IP = shell_class('__IP',user_ns=user_ns,user_global_ns=user_global_ns,
90 embedded=embedded,**kw)
90 embedded=embedded,**kw)
91
91
92 # Put 'help' in the user namespace
92 # Put 'help' in the user namespace
93 from site import _Helper
93 from site import _Helper
94 IP.user_ns['help'] = _Helper()
94 IP.user_ns['help'] = _Helper()
95
95
96
96
97 if DEVDEBUG:
97 if DEVDEBUG:
98 # For developer debugging only (global flag)
98 # For developer debugging only (global flag)
99 from IPython import ultraTB
99 from IPython import ultraTB
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
100 sys.excepthook = ultraTB.VerboseTB(call_pdb=1)
101
101
102 IP.BANNER_PARTS = ['Python %s\n'
102 IP.BANNER_PARTS = ['Python %s\n'
103 'Type "copyright", "credits" or "license" '
103 'Type "copyright", "credits" or "license" '
104 'for more information.\n'
104 'for more information.\n'
105 % (sys.version.split('\n')[0],),
105 % (sys.version.split('\n')[0],),
106 "IPython %s -- An enhanced Interactive Python."
106 "IPython %s -- An enhanced Interactive Python."
107 % (__version__,),
107 % (__version__,),
108 """? -> Introduction to IPython's features.
108 """? -> Introduction to IPython's features.
109 %magic -> Information about IPython's 'magic' % functions.
109 %magic -> Information about IPython's 'magic' % functions.
110 help -> Python's own help system.
110 help -> Python's own help system.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
111 object? -> Details about 'object'. ?object also works, ?? prints more.
112 """ ]
112 """ ]
113
113
114 IP.usage = interactive_usage
114 IP.usage = interactive_usage
115
115
116 # Platform-dependent suffix and directory names. We use _ipython instead
116 # Platform-dependent suffix and directory names. We use _ipython instead
117 # of .ipython under win32 b/c there's software that breaks with .named
117 # of .ipython under win32 b/c there's software that breaks with .named
118 # directories on that platform.
118 # directories on that platform.
119 if os.name == 'posix':
119 if os.name == 'posix':
120 rc_suffix = ''
120 rc_suffix = ''
121 ipdir_def = '.ipython'
121 ipdir_def = '.ipython'
122 else:
122 else:
123 rc_suffix = '.ini'
123 rc_suffix = '.ini'
124 ipdir_def = '_ipython'
124 ipdir_def = '_ipython'
125
125
126 # default directory for configuration
126 # default directory for configuration
127 ipythondir = os.path.abspath(os.environ.get('IPYTHONDIR',
127 ipythondir = os.path.abspath(os.environ.get('IPYTHONDIR',
128 os.path.join(IP.home_dir,ipdir_def)))
128 os.path.join(IP.home_dir,ipdir_def)))
129
129
130 # add personal .ipython dir to sys.path so that users can put things in
130 # add personal .ipython dir to sys.path so that users can put things in
131 # there for customization
131 # there for customization
132 sys.path.append(ipythondir)
132 sys.path.append(ipythondir)
133
133
134 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
134 sys.path.insert(0, '') # add . to sys.path. Fix from Prabhu Ramachandran
135
135
136 # we need the directory where IPython itself is installed
136 # we need the directory where IPython itself is installed
137 import IPython
137 import IPython
138 IPython_dir = os.path.dirname(IPython.__file__)
138 IPython_dir = os.path.dirname(IPython.__file__)
139 del IPython
139 del IPython
140
140
141 #-------------------------------------------------------------------------
141 #-------------------------------------------------------------------------
142 # Command line handling
142 # Command line handling
143
143
144 # Valid command line options (uses DPyGetOpt syntax, like Perl's
144 # Valid command line options (uses DPyGetOpt syntax, like Perl's
145 # GetOpt::Long)
145 # GetOpt::Long)
146
146
147 # Any key not listed here gets deleted even if in the file (like session
147 # Any key not listed here gets deleted even if in the file (like session
148 # or profile). That's deliberate, to maintain the rc namespace clean.
148 # or profile). That's deliberate, to maintain the rc namespace clean.
149
149
150 # Each set of options appears twice: under _conv only the names are
150 # Each set of options appears twice: under _conv only the names are
151 # listed, indicating which type they must be converted to when reading the
151 # listed, indicating which type they must be converted to when reading the
152 # ipythonrc file. And under DPyGetOpt they are listed with the regular
152 # ipythonrc file. And under DPyGetOpt they are listed with the regular
153 # DPyGetOpt syntax (=s,=i,:f,etc).
153 # DPyGetOpt syntax (=s,=i,:f,etc).
154
154
155 # Make sure there's a space before each end of line (they get auto-joined!)
155 # Make sure there's a space before each end of line (they get auto-joined!)
156 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
156 cmdline_opts = ('autocall=i autoindent! automagic! banner! cache_size|cs=i '
157 'c=s classic|cl color_info! colors=s confirm_exit! '
157 'c=s classic|cl color_info! colors=s confirm_exit! '
158 'debug! deep_reload! editor=s log|l messages! nosep pdb! '
158 'debug! deep_reload! editor=s log|l messages! nosep pdb! '
159 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
159 'pprint! prompt_in1|pi1=s prompt_in2|pi2=s prompt_out|po=s '
160 'quick screen_length|sl=i prompts_pad_left=i '
160 'quick screen_length|sl=i prompts_pad_left=i '
161 'logfile|lf=s logplay|lp=s profile|p=s '
161 'logfile|lf=s logplay|lp=s profile|p=s '
162 'readline! readline_merge_completions! '
162 'readline! readline_merge_completions! '
163 'readline_omit__names! '
163 'readline_omit__names! '
164 'rcfile=s separate_in|si=s separate_out|so=s '
164 'rcfile=s separate_in|si=s separate_out|so=s '
165 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
165 'separate_out2|so2=s xmode=s wildcards_case_sensitive! '
166 'magic_docstrings system_verbose! '
166 'magic_docstrings system_verbose! '
167 'multi_line_specials! '
167 'multi_line_specials! '
168 'wxversion=s '
168 'wxversion=s '
169 'autoedit_syntax!')
169 'autoedit_syntax!')
170
170
171 # Options that can *only* appear at the cmd line (not in rcfiles).
171 # Options that can *only* appear at the cmd line (not in rcfiles).
172
172
173 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
173 # The "ignore" option is a kludge so that Emacs buffers don't crash, since
174 # the 'C-c !' command in emacs automatically appends a -i option at the end.
174 # the 'C-c !' command in emacs automatically appends a -i option at the end.
175 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
175 cmdline_only = ('help ignore|i ipythondir=s Version upgrade '
176 'gthread! qthread! wthread! pylab! tk!')
176 'gthread! qthread! wthread! pylab! tk!')
177
177
178 # Build the actual name list to be used by DPyGetOpt
178 # Build the actual name list to be used by DPyGetOpt
179 opts_names = qw(cmdline_opts) + qw(cmdline_only)
179 opts_names = qw(cmdline_opts) + qw(cmdline_only)
180
180
181 # Set sensible command line defaults.
181 # Set sensible command line defaults.
182 # This should have everything from cmdline_opts and cmdline_only
182 # This should have everything from cmdline_opts and cmdline_only
183 opts_def = Struct(autocall = 1,
183 opts_def = Struct(autocall = 1,
184 autoedit_syntax = 0,
184 autoedit_syntax = 0,
185 autoindent = 0,
185 autoindent = 0,
186 automagic = 1,
186 automagic = 1,
187 banner = 1,
187 banner = 1,
188 cache_size = 1000,
188 cache_size = 1000,
189 c = '',
189 c = '',
190 classic = 0,
190 classic = 0,
191 colors = 'NoColor',
191 colors = 'NoColor',
192 color_info = 0,
192 color_info = 0,
193 confirm_exit = 1,
193 confirm_exit = 1,
194 debug = 0,
194 debug = 0,
195 deep_reload = 0,
195 deep_reload = 0,
196 editor = '0',
196 editor = '0',
197 help = 0,
197 help = 0,
198 ignore = 0,
198 ignore = 0,
199 ipythondir = ipythondir,
199 ipythondir = ipythondir,
200 log = 0,
200 log = 0,
201 logfile = '',
201 logfile = '',
202 logplay = '',
202 logplay = '',
203 multi_line_specials = 1,
203 multi_line_specials = 1,
204 messages = 1,
204 messages = 1,
205 nosep = 0,
205 nosep = 0,
206 pdb = 0,
206 pdb = 0,
207 pprint = 0,
207 pprint = 0,
208 profile = '',
208 profile = '',
209 prompt_in1 = 'In [\\#]: ',
209 prompt_in1 = 'In [\\#]: ',
210 prompt_in2 = ' .\\D.: ',
210 prompt_in2 = ' .\\D.: ',
211 prompt_out = 'Out[\\#]: ',
211 prompt_out = 'Out[\\#]: ',
212 prompts_pad_left = 1,
212 prompts_pad_left = 1,
213 quick = 0,
213 quick = 0,
214 readline = 1,
214 readline = 1,
215 readline_merge_completions = 1,
215 readline_merge_completions = 1,
216 readline_omit__names = 0,
216 readline_omit__names = 0,
217 rcfile = 'ipythonrc' + rc_suffix,
217 rcfile = 'ipythonrc' + rc_suffix,
218 screen_length = 0,
218 screen_length = 0,
219 separate_in = '\n',
219 separate_in = '\n',
220 separate_out = '\n',
220 separate_out = '\n',
221 separate_out2 = '',
221 separate_out2 = '',
222 system_verbose = 0,
222 system_verbose = 0,
223 gthread = 0,
223 gthread = 0,
224 qthread = 0,
224 qthread = 0,
225 wthread = 0,
225 wthread = 0,
226 pylab = 0,
226 pylab = 0,
227 tk = 0,
227 tk = 0,
228 upgrade = 0,
228 upgrade = 0,
229 Version = 0,
229 Version = 0,
230 xmode = 'Verbose',
230 xmode = 'Verbose',
231 wildcards_case_sensitive = 1,
231 wildcards_case_sensitive = 1,
232 wxversion = '0',
232 wxversion = '0',
233 magic_docstrings = 0, # undocumented, for doc generation
233 magic_docstrings = 0, # undocumented, for doc generation
234 )
234 )
235
235
236 # Things that will *only* appear in rcfiles (not at the command line).
236 # Things that will *only* appear in rcfiles (not at the command line).
237 # Make sure there's a space before each end of line (they get auto-joined!)
237 # Make sure there's a space before each end of line (they get auto-joined!)
238 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
238 rcfile_opts = { qwflat: 'include import_mod import_all execfile ',
239 qw_lol: 'import_some ',
239 qw_lol: 'import_some ',
240 # for things with embedded whitespace:
240 # for things with embedded whitespace:
241 list_strings:'execute alias readline_parse_and_bind ',
241 list_strings:'execute alias readline_parse_and_bind ',
242 # Regular strings need no conversion:
242 # Regular strings need no conversion:
243 None:'readline_remove_delims ',
243 None:'readline_remove_delims ',
244 }
244 }
245 # Default values for these
245 # Default values for these
246 rc_def = Struct(include = [],
246 rc_def = Struct(include = [],
247 import_mod = [],
247 import_mod = [],
248 import_all = [],
248 import_all = [],
249 import_some = [[]],
249 import_some = [[]],
250 execute = [],
250 execute = [],
251 execfile = [],
251 execfile = [],
252 alias = [],
252 alias = [],
253 readline_parse_and_bind = [],
253 readline_parse_and_bind = [],
254 readline_remove_delims = '',
254 readline_remove_delims = '',
255 )
255 )
256
256
257 # Build the type conversion dictionary from the above tables:
257 # Build the type conversion dictionary from the above tables:
258 typeconv = rcfile_opts.copy()
258 typeconv = rcfile_opts.copy()
259 typeconv.update(optstr2types(cmdline_opts))
259 typeconv.update(optstr2types(cmdline_opts))
260
260
261 # FIXME: the None key appears in both, put that back together by hand. Ugly!
261 # FIXME: the None key appears in both, put that back together by hand. Ugly!
262 typeconv[None] += ' ' + rcfile_opts[None]
262 typeconv[None] += ' ' + rcfile_opts[None]
263
263
264 # Remove quotes at ends of all strings (used to protect spaces)
264 # Remove quotes at ends of all strings (used to protect spaces)
265 typeconv[unquote_ends] = typeconv[None]
265 typeconv[unquote_ends] = typeconv[None]
266 del typeconv[None]
266 del typeconv[None]
267
267
268 # Build the list we'll use to make all config decisions with defaults:
268 # Build the list we'll use to make all config decisions with defaults:
269 opts_all = opts_def.copy()
269 opts_all = opts_def.copy()
270 opts_all.update(rc_def)
270 opts_all.update(rc_def)
271
271
272 # Build conflict resolver for recursive loading of config files:
272 # Build conflict resolver for recursive loading of config files:
273 # - preserve means the outermost file maintains the value, it is not
273 # - preserve means the outermost file maintains the value, it is not
274 # overwritten if an included file has the same key.
274 # overwritten if an included file has the same key.
275 # - add_flip applies + to the two values, so it better make sense to add
275 # - add_flip applies + to the two values, so it better make sense to add
276 # those types of keys. But it flips them first so that things loaded
276 # those types of keys. But it flips them first so that things loaded
277 # deeper in the inclusion chain have lower precedence.
277 # deeper in the inclusion chain have lower precedence.
278 conflict = {'preserve': ' '.join([ typeconv[int],
278 conflict = {'preserve': ' '.join([ typeconv[int],
279 typeconv[unquote_ends] ]),
279 typeconv[unquote_ends] ]),
280 'add_flip': ' '.join([ typeconv[qwflat],
280 'add_flip': ' '.join([ typeconv[qwflat],
281 typeconv[qw_lol],
281 typeconv[qw_lol],
282 typeconv[list_strings] ])
282 typeconv[list_strings] ])
283 }
283 }
284
284
285 # Now actually process the command line
285 # Now actually process the command line
286 getopt = DPyGetOpt.DPyGetOpt()
286 getopt = DPyGetOpt.DPyGetOpt()
287 getopt.setIgnoreCase(0)
287 getopt.setIgnoreCase(0)
288
288
289 getopt.parseConfiguration(opts_names)
289 getopt.parseConfiguration(opts_names)
290
290
291 try:
291 try:
292 getopt.processArguments(argv)
292 getopt.processArguments(argv)
293 except:
293 except:
294 print cmd_line_usage
294 print cmd_line_usage
295 warn('\nError in Arguments: ' + `sys.exc_value`)
295 warn('\nError in Arguments: ' + `sys.exc_value`)
296 sys.exit(1)
296 sys.exit(1)
297
297
298 # convert the options dict to a struct for much lighter syntax later
298 # convert the options dict to a struct for much lighter syntax later
299 opts = Struct(getopt.optionValues)
299 opts = Struct(getopt.optionValues)
300 args = getopt.freeValues
300 args = getopt.freeValues
301
301
302 # this is the struct (which has default values at this point) with which
302 # this is the struct (which has default values at this point) with which
303 # we make all decisions:
303 # we make all decisions:
304 opts_all.update(opts)
304 opts_all.update(opts)
305
305
306 # Options that force an immediate exit
306 # Options that force an immediate exit
307 if opts_all.help:
307 if opts_all.help:
308 page(cmd_line_usage)
308 page(cmd_line_usage)
309 sys.exit()
309 sys.exit()
310
310
311 if opts_all.Version:
311 if opts_all.Version:
312 print __version__
312 print __version__
313 sys.exit()
313 sys.exit()
314
314
315 if opts_all.magic_docstrings:
315 if opts_all.magic_docstrings:
316 IP.magic_magic('-latex')
316 IP.magic_magic('-latex')
317 sys.exit()
317 sys.exit()
318
318
319 # Create user config directory if it doesn't exist. This must be done
319 # Create user config directory if it doesn't exist. This must be done
320 # *after* getting the cmd line options.
320 # *after* getting the cmd line options.
321 if not os.path.isdir(opts_all.ipythondir):
321 if not os.path.isdir(opts_all.ipythondir):
322 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
322 IP.user_setup(opts_all.ipythondir,rc_suffix,'install')
323
323
324 # upgrade user config files while preserving a copy of the originals
324 # upgrade user config files while preserving a copy of the originals
325 if opts_all.upgrade:
325 if opts_all.upgrade:
326 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
326 IP.user_setup(opts_all.ipythondir,rc_suffix,'upgrade')
327
327
328 # check mutually exclusive options in the *original* command line
328 # check mutually exclusive options in the *original* command line
329 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
329 mutex_opts(opts,[qw('log logfile'),qw('rcfile profile'),
330 qw('classic profile'),qw('classic rcfile')])
330 qw('classic profile'),qw('classic rcfile')])
331
331
332 # Fix up sys.argv to omit the ipython call, for consistency with how
333 # Python itself operates (the inconsistency can break user scripts which
334 # rely on the Python behavior when run under ipython).
335 sys.argv[:] = sys.argv[1:]
336
332 #---------------------------------------------------------------------------
337 #---------------------------------------------------------------------------
333 # Log replay
338 # Log replay
334
339
335 # if -logplay, we need to 'become' the other session. That basically means
340 # if -logplay, we need to 'become' the other session. That basically means
336 # replacing the current command line environment with that of the old
341 # replacing the current command line environment with that of the old
337 # session and moving on.
342 # session and moving on.
338
343
339 # this is needed so that later we know we're in session reload mode, as
344 # this is needed so that later we know we're in session reload mode, as
340 # opts_all will get overwritten:
345 # opts_all will get overwritten:
341 load_logplay = 0
346 load_logplay = 0
342
347
343 if opts_all.logplay:
348 if opts_all.logplay:
344 load_logplay = opts_all.logplay
349 load_logplay = opts_all.logplay
345 opts_debug_save = opts_all.debug
350 opts_debug_save = opts_all.debug
346 try:
351 try:
347 logplay = open(opts_all.logplay)
352 logplay = open(opts_all.logplay)
348 except IOError:
353 except IOError:
349 if opts_all.debug: IP.InteractiveTB()
354 if opts_all.debug: IP.InteractiveTB()
350 warn('Could not open logplay file '+`opts_all.logplay`)
355 warn('Could not open logplay file '+`opts_all.logplay`)
351 # restore state as if nothing had happened and move on, but make
356 # restore state as if nothing had happened and move on, but make
352 # sure that later we don't try to actually load the session file
357 # sure that later we don't try to actually load the session file
353 logplay = None
358 logplay = None
354 load_logplay = 0
359 load_logplay = 0
355 del opts_all.logplay
360 del opts_all.logplay
356 else:
361 else:
357 try:
362 try:
358 logplay.readline()
363 logplay.readline()
359 logplay.readline();
364 logplay.readline();
360 # this reloads that session's command line
365 # this reloads that session's command line
361 cmd = logplay.readline()[6:]
366 cmd = logplay.readline()[6:]
362 exec cmd
367 exec cmd
363 # restore the true debug flag given so that the process of
368 # restore the true debug flag given so that the process of
364 # session loading itself can be monitored.
369 # session loading itself can be monitored.
365 opts.debug = opts_debug_save
370 opts.debug = opts_debug_save
366 # save the logplay flag so later we don't overwrite the log
371 # save the logplay flag so later we don't overwrite the log
367 opts.logplay = load_logplay
372 opts.logplay = load_logplay
368 # now we must update our own structure with defaults
373 # now we must update our own structure with defaults
369 opts_all.update(opts)
374 opts_all.update(opts)
370 # now load args
375 # now load args
371 cmd = logplay.readline()[6:]
376 cmd = logplay.readline()[6:]
372 exec cmd
377 exec cmd
373 logplay.close()
378 logplay.close()
374 except:
379 except:
375 logplay.close()
380 logplay.close()
376 if opts_all.debug: IP.InteractiveTB()
381 if opts_all.debug: IP.InteractiveTB()
377 warn("Logplay file lacking full configuration information.\n"
382 warn("Logplay file lacking full configuration information.\n"
378 "I'll try to read it, but some things may not work.")
383 "I'll try to read it, but some things may not work.")
379
384
380 #-------------------------------------------------------------------------
385 #-------------------------------------------------------------------------
381 # set up output traps: catch all output from files, being run, modules
386 # set up output traps: catch all output from files, being run, modules
382 # loaded, etc. Then give it to the user in a clean form at the end.
387 # loaded, etc. Then give it to the user in a clean form at the end.
383
388
384 msg_out = 'Output messages. '
389 msg_out = 'Output messages. '
385 msg_err = 'Error messages. '
390 msg_err = 'Error messages. '
386 msg_sep = '\n'
391 msg_sep = '\n'
387 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
392 msg = Struct(config = OutputTrap('Configuration Loader',msg_out,
388 msg_err,msg_sep,debug,
393 msg_err,msg_sep,debug,
389 quiet_out=1),
394 quiet_out=1),
390 user_exec = OutputTrap('User File Execution',msg_out,
395 user_exec = OutputTrap('User File Execution',msg_out,
391 msg_err,msg_sep,debug),
396 msg_err,msg_sep,debug),
392 logplay = OutputTrap('Log Loader',msg_out,
397 logplay = OutputTrap('Log Loader',msg_out,
393 msg_err,msg_sep,debug),
398 msg_err,msg_sep,debug),
394 summary = ''
399 summary = ''
395 )
400 )
396
401
397 #-------------------------------------------------------------------------
402 #-------------------------------------------------------------------------
398 # Process user ipythonrc-type configuration files
403 # Process user ipythonrc-type configuration files
399
404
400 # turn on output trapping and log to msg.config
405 # turn on output trapping and log to msg.config
401 # remember that with debug on, trapping is actually disabled
406 # remember that with debug on, trapping is actually disabled
402 msg.config.trap_all()
407 msg.config.trap_all()
403
408
404 # look for rcfile in current or default directory
409 # look for rcfile in current or default directory
405 try:
410 try:
406 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
411 opts_all.rcfile = filefind(opts_all.rcfile,opts_all.ipythondir)
407 except IOError:
412 except IOError:
408 if opts_all.debug: IP.InteractiveTB()
413 if opts_all.debug: IP.InteractiveTB()
409 warn('Configuration file %s not found. Ignoring request.'
414 warn('Configuration file %s not found. Ignoring request.'
410 % (opts_all.rcfile) )
415 % (opts_all.rcfile) )
411
416
412 # 'profiles' are a shorthand notation for config filenames
417 # 'profiles' are a shorthand notation for config filenames
413 if opts_all.profile:
418 if opts_all.profile:
414
419
415 try:
420 try:
416 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
421 opts_all.rcfile = filefind('ipythonrc-' + opts_all.profile
417 + rc_suffix,
422 + rc_suffix,
418 opts_all.ipythondir)
423 opts_all.ipythondir)
419 except IOError:
424 except IOError:
420 if opts_all.debug: IP.InteractiveTB()
425 if opts_all.debug: IP.InteractiveTB()
421 opts.profile = '' # remove profile from options if invalid
426 opts.profile = '' # remove profile from options if invalid
422 # We won't warn anymore, primary method is ipy_profile_PROFNAME
427 # We won't warn anymore, primary method is ipy_profile_PROFNAME
423 # which does trigger a warning.
428 # which does trigger a warning.
424
429
425 # load the config file
430 # load the config file
426 rcfiledata = None
431 rcfiledata = None
427 if opts_all.quick:
432 if opts_all.quick:
428 print 'Launching IPython in quick mode. No config file read.'
433 print 'Launching IPython in quick mode. No config file read.'
429 elif opts_all.classic:
434 elif opts_all.classic:
430 print 'Launching IPython in classic mode. No config file read.'
435 print 'Launching IPython in classic mode. No config file read.'
431 elif opts_all.rcfile:
436 elif opts_all.rcfile:
432 try:
437 try:
433 cfg_loader = ConfigLoader(conflict)
438 cfg_loader = ConfigLoader(conflict)
434 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
439 rcfiledata = cfg_loader.load(opts_all.rcfile,typeconv,
435 'include',opts_all.ipythondir,
440 'include',opts_all.ipythondir,
436 purge = 1,
441 purge = 1,
437 unique = conflict['preserve'])
442 unique = conflict['preserve'])
438 except:
443 except:
439 IP.InteractiveTB()
444 IP.InteractiveTB()
440 warn('Problems loading configuration file '+
445 warn('Problems loading configuration file '+
441 `opts_all.rcfile`+
446 `opts_all.rcfile`+
442 '\nStarting with default -bare bones- configuration.')
447 '\nStarting with default -bare bones- configuration.')
443 else:
448 else:
444 warn('No valid configuration file found in either currrent directory\n'+
449 warn('No valid configuration file found in either currrent directory\n'+
445 'or in the IPython config. directory: '+`opts_all.ipythondir`+
450 'or in the IPython config. directory: '+`opts_all.ipythondir`+
446 '\nProceeding with internal defaults.')
451 '\nProceeding with internal defaults.')
447
452
448 #------------------------------------------------------------------------
453 #------------------------------------------------------------------------
449 # Set exception handlers in mode requested by user.
454 # Set exception handlers in mode requested by user.
450 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
455 otrap = OutputTrap(trap_out=1) # trap messages from magic_xmode
451 IP.magic_xmode(opts_all.xmode)
456 IP.magic_xmode(opts_all.xmode)
452 otrap.release_out()
457 otrap.release_out()
453
458
454 #------------------------------------------------------------------------
459 #------------------------------------------------------------------------
455 # Execute user config
460 # Execute user config
456
461
457 # Create a valid config structure with the right precedence order:
462 # Create a valid config structure with the right precedence order:
458 # defaults < rcfile < command line. This needs to be in the instance, so
463 # defaults < rcfile < command line. This needs to be in the instance, so
459 # that method calls below that rely on it find it.
464 # that method calls below that rely on it find it.
460 IP.rc = rc_def.copy()
465 IP.rc = rc_def.copy()
461
466
462 # Work with a local alias inside this routine to avoid unnecessary
467 # Work with a local alias inside this routine to avoid unnecessary
463 # attribute lookups.
468 # attribute lookups.
464 IP_rc = IP.rc
469 IP_rc = IP.rc
465
470
466 IP_rc.update(opts_def)
471 IP_rc.update(opts_def)
467 if rcfiledata:
472 if rcfiledata:
468 # now we can update
473 # now we can update
469 IP_rc.update(rcfiledata)
474 IP_rc.update(rcfiledata)
470 IP_rc.update(opts)
475 IP_rc.update(opts)
471 IP_rc.update(rc_override)
476 IP_rc.update(rc_override)
472
477
473 # Store the original cmd line for reference:
478 # Store the original cmd line for reference:
474 IP_rc.opts = opts
479 IP_rc.opts = opts
475 IP_rc.args = args
480 IP_rc.args = args
476
481
477 # create a *runtime* Struct like rc for holding parameters which may be
482 # create a *runtime* Struct like rc for holding parameters which may be
478 # created and/or modified by runtime user extensions.
483 # created and/or modified by runtime user extensions.
479 IP.runtime_rc = Struct()
484 IP.runtime_rc = Struct()
480
485
481 # from this point on, all config should be handled through IP_rc,
486 # from this point on, all config should be handled through IP_rc,
482 # opts* shouldn't be used anymore.
487 # opts* shouldn't be used anymore.
483
488
484
489
485 # update IP_rc with some special things that need manual
490 # update IP_rc with some special things that need manual
486 # tweaks. Basically options which affect other options. I guess this
491 # tweaks. Basically options which affect other options. I guess this
487 # should just be written so that options are fully orthogonal and we
492 # should just be written so that options are fully orthogonal and we
488 # wouldn't worry about this stuff!
493 # wouldn't worry about this stuff!
489
494
490 if IP_rc.classic:
495 if IP_rc.classic:
491 IP_rc.quick = 1
496 IP_rc.quick = 1
492 IP_rc.cache_size = 0
497 IP_rc.cache_size = 0
493 IP_rc.pprint = 0
498 IP_rc.pprint = 0
494 IP_rc.prompt_in1 = '>>> '
499 IP_rc.prompt_in1 = '>>> '
495 IP_rc.prompt_in2 = '... '
500 IP_rc.prompt_in2 = '... '
496 IP_rc.prompt_out = ''
501 IP_rc.prompt_out = ''
497 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
502 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
498 IP_rc.colors = 'NoColor'
503 IP_rc.colors = 'NoColor'
499 IP_rc.xmode = 'Plain'
504 IP_rc.xmode = 'Plain'
500
505
501 IP.pre_config_initialization()
506 IP.pre_config_initialization()
502 # configure readline
507 # configure readline
503 # Define the history file for saving commands in between sessions
508 # Define the history file for saving commands in between sessions
504 if IP_rc.profile:
509 if IP_rc.profile:
505 histfname = 'history-%s' % IP_rc.profile
510 histfname = 'history-%s' % IP_rc.profile
506 else:
511 else:
507 histfname = 'history'
512 histfname = 'history'
508 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
513 IP.histfile = os.path.join(opts_all.ipythondir,histfname)
509
514
510 # update exception handlers with rc file status
515 # update exception handlers with rc file status
511 otrap.trap_out() # I don't want these messages ever.
516 otrap.trap_out() # I don't want these messages ever.
512 IP.magic_xmode(IP_rc.xmode)
517 IP.magic_xmode(IP_rc.xmode)
513 otrap.release_out()
518 otrap.release_out()
514
519
515 # activate logging if requested and not reloading a log
520 # activate logging if requested and not reloading a log
516 if IP_rc.logplay:
521 if IP_rc.logplay:
517 IP.magic_logstart(IP_rc.logplay + ' append')
522 IP.magic_logstart(IP_rc.logplay + ' append')
518 elif IP_rc.logfile:
523 elif IP_rc.logfile:
519 IP.magic_logstart(IP_rc.logfile)
524 IP.magic_logstart(IP_rc.logfile)
520 elif IP_rc.log:
525 elif IP_rc.log:
521 IP.magic_logstart()
526 IP.magic_logstart()
522
527
523 # find user editor so that it we don't have to look it up constantly
528 # find user editor so that it we don't have to look it up constantly
524 if IP_rc.editor.strip()=='0':
529 if IP_rc.editor.strip()=='0':
525 try:
530 try:
526 ed = os.environ['EDITOR']
531 ed = os.environ['EDITOR']
527 except KeyError:
532 except KeyError:
528 if os.name == 'posix':
533 if os.name == 'posix':
529 ed = 'vi' # the only one guaranteed to be there!
534 ed = 'vi' # the only one guaranteed to be there!
530 else:
535 else:
531 ed = 'notepad' # same in Windows!
536 ed = 'notepad' # same in Windows!
532 IP_rc.editor = ed
537 IP_rc.editor = ed
533
538
534 # Keep track of whether this is an embedded instance or not (useful for
539 # Keep track of whether this is an embedded instance or not (useful for
535 # post-mortems).
540 # post-mortems).
536 IP_rc.embedded = IP.embedded
541 IP_rc.embedded = IP.embedded
537
542
538 # Recursive reload
543 # Recursive reload
539 try:
544 try:
540 from IPython import deep_reload
545 from IPython import deep_reload
541 if IP_rc.deep_reload:
546 if IP_rc.deep_reload:
542 __builtin__.reload = deep_reload.reload
547 __builtin__.reload = deep_reload.reload
543 else:
548 else:
544 __builtin__.dreload = deep_reload.reload
549 __builtin__.dreload = deep_reload.reload
545 del deep_reload
550 del deep_reload
546 except ImportError:
551 except ImportError:
547 pass
552 pass
548
553
549 # Save the current state of our namespace so that the interactive shell
554 # Save the current state of our namespace so that the interactive shell
550 # can later know which variables have been created by us from config files
555 # can later know which variables have been created by us from config files
551 # and loading. This way, loading a file (in any way) is treated just like
556 # and loading. This way, loading a file (in any way) is treated just like
552 # defining things on the command line, and %who works as expected.
557 # defining things on the command line, and %who works as expected.
553
558
554 # DON'T do anything that affects the namespace beyond this point!
559 # DON'T do anything that affects the namespace beyond this point!
555 IP.internal_ns.update(__main__.__dict__)
560 IP.internal_ns.update(__main__.__dict__)
556
561
557 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
562 #IP.internal_ns.update(locals()) # so our stuff doesn't show up in %who
558
563
559 # Now run through the different sections of the users's config
564 # Now run through the different sections of the users's config
560 if IP_rc.debug:
565 if IP_rc.debug:
561 print 'Trying to execute the following configuration structure:'
566 print 'Trying to execute the following configuration structure:'
562 print '(Things listed first are deeper in the inclusion tree and get'
567 print '(Things listed first are deeper in the inclusion tree and get'
563 print 'loaded first).\n'
568 print 'loaded first).\n'
564 pprint(IP_rc.__dict__)
569 pprint(IP_rc.__dict__)
565
570
566 for mod in IP_rc.import_mod:
571 for mod in IP_rc.import_mod:
567 try:
572 try:
568 exec 'import '+mod in IP.user_ns
573 exec 'import '+mod in IP.user_ns
569 except :
574 except :
570 IP.InteractiveTB()
575 IP.InteractiveTB()
571 import_fail_info(mod)
576 import_fail_info(mod)
572
577
573 for mod_fn in IP_rc.import_some:
578 for mod_fn in IP_rc.import_some:
574 if mod_fn == []: break
579 if mod_fn == []: break
575 mod,fn = mod_fn[0],','.join(mod_fn[1:])
580 mod,fn = mod_fn[0],','.join(mod_fn[1:])
576 try:
581 try:
577 exec 'from '+mod+' import '+fn in IP.user_ns
582 exec 'from '+mod+' import '+fn in IP.user_ns
578 except :
583 except :
579 IP.InteractiveTB()
584 IP.InteractiveTB()
580 import_fail_info(mod,fn)
585 import_fail_info(mod,fn)
581
586
582 for mod in IP_rc.import_all:
587 for mod in IP_rc.import_all:
583 try:
588 try:
584 exec 'from '+mod+' import *' in IP.user_ns
589 exec 'from '+mod+' import *' in IP.user_ns
585 except :
590 except :
586 IP.InteractiveTB()
591 IP.InteractiveTB()
587 import_fail_info(mod)
592 import_fail_info(mod)
588
593
589 for code in IP_rc.execute:
594 for code in IP_rc.execute:
590 try:
595 try:
591 exec code in IP.user_ns
596 exec code in IP.user_ns
592 except:
597 except:
593 IP.InteractiveTB()
598 IP.InteractiveTB()
594 warn('Failure executing code: ' + `code`)
599 warn('Failure executing code: ' + `code`)
595
600
596 # Execute the files the user wants in ipythonrc
601 # Execute the files the user wants in ipythonrc
597 for file in IP_rc.execfile:
602 for file in IP_rc.execfile:
598 try:
603 try:
599 file = filefind(file,sys.path+[IPython_dir])
604 file = filefind(file,sys.path+[IPython_dir])
600 except IOError:
605 except IOError:
601 warn(itpl('File $file not found. Skipping it.'))
606 warn(itpl('File $file not found. Skipping it.'))
602 else:
607 else:
603 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
608 IP.safe_execfile(os.path.expanduser(file),IP.user_ns)
604
609
605 # finally, try importing ipy_*_conf for final configuration
610 # finally, try importing ipy_*_conf for final configuration
606 try:
611 try:
607 import ipy_system_conf
612 import ipy_system_conf
608 except ImportError:
613 except ImportError:
609 if opts_all.debug: IP.InteractiveTB()
614 if opts_all.debug: IP.InteractiveTB()
610 warn("Could not import 'ipy_system_conf'")
615 warn("Could not import 'ipy_system_conf'")
611 except:
616 except:
612 IP.InteractiveTB()
617 IP.InteractiveTB()
613 import_fail_info('ipy_system_conf')
618 import_fail_info('ipy_system_conf')
614
619
615 if opts_all.profile:
620 if opts_all.profile:
616 profmodname = 'ipy_profile_' + opts_all.profile
621 profmodname = 'ipy_profile_' + opts_all.profile
617 try:
622 try:
618 __import__(profmodname)
623 __import__(profmodname)
619 except ImportError:
624 except ImportError:
620 # only warn if ipythonrc-PROFNAME didn't exist
625 # only warn if ipythonrc-PROFNAME didn't exist
621 if opts.profile =='':
626 if opts.profile =='':
622 warn("Could not start with profile '%s'!\n ('%s/%s.py' does not exist? run '%%upgrade')" % (
627 warn("Could not start with profile '%s'!\n ('%s/%s.py' does not exist? run '%%upgrade')" % (
623 opts_all.profile, ipythondir, profmodname)
628 opts_all.profile, ipythondir, profmodname)
624
629
625 )
630 )
626 except:
631 except:
627 print "Error importing",profmodname
632 print "Error importing",profmodname
628 IP.InteractiveTB()
633 IP.InteractiveTB()
629 import_fail_info(profmodname)
634 import_fail_info(profmodname)
630
635
631 try:
636 try:
632 import ipy_user_conf
637 import ipy_user_conf
633 except ImportError:
638 except ImportError:
634 if opts_all.debug: IP.InteractiveTB()
639 if opts_all.debug: IP.InteractiveTB()
635 warn("Could not import user config!\n ('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n" %
640 warn("Could not import user config!\n ('%s/ipy_user_conf.py' does not exist? Please run '%%upgrade')\n" %
636 ipythondir)
641 ipythondir)
637 except:
642 except:
638 print "Error importing ipy_user_conf"
643 print "Error importing ipy_user_conf"
639 IP.InteractiveTB()
644 IP.InteractiveTB()
640 import_fail_info("ipy_user_conf")
645 import_fail_info("ipy_user_conf")
641
646
642
647
643 # release stdout and stderr and save config log into a global summary
648 # release stdout and stderr and save config log into a global summary
644 msg.config.release_all()
649 msg.config.release_all()
645 if IP_rc.messages:
650 if IP_rc.messages:
646 msg.summary += msg.config.summary_all()
651 msg.summary += msg.config.summary_all()
647
652
648 #------------------------------------------------------------------------
653 #------------------------------------------------------------------------
649 # Setup interactive session
654 # Setup interactive session
650
655
651 # Now we should be fully configured. We can then execute files or load
656 # Now we should be fully configured. We can then execute files or load
652 # things only needed for interactive use. Then we'll open the shell.
657 # things only needed for interactive use. Then we'll open the shell.
653
658
654 # Take a snapshot of the user namespace before opening the shell. That way
659 # Take a snapshot of the user namespace before opening the shell. That way
655 # we'll be able to identify which things were interactively defined and
660 # we'll be able to identify which things were interactively defined and
656 # which were defined through config files.
661 # which were defined through config files.
657 IP.user_config_ns = IP.user_ns.copy()
662 IP.user_config_ns = IP.user_ns.copy()
658
663
659 # Force reading a file as if it were a session log. Slower but safer.
664 # Force reading a file as if it were a session log. Slower but safer.
660 if load_logplay:
665 if load_logplay:
661 print 'Replaying log...'
666 print 'Replaying log...'
662 try:
667 try:
663 if IP_rc.debug:
668 if IP_rc.debug:
664 logplay_quiet = 0
669 logplay_quiet = 0
665 else:
670 else:
666 logplay_quiet = 1
671 logplay_quiet = 1
667
672
668 msg.logplay.trap_all()
673 msg.logplay.trap_all()
669 IP.safe_execfile(load_logplay,IP.user_ns,
674 IP.safe_execfile(load_logplay,IP.user_ns,
670 islog = 1, quiet = logplay_quiet)
675 islog = 1, quiet = logplay_quiet)
671 msg.logplay.release_all()
676 msg.logplay.release_all()
672 if IP_rc.messages:
677 if IP_rc.messages:
673 msg.summary += msg.logplay.summary_all()
678 msg.summary += msg.logplay.summary_all()
674 except:
679 except:
675 warn('Problems replaying logfile %s.' % load_logplay)
680 warn('Problems replaying logfile %s.' % load_logplay)
676 IP.InteractiveTB()
681 IP.InteractiveTB()
677
682
678 # Load remaining files in command line
683 # Load remaining files in command line
679 msg.user_exec.trap_all()
684 msg.user_exec.trap_all()
680
685
681 # Do NOT execute files named in the command line as scripts to be loaded
686 # Do NOT execute files named in the command line as scripts to be loaded
682 # by embedded instances. Doing so has the potential for an infinite
687 # by embedded instances. Doing so has the potential for an infinite
683 # recursion if there are exceptions thrown in the process.
688 # recursion if there are exceptions thrown in the process.
684
689
685 # XXX FIXME: the execution of user files should be moved out to after
690 # XXX FIXME: the execution of user files should be moved out to after
686 # ipython is fully initialized, just as if they were run via %run at the
691 # ipython is fully initialized, just as if they were run via %run at the
687 # ipython prompt. This would also give them the benefit of ipython's
692 # ipython prompt. This would also give them the benefit of ipython's
688 # nice tracebacks.
693 # nice tracebacks.
689
694
690 if (not embedded and IP_rc.args and
695 if (not embedded and IP_rc.args and
691 not IP_rc.args[0].lower().endswith('.ipy')):
696 not IP_rc.args[0].lower().endswith('.ipy')):
692 name_save = IP.user_ns['__name__']
697 name_save = IP.user_ns['__name__']
693 IP.user_ns['__name__'] = '__main__'
698 IP.user_ns['__name__'] = '__main__'
694 # Set our own excepthook in case the user code tries to call it
699 # Set our own excepthook in case the user code tries to call it
695 # directly. This prevents triggering the IPython crash handler.
700 # directly. This prevents triggering the IPython crash handler.
696 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
701 old_excepthook,sys.excepthook = sys.excepthook, IP.excepthook
697
702
698 save_argv = sys.argv[:] # save it for later restoring
703 save_argv = sys.argv[:] # save it for later restoring
699
704
700 sys.argv = args
705 sys.argv = args
701
706
702 try:
707 try:
703 IP.safe_execfile(args[0], IP.user_ns)
708 IP.safe_execfile(args[0], IP.user_ns)
704 finally:
709 finally:
705 # Reset our crash handler in place
710 # Reset our crash handler in place
706 sys.excepthook = old_excepthook
711 sys.excepthook = old_excepthook
707 sys.argv = save_argv
712 sys.argv = save_argv
708 IP.user_ns['__name__'] = name_save
713 IP.user_ns['__name__'] = name_save
709
714
710 msg.user_exec.release_all()
715 msg.user_exec.release_all()
711 if IP_rc.messages:
716 if IP_rc.messages:
712 msg.summary += msg.user_exec.summary_all()
717 msg.summary += msg.user_exec.summary_all()
713
718
714 # since we can't specify a null string on the cmd line, 0 is the equivalent:
719 # since we can't specify a null string on the cmd line, 0 is the equivalent:
715 if IP_rc.nosep:
720 if IP_rc.nosep:
716 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
721 IP_rc.separate_in = IP_rc.separate_out = IP_rc.separate_out2 = '0'
717 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
722 if IP_rc.separate_in == '0': IP_rc.separate_in = ''
718 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
723 if IP_rc.separate_out == '0': IP_rc.separate_out = ''
719 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
724 if IP_rc.separate_out2 == '0': IP_rc.separate_out2 = ''
720 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
725 IP_rc.separate_in = IP_rc.separate_in.replace('\\n','\n')
721 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
726 IP_rc.separate_out = IP_rc.separate_out.replace('\\n','\n')
722 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
727 IP_rc.separate_out2 = IP_rc.separate_out2.replace('\\n','\n')
723
728
724 # Determine how many lines at the bottom of the screen are needed for
729 # Determine how many lines at the bottom of the screen are needed for
725 # showing prompts, so we can know wheter long strings are to be printed or
730 # showing prompts, so we can know wheter long strings are to be printed or
726 # paged:
731 # paged:
727 num_lines_bot = IP_rc.separate_in.count('\n')+1
732 num_lines_bot = IP_rc.separate_in.count('\n')+1
728 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
733 IP_rc.screen_length = IP_rc.screen_length - num_lines_bot
729
734
730 # configure startup banner
735 # configure startup banner
731 if IP_rc.c: # regular python doesn't print the banner with -c
736 if IP_rc.c: # regular python doesn't print the banner with -c
732 IP_rc.banner = 0
737 IP_rc.banner = 0
733 if IP_rc.banner:
738 if IP_rc.banner:
734 BANN_P = IP.BANNER_PARTS
739 BANN_P = IP.BANNER_PARTS
735 else:
740 else:
736 BANN_P = []
741 BANN_P = []
737
742
738 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
743 if IP_rc.profile: BANN_P.append('IPython profile: %s\n' % IP_rc.profile)
739
744
740 # add message log (possibly empty)
745 # add message log (possibly empty)
741 if msg.summary: BANN_P.append(msg.summary)
746 if msg.summary: BANN_P.append(msg.summary)
742 # Final banner is a string
747 # Final banner is a string
743 IP.BANNER = '\n'.join(BANN_P)
748 IP.BANNER = '\n'.join(BANN_P)
744
749
745 # Finalize the IPython instance. This assumes the rc structure is fully
750 # Finalize the IPython instance. This assumes the rc structure is fully
746 # in place.
751 # in place.
747 IP.post_config_initialization()
752 IP.post_config_initialization()
748
753
749 return IP
754 return IP
750 #************************ end of file <ipmaker.py> **************************
755 #************************ end of file <ipmaker.py> **************************
@@ -1,5434 +1,5439 b''
1 2006-05-24 Fernando Perez <Fernando.Perez@colorado.edu>
1 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
2
3 * IPython/ipmaker.py (make_IPython): remove the ipython call path
4 from sys.argv, to be 100% consistent with how Python itself works
5 (as seen for example with python -i file.py). After a bug report
6 by Jeffrey Collins.
2
7
3 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
8 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
4 nasty bug which was preventing custom namespaces with -pylab,
9 nasty bug which was preventing custom namespaces with -pylab,
5 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
10 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
6 compatibility (long gone from mpl).
11 compatibility (long gone from mpl).
7
12
8 * IPython/ipapi.py (make_session): name change: create->make. We
13 * IPython/ipapi.py (make_session): name change: create->make. We
9 use make in other places (ipmaker,...), it's shorter and easier to
14 use make in other places (ipmaker,...), it's shorter and easier to
10 type and say, etc. I'm trying to clean things before 0.7.2 so
15 type and say, etc. I'm trying to clean things before 0.7.2 so
11 that I can keep things stable wrt to ipapi in the chainsaw branch.
16 that I can keep things stable wrt to ipapi in the chainsaw branch.
12
17
13 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
18 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
14 python-mode recognizes our debugger mode. Add support for
19 python-mode recognizes our debugger mode. Add support for
15 autoindent inside (X)emacs. After a patch sent in by Jin Liu
20 autoindent inside (X)emacs. After a patch sent in by Jin Liu
16 <m.liu.jin-AT-gmail.com> originally written by
21 <m.liu.jin-AT-gmail.com> originally written by
17 doxgen-AT-newsmth.net (with minor modifications for xemacs
22 doxgen-AT-newsmth.net (with minor modifications for xemacs
18 compatibility)
23 compatibility)
19
24
20 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
25 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
21 tracebacks when walking the stack so that the stack tracking system
26 tracebacks when walking the stack so that the stack tracking system
22 in emacs' python-mode can identify the frames correctly.
27 in emacs' python-mode can identify the frames correctly.
23
28
24 * IPython/ipmaker.py (make_IPython): make the internal (and
29 * IPython/ipmaker.py (make_IPython): make the internal (and
25 default config) autoedit_syntax value false by default. Too many
30 default config) autoedit_syntax value false by default. Too many
26 users have complained to me (both on and off-list) about problems
31 users have complained to me (both on and off-list) about problems
27 with this option being on by default, so I'm making it default to
32 with this option being on by default, so I'm making it default to
28 off. It can still be enabled by anyone via the usual mechanisms.
33 off. It can still be enabled by anyone via the usual mechanisms.
29
34
30 * IPython/completer.py (Completer.attr_matches): add support for
35 * IPython/completer.py (Completer.attr_matches): add support for
31 PyCrust-style _getAttributeNames magic method. Patch contributed
36 PyCrust-style _getAttributeNames magic method. Patch contributed
32 by <mscott-AT-goldenspud.com>. Closes #50.
37 by <mscott-AT-goldenspud.com>. Closes #50.
33
38
34 * IPython/iplib.py (InteractiveShell.__init__): remove the
39 * IPython/iplib.py (InteractiveShell.__init__): remove the
35 deletion of exit/quit from __builtin__, which can break
40 deletion of exit/quit from __builtin__, which can break
36 third-party tools like the Zope debugging console. The
41 third-party tools like the Zope debugging console. The
37 %exit/%quit magics remain. In general, it's probably a good idea
42 %exit/%quit magics remain. In general, it's probably a good idea
38 not to delete anything from __builtin__, since we never know what
43 not to delete anything from __builtin__, since we never know what
39 that will break. In any case, python now (for 2.5) will support
44 that will break. In any case, python now (for 2.5) will support
40 'real' exit/quit, so this issue is moot. Closes #55.
45 'real' exit/quit, so this issue is moot. Closes #55.
41
46
42 * IPython/genutils.py (with_obj): rename the 'with' function to
47 * IPython/genutils.py (with_obj): rename the 'with' function to
43 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
48 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
44 becomes a language keyword. Closes #53.
49 becomes a language keyword. Closes #53.
45
50
46 * IPython/FakeModule.py (FakeModule.__init__): add a proper
51 * IPython/FakeModule.py (FakeModule.__init__): add a proper
47 __file__ attribute to this so it fools more things into thinking
52 __file__ attribute to this so it fools more things into thinking
48 it is a real module. Closes #59.
53 it is a real module. Closes #59.
49
54
50 * IPython/Magic.py (magic_edit): add -n option to open the editor
55 * IPython/Magic.py (magic_edit): add -n option to open the editor
51 at a specific line number. After a patch by Stefan van der Walt.
56 at a specific line number. After a patch by Stefan van der Walt.
52
57
53 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
58 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
54
59
55 * IPython/iplib.py (edit_syntax_error): fix crash when for some
60 * IPython/iplib.py (edit_syntax_error): fix crash when for some
56 reason the file could not be opened. After automatic crash
61 reason the file could not be opened. After automatic crash
57 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
62 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
58 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
63 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
59 (_should_recompile): Don't fire editor if using %bg, since there
64 (_should_recompile): Don't fire editor if using %bg, since there
60 is no file in the first place. From the same report as above.
65 is no file in the first place. From the same report as above.
61 (raw_input): protect against faulty third-party prefilters. After
66 (raw_input): protect against faulty third-party prefilters. After
62 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
67 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
63 while running under SAGE.
68 while running under SAGE.
64
69
65 2006-05-23 Ville Vainio <vivainio@gmail.com>
70 2006-05-23 Ville Vainio <vivainio@gmail.com>
66
71
67 * ipapi.py: Stripped down ip.to_user_ns() to work only as
72 * ipapi.py: Stripped down ip.to_user_ns() to work only as
68 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
73 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
69 now returns None (again), unless dummy is specifically allowed by
74 now returns None (again), unless dummy is specifically allowed by
70 ipapi.get(allow_dummy=True).
75 ipapi.get(allow_dummy=True).
71
76
72 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
77 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
73
78
74 * IPython: remove all 2.2-compatibility objects and hacks from
79 * IPython: remove all 2.2-compatibility objects and hacks from
75 everywhere, since we only support 2.3 at this point. Docs
80 everywhere, since we only support 2.3 at this point. Docs
76 updated.
81 updated.
77
82
78 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
83 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
79 Anything requiring extra validation can be turned into a Python
84 Anything requiring extra validation can be turned into a Python
80 property in the future. I used a property for the db one b/c
85 property in the future. I used a property for the db one b/c
81 there was a nasty circularity problem with the initialization
86 there was a nasty circularity problem with the initialization
82 order, which right now I don't have time to clean up.
87 order, which right now I don't have time to clean up.
83
88
84 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
89 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
85 another locking bug reported by Jorgen. I'm not 100% sure though,
90 another locking bug reported by Jorgen. I'm not 100% sure though,
86 so more testing is needed...
91 so more testing is needed...
87
92
88 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
93 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
89
94
90 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
95 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
91 local variables from any routine in user code (typically executed
96 local variables from any routine in user code (typically executed
92 with %run) directly into the interactive namespace. Very useful
97 with %run) directly into the interactive namespace. Very useful
93 when doing complex debugging.
98 when doing complex debugging.
94 (IPythonNotRunning): Changed the default None object to a dummy
99 (IPythonNotRunning): Changed the default None object to a dummy
95 whose attributes can be queried as well as called without
100 whose attributes can be queried as well as called without
96 exploding, to ease writing code which works transparently both in
101 exploding, to ease writing code which works transparently both in
97 and out of ipython and uses some of this API.
102 and out of ipython and uses some of this API.
98
103
99 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
104 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
100
105
101 * IPython/hooks.py (result_display): Fix the fact that our display
106 * IPython/hooks.py (result_display): Fix the fact that our display
102 hook was using str() instead of repr(), as the default python
107 hook was using str() instead of repr(), as the default python
103 console does. This had gone unnoticed b/c it only happened if
108 console does. This had gone unnoticed b/c it only happened if
104 %Pprint was off, but the inconsistency was there.
109 %Pprint was off, but the inconsistency was there.
105
110
106 2006-05-15 Ville Vainio <vivainio@gmail.com>
111 2006-05-15 Ville Vainio <vivainio@gmail.com>
107
112
108 * Oinspect.py: Only show docstring for nonexisting/binary files
113 * Oinspect.py: Only show docstring for nonexisting/binary files
109 when doing object??, closing ticket #62
114 when doing object??, closing ticket #62
110
115
111 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
116 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
112
117
113 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
118 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
114 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
119 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
115 was being released in a routine which hadn't checked if it had
120 was being released in a routine which hadn't checked if it had
116 been the one to acquire it.
121 been the one to acquire it.
117
122
118 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
123 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
119
124
120 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
125 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
121
126
122 2006-04-11 Ville Vainio <vivainio@gmail.com>
127 2006-04-11 Ville Vainio <vivainio@gmail.com>
123
128
124 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
129 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
125 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
130 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
126 prefilters, allowing stuff like magics and aliases in the file.
131 prefilters, allowing stuff like magics and aliases in the file.
127
132
128 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
133 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
129 added. Supported now are "%clear in" and "%clear out" (clear input and
134 added. Supported now are "%clear in" and "%clear out" (clear input and
130 output history, respectively). Also fixed CachedOutput.flush to
135 output history, respectively). Also fixed CachedOutput.flush to
131 properly flush the output cache.
136 properly flush the output cache.
132
137
133 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
138 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
134 half-success (and fail explicitly).
139 half-success (and fail explicitly).
135
140
136 2006-03-28 Ville Vainio <vivainio@gmail.com>
141 2006-03-28 Ville Vainio <vivainio@gmail.com>
137
142
138 * iplib.py: Fix quoting of aliases so that only argless ones
143 * iplib.py: Fix quoting of aliases so that only argless ones
139 are quoted
144 are quoted
140
145
141 2006-03-28 Ville Vainio <vivainio@gmail.com>
146 2006-03-28 Ville Vainio <vivainio@gmail.com>
142
147
143 * iplib.py: Quote aliases with spaces in the name.
148 * iplib.py: Quote aliases with spaces in the name.
144 "c:\program files\blah\bin" is now legal alias target.
149 "c:\program files\blah\bin" is now legal alias target.
145
150
146 * ext_rehashdir.py: Space no longer allowed as arg
151 * ext_rehashdir.py: Space no longer allowed as arg
147 separator, since space is legal in path names.
152 separator, since space is legal in path names.
148
153
149 2006-03-16 Ville Vainio <vivainio@gmail.com>
154 2006-03-16 Ville Vainio <vivainio@gmail.com>
150
155
151 * upgrade_dir.py: Take path.py from Extensions, correcting
156 * upgrade_dir.py: Take path.py from Extensions, correcting
152 %upgrade magic
157 %upgrade magic
153
158
154 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
159 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
155
160
156 * hooks.py: Only enclose editor binary in quotes if legal and
161 * hooks.py: Only enclose editor binary in quotes if legal and
157 necessary (space in the name, and is an existing file). Fixes a bug
162 necessary (space in the name, and is an existing file). Fixes a bug
158 reported by Zachary Pincus.
163 reported by Zachary Pincus.
159
164
160 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
165 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
161
166
162 * Manual: thanks to a tip on proper color handling for Emacs, by
167 * Manual: thanks to a tip on proper color handling for Emacs, by
163 Eric J Haywiser <ejh1-AT-MIT.EDU>.
168 Eric J Haywiser <ejh1-AT-MIT.EDU>.
164
169
165 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
170 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
166 by applying the provided patch. Thanks to Liu Jin
171 by applying the provided patch. Thanks to Liu Jin
167 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
172 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
168 XEmacs/Linux, I'm trusting the submitter that it actually helps
173 XEmacs/Linux, I'm trusting the submitter that it actually helps
169 under win32/GNU Emacs. Will revisit if any problems are reported.
174 under win32/GNU Emacs. Will revisit if any problems are reported.
170
175
171 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
176 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
172
177
173 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
178 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
174 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
179 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
175
180
176 2006-03-12 Ville Vainio <vivainio@gmail.com>
181 2006-03-12 Ville Vainio <vivainio@gmail.com>
177
182
178 * Magic.py (magic_timeit): Added %timeit magic, contributed by
183 * Magic.py (magic_timeit): Added %timeit magic, contributed by
179 Torsten Marek.
184 Torsten Marek.
180
185
181 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
186 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
182
187
183 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
188 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
184 line ranges works again.
189 line ranges works again.
185
190
186 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
191 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
187
192
188 * IPython/iplib.py (showtraceback): add back sys.last_traceback
193 * IPython/iplib.py (showtraceback): add back sys.last_traceback
189 and friends, after a discussion with Zach Pincus on ipython-user.
194 and friends, after a discussion with Zach Pincus on ipython-user.
190 I'm not 100% sure, but after thinking aobut it quite a bit, it may
195 I'm not 100% sure, but after thinking aobut it quite a bit, it may
191 be OK. Testing with the multithreaded shells didn't reveal any
196 be OK. Testing with the multithreaded shells didn't reveal any
192 problems, but let's keep an eye out.
197 problems, but let's keep an eye out.
193
198
194 In the process, I fixed a few things which were calling
199 In the process, I fixed a few things which were calling
195 self.InteractiveTB() directly (like safe_execfile), which is a
200 self.InteractiveTB() directly (like safe_execfile), which is a
196 mistake: ALL exception reporting should be done by calling
201 mistake: ALL exception reporting should be done by calling
197 self.showtraceback(), which handles state and tab-completion and
202 self.showtraceback(), which handles state and tab-completion and
198 more.
203 more.
199
204
200 2006-03-01 Ville Vainio <vivainio@gmail.com>
205 2006-03-01 Ville Vainio <vivainio@gmail.com>
201
206
202 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
207 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
203 To use, do "from ipipe import *".
208 To use, do "from ipipe import *".
204
209
205 2006-02-24 Ville Vainio <vivainio@gmail.com>
210 2006-02-24 Ville Vainio <vivainio@gmail.com>
206
211
207 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
212 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
208 "cleanly" and safely than the older upgrade mechanism.
213 "cleanly" and safely than the older upgrade mechanism.
209
214
210 2006-02-21 Ville Vainio <vivainio@gmail.com>
215 2006-02-21 Ville Vainio <vivainio@gmail.com>
211
216
212 * Magic.py: %save works again.
217 * Magic.py: %save works again.
213
218
214 2006-02-15 Ville Vainio <vivainio@gmail.com>
219 2006-02-15 Ville Vainio <vivainio@gmail.com>
215
220
216 * Magic.py: %Pprint works again
221 * Magic.py: %Pprint works again
217
222
218 * Extensions/ipy_sane_defaults.py: Provide everything provided
223 * Extensions/ipy_sane_defaults.py: Provide everything provided
219 in default ipythonrc, to make it possible to have a completely empty
224 in default ipythonrc, to make it possible to have a completely empty
220 ipythonrc (and thus completely rc-file free configuration)
225 ipythonrc (and thus completely rc-file free configuration)
221
226
222
227
223 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
228 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
224
229
225 * IPython/hooks.py (editor): quote the call to the editor command,
230 * IPython/hooks.py (editor): quote the call to the editor command,
226 to allow commands with spaces in them. Problem noted by watching
231 to allow commands with spaces in them. Problem noted by watching
227 Ian Oswald's video about textpad under win32 at
232 Ian Oswald's video about textpad under win32 at
228 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
233 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
229
234
230 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
235 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
231 describing magics (we haven't used @ for a loong time).
236 describing magics (we haven't used @ for a loong time).
232
237
233 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
238 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
234 contributed by marienz to close
239 contributed by marienz to close
235 http://www.scipy.net/roundup/ipython/issue53.
240 http://www.scipy.net/roundup/ipython/issue53.
236
241
237 2006-02-10 Ville Vainio <vivainio@gmail.com>
242 2006-02-10 Ville Vainio <vivainio@gmail.com>
238
243
239 * genutils.py: getoutput now works in win32 too
244 * genutils.py: getoutput now works in win32 too
240
245
241 * completer.py: alias and magic completion only invoked
246 * completer.py: alias and magic completion only invoked
242 at the first "item" in the line, to avoid "cd %store"
247 at the first "item" in the line, to avoid "cd %store"
243 nonsense.
248 nonsense.
244
249
245 2006-02-09 Ville Vainio <vivainio@gmail.com>
250 2006-02-09 Ville Vainio <vivainio@gmail.com>
246
251
247 * test/*: Added a unit testing framework (finally).
252 * test/*: Added a unit testing framework (finally).
248 '%run runtests.py' to run test_*.
253 '%run runtests.py' to run test_*.
249
254
250 * ipapi.py: Exposed runlines and set_custom_exc
255 * ipapi.py: Exposed runlines and set_custom_exc
251
256
252 2006-02-07 Ville Vainio <vivainio@gmail.com>
257 2006-02-07 Ville Vainio <vivainio@gmail.com>
253
258
254 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
259 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
255 instead use "f(1 2)" as before.
260 instead use "f(1 2)" as before.
256
261
257 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
262 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
258
263
259 * IPython/demo.py (IPythonDemo): Add new classes to the demo
264 * IPython/demo.py (IPythonDemo): Add new classes to the demo
260 facilities, for demos processed by the IPython input filter
265 facilities, for demos processed by the IPython input filter
261 (IPythonDemo), and for running a script one-line-at-a-time as a
266 (IPythonDemo), and for running a script one-line-at-a-time as a
262 demo, both for pure Python (LineDemo) and for IPython-processed
267 demo, both for pure Python (LineDemo) and for IPython-processed
263 input (IPythonLineDemo). After a request by Dave Kohel, from the
268 input (IPythonLineDemo). After a request by Dave Kohel, from the
264 SAGE team.
269 SAGE team.
265 (Demo.edit): added and edit() method to the demo objects, to edit
270 (Demo.edit): added and edit() method to the demo objects, to edit
266 the in-memory copy of the last executed block.
271 the in-memory copy of the last executed block.
267
272
268 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
273 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
269 processing to %edit, %macro and %save. These commands can now be
274 processing to %edit, %macro and %save. These commands can now be
270 invoked on the unprocessed input as it was typed by the user
275 invoked on the unprocessed input as it was typed by the user
271 (without any prefilters applied). After requests by the SAGE team
276 (without any prefilters applied). After requests by the SAGE team
272 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
277 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
273
278
274 2006-02-01 Ville Vainio <vivainio@gmail.com>
279 2006-02-01 Ville Vainio <vivainio@gmail.com>
275
280
276 * setup.py, eggsetup.py: easy_install ipython==dev works
281 * setup.py, eggsetup.py: easy_install ipython==dev works
277 correctly now (on Linux)
282 correctly now (on Linux)
278
283
279 * ipy_user_conf,ipmaker: user config changes, removed spurious
284 * ipy_user_conf,ipmaker: user config changes, removed spurious
280 warnings
285 warnings
281
286
282 * iplib: if rc.banner is string, use it as is.
287 * iplib: if rc.banner is string, use it as is.
283
288
284 * Magic: %pycat accepts a string argument and pages it's contents.
289 * Magic: %pycat accepts a string argument and pages it's contents.
285
290
286
291
287 2006-01-30 Ville Vainio <vivainio@gmail.com>
292 2006-01-30 Ville Vainio <vivainio@gmail.com>
288
293
289 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
294 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
290 Now %store and bookmarks work through PickleShare, meaning that
295 Now %store and bookmarks work through PickleShare, meaning that
291 concurrent access is possible and all ipython sessions see the
296 concurrent access is possible and all ipython sessions see the
292 same database situation all the time, instead of snapshot of
297 same database situation all the time, instead of snapshot of
293 the situation when the session was started. Hence, %bookmark
298 the situation when the session was started. Hence, %bookmark
294 results are immediately accessible from othes sessions. The database
299 results are immediately accessible from othes sessions. The database
295 is also available for use by user extensions. See:
300 is also available for use by user extensions. See:
296 http://www.python.org/pypi/pickleshare
301 http://www.python.org/pypi/pickleshare
297
302
298 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
303 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
299
304
300 * aliases can now be %store'd
305 * aliases can now be %store'd
301
306
302 * path.py move to Extensions so that pickleshare does not need
307 * path.py move to Extensions so that pickleshare does not need
303 IPython-specific import. Extensions added to pythonpath right
308 IPython-specific import. Extensions added to pythonpath right
304 at __init__.
309 at __init__.
305
310
306 * iplib.py: ipalias deprecated/redundant; aliases are converted and
311 * iplib.py: ipalias deprecated/redundant; aliases are converted and
307 called with _ip.system and the pre-transformed command string.
312 called with _ip.system and the pre-transformed command string.
308
313
309 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
314 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
310
315
311 * IPython/iplib.py (interact): Fix that we were not catching
316 * IPython/iplib.py (interact): Fix that we were not catching
312 KeyboardInterrupt exceptions properly. I'm not quite sure why the
317 KeyboardInterrupt exceptions properly. I'm not quite sure why the
313 logic here had to change, but it's fixed now.
318 logic here had to change, but it's fixed now.
314
319
315 2006-01-29 Ville Vainio <vivainio@gmail.com>
320 2006-01-29 Ville Vainio <vivainio@gmail.com>
316
321
317 * iplib.py: Try to import pyreadline on Windows.
322 * iplib.py: Try to import pyreadline on Windows.
318
323
319 2006-01-27 Ville Vainio <vivainio@gmail.com>
324 2006-01-27 Ville Vainio <vivainio@gmail.com>
320
325
321 * iplib.py: Expose ipapi as _ip in builtin namespace.
326 * iplib.py: Expose ipapi as _ip in builtin namespace.
322 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
327 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
323 and ip_set_hook (-> _ip.set_hook) redundant. % and !
328 and ip_set_hook (-> _ip.set_hook) redundant. % and !
324 syntax now produce _ip.* variant of the commands.
329 syntax now produce _ip.* variant of the commands.
325
330
326 * "_ip.options().autoedit_syntax = 2" automatically throws
331 * "_ip.options().autoedit_syntax = 2" automatically throws
327 user to editor for syntax error correction without prompting.
332 user to editor for syntax error correction without prompting.
328
333
329 2006-01-27 Ville Vainio <vivainio@gmail.com>
334 2006-01-27 Ville Vainio <vivainio@gmail.com>
330
335
331 * ipmaker.py: Give "realistic" sys.argv for scripts (without
336 * ipmaker.py: Give "realistic" sys.argv for scripts (without
332 'ipython' at argv[0]) executed through command line.
337 'ipython' at argv[0]) executed through command line.
333 NOTE: this DEPRECATES calling ipython with multiple scripts
338 NOTE: this DEPRECATES calling ipython with multiple scripts
334 ("ipython a.py b.py c.py")
339 ("ipython a.py b.py c.py")
335
340
336 * iplib.py, hooks.py: Added configurable input prefilter,
341 * iplib.py, hooks.py: Added configurable input prefilter,
337 named 'input_prefilter'. See ext_rescapture.py for example
342 named 'input_prefilter'. See ext_rescapture.py for example
338 usage.
343 usage.
339
344
340 * ext_rescapture.py, Magic.py: Better system command output capture
345 * ext_rescapture.py, Magic.py: Better system command output capture
341 through 'var = !ls' (deprecates user-visible %sc). Same notation
346 through 'var = !ls' (deprecates user-visible %sc). Same notation
342 applies for magics, 'var = %alias' assigns alias list to var.
347 applies for magics, 'var = %alias' assigns alias list to var.
343
348
344 * ipapi.py: added meta() for accessing extension-usable data store.
349 * ipapi.py: added meta() for accessing extension-usable data store.
345
350
346 * iplib.py: added InteractiveShell.getapi(). New magics should be
351 * iplib.py: added InteractiveShell.getapi(). New magics should be
347 written doing self.getapi() instead of using the shell directly.
352 written doing self.getapi() instead of using the shell directly.
348
353
349 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
354 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
350 %store foo >> ~/myfoo.txt to store variables to files (in clean
355 %store foo >> ~/myfoo.txt to store variables to files (in clean
351 textual form, not a restorable pickle).
356 textual form, not a restorable pickle).
352
357
353 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
358 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
354
359
355 * usage.py, Magic.py: added %quickref
360 * usage.py, Magic.py: added %quickref
356
361
357 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
362 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
358
363
359 * GetoptErrors when invoking magics etc. with wrong args
364 * GetoptErrors when invoking magics etc. with wrong args
360 are now more helpful:
365 are now more helpful:
361 GetoptError: option -l not recognized (allowed: "qb" )
366 GetoptError: option -l not recognized (allowed: "qb" )
362
367
363 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
368 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
364
369
365 * IPython/demo.py (Demo.show): Flush stdout after each block, so
370 * IPython/demo.py (Demo.show): Flush stdout after each block, so
366 computationally intensive blocks don't appear to stall the demo.
371 computationally intensive blocks don't appear to stall the demo.
367
372
368 2006-01-24 Ville Vainio <vivainio@gmail.com>
373 2006-01-24 Ville Vainio <vivainio@gmail.com>
369
374
370 * iplib.py, hooks.py: 'result_display' hook can return a non-None
375 * iplib.py, hooks.py: 'result_display' hook can return a non-None
371 value to manipulate resulting history entry.
376 value to manipulate resulting history entry.
372
377
373 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
378 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
374 to instance methods of IPApi class, to make extending an embedded
379 to instance methods of IPApi class, to make extending an embedded
375 IPython feasible. See ext_rehashdir.py for example usage.
380 IPython feasible. See ext_rehashdir.py for example usage.
376
381
377 * Merged 1071-1076 from banches/0.7.1
382 * Merged 1071-1076 from banches/0.7.1
378
383
379
384
380 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
385 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
381
386
382 * tools/release (daystamp): Fix build tools to use the new
387 * tools/release (daystamp): Fix build tools to use the new
383 eggsetup.py script to build lightweight eggs.
388 eggsetup.py script to build lightweight eggs.
384
389
385 * Applied changesets 1062 and 1064 before 0.7.1 release.
390 * Applied changesets 1062 and 1064 before 0.7.1 release.
386
391
387 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
392 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
388 see the raw input history (without conversions like %ls ->
393 see the raw input history (without conversions like %ls ->
389 ipmagic("ls")). After a request from W. Stein, SAGE
394 ipmagic("ls")). After a request from W. Stein, SAGE
390 (http://modular.ucsd.edu/sage) developer. This information is
395 (http://modular.ucsd.edu/sage) developer. This information is
391 stored in the input_hist_raw attribute of the IPython instance, so
396 stored in the input_hist_raw attribute of the IPython instance, so
392 developers can access it if needed (it's an InputList instance).
397 developers can access it if needed (it's an InputList instance).
393
398
394 * Versionstring = 0.7.2.svn
399 * Versionstring = 0.7.2.svn
395
400
396 * eggsetup.py: A separate script for constructing eggs, creates
401 * eggsetup.py: A separate script for constructing eggs, creates
397 proper launch scripts even on Windows (an .exe file in
402 proper launch scripts even on Windows (an .exe file in
398 \python24\scripts).
403 \python24\scripts).
399
404
400 * ipapi.py: launch_new_instance, launch entry point needed for the
405 * ipapi.py: launch_new_instance, launch entry point needed for the
401 egg.
406 egg.
402
407
403 2006-01-23 Ville Vainio <vivainio@gmail.com>
408 2006-01-23 Ville Vainio <vivainio@gmail.com>
404
409
405 * Added %cpaste magic for pasting python code
410 * Added %cpaste magic for pasting python code
406
411
407 2006-01-22 Ville Vainio <vivainio@gmail.com>
412 2006-01-22 Ville Vainio <vivainio@gmail.com>
408
413
409 * Merge from branches/0.7.1 into trunk, revs 1052-1057
414 * Merge from branches/0.7.1 into trunk, revs 1052-1057
410
415
411 * Versionstring = 0.7.2.svn
416 * Versionstring = 0.7.2.svn
412
417
413 * eggsetup.py: A separate script for constructing eggs, creates
418 * eggsetup.py: A separate script for constructing eggs, creates
414 proper launch scripts even on Windows (an .exe file in
419 proper launch scripts even on Windows (an .exe file in
415 \python24\scripts).
420 \python24\scripts).
416
421
417 * ipapi.py: launch_new_instance, launch entry point needed for the
422 * ipapi.py: launch_new_instance, launch entry point needed for the
418 egg.
423 egg.
419
424
420 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
425 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
421
426
422 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
427 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
423 %pfile foo would print the file for foo even if it was a binary.
428 %pfile foo would print the file for foo even if it was a binary.
424 Now, extensions '.so' and '.dll' are skipped.
429 Now, extensions '.so' and '.dll' are skipped.
425
430
426 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
431 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
427 bug, where macros would fail in all threaded modes. I'm not 100%
432 bug, where macros would fail in all threaded modes. I'm not 100%
428 sure, so I'm going to put out an rc instead of making a release
433 sure, so I'm going to put out an rc instead of making a release
429 today, and wait for feedback for at least a few days.
434 today, and wait for feedback for at least a few days.
430
435
431 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
436 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
432 it...) the handling of pasting external code with autoindent on.
437 it...) the handling of pasting external code with autoindent on.
433 To get out of a multiline input, the rule will appear for most
438 To get out of a multiline input, the rule will appear for most
434 users unchanged: two blank lines or change the indent level
439 users unchanged: two blank lines or change the indent level
435 proposed by IPython. But there is a twist now: you can
440 proposed by IPython. But there is a twist now: you can
436 add/subtract only *one or two spaces*. If you add/subtract three
441 add/subtract only *one or two spaces*. If you add/subtract three
437 or more (unless you completely delete the line), IPython will
442 or more (unless you completely delete the line), IPython will
438 accept that line, and you'll need to enter a second one of pure
443 accept that line, and you'll need to enter a second one of pure
439 whitespace. I know it sounds complicated, but I can't find a
444 whitespace. I know it sounds complicated, but I can't find a
440 different solution that covers all the cases, with the right
445 different solution that covers all the cases, with the right
441 heuristics. Hopefully in actual use, nobody will really notice
446 heuristics. Hopefully in actual use, nobody will really notice
442 all these strange rules and things will 'just work'.
447 all these strange rules and things will 'just work'.
443
448
444 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
449 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
445
450
446 * IPython/iplib.py (interact): catch exceptions which can be
451 * IPython/iplib.py (interact): catch exceptions which can be
447 triggered asynchronously by signal handlers. Thanks to an
452 triggered asynchronously by signal handlers. Thanks to an
448 automatic crash report, submitted by Colin Kingsley
453 automatic crash report, submitted by Colin Kingsley
449 <tercel-AT-gentoo.org>.
454 <tercel-AT-gentoo.org>.
450
455
451 2006-01-20 Ville Vainio <vivainio@gmail.com>
456 2006-01-20 Ville Vainio <vivainio@gmail.com>
452
457
453 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
458 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
454 (%rehashdir, very useful, try it out) of how to extend ipython
459 (%rehashdir, very useful, try it out) of how to extend ipython
455 with new magics. Also added Extensions dir to pythonpath to make
460 with new magics. Also added Extensions dir to pythonpath to make
456 importing extensions easy.
461 importing extensions easy.
457
462
458 * %store now complains when trying to store interactively declared
463 * %store now complains when trying to store interactively declared
459 classes / instances of those classes.
464 classes / instances of those classes.
460
465
461 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
466 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
462 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
467 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
463 if they exist, and ipy_user_conf.py with some defaults is created for
468 if they exist, and ipy_user_conf.py with some defaults is created for
464 the user.
469 the user.
465
470
466 * Startup rehashing done by the config file, not InterpreterExec.
471 * Startup rehashing done by the config file, not InterpreterExec.
467 This means system commands are available even without selecting the
472 This means system commands are available even without selecting the
468 pysh profile. It's the sensible default after all.
473 pysh profile. It's the sensible default after all.
469
474
470 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
475 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
471
476
472 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
477 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
473 multiline code with autoindent on working. But I am really not
478 multiline code with autoindent on working. But I am really not
474 sure, so this needs more testing. Will commit a debug-enabled
479 sure, so this needs more testing. Will commit a debug-enabled
475 version for now, while I test it some more, so that Ville and
480 version for now, while I test it some more, so that Ville and
476 others may also catch any problems. Also made
481 others may also catch any problems. Also made
477 self.indent_current_str() a method, to ensure that there's no
482 self.indent_current_str() a method, to ensure that there's no
478 chance of the indent space count and the corresponding string
483 chance of the indent space count and the corresponding string
479 falling out of sync. All code needing the string should just call
484 falling out of sync. All code needing the string should just call
480 the method.
485 the method.
481
486
482 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
487 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
483
488
484 * IPython/Magic.py (magic_edit): fix check for when users don't
489 * IPython/Magic.py (magic_edit): fix check for when users don't
485 save their output files, the try/except was in the wrong section.
490 save their output files, the try/except was in the wrong section.
486
491
487 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
492 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
488
493
489 * IPython/Magic.py (magic_run): fix __file__ global missing from
494 * IPython/Magic.py (magic_run): fix __file__ global missing from
490 script's namespace when executed via %run. After a report by
495 script's namespace when executed via %run. After a report by
491 Vivian.
496 Vivian.
492
497
493 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
498 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
494 when using python 2.4. The parent constructor changed in 2.4, and
499 when using python 2.4. The parent constructor changed in 2.4, and
495 we need to track it directly (we can't call it, as it messes up
500 we need to track it directly (we can't call it, as it messes up
496 readline and tab-completion inside our pdb would stop working).
501 readline and tab-completion inside our pdb would stop working).
497 After a bug report by R. Bernstein <rocky-AT-panix.com>.
502 After a bug report by R. Bernstein <rocky-AT-panix.com>.
498
503
499 2006-01-16 Ville Vainio <vivainio@gmail.com>
504 2006-01-16 Ville Vainio <vivainio@gmail.com>
500
505
501 * Ipython/magic.py:Reverted back to old %edit functionality
506 * Ipython/magic.py:Reverted back to old %edit functionality
502 that returns file contents on exit.
507 that returns file contents on exit.
503
508
504 * IPython/path.py: Added Jason Orendorff's "path" module to
509 * IPython/path.py: Added Jason Orendorff's "path" module to
505 IPython tree, http://www.jorendorff.com/articles/python/path/.
510 IPython tree, http://www.jorendorff.com/articles/python/path/.
506 You can get path objects conveniently through %sc, and !!, e.g.:
511 You can get path objects conveniently through %sc, and !!, e.g.:
507 sc files=ls
512 sc files=ls
508 for p in files.paths: # or files.p
513 for p in files.paths: # or files.p
509 print p,p.mtime
514 print p,p.mtime
510
515
511 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
516 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
512 now work again without considering the exclusion regexp -
517 now work again without considering the exclusion regexp -
513 hence, things like ',foo my/path' turn to 'foo("my/path")'
518 hence, things like ',foo my/path' turn to 'foo("my/path")'
514 instead of syntax error.
519 instead of syntax error.
515
520
516
521
517 2006-01-14 Ville Vainio <vivainio@gmail.com>
522 2006-01-14 Ville Vainio <vivainio@gmail.com>
518
523
519 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
524 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
520 ipapi decorators for python 2.4 users, options() provides access to rc
525 ipapi decorators for python 2.4 users, options() provides access to rc
521 data.
526 data.
522
527
523 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
528 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
524 as path separators (even on Linux ;-). Space character after
529 as path separators (even on Linux ;-). Space character after
525 backslash (as yielded by tab completer) is still space;
530 backslash (as yielded by tab completer) is still space;
526 "%cd long\ name" works as expected.
531 "%cd long\ name" works as expected.
527
532
528 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
533 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
529 as "chain of command", with priority. API stays the same,
534 as "chain of command", with priority. API stays the same,
530 TryNext exception raised by a hook function signals that
535 TryNext exception raised by a hook function signals that
531 current hook failed and next hook should try handling it, as
536 current hook failed and next hook should try handling it, as
532 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
537 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
533 requested configurable display hook, which is now implemented.
538 requested configurable display hook, which is now implemented.
534
539
535 2006-01-13 Ville Vainio <vivainio@gmail.com>
540 2006-01-13 Ville Vainio <vivainio@gmail.com>
536
541
537 * IPython/platutils*.py: platform specific utility functions,
542 * IPython/platutils*.py: platform specific utility functions,
538 so far only set_term_title is implemented (change terminal
543 so far only set_term_title is implemented (change terminal
539 label in windowing systems). %cd now changes the title to
544 label in windowing systems). %cd now changes the title to
540 current dir.
545 current dir.
541
546
542 * IPython/Release.py: Added myself to "authors" list,
547 * IPython/Release.py: Added myself to "authors" list,
543 had to create new files.
548 had to create new files.
544
549
545 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
550 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
546 shell escape; not a known bug but had potential to be one in the
551 shell escape; not a known bug but had potential to be one in the
547 future.
552 future.
548
553
549 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
554 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
550 extension API for IPython! See the module for usage example. Fix
555 extension API for IPython! See the module for usage example. Fix
551 OInspect for docstring-less magic functions.
556 OInspect for docstring-less magic functions.
552
557
553
558
554 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
559 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
555
560
556 * IPython/iplib.py (raw_input): temporarily deactivate all
561 * IPython/iplib.py (raw_input): temporarily deactivate all
557 attempts at allowing pasting of code with autoindent on. It
562 attempts at allowing pasting of code with autoindent on. It
558 introduced bugs (reported by Prabhu) and I can't seem to find a
563 introduced bugs (reported by Prabhu) and I can't seem to find a
559 robust combination which works in all cases. Will have to revisit
564 robust combination which works in all cases. Will have to revisit
560 later.
565 later.
561
566
562 * IPython/genutils.py: remove isspace() function. We've dropped
567 * IPython/genutils.py: remove isspace() function. We've dropped
563 2.2 compatibility, so it's OK to use the string method.
568 2.2 compatibility, so it's OK to use the string method.
564
569
565 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
570 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
566
571
567 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
572 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
568 matching what NOT to autocall on, to include all python binary
573 matching what NOT to autocall on, to include all python binary
569 operators (including things like 'and', 'or', 'is' and 'in').
574 operators (including things like 'and', 'or', 'is' and 'in').
570 Prompted by a bug report on 'foo & bar', but I realized we had
575 Prompted by a bug report on 'foo & bar', but I realized we had
571 many more potential bug cases with other operators. The regexp is
576 many more potential bug cases with other operators. The regexp is
572 self.re_exclude_auto, it's fairly commented.
577 self.re_exclude_auto, it's fairly commented.
573
578
574 2006-01-12 Ville Vainio <vivainio@gmail.com>
579 2006-01-12 Ville Vainio <vivainio@gmail.com>
575
580
576 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
581 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
577 Prettified and hardened string/backslash quoting with ipsystem(),
582 Prettified and hardened string/backslash quoting with ipsystem(),
578 ipalias() and ipmagic(). Now even \ characters are passed to
583 ipalias() and ipmagic(). Now even \ characters are passed to
579 %magics, !shell escapes and aliases exactly as they are in the
584 %magics, !shell escapes and aliases exactly as they are in the
580 ipython command line. Should improve backslash experience,
585 ipython command line. Should improve backslash experience,
581 particularly in Windows (path delimiter for some commands that
586 particularly in Windows (path delimiter for some commands that
582 won't understand '/'), but Unix benefits as well (regexps). %cd
587 won't understand '/'), but Unix benefits as well (regexps). %cd
583 magic still doesn't support backslash path delimiters, though. Also
588 magic still doesn't support backslash path delimiters, though. Also
584 deleted all pretense of supporting multiline command strings in
589 deleted all pretense of supporting multiline command strings in
585 !system or %magic commands. Thanks to Jerry McRae for suggestions.
590 !system or %magic commands. Thanks to Jerry McRae for suggestions.
586
591
587 * doc/build_doc_instructions.txt added. Documentation on how to
592 * doc/build_doc_instructions.txt added. Documentation on how to
588 use doc/update_manual.py, added yesterday. Both files contributed
593 use doc/update_manual.py, added yesterday. Both files contributed
589 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
594 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
590 doc/*.sh for deprecation at a later date.
595 doc/*.sh for deprecation at a later date.
591
596
592 * /ipython.py Added ipython.py to root directory for
597 * /ipython.py Added ipython.py to root directory for
593 zero-installation (tar xzvf ipython.tgz; cd ipython; python
598 zero-installation (tar xzvf ipython.tgz; cd ipython; python
594 ipython.py) and development convenience (no need to kee doing
599 ipython.py) and development convenience (no need to kee doing
595 "setup.py install" between changes).
600 "setup.py install" between changes).
596
601
597 * Made ! and !! shell escapes work (again) in multiline expressions:
602 * Made ! and !! shell escapes work (again) in multiline expressions:
598 if 1:
603 if 1:
599 !ls
604 !ls
600 !!ls
605 !!ls
601
606
602 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
607 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
603
608
604 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
609 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
605 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
610 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
606 module in case-insensitive installation. Was causing crashes
611 module in case-insensitive installation. Was causing crashes
607 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
612 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
608
613
609 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
614 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
610 <marienz-AT-gentoo.org>, closes
615 <marienz-AT-gentoo.org>, closes
611 http://www.scipy.net/roundup/ipython/issue51.
616 http://www.scipy.net/roundup/ipython/issue51.
612
617
613 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
618 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
614
619
615 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
620 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
616 problem of excessive CPU usage under *nix and keyboard lag under
621 problem of excessive CPU usage under *nix and keyboard lag under
617 win32.
622 win32.
618
623
619 2006-01-10 *** Released version 0.7.0
624 2006-01-10 *** Released version 0.7.0
620
625
621 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
626 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
622
627
623 * IPython/Release.py (revision): tag version number to 0.7.0,
628 * IPython/Release.py (revision): tag version number to 0.7.0,
624 ready for release.
629 ready for release.
625
630
626 * IPython/Magic.py (magic_edit): Add print statement to %edit so
631 * IPython/Magic.py (magic_edit): Add print statement to %edit so
627 it informs the user of the name of the temp. file used. This can
632 it informs the user of the name of the temp. file used. This can
628 help if you decide later to reuse that same file, so you know
633 help if you decide later to reuse that same file, so you know
629 where to copy the info from.
634 where to copy the info from.
630
635
631 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
636 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
632
637
633 * setup_bdist_egg.py: little script to build an egg. Added
638 * setup_bdist_egg.py: little script to build an egg. Added
634 support in the release tools as well.
639 support in the release tools as well.
635
640
636 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
641 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
637
642
638 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
643 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
639 version selection (new -wxversion command line and ipythonrc
644 version selection (new -wxversion command line and ipythonrc
640 parameter). Patch contributed by Arnd Baecker
645 parameter). Patch contributed by Arnd Baecker
641 <arnd.baecker-AT-web.de>.
646 <arnd.baecker-AT-web.de>.
642
647
643 * IPython/iplib.py (embed_mainloop): fix tab-completion in
648 * IPython/iplib.py (embed_mainloop): fix tab-completion in
644 embedded instances, for variables defined at the interactive
649 embedded instances, for variables defined at the interactive
645 prompt of the embedded ipython. Reported by Arnd.
650 prompt of the embedded ipython. Reported by Arnd.
646
651
647 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
652 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
648 it can be used as a (stateful) toggle, or with a direct parameter.
653 it can be used as a (stateful) toggle, or with a direct parameter.
649
654
650 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
655 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
651 could be triggered in certain cases and cause the traceback
656 could be triggered in certain cases and cause the traceback
652 printer not to work.
657 printer not to work.
653
658
654 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
659 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
655
660
656 * IPython/iplib.py (_should_recompile): Small fix, closes
661 * IPython/iplib.py (_should_recompile): Small fix, closes
657 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
662 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
658
663
659 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
664 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
660
665
661 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
666 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
662 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
667 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
663 Moad for help with tracking it down.
668 Moad for help with tracking it down.
664
669
665 * IPython/iplib.py (handle_auto): fix autocall handling for
670 * IPython/iplib.py (handle_auto): fix autocall handling for
666 objects which support BOTH __getitem__ and __call__ (so that f [x]
671 objects which support BOTH __getitem__ and __call__ (so that f [x]
667 is left alone, instead of becoming f([x]) automatically).
672 is left alone, instead of becoming f([x]) automatically).
668
673
669 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
674 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
670 Ville's patch.
675 Ville's patch.
671
676
672 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
677 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
673
678
674 * IPython/iplib.py (handle_auto): changed autocall semantics to
679 * IPython/iplib.py (handle_auto): changed autocall semantics to
675 include 'smart' mode, where the autocall transformation is NOT
680 include 'smart' mode, where the autocall transformation is NOT
676 applied if there are no arguments on the line. This allows you to
681 applied if there are no arguments on the line. This allows you to
677 just type 'foo' if foo is a callable to see its internal form,
682 just type 'foo' if foo is a callable to see its internal form,
678 instead of having it called with no arguments (typically a
683 instead of having it called with no arguments (typically a
679 mistake). The old 'full' autocall still exists: for that, you
684 mistake). The old 'full' autocall still exists: for that, you
680 need to set the 'autocall' parameter to 2 in your ipythonrc file.
685 need to set the 'autocall' parameter to 2 in your ipythonrc file.
681
686
682 * IPython/completer.py (Completer.attr_matches): add
687 * IPython/completer.py (Completer.attr_matches): add
683 tab-completion support for Enthoughts' traits. After a report by
688 tab-completion support for Enthoughts' traits. After a report by
684 Arnd and a patch by Prabhu.
689 Arnd and a patch by Prabhu.
685
690
686 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
691 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
687
692
688 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
693 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
689 Schmolck's patch to fix inspect.getinnerframes().
694 Schmolck's patch to fix inspect.getinnerframes().
690
695
691 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
696 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
692 for embedded instances, regarding handling of namespaces and items
697 for embedded instances, regarding handling of namespaces and items
693 added to the __builtin__ one. Multiple embedded instances and
698 added to the __builtin__ one. Multiple embedded instances and
694 recursive embeddings should work better now (though I'm not sure
699 recursive embeddings should work better now (though I'm not sure
695 I've got all the corner cases fixed, that code is a bit of a brain
700 I've got all the corner cases fixed, that code is a bit of a brain
696 twister).
701 twister).
697
702
698 * IPython/Magic.py (magic_edit): added support to edit in-memory
703 * IPython/Magic.py (magic_edit): added support to edit in-memory
699 macros (automatically creates the necessary temp files). %edit
704 macros (automatically creates the necessary temp files). %edit
700 also doesn't return the file contents anymore, it's just noise.
705 also doesn't return the file contents anymore, it's just noise.
701
706
702 * IPython/completer.py (Completer.attr_matches): revert change to
707 * IPython/completer.py (Completer.attr_matches): revert change to
703 complete only on attributes listed in __all__. I realized it
708 complete only on attributes listed in __all__. I realized it
704 cripples the tab-completion system as a tool for exploring the
709 cripples the tab-completion system as a tool for exploring the
705 internals of unknown libraries (it renders any non-__all__
710 internals of unknown libraries (it renders any non-__all__
706 attribute off-limits). I got bit by this when trying to see
711 attribute off-limits). I got bit by this when trying to see
707 something inside the dis module.
712 something inside the dis module.
708
713
709 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
714 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
710
715
711 * IPython/iplib.py (InteractiveShell.__init__): add .meta
716 * IPython/iplib.py (InteractiveShell.__init__): add .meta
712 namespace for users and extension writers to hold data in. This
717 namespace for users and extension writers to hold data in. This
713 follows the discussion in
718 follows the discussion in
714 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
719 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
715
720
716 * IPython/completer.py (IPCompleter.complete): small patch to help
721 * IPython/completer.py (IPCompleter.complete): small patch to help
717 tab-completion under Emacs, after a suggestion by John Barnard
722 tab-completion under Emacs, after a suggestion by John Barnard
718 <barnarj-AT-ccf.org>.
723 <barnarj-AT-ccf.org>.
719
724
720 * IPython/Magic.py (Magic.extract_input_slices): added support for
725 * IPython/Magic.py (Magic.extract_input_slices): added support for
721 the slice notation in magics to use N-M to represent numbers N...M
726 the slice notation in magics to use N-M to represent numbers N...M
722 (closed endpoints). This is used by %macro and %save.
727 (closed endpoints). This is used by %macro and %save.
723
728
724 * IPython/completer.py (Completer.attr_matches): for modules which
729 * IPython/completer.py (Completer.attr_matches): for modules which
725 define __all__, complete only on those. After a patch by Jeffrey
730 define __all__, complete only on those. After a patch by Jeffrey
726 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
731 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
727 speed up this routine.
732 speed up this routine.
728
733
729 * IPython/Logger.py (Logger.log): fix a history handling bug. I
734 * IPython/Logger.py (Logger.log): fix a history handling bug. I
730 don't know if this is the end of it, but the behavior now is
735 don't know if this is the end of it, but the behavior now is
731 certainly much more correct. Note that coupled with macros,
736 certainly much more correct. Note that coupled with macros,
732 slightly surprising (at first) behavior may occur: a macro will in
737 slightly surprising (at first) behavior may occur: a macro will in
733 general expand to multiple lines of input, so upon exiting, the
738 general expand to multiple lines of input, so upon exiting, the
734 in/out counters will both be bumped by the corresponding amount
739 in/out counters will both be bumped by the corresponding amount
735 (as if the macro's contents had been typed interactively). Typing
740 (as if the macro's contents had been typed interactively). Typing
736 %hist will reveal the intermediate (silently processed) lines.
741 %hist will reveal the intermediate (silently processed) lines.
737
742
738 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
743 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
739 pickle to fail (%run was overwriting __main__ and not restoring
744 pickle to fail (%run was overwriting __main__ and not restoring
740 it, but pickle relies on __main__ to operate).
745 it, but pickle relies on __main__ to operate).
741
746
742 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
747 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
743 using properties, but forgot to make the main InteractiveShell
748 using properties, but forgot to make the main InteractiveShell
744 class a new-style class. Properties fail silently, and
749 class a new-style class. Properties fail silently, and
745 misteriously, with old-style class (getters work, but
750 misteriously, with old-style class (getters work, but
746 setters don't do anything).
751 setters don't do anything).
747
752
748 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
753 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
749
754
750 * IPython/Magic.py (magic_history): fix history reporting bug (I
755 * IPython/Magic.py (magic_history): fix history reporting bug (I
751 know some nasties are still there, I just can't seem to find a
756 know some nasties are still there, I just can't seem to find a
752 reproducible test case to track them down; the input history is
757 reproducible test case to track them down; the input history is
753 falling out of sync...)
758 falling out of sync...)
754
759
755 * IPython/iplib.py (handle_shell_escape): fix bug where both
760 * IPython/iplib.py (handle_shell_escape): fix bug where both
756 aliases and system accesses where broken for indented code (such
761 aliases and system accesses where broken for indented code (such
757 as loops).
762 as loops).
758
763
759 * IPython/genutils.py (shell): fix small but critical bug for
764 * IPython/genutils.py (shell): fix small but critical bug for
760 win32 system access.
765 win32 system access.
761
766
762 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
767 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
763
768
764 * IPython/iplib.py (showtraceback): remove use of the
769 * IPython/iplib.py (showtraceback): remove use of the
765 sys.last_{type/value/traceback} structures, which are non
770 sys.last_{type/value/traceback} structures, which are non
766 thread-safe.
771 thread-safe.
767 (_prefilter): change control flow to ensure that we NEVER
772 (_prefilter): change control flow to ensure that we NEVER
768 introspect objects when autocall is off. This will guarantee that
773 introspect objects when autocall is off. This will guarantee that
769 having an input line of the form 'x.y', where access to attribute
774 having an input line of the form 'x.y', where access to attribute
770 'y' has side effects, doesn't trigger the side effect TWICE. It
775 'y' has side effects, doesn't trigger the side effect TWICE. It
771 is important to note that, with autocall on, these side effects
776 is important to note that, with autocall on, these side effects
772 can still happen.
777 can still happen.
773 (ipsystem): new builtin, to complete the ip{magic/alias/system}
778 (ipsystem): new builtin, to complete the ip{magic/alias/system}
774 trio. IPython offers these three kinds of special calls which are
779 trio. IPython offers these three kinds of special calls which are
775 not python code, and it's a good thing to have their call method
780 not python code, and it's a good thing to have their call method
776 be accessible as pure python functions (not just special syntax at
781 be accessible as pure python functions (not just special syntax at
777 the command line). It gives us a better internal implementation
782 the command line). It gives us a better internal implementation
778 structure, as well as exposing these for user scripting more
783 structure, as well as exposing these for user scripting more
779 cleanly.
784 cleanly.
780
785
781 * IPython/macro.py (Macro.__init__): moved macros to a standalone
786 * IPython/macro.py (Macro.__init__): moved macros to a standalone
782 file. Now that they'll be more likely to be used with the
787 file. Now that they'll be more likely to be used with the
783 persistance system (%store), I want to make sure their module path
788 persistance system (%store), I want to make sure their module path
784 doesn't change in the future, so that we don't break things for
789 doesn't change in the future, so that we don't break things for
785 users' persisted data.
790 users' persisted data.
786
791
787 * IPython/iplib.py (autoindent_update): move indentation
792 * IPython/iplib.py (autoindent_update): move indentation
788 management into the _text_ processing loop, not the keyboard
793 management into the _text_ processing loop, not the keyboard
789 interactive one. This is necessary to correctly process non-typed
794 interactive one. This is necessary to correctly process non-typed
790 multiline input (such as macros).
795 multiline input (such as macros).
791
796
792 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
797 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
793 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
798 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
794 which was producing problems in the resulting manual.
799 which was producing problems in the resulting manual.
795 (magic_whos): improve reporting of instances (show their class,
800 (magic_whos): improve reporting of instances (show their class,
796 instead of simply printing 'instance' which isn't terribly
801 instead of simply printing 'instance' which isn't terribly
797 informative).
802 informative).
798
803
799 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
804 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
800 (minor mods) to support network shares under win32.
805 (minor mods) to support network shares under win32.
801
806
802 * IPython/winconsole.py (get_console_size): add new winconsole
807 * IPython/winconsole.py (get_console_size): add new winconsole
803 module and fixes to page_dumb() to improve its behavior under
808 module and fixes to page_dumb() to improve its behavior under
804 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
809 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
805
810
806 * IPython/Magic.py (Macro): simplified Macro class to just
811 * IPython/Magic.py (Macro): simplified Macro class to just
807 subclass list. We've had only 2.2 compatibility for a very long
812 subclass list. We've had only 2.2 compatibility for a very long
808 time, yet I was still avoiding subclassing the builtin types. No
813 time, yet I was still avoiding subclassing the builtin types. No
809 more (I'm also starting to use properties, though I won't shift to
814 more (I'm also starting to use properties, though I won't shift to
810 2.3-specific features quite yet).
815 2.3-specific features quite yet).
811 (magic_store): added Ville's patch for lightweight variable
816 (magic_store): added Ville's patch for lightweight variable
812 persistence, after a request on the user list by Matt Wilkie
817 persistence, after a request on the user list by Matt Wilkie
813 <maphew-AT-gmail.com>. The new %store magic's docstring has full
818 <maphew-AT-gmail.com>. The new %store magic's docstring has full
814 details.
819 details.
815
820
816 * IPython/iplib.py (InteractiveShell.post_config_initialization):
821 * IPython/iplib.py (InteractiveShell.post_config_initialization):
817 changed the default logfile name from 'ipython.log' to
822 changed the default logfile name from 'ipython.log' to
818 'ipython_log.py'. These logs are real python files, and now that
823 'ipython_log.py'. These logs are real python files, and now that
819 we have much better multiline support, people are more likely to
824 we have much better multiline support, people are more likely to
820 want to use them as such. Might as well name them correctly.
825 want to use them as such. Might as well name them correctly.
821
826
822 * IPython/Magic.py: substantial cleanup. While we can't stop
827 * IPython/Magic.py: substantial cleanup. While we can't stop
823 using magics as mixins, due to the existing customizations 'out
828 using magics as mixins, due to the existing customizations 'out
824 there' which rely on the mixin naming conventions, at least I
829 there' which rely on the mixin naming conventions, at least I
825 cleaned out all cross-class name usage. So once we are OK with
830 cleaned out all cross-class name usage. So once we are OK with
826 breaking compatibility, the two systems can be separated.
831 breaking compatibility, the two systems can be separated.
827
832
828 * IPython/Logger.py: major cleanup. This one is NOT a mixin
833 * IPython/Logger.py: major cleanup. This one is NOT a mixin
829 anymore, and the class is a fair bit less hideous as well. New
834 anymore, and the class is a fair bit less hideous as well. New
830 features were also introduced: timestamping of input, and logging
835 features were also introduced: timestamping of input, and logging
831 of output results. These are user-visible with the -t and -o
836 of output results. These are user-visible with the -t and -o
832 options to %logstart. Closes
837 options to %logstart. Closes
833 http://www.scipy.net/roundup/ipython/issue11 and a request by
838 http://www.scipy.net/roundup/ipython/issue11 and a request by
834 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
839 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
835
840
836 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
841 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
837
842
838 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
843 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
839 better hadnle backslashes in paths. See the thread 'More Windows
844 better hadnle backslashes in paths. See the thread 'More Windows
840 questions part 2 - \/ characters revisited' on the iypthon user
845 questions part 2 - \/ characters revisited' on the iypthon user
841 list:
846 list:
842 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
847 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
843
848
844 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
849 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
845
850
846 (InteractiveShell.__init__): change threaded shells to not use the
851 (InteractiveShell.__init__): change threaded shells to not use the
847 ipython crash handler. This was causing more problems than not,
852 ipython crash handler. This was causing more problems than not,
848 as exceptions in the main thread (GUI code, typically) would
853 as exceptions in the main thread (GUI code, typically) would
849 always show up as a 'crash', when they really weren't.
854 always show up as a 'crash', when they really weren't.
850
855
851 The colors and exception mode commands (%colors/%xmode) have been
856 The colors and exception mode commands (%colors/%xmode) have been
852 synchronized to also take this into account, so users can get
857 synchronized to also take this into account, so users can get
853 verbose exceptions for their threaded code as well. I also added
858 verbose exceptions for their threaded code as well. I also added
854 support for activating pdb inside this exception handler as well,
859 support for activating pdb inside this exception handler as well,
855 so now GUI authors can use IPython's enhanced pdb at runtime.
860 so now GUI authors can use IPython's enhanced pdb at runtime.
856
861
857 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
862 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
858 true by default, and add it to the shipped ipythonrc file. Since
863 true by default, and add it to the shipped ipythonrc file. Since
859 this asks the user before proceeding, I think it's OK to make it
864 this asks the user before proceeding, I think it's OK to make it
860 true by default.
865 true by default.
861
866
862 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
867 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
863 of the previous special-casing of input in the eval loop. I think
868 of the previous special-casing of input in the eval loop. I think
864 this is cleaner, as they really are commands and shouldn't have
869 this is cleaner, as they really are commands and shouldn't have
865 a special role in the middle of the core code.
870 a special role in the middle of the core code.
866
871
867 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
872 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
868
873
869 * IPython/iplib.py (edit_syntax_error): added support for
874 * IPython/iplib.py (edit_syntax_error): added support for
870 automatically reopening the editor if the file had a syntax error
875 automatically reopening the editor if the file had a syntax error
871 in it. Thanks to scottt who provided the patch at:
876 in it. Thanks to scottt who provided the patch at:
872 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
877 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
873 version committed).
878 version committed).
874
879
875 * IPython/iplib.py (handle_normal): add suport for multi-line
880 * IPython/iplib.py (handle_normal): add suport for multi-line
876 input with emtpy lines. This fixes
881 input with emtpy lines. This fixes
877 http://www.scipy.net/roundup/ipython/issue43 and a similar
882 http://www.scipy.net/roundup/ipython/issue43 and a similar
878 discussion on the user list.
883 discussion on the user list.
879
884
880 WARNING: a behavior change is necessarily introduced to support
885 WARNING: a behavior change is necessarily introduced to support
881 blank lines: now a single blank line with whitespace does NOT
886 blank lines: now a single blank line with whitespace does NOT
882 break the input loop, which means that when autoindent is on, by
887 break the input loop, which means that when autoindent is on, by
883 default hitting return on the next (indented) line does NOT exit.
888 default hitting return on the next (indented) line does NOT exit.
884
889
885 Instead, to exit a multiline input you can either have:
890 Instead, to exit a multiline input you can either have:
886
891
887 - TWO whitespace lines (just hit return again), or
892 - TWO whitespace lines (just hit return again), or
888 - a single whitespace line of a different length than provided
893 - a single whitespace line of a different length than provided
889 by the autoindent (add or remove a space).
894 by the autoindent (add or remove a space).
890
895
891 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
896 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
892 module to better organize all readline-related functionality.
897 module to better organize all readline-related functionality.
893 I've deleted FlexCompleter and put all completion clases here.
898 I've deleted FlexCompleter and put all completion clases here.
894
899
895 * IPython/iplib.py (raw_input): improve indentation management.
900 * IPython/iplib.py (raw_input): improve indentation management.
896 It is now possible to paste indented code with autoindent on, and
901 It is now possible to paste indented code with autoindent on, and
897 the code is interpreted correctly (though it still looks bad on
902 the code is interpreted correctly (though it still looks bad on
898 screen, due to the line-oriented nature of ipython).
903 screen, due to the line-oriented nature of ipython).
899 (MagicCompleter.complete): change behavior so that a TAB key on an
904 (MagicCompleter.complete): change behavior so that a TAB key on an
900 otherwise empty line actually inserts a tab, instead of completing
905 otherwise empty line actually inserts a tab, instead of completing
901 on the entire global namespace. This makes it easier to use the
906 on the entire global namespace. This makes it easier to use the
902 TAB key for indentation. After a request by Hans Meine
907 TAB key for indentation. After a request by Hans Meine
903 <hans_meine-AT-gmx.net>
908 <hans_meine-AT-gmx.net>
904 (_prefilter): add support so that typing plain 'exit' or 'quit'
909 (_prefilter): add support so that typing plain 'exit' or 'quit'
905 does a sensible thing. Originally I tried to deviate as little as
910 does a sensible thing. Originally I tried to deviate as little as
906 possible from the default python behavior, but even that one may
911 possible from the default python behavior, but even that one may
907 change in this direction (thread on python-dev to that effect).
912 change in this direction (thread on python-dev to that effect).
908 Regardless, ipython should do the right thing even if CPython's
913 Regardless, ipython should do the right thing even if CPython's
909 '>>>' prompt doesn't.
914 '>>>' prompt doesn't.
910 (InteractiveShell): removed subclassing code.InteractiveConsole
915 (InteractiveShell): removed subclassing code.InteractiveConsole
911 class. By now we'd overridden just about all of its methods: I've
916 class. By now we'd overridden just about all of its methods: I've
912 copied the remaining two over, and now ipython is a standalone
917 copied the remaining two over, and now ipython is a standalone
913 class. This will provide a clearer picture for the chainsaw
918 class. This will provide a clearer picture for the chainsaw
914 branch refactoring.
919 branch refactoring.
915
920
916 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
921 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
917
922
918 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
923 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
919 failures for objects which break when dir() is called on them.
924 failures for objects which break when dir() is called on them.
920
925
921 * IPython/FlexCompleter.py (Completer.__init__): Added support for
926 * IPython/FlexCompleter.py (Completer.__init__): Added support for
922 distinct local and global namespaces in the completer API. This
927 distinct local and global namespaces in the completer API. This
923 change allows us top properly handle completion with distinct
928 change allows us top properly handle completion with distinct
924 scopes, including in embedded instances (this had never really
929 scopes, including in embedded instances (this had never really
925 worked correctly).
930 worked correctly).
926
931
927 Note: this introduces a change in the constructor for
932 Note: this introduces a change in the constructor for
928 MagicCompleter, as a new global_namespace parameter is now the
933 MagicCompleter, as a new global_namespace parameter is now the
929 second argument (the others were bumped one position).
934 second argument (the others were bumped one position).
930
935
931 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
936 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
932
937
933 * IPython/iplib.py (embed_mainloop): fix tab-completion in
938 * IPython/iplib.py (embed_mainloop): fix tab-completion in
934 embedded instances (which can be done now thanks to Vivian's
939 embedded instances (which can be done now thanks to Vivian's
935 frame-handling fixes for pdb).
940 frame-handling fixes for pdb).
936 (InteractiveShell.__init__): Fix namespace handling problem in
941 (InteractiveShell.__init__): Fix namespace handling problem in
937 embedded instances. We were overwriting __main__ unconditionally,
942 embedded instances. We were overwriting __main__ unconditionally,
938 and this should only be done for 'full' (non-embedded) IPython;
943 and this should only be done for 'full' (non-embedded) IPython;
939 embedded instances must respect the caller's __main__. Thanks to
944 embedded instances must respect the caller's __main__. Thanks to
940 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
945 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
941
946
942 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
947 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
943
948
944 * setup.py: added download_url to setup(). This registers the
949 * setup.py: added download_url to setup(). This registers the
945 download address at PyPI, which is not only useful to humans
950 download address at PyPI, which is not only useful to humans
946 browsing the site, but is also picked up by setuptools (the Eggs
951 browsing the site, but is also picked up by setuptools (the Eggs
947 machinery). Thanks to Ville and R. Kern for the info/discussion
952 machinery). Thanks to Ville and R. Kern for the info/discussion
948 on this.
953 on this.
949
954
950 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
955 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
951
956
952 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
957 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
953 This brings a lot of nice functionality to the pdb mode, which now
958 This brings a lot of nice functionality to the pdb mode, which now
954 has tab-completion, syntax highlighting, and better stack handling
959 has tab-completion, syntax highlighting, and better stack handling
955 than before. Many thanks to Vivian De Smedt
960 than before. Many thanks to Vivian De Smedt
956 <vivian-AT-vdesmedt.com> for the original patches.
961 <vivian-AT-vdesmedt.com> for the original patches.
957
962
958 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
963 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
959
964
960 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
965 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
961 sequence to consistently accept the banner argument. The
966 sequence to consistently accept the banner argument. The
962 inconsistency was tripping SAGE, thanks to Gary Zablackis
967 inconsistency was tripping SAGE, thanks to Gary Zablackis
963 <gzabl-AT-yahoo.com> for the report.
968 <gzabl-AT-yahoo.com> for the report.
964
969
965 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
970 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
966
971
967 * IPython/iplib.py (InteractiveShell.post_config_initialization):
972 * IPython/iplib.py (InteractiveShell.post_config_initialization):
968 Fix bug where a naked 'alias' call in the ipythonrc file would
973 Fix bug where a naked 'alias' call in the ipythonrc file would
969 cause a crash. Bug reported by Jorgen Stenarson.
974 cause a crash. Bug reported by Jorgen Stenarson.
970
975
971 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
976 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
972
977
973 * IPython/ipmaker.py (make_IPython): cleanups which should improve
978 * IPython/ipmaker.py (make_IPython): cleanups which should improve
974 startup time.
979 startup time.
975
980
976 * IPython/iplib.py (runcode): my globals 'fix' for embedded
981 * IPython/iplib.py (runcode): my globals 'fix' for embedded
977 instances had introduced a bug with globals in normal code. Now
982 instances had introduced a bug with globals in normal code. Now
978 it's working in all cases.
983 it's working in all cases.
979
984
980 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
985 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
981 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
986 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
982 has been introduced to set the default case sensitivity of the
987 has been introduced to set the default case sensitivity of the
983 searches. Users can still select either mode at runtime on a
988 searches. Users can still select either mode at runtime on a
984 per-search basis.
989 per-search basis.
985
990
986 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
991 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
987
992
988 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
993 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
989 attributes in wildcard searches for subclasses. Modified version
994 attributes in wildcard searches for subclasses. Modified version
990 of a patch by Jorgen.
995 of a patch by Jorgen.
991
996
992 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
997 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
993
998
994 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
999 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
995 embedded instances. I added a user_global_ns attribute to the
1000 embedded instances. I added a user_global_ns attribute to the
996 InteractiveShell class to handle this.
1001 InteractiveShell class to handle this.
997
1002
998 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1003 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
999
1004
1000 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1005 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1001 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1006 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1002 (reported under win32, but may happen also in other platforms).
1007 (reported under win32, but may happen also in other platforms).
1003 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1008 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1004
1009
1005 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1010 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1006
1011
1007 * IPython/Magic.py (magic_psearch): new support for wildcard
1012 * IPython/Magic.py (magic_psearch): new support for wildcard
1008 patterns. Now, typing ?a*b will list all names which begin with a
1013 patterns. Now, typing ?a*b will list all names which begin with a
1009 and end in b, for example. The %psearch magic has full
1014 and end in b, for example. The %psearch magic has full
1010 docstrings. Many thanks to JΓΆrgen Stenarson
1015 docstrings. Many thanks to JΓΆrgen Stenarson
1011 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1016 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1012 implementing this functionality.
1017 implementing this functionality.
1013
1018
1014 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1019 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1015
1020
1016 * Manual: fixed long-standing annoyance of double-dashes (as in
1021 * Manual: fixed long-standing annoyance of double-dashes (as in
1017 --prefix=~, for example) being stripped in the HTML version. This
1022 --prefix=~, for example) being stripped in the HTML version. This
1018 is a latex2html bug, but a workaround was provided. Many thanks
1023 is a latex2html bug, but a workaround was provided. Many thanks
1019 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1024 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1020 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1025 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1021 rolling. This seemingly small issue had tripped a number of users
1026 rolling. This seemingly small issue had tripped a number of users
1022 when first installing, so I'm glad to see it gone.
1027 when first installing, so I'm glad to see it gone.
1023
1028
1024 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1029 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1025
1030
1026 * IPython/Extensions/numeric_formats.py: fix missing import,
1031 * IPython/Extensions/numeric_formats.py: fix missing import,
1027 reported by Stephen Walton.
1032 reported by Stephen Walton.
1028
1033
1029 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1034 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1030
1035
1031 * IPython/demo.py: finish demo module, fully documented now.
1036 * IPython/demo.py: finish demo module, fully documented now.
1032
1037
1033 * IPython/genutils.py (file_read): simple little utility to read a
1038 * IPython/genutils.py (file_read): simple little utility to read a
1034 file and ensure it's closed afterwards.
1039 file and ensure it's closed afterwards.
1035
1040
1036 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1041 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1037
1042
1038 * IPython/demo.py (Demo.__init__): added support for individually
1043 * IPython/demo.py (Demo.__init__): added support for individually
1039 tagging blocks for automatic execution.
1044 tagging blocks for automatic execution.
1040
1045
1041 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1046 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1042 syntax-highlighted python sources, requested by John.
1047 syntax-highlighted python sources, requested by John.
1043
1048
1044 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1049 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1045
1050
1046 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1051 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1047 finishing.
1052 finishing.
1048
1053
1049 * IPython/genutils.py (shlex_split): moved from Magic to here,
1054 * IPython/genutils.py (shlex_split): moved from Magic to here,
1050 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1055 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1051
1056
1052 * IPython/demo.py (Demo.__init__): added support for silent
1057 * IPython/demo.py (Demo.__init__): added support for silent
1053 blocks, improved marks as regexps, docstrings written.
1058 blocks, improved marks as regexps, docstrings written.
1054 (Demo.__init__): better docstring, added support for sys.argv.
1059 (Demo.__init__): better docstring, added support for sys.argv.
1055
1060
1056 * IPython/genutils.py (marquee): little utility used by the demo
1061 * IPython/genutils.py (marquee): little utility used by the demo
1057 code, handy in general.
1062 code, handy in general.
1058
1063
1059 * IPython/demo.py (Demo.__init__): new class for interactive
1064 * IPython/demo.py (Demo.__init__): new class for interactive
1060 demos. Not documented yet, I just wrote it in a hurry for
1065 demos. Not documented yet, I just wrote it in a hurry for
1061 scipy'05. Will docstring later.
1066 scipy'05. Will docstring later.
1062
1067
1063 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1068 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1064
1069
1065 * IPython/Shell.py (sigint_handler): Drastic simplification which
1070 * IPython/Shell.py (sigint_handler): Drastic simplification which
1066 also seems to make Ctrl-C work correctly across threads! This is
1071 also seems to make Ctrl-C work correctly across threads! This is
1067 so simple, that I can't beleive I'd missed it before. Needs more
1072 so simple, that I can't beleive I'd missed it before. Needs more
1068 testing, though.
1073 testing, though.
1069 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1074 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1070 like this before...
1075 like this before...
1071
1076
1072 * IPython/genutils.py (get_home_dir): add protection against
1077 * IPython/genutils.py (get_home_dir): add protection against
1073 non-dirs in win32 registry.
1078 non-dirs in win32 registry.
1074
1079
1075 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1080 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1076 bug where dict was mutated while iterating (pysh crash).
1081 bug where dict was mutated while iterating (pysh crash).
1077
1082
1078 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1083 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1079
1084
1080 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1085 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1081 spurious newlines added by this routine. After a report by
1086 spurious newlines added by this routine. After a report by
1082 F. Mantegazza.
1087 F. Mantegazza.
1083
1088
1084 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1089 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1085
1090
1086 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1091 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1087 calls. These were a leftover from the GTK 1.x days, and can cause
1092 calls. These were a leftover from the GTK 1.x days, and can cause
1088 problems in certain cases (after a report by John Hunter).
1093 problems in certain cases (after a report by John Hunter).
1089
1094
1090 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1095 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1091 os.getcwd() fails at init time. Thanks to patch from David Remahl
1096 os.getcwd() fails at init time. Thanks to patch from David Remahl
1092 <chmod007-AT-mac.com>.
1097 <chmod007-AT-mac.com>.
1093 (InteractiveShell.__init__): prevent certain special magics from
1098 (InteractiveShell.__init__): prevent certain special magics from
1094 being shadowed by aliases. Closes
1099 being shadowed by aliases. Closes
1095 http://www.scipy.net/roundup/ipython/issue41.
1100 http://www.scipy.net/roundup/ipython/issue41.
1096
1101
1097 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1102 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1098
1103
1099 * IPython/iplib.py (InteractiveShell.complete): Added new
1104 * IPython/iplib.py (InteractiveShell.complete): Added new
1100 top-level completion method to expose the completion mechanism
1105 top-level completion method to expose the completion mechanism
1101 beyond readline-based environments.
1106 beyond readline-based environments.
1102
1107
1103 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1108 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1104
1109
1105 * tools/ipsvnc (svnversion): fix svnversion capture.
1110 * tools/ipsvnc (svnversion): fix svnversion capture.
1106
1111
1107 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1112 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1108 attribute to self, which was missing. Before, it was set by a
1113 attribute to self, which was missing. Before, it was set by a
1109 routine which in certain cases wasn't being called, so the
1114 routine which in certain cases wasn't being called, so the
1110 instance could end up missing the attribute. This caused a crash.
1115 instance could end up missing the attribute. This caused a crash.
1111 Closes http://www.scipy.net/roundup/ipython/issue40.
1116 Closes http://www.scipy.net/roundup/ipython/issue40.
1112
1117
1113 2005-08-16 Fernando Perez <fperez@colorado.edu>
1118 2005-08-16 Fernando Perez <fperez@colorado.edu>
1114
1119
1115 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1120 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1116 contains non-string attribute. Closes
1121 contains non-string attribute. Closes
1117 http://www.scipy.net/roundup/ipython/issue38.
1122 http://www.scipy.net/roundup/ipython/issue38.
1118
1123
1119 2005-08-14 Fernando Perez <fperez@colorado.edu>
1124 2005-08-14 Fernando Perez <fperez@colorado.edu>
1120
1125
1121 * tools/ipsvnc: Minor improvements, to add changeset info.
1126 * tools/ipsvnc: Minor improvements, to add changeset info.
1122
1127
1123 2005-08-12 Fernando Perez <fperez@colorado.edu>
1128 2005-08-12 Fernando Perez <fperez@colorado.edu>
1124
1129
1125 * IPython/iplib.py (runsource): remove self.code_to_run_src
1130 * IPython/iplib.py (runsource): remove self.code_to_run_src
1126 attribute. I realized this is nothing more than
1131 attribute. I realized this is nothing more than
1127 '\n'.join(self.buffer), and having the same data in two different
1132 '\n'.join(self.buffer), and having the same data in two different
1128 places is just asking for synchronization bugs. This may impact
1133 places is just asking for synchronization bugs. This may impact
1129 people who have custom exception handlers, so I need to warn
1134 people who have custom exception handlers, so I need to warn
1130 ipython-dev about it (F. Mantegazza may use them).
1135 ipython-dev about it (F. Mantegazza may use them).
1131
1136
1132 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1137 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1133
1138
1134 * IPython/genutils.py: fix 2.2 compatibility (generators)
1139 * IPython/genutils.py: fix 2.2 compatibility (generators)
1135
1140
1136 2005-07-18 Fernando Perez <fperez@colorado.edu>
1141 2005-07-18 Fernando Perez <fperez@colorado.edu>
1137
1142
1138 * IPython/genutils.py (get_home_dir): fix to help users with
1143 * IPython/genutils.py (get_home_dir): fix to help users with
1139 invalid $HOME under win32.
1144 invalid $HOME under win32.
1140
1145
1141 2005-07-17 Fernando Perez <fperez@colorado.edu>
1146 2005-07-17 Fernando Perez <fperez@colorado.edu>
1142
1147
1143 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1148 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1144 some old hacks and clean up a bit other routines; code should be
1149 some old hacks and clean up a bit other routines; code should be
1145 simpler and a bit faster.
1150 simpler and a bit faster.
1146
1151
1147 * IPython/iplib.py (interact): removed some last-resort attempts
1152 * IPython/iplib.py (interact): removed some last-resort attempts
1148 to survive broken stdout/stderr. That code was only making it
1153 to survive broken stdout/stderr. That code was only making it
1149 harder to abstract out the i/o (necessary for gui integration),
1154 harder to abstract out the i/o (necessary for gui integration),
1150 and the crashes it could prevent were extremely rare in practice
1155 and the crashes it could prevent were extremely rare in practice
1151 (besides being fully user-induced in a pretty violent manner).
1156 (besides being fully user-induced in a pretty violent manner).
1152
1157
1153 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1158 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1154 Nothing major yet, but the code is simpler to read; this should
1159 Nothing major yet, but the code is simpler to read; this should
1155 make it easier to do more serious modifications in the future.
1160 make it easier to do more serious modifications in the future.
1156
1161
1157 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1162 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1158 which broke in .15 (thanks to a report by Ville).
1163 which broke in .15 (thanks to a report by Ville).
1159
1164
1160 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1165 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1161 be quite correct, I know next to nothing about unicode). This
1166 be quite correct, I know next to nothing about unicode). This
1162 will allow unicode strings to be used in prompts, amongst other
1167 will allow unicode strings to be used in prompts, amongst other
1163 cases. It also will prevent ipython from crashing when unicode
1168 cases. It also will prevent ipython from crashing when unicode
1164 shows up unexpectedly in many places. If ascii encoding fails, we
1169 shows up unexpectedly in many places. If ascii encoding fails, we
1165 assume utf_8. Currently the encoding is not a user-visible
1170 assume utf_8. Currently the encoding is not a user-visible
1166 setting, though it could be made so if there is demand for it.
1171 setting, though it could be made so if there is demand for it.
1167
1172
1168 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1173 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1169
1174
1170 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1175 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1171
1176
1172 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1177 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1173
1178
1174 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1179 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1175 code can work transparently for 2.2/2.3.
1180 code can work transparently for 2.2/2.3.
1176
1181
1177 2005-07-16 Fernando Perez <fperez@colorado.edu>
1182 2005-07-16 Fernando Perez <fperez@colorado.edu>
1178
1183
1179 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1184 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1180 out of the color scheme table used for coloring exception
1185 out of the color scheme table used for coloring exception
1181 tracebacks. This allows user code to add new schemes at runtime.
1186 tracebacks. This allows user code to add new schemes at runtime.
1182 This is a minimally modified version of the patch at
1187 This is a minimally modified version of the patch at
1183 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1188 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1184 for the contribution.
1189 for the contribution.
1185
1190
1186 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1191 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1187 slightly modified version of the patch in
1192 slightly modified version of the patch in
1188 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1193 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1189 to remove the previous try/except solution (which was costlier).
1194 to remove the previous try/except solution (which was costlier).
1190 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1195 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1191
1196
1192 2005-06-08 Fernando Perez <fperez@colorado.edu>
1197 2005-06-08 Fernando Perez <fperez@colorado.edu>
1193
1198
1194 * IPython/iplib.py (write/write_err): Add methods to abstract all
1199 * IPython/iplib.py (write/write_err): Add methods to abstract all
1195 I/O a bit more.
1200 I/O a bit more.
1196
1201
1197 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1202 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1198 warning, reported by Aric Hagberg, fix by JD Hunter.
1203 warning, reported by Aric Hagberg, fix by JD Hunter.
1199
1204
1200 2005-06-02 *** Released version 0.6.15
1205 2005-06-02 *** Released version 0.6.15
1201
1206
1202 2005-06-01 Fernando Perez <fperez@colorado.edu>
1207 2005-06-01 Fernando Perez <fperez@colorado.edu>
1203
1208
1204 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1209 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1205 tab-completion of filenames within open-quoted strings. Note that
1210 tab-completion of filenames within open-quoted strings. Note that
1206 this requires that in ~/.ipython/ipythonrc, users change the
1211 this requires that in ~/.ipython/ipythonrc, users change the
1207 readline delimiters configuration to read:
1212 readline delimiters configuration to read:
1208
1213
1209 readline_remove_delims -/~
1214 readline_remove_delims -/~
1210
1215
1211
1216
1212 2005-05-31 *** Released version 0.6.14
1217 2005-05-31 *** Released version 0.6.14
1213
1218
1214 2005-05-29 Fernando Perez <fperez@colorado.edu>
1219 2005-05-29 Fernando Perez <fperez@colorado.edu>
1215
1220
1216 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1221 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1217 with files not on the filesystem. Reported by Eliyahu Sandler
1222 with files not on the filesystem. Reported by Eliyahu Sandler
1218 <eli@gondolin.net>
1223 <eli@gondolin.net>
1219
1224
1220 2005-05-22 Fernando Perez <fperez@colorado.edu>
1225 2005-05-22 Fernando Perez <fperez@colorado.edu>
1221
1226
1222 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1227 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1223 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1228 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1224
1229
1225 2005-05-19 Fernando Perez <fperez@colorado.edu>
1230 2005-05-19 Fernando Perez <fperez@colorado.edu>
1226
1231
1227 * IPython/iplib.py (safe_execfile): close a file which could be
1232 * IPython/iplib.py (safe_execfile): close a file which could be
1228 left open (causing problems in win32, which locks open files).
1233 left open (causing problems in win32, which locks open files).
1229 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1234 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1230
1235
1231 2005-05-18 Fernando Perez <fperez@colorado.edu>
1236 2005-05-18 Fernando Perez <fperez@colorado.edu>
1232
1237
1233 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1238 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1234 keyword arguments correctly to safe_execfile().
1239 keyword arguments correctly to safe_execfile().
1235
1240
1236 2005-05-13 Fernando Perez <fperez@colorado.edu>
1241 2005-05-13 Fernando Perez <fperez@colorado.edu>
1237
1242
1238 * ipython.1: Added info about Qt to manpage, and threads warning
1243 * ipython.1: Added info about Qt to manpage, and threads warning
1239 to usage page (invoked with --help).
1244 to usage page (invoked with --help).
1240
1245
1241 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1246 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1242 new matcher (it goes at the end of the priority list) to do
1247 new matcher (it goes at the end of the priority list) to do
1243 tab-completion on named function arguments. Submitted by George
1248 tab-completion on named function arguments. Submitted by George
1244 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1249 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1245 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1250 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1246 for more details.
1251 for more details.
1247
1252
1248 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1253 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1249 SystemExit exceptions in the script being run. Thanks to a report
1254 SystemExit exceptions in the script being run. Thanks to a report
1250 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1255 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1251 producing very annoying behavior when running unit tests.
1256 producing very annoying behavior when running unit tests.
1252
1257
1253 2005-05-12 Fernando Perez <fperez@colorado.edu>
1258 2005-05-12 Fernando Perez <fperez@colorado.edu>
1254
1259
1255 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1260 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1256 which I'd broken (again) due to a changed regexp. In the process,
1261 which I'd broken (again) due to a changed regexp. In the process,
1257 added ';' as an escape to auto-quote the whole line without
1262 added ';' as an escape to auto-quote the whole line without
1258 splitting its arguments. Thanks to a report by Jerry McRae
1263 splitting its arguments. Thanks to a report by Jerry McRae
1259 <qrs0xyc02-AT-sneakemail.com>.
1264 <qrs0xyc02-AT-sneakemail.com>.
1260
1265
1261 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1266 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1262 possible crashes caused by a TokenError. Reported by Ed Schofield
1267 possible crashes caused by a TokenError. Reported by Ed Schofield
1263 <schofield-AT-ftw.at>.
1268 <schofield-AT-ftw.at>.
1264
1269
1265 2005-05-06 Fernando Perez <fperez@colorado.edu>
1270 2005-05-06 Fernando Perez <fperez@colorado.edu>
1266
1271
1267 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1272 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1268
1273
1269 2005-04-29 Fernando Perez <fperez@colorado.edu>
1274 2005-04-29 Fernando Perez <fperez@colorado.edu>
1270
1275
1271 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1276 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1272 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1277 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1273 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1278 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1274 which provides support for Qt interactive usage (similar to the
1279 which provides support for Qt interactive usage (similar to the
1275 existing one for WX and GTK). This had been often requested.
1280 existing one for WX and GTK). This had been often requested.
1276
1281
1277 2005-04-14 *** Released version 0.6.13
1282 2005-04-14 *** Released version 0.6.13
1278
1283
1279 2005-04-08 Fernando Perez <fperez@colorado.edu>
1284 2005-04-08 Fernando Perez <fperez@colorado.edu>
1280
1285
1281 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1286 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1282 from _ofind, which gets called on almost every input line. Now,
1287 from _ofind, which gets called on almost every input line. Now,
1283 we only try to get docstrings if they are actually going to be
1288 we only try to get docstrings if they are actually going to be
1284 used (the overhead of fetching unnecessary docstrings can be
1289 used (the overhead of fetching unnecessary docstrings can be
1285 noticeable for certain objects, such as Pyro proxies).
1290 noticeable for certain objects, such as Pyro proxies).
1286
1291
1287 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1292 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1288 for completers. For some reason I had been passing them the state
1293 for completers. For some reason I had been passing them the state
1289 variable, which completers never actually need, and was in
1294 variable, which completers never actually need, and was in
1290 conflict with the rlcompleter API. Custom completers ONLY need to
1295 conflict with the rlcompleter API. Custom completers ONLY need to
1291 take the text parameter.
1296 take the text parameter.
1292
1297
1293 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1298 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1294 work correctly in pysh. I've also moved all the logic which used
1299 work correctly in pysh. I've also moved all the logic which used
1295 to be in pysh.py here, which will prevent problems with future
1300 to be in pysh.py here, which will prevent problems with future
1296 upgrades. However, this time I must warn users to update their
1301 upgrades. However, this time I must warn users to update their
1297 pysh profile to include the line
1302 pysh profile to include the line
1298
1303
1299 import_all IPython.Extensions.InterpreterExec
1304 import_all IPython.Extensions.InterpreterExec
1300
1305
1301 because otherwise things won't work for them. They MUST also
1306 because otherwise things won't work for them. They MUST also
1302 delete pysh.py and the line
1307 delete pysh.py and the line
1303
1308
1304 execfile pysh.py
1309 execfile pysh.py
1305
1310
1306 from their ipythonrc-pysh.
1311 from their ipythonrc-pysh.
1307
1312
1308 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1313 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1309 robust in the face of objects whose dir() returns non-strings
1314 robust in the face of objects whose dir() returns non-strings
1310 (which it shouldn't, but some broken libs like ITK do). Thanks to
1315 (which it shouldn't, but some broken libs like ITK do). Thanks to
1311 a patch by John Hunter (implemented differently, though). Also
1316 a patch by John Hunter (implemented differently, though). Also
1312 minor improvements by using .extend instead of + on lists.
1317 minor improvements by using .extend instead of + on lists.
1313
1318
1314 * pysh.py:
1319 * pysh.py:
1315
1320
1316 2005-04-06 Fernando Perez <fperez@colorado.edu>
1321 2005-04-06 Fernando Perez <fperez@colorado.edu>
1317
1322
1318 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1323 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1319 by default, so that all users benefit from it. Those who don't
1324 by default, so that all users benefit from it. Those who don't
1320 want it can still turn it off.
1325 want it can still turn it off.
1321
1326
1322 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1327 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1323 config file, I'd forgotten about this, so users were getting it
1328 config file, I'd forgotten about this, so users were getting it
1324 off by default.
1329 off by default.
1325
1330
1326 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1331 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1327 consistency. Now magics can be called in multiline statements,
1332 consistency. Now magics can be called in multiline statements,
1328 and python variables can be expanded in magic calls via $var.
1333 and python variables can be expanded in magic calls via $var.
1329 This makes the magic system behave just like aliases or !system
1334 This makes the magic system behave just like aliases or !system
1330 calls.
1335 calls.
1331
1336
1332 2005-03-28 Fernando Perez <fperez@colorado.edu>
1337 2005-03-28 Fernando Perez <fperez@colorado.edu>
1333
1338
1334 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1339 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1335 expensive string additions for building command. Add support for
1340 expensive string additions for building command. Add support for
1336 trailing ';' when autocall is used.
1341 trailing ';' when autocall is used.
1337
1342
1338 2005-03-26 Fernando Perez <fperez@colorado.edu>
1343 2005-03-26 Fernando Perez <fperez@colorado.edu>
1339
1344
1340 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1345 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1341 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1346 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1342 ipython.el robust against prompts with any number of spaces
1347 ipython.el robust against prompts with any number of spaces
1343 (including 0) after the ':' character.
1348 (including 0) after the ':' character.
1344
1349
1345 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1350 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1346 continuation prompt, which misled users to think the line was
1351 continuation prompt, which misled users to think the line was
1347 already indented. Closes debian Bug#300847, reported to me by
1352 already indented. Closes debian Bug#300847, reported to me by
1348 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1353 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1349
1354
1350 2005-03-23 Fernando Perez <fperez@colorado.edu>
1355 2005-03-23 Fernando Perez <fperez@colorado.edu>
1351
1356
1352 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1357 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1353 properly aligned if they have embedded newlines.
1358 properly aligned if they have embedded newlines.
1354
1359
1355 * IPython/iplib.py (runlines): Add a public method to expose
1360 * IPython/iplib.py (runlines): Add a public method to expose
1356 IPython's code execution machinery, so that users can run strings
1361 IPython's code execution machinery, so that users can run strings
1357 as if they had been typed at the prompt interactively.
1362 as if they had been typed at the prompt interactively.
1358 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1363 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1359 methods which can call the system shell, but with python variable
1364 methods which can call the system shell, but with python variable
1360 expansion. The three such methods are: __IPYTHON__.system,
1365 expansion. The three such methods are: __IPYTHON__.system,
1361 .getoutput and .getoutputerror. These need to be documented in a
1366 .getoutput and .getoutputerror. These need to be documented in a
1362 'public API' section (to be written) of the manual.
1367 'public API' section (to be written) of the manual.
1363
1368
1364 2005-03-20 Fernando Perez <fperez@colorado.edu>
1369 2005-03-20 Fernando Perez <fperez@colorado.edu>
1365
1370
1366 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1371 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1367 for custom exception handling. This is quite powerful, and it
1372 for custom exception handling. This is quite powerful, and it
1368 allows for user-installable exception handlers which can trap
1373 allows for user-installable exception handlers which can trap
1369 custom exceptions at runtime and treat them separately from
1374 custom exceptions at runtime and treat them separately from
1370 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1375 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1371 Mantegazza <mantegazza-AT-ill.fr>.
1376 Mantegazza <mantegazza-AT-ill.fr>.
1372 (InteractiveShell.set_custom_completer): public API function to
1377 (InteractiveShell.set_custom_completer): public API function to
1373 add new completers at runtime.
1378 add new completers at runtime.
1374
1379
1375 2005-03-19 Fernando Perez <fperez@colorado.edu>
1380 2005-03-19 Fernando Perez <fperez@colorado.edu>
1376
1381
1377 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1382 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1378 allow objects which provide their docstrings via non-standard
1383 allow objects which provide their docstrings via non-standard
1379 mechanisms (like Pyro proxies) to still be inspected by ipython's
1384 mechanisms (like Pyro proxies) to still be inspected by ipython's
1380 ? system.
1385 ? system.
1381
1386
1382 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1387 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1383 automatic capture system. I tried quite hard to make it work
1388 automatic capture system. I tried quite hard to make it work
1384 reliably, and simply failed. I tried many combinations with the
1389 reliably, and simply failed. I tried many combinations with the
1385 subprocess module, but eventually nothing worked in all needed
1390 subprocess module, but eventually nothing worked in all needed
1386 cases (not blocking stdin for the child, duplicating stdout
1391 cases (not blocking stdin for the child, duplicating stdout
1387 without blocking, etc). The new %sc/%sx still do capture to these
1392 without blocking, etc). The new %sc/%sx still do capture to these
1388 magical list/string objects which make shell use much more
1393 magical list/string objects which make shell use much more
1389 conveninent, so not all is lost.
1394 conveninent, so not all is lost.
1390
1395
1391 XXX - FIX MANUAL for the change above!
1396 XXX - FIX MANUAL for the change above!
1392
1397
1393 (runsource): I copied code.py's runsource() into ipython to modify
1398 (runsource): I copied code.py's runsource() into ipython to modify
1394 it a bit. Now the code object and source to be executed are
1399 it a bit. Now the code object and source to be executed are
1395 stored in ipython. This makes this info accessible to third-party
1400 stored in ipython. This makes this info accessible to third-party
1396 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1401 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1397 Mantegazza <mantegazza-AT-ill.fr>.
1402 Mantegazza <mantegazza-AT-ill.fr>.
1398
1403
1399 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1404 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1400 history-search via readline (like C-p/C-n). I'd wanted this for a
1405 history-search via readline (like C-p/C-n). I'd wanted this for a
1401 long time, but only recently found out how to do it. For users
1406 long time, but only recently found out how to do it. For users
1402 who already have their ipythonrc files made and want this, just
1407 who already have their ipythonrc files made and want this, just
1403 add:
1408 add:
1404
1409
1405 readline_parse_and_bind "\e[A": history-search-backward
1410 readline_parse_and_bind "\e[A": history-search-backward
1406 readline_parse_and_bind "\e[B": history-search-forward
1411 readline_parse_and_bind "\e[B": history-search-forward
1407
1412
1408 2005-03-18 Fernando Perez <fperez@colorado.edu>
1413 2005-03-18 Fernando Perez <fperez@colorado.edu>
1409
1414
1410 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1415 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1411 LSString and SList classes which allow transparent conversions
1416 LSString and SList classes which allow transparent conversions
1412 between list mode and whitespace-separated string.
1417 between list mode and whitespace-separated string.
1413 (magic_r): Fix recursion problem in %r.
1418 (magic_r): Fix recursion problem in %r.
1414
1419
1415 * IPython/genutils.py (LSString): New class to be used for
1420 * IPython/genutils.py (LSString): New class to be used for
1416 automatic storage of the results of all alias/system calls in _o
1421 automatic storage of the results of all alias/system calls in _o
1417 and _e (stdout/err). These provide a .l/.list attribute which
1422 and _e (stdout/err). These provide a .l/.list attribute which
1418 does automatic splitting on newlines. This means that for most
1423 does automatic splitting on newlines. This means that for most
1419 uses, you'll never need to do capturing of output with %sc/%sx
1424 uses, you'll never need to do capturing of output with %sc/%sx
1420 anymore, since ipython keeps this always done for you. Note that
1425 anymore, since ipython keeps this always done for you. Note that
1421 only the LAST results are stored, the _o/e variables are
1426 only the LAST results are stored, the _o/e variables are
1422 overwritten on each call. If you need to save their contents
1427 overwritten on each call. If you need to save their contents
1423 further, simply bind them to any other name.
1428 further, simply bind them to any other name.
1424
1429
1425 2005-03-17 Fernando Perez <fperez@colorado.edu>
1430 2005-03-17 Fernando Perez <fperez@colorado.edu>
1426
1431
1427 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1432 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1428 prompt namespace handling.
1433 prompt namespace handling.
1429
1434
1430 2005-03-16 Fernando Perez <fperez@colorado.edu>
1435 2005-03-16 Fernando Perez <fperez@colorado.edu>
1431
1436
1432 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1437 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1433 classic prompts to be '>>> ' (final space was missing, and it
1438 classic prompts to be '>>> ' (final space was missing, and it
1434 trips the emacs python mode).
1439 trips the emacs python mode).
1435 (BasePrompt.__str__): Added safe support for dynamic prompt
1440 (BasePrompt.__str__): Added safe support for dynamic prompt
1436 strings. Now you can set your prompt string to be '$x', and the
1441 strings. Now you can set your prompt string to be '$x', and the
1437 value of x will be printed from your interactive namespace. The
1442 value of x will be printed from your interactive namespace. The
1438 interpolation syntax includes the full Itpl support, so
1443 interpolation syntax includes the full Itpl support, so
1439 ${foo()+x+bar()} is a valid prompt string now, and the function
1444 ${foo()+x+bar()} is a valid prompt string now, and the function
1440 calls will be made at runtime.
1445 calls will be made at runtime.
1441
1446
1442 2005-03-15 Fernando Perez <fperez@colorado.edu>
1447 2005-03-15 Fernando Perez <fperez@colorado.edu>
1443
1448
1444 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1449 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1445 avoid name clashes in pylab. %hist still works, it just forwards
1450 avoid name clashes in pylab. %hist still works, it just forwards
1446 the call to %history.
1451 the call to %history.
1447
1452
1448 2005-03-02 *** Released version 0.6.12
1453 2005-03-02 *** Released version 0.6.12
1449
1454
1450 2005-03-02 Fernando Perez <fperez@colorado.edu>
1455 2005-03-02 Fernando Perez <fperez@colorado.edu>
1451
1456
1452 * IPython/iplib.py (handle_magic): log magic calls properly as
1457 * IPython/iplib.py (handle_magic): log magic calls properly as
1453 ipmagic() function calls.
1458 ipmagic() function calls.
1454
1459
1455 * IPython/Magic.py (magic_time): Improved %time to support
1460 * IPython/Magic.py (magic_time): Improved %time to support
1456 statements and provide wall-clock as well as CPU time.
1461 statements and provide wall-clock as well as CPU time.
1457
1462
1458 2005-02-27 Fernando Perez <fperez@colorado.edu>
1463 2005-02-27 Fernando Perez <fperez@colorado.edu>
1459
1464
1460 * IPython/hooks.py: New hooks module, to expose user-modifiable
1465 * IPython/hooks.py: New hooks module, to expose user-modifiable
1461 IPython functionality in a clean manner. For now only the editor
1466 IPython functionality in a clean manner. For now only the editor
1462 hook is actually written, and other thigns which I intend to turn
1467 hook is actually written, and other thigns which I intend to turn
1463 into proper hooks aren't yet there. The display and prefilter
1468 into proper hooks aren't yet there. The display and prefilter
1464 stuff, for example, should be hooks. But at least now the
1469 stuff, for example, should be hooks. But at least now the
1465 framework is in place, and the rest can be moved here with more
1470 framework is in place, and the rest can be moved here with more
1466 time later. IPython had had a .hooks variable for a long time for
1471 time later. IPython had had a .hooks variable for a long time for
1467 this purpose, but I'd never actually used it for anything.
1472 this purpose, but I'd never actually used it for anything.
1468
1473
1469 2005-02-26 Fernando Perez <fperez@colorado.edu>
1474 2005-02-26 Fernando Perez <fperez@colorado.edu>
1470
1475
1471 * IPython/ipmaker.py (make_IPython): make the default ipython
1476 * IPython/ipmaker.py (make_IPython): make the default ipython
1472 directory be called _ipython under win32, to follow more the
1477 directory be called _ipython under win32, to follow more the
1473 naming peculiarities of that platform (where buggy software like
1478 naming peculiarities of that platform (where buggy software like
1474 Visual Sourcesafe breaks with .named directories). Reported by
1479 Visual Sourcesafe breaks with .named directories). Reported by
1475 Ville Vainio.
1480 Ville Vainio.
1476
1481
1477 2005-02-23 Fernando Perez <fperez@colorado.edu>
1482 2005-02-23 Fernando Perez <fperez@colorado.edu>
1478
1483
1479 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1484 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1480 auto_aliases for win32 which were causing problems. Users can
1485 auto_aliases for win32 which were causing problems. Users can
1481 define the ones they personally like.
1486 define the ones they personally like.
1482
1487
1483 2005-02-21 Fernando Perez <fperez@colorado.edu>
1488 2005-02-21 Fernando Perez <fperez@colorado.edu>
1484
1489
1485 * IPython/Magic.py (magic_time): new magic to time execution of
1490 * IPython/Magic.py (magic_time): new magic to time execution of
1486 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1491 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1487
1492
1488 2005-02-19 Fernando Perez <fperez@colorado.edu>
1493 2005-02-19 Fernando Perez <fperez@colorado.edu>
1489
1494
1490 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1495 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1491 into keys (for prompts, for example).
1496 into keys (for prompts, for example).
1492
1497
1493 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1498 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1494 prompts in case users want them. This introduces a small behavior
1499 prompts in case users want them. This introduces a small behavior
1495 change: ipython does not automatically add a space to all prompts
1500 change: ipython does not automatically add a space to all prompts
1496 anymore. To get the old prompts with a space, users should add it
1501 anymore. To get the old prompts with a space, users should add it
1497 manually to their ipythonrc file, so for example prompt_in1 should
1502 manually to their ipythonrc file, so for example prompt_in1 should
1498 now read 'In [\#]: ' instead of 'In [\#]:'.
1503 now read 'In [\#]: ' instead of 'In [\#]:'.
1499 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1504 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1500 file) to control left-padding of secondary prompts.
1505 file) to control left-padding of secondary prompts.
1501
1506
1502 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1507 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1503 the profiler can't be imported. Fix for Debian, which removed
1508 the profiler can't be imported. Fix for Debian, which removed
1504 profile.py because of License issues. I applied a slightly
1509 profile.py because of License issues. I applied a slightly
1505 modified version of the original Debian patch at
1510 modified version of the original Debian patch at
1506 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1511 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1507
1512
1508 2005-02-17 Fernando Perez <fperez@colorado.edu>
1513 2005-02-17 Fernando Perez <fperez@colorado.edu>
1509
1514
1510 * IPython/genutils.py (native_line_ends): Fix bug which would
1515 * IPython/genutils.py (native_line_ends): Fix bug which would
1511 cause improper line-ends under win32 b/c I was not opening files
1516 cause improper line-ends under win32 b/c I was not opening files
1512 in binary mode. Bug report and fix thanks to Ville.
1517 in binary mode. Bug report and fix thanks to Ville.
1513
1518
1514 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1519 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1515 trying to catch spurious foo[1] autocalls. My fix actually broke
1520 trying to catch spurious foo[1] autocalls. My fix actually broke
1516 ',/' autoquote/call with explicit escape (bad regexp).
1521 ',/' autoquote/call with explicit escape (bad regexp).
1517
1522
1518 2005-02-15 *** Released version 0.6.11
1523 2005-02-15 *** Released version 0.6.11
1519
1524
1520 2005-02-14 Fernando Perez <fperez@colorado.edu>
1525 2005-02-14 Fernando Perez <fperez@colorado.edu>
1521
1526
1522 * IPython/background_jobs.py: New background job management
1527 * IPython/background_jobs.py: New background job management
1523 subsystem. This is implemented via a new set of classes, and
1528 subsystem. This is implemented via a new set of classes, and
1524 IPython now provides a builtin 'jobs' object for background job
1529 IPython now provides a builtin 'jobs' object for background job
1525 execution. A convenience %bg magic serves as a lightweight
1530 execution. A convenience %bg magic serves as a lightweight
1526 frontend for starting the more common type of calls. This was
1531 frontend for starting the more common type of calls. This was
1527 inspired by discussions with B. Granger and the BackgroundCommand
1532 inspired by discussions with B. Granger and the BackgroundCommand
1528 class described in the book Python Scripting for Computational
1533 class described in the book Python Scripting for Computational
1529 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1534 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1530 (although ultimately no code from this text was used, as IPython's
1535 (although ultimately no code from this text was used, as IPython's
1531 system is a separate implementation).
1536 system is a separate implementation).
1532
1537
1533 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1538 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1534 to control the completion of single/double underscore names
1539 to control the completion of single/double underscore names
1535 separately. As documented in the example ipytonrc file, the
1540 separately. As documented in the example ipytonrc file, the
1536 readline_omit__names variable can now be set to 2, to omit even
1541 readline_omit__names variable can now be set to 2, to omit even
1537 single underscore names. Thanks to a patch by Brian Wong
1542 single underscore names. Thanks to a patch by Brian Wong
1538 <BrianWong-AT-AirgoNetworks.Com>.
1543 <BrianWong-AT-AirgoNetworks.Com>.
1539 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1544 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1540 be autocalled as foo([1]) if foo were callable. A problem for
1545 be autocalled as foo([1]) if foo were callable. A problem for
1541 things which are both callable and implement __getitem__.
1546 things which are both callable and implement __getitem__.
1542 (init_readline): Fix autoindentation for win32. Thanks to a patch
1547 (init_readline): Fix autoindentation for win32. Thanks to a patch
1543 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1548 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1544
1549
1545 2005-02-12 Fernando Perez <fperez@colorado.edu>
1550 2005-02-12 Fernando Perez <fperez@colorado.edu>
1546
1551
1547 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1552 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1548 which I had written long ago to sort out user error messages which
1553 which I had written long ago to sort out user error messages which
1549 may occur during startup. This seemed like a good idea initially,
1554 may occur during startup. This seemed like a good idea initially,
1550 but it has proven a disaster in retrospect. I don't want to
1555 but it has proven a disaster in retrospect. I don't want to
1551 change much code for now, so my fix is to set the internal 'debug'
1556 change much code for now, so my fix is to set the internal 'debug'
1552 flag to true everywhere, whose only job was precisely to control
1557 flag to true everywhere, whose only job was precisely to control
1553 this subsystem. This closes issue 28 (as well as avoiding all
1558 this subsystem. This closes issue 28 (as well as avoiding all
1554 sorts of strange hangups which occur from time to time).
1559 sorts of strange hangups which occur from time to time).
1555
1560
1556 2005-02-07 Fernando Perez <fperez@colorado.edu>
1561 2005-02-07 Fernando Perez <fperez@colorado.edu>
1557
1562
1558 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1563 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1559 previous call produced a syntax error.
1564 previous call produced a syntax error.
1560
1565
1561 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1566 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1562 classes without constructor.
1567 classes without constructor.
1563
1568
1564 2005-02-06 Fernando Perez <fperez@colorado.edu>
1569 2005-02-06 Fernando Perez <fperez@colorado.edu>
1565
1570
1566 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1571 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1567 completions with the results of each matcher, so we return results
1572 completions with the results of each matcher, so we return results
1568 to the user from all namespaces. This breaks with ipython
1573 to the user from all namespaces. This breaks with ipython
1569 tradition, but I think it's a nicer behavior. Now you get all
1574 tradition, but I think it's a nicer behavior. Now you get all
1570 possible completions listed, from all possible namespaces (python,
1575 possible completions listed, from all possible namespaces (python,
1571 filesystem, magics...) After a request by John Hunter
1576 filesystem, magics...) After a request by John Hunter
1572 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1577 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1573
1578
1574 2005-02-05 Fernando Perez <fperez@colorado.edu>
1579 2005-02-05 Fernando Perez <fperez@colorado.edu>
1575
1580
1576 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1581 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1577 the call had quote characters in it (the quotes were stripped).
1582 the call had quote characters in it (the quotes were stripped).
1578
1583
1579 2005-01-31 Fernando Perez <fperez@colorado.edu>
1584 2005-01-31 Fernando Perez <fperez@colorado.edu>
1580
1585
1581 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1586 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1582 Itpl.itpl() to make the code more robust against psyco
1587 Itpl.itpl() to make the code more robust against psyco
1583 optimizations.
1588 optimizations.
1584
1589
1585 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1590 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1586 of causing an exception. Quicker, cleaner.
1591 of causing an exception. Quicker, cleaner.
1587
1592
1588 2005-01-28 Fernando Perez <fperez@colorado.edu>
1593 2005-01-28 Fernando Perez <fperez@colorado.edu>
1589
1594
1590 * scripts/ipython_win_post_install.py (install): hardcode
1595 * scripts/ipython_win_post_install.py (install): hardcode
1591 sys.prefix+'python.exe' as the executable path. It turns out that
1596 sys.prefix+'python.exe' as the executable path. It turns out that
1592 during the post-installation run, sys.executable resolves to the
1597 during the post-installation run, sys.executable resolves to the
1593 name of the binary installer! I should report this as a distutils
1598 name of the binary installer! I should report this as a distutils
1594 bug, I think. I updated the .10 release with this tiny fix, to
1599 bug, I think. I updated the .10 release with this tiny fix, to
1595 avoid annoying the lists further.
1600 avoid annoying the lists further.
1596
1601
1597 2005-01-27 *** Released version 0.6.10
1602 2005-01-27 *** Released version 0.6.10
1598
1603
1599 2005-01-27 Fernando Perez <fperez@colorado.edu>
1604 2005-01-27 Fernando Perez <fperez@colorado.edu>
1600
1605
1601 * IPython/numutils.py (norm): Added 'inf' as optional name for
1606 * IPython/numutils.py (norm): Added 'inf' as optional name for
1602 L-infinity norm, included references to mathworld.com for vector
1607 L-infinity norm, included references to mathworld.com for vector
1603 norm definitions.
1608 norm definitions.
1604 (amin/amax): added amin/amax for array min/max. Similar to what
1609 (amin/amax): added amin/amax for array min/max. Similar to what
1605 pylab ships with after the recent reorganization of names.
1610 pylab ships with after the recent reorganization of names.
1606 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1611 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1607
1612
1608 * ipython.el: committed Alex's recent fixes and improvements.
1613 * ipython.el: committed Alex's recent fixes and improvements.
1609 Tested with python-mode from CVS, and it looks excellent. Since
1614 Tested with python-mode from CVS, and it looks excellent. Since
1610 python-mode hasn't released anything in a while, I'm temporarily
1615 python-mode hasn't released anything in a while, I'm temporarily
1611 putting a copy of today's CVS (v 4.70) of python-mode in:
1616 putting a copy of today's CVS (v 4.70) of python-mode in:
1612 http://ipython.scipy.org/tmp/python-mode.el
1617 http://ipython.scipy.org/tmp/python-mode.el
1613
1618
1614 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1619 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1615 sys.executable for the executable name, instead of assuming it's
1620 sys.executable for the executable name, instead of assuming it's
1616 called 'python.exe' (the post-installer would have produced broken
1621 called 'python.exe' (the post-installer would have produced broken
1617 setups on systems with a differently named python binary).
1622 setups on systems with a differently named python binary).
1618
1623
1619 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1624 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1620 references to os.linesep, to make the code more
1625 references to os.linesep, to make the code more
1621 platform-independent. This is also part of the win32 coloring
1626 platform-independent. This is also part of the win32 coloring
1622 fixes.
1627 fixes.
1623
1628
1624 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1629 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1625 lines, which actually cause coloring bugs because the length of
1630 lines, which actually cause coloring bugs because the length of
1626 the line is very difficult to correctly compute with embedded
1631 the line is very difficult to correctly compute with embedded
1627 escapes. This was the source of all the coloring problems under
1632 escapes. This was the source of all the coloring problems under
1628 Win32. I think that _finally_, Win32 users have a properly
1633 Win32. I think that _finally_, Win32 users have a properly
1629 working ipython in all respects. This would never have happened
1634 working ipython in all respects. This would never have happened
1630 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1635 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1631
1636
1632 2005-01-26 *** Released version 0.6.9
1637 2005-01-26 *** Released version 0.6.9
1633
1638
1634 2005-01-25 Fernando Perez <fperez@colorado.edu>
1639 2005-01-25 Fernando Perez <fperez@colorado.edu>
1635
1640
1636 * setup.py: finally, we have a true Windows installer, thanks to
1641 * setup.py: finally, we have a true Windows installer, thanks to
1637 the excellent work of Viktor Ransmayr
1642 the excellent work of Viktor Ransmayr
1638 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1643 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1639 Windows users. The setup routine is quite a bit cleaner thanks to
1644 Windows users. The setup routine is quite a bit cleaner thanks to
1640 this, and the post-install script uses the proper functions to
1645 this, and the post-install script uses the proper functions to
1641 allow a clean de-installation using the standard Windows Control
1646 allow a clean de-installation using the standard Windows Control
1642 Panel.
1647 Panel.
1643
1648
1644 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1649 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1645 environment variable under all OSes (including win32) if
1650 environment variable under all OSes (including win32) if
1646 available. This will give consistency to win32 users who have set
1651 available. This will give consistency to win32 users who have set
1647 this variable for any reason. If os.environ['HOME'] fails, the
1652 this variable for any reason. If os.environ['HOME'] fails, the
1648 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1653 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1649
1654
1650 2005-01-24 Fernando Perez <fperez@colorado.edu>
1655 2005-01-24 Fernando Perez <fperez@colorado.edu>
1651
1656
1652 * IPython/numutils.py (empty_like): add empty_like(), similar to
1657 * IPython/numutils.py (empty_like): add empty_like(), similar to
1653 zeros_like() but taking advantage of the new empty() Numeric routine.
1658 zeros_like() but taking advantage of the new empty() Numeric routine.
1654
1659
1655 2005-01-23 *** Released version 0.6.8
1660 2005-01-23 *** Released version 0.6.8
1656
1661
1657 2005-01-22 Fernando Perez <fperez@colorado.edu>
1662 2005-01-22 Fernando Perez <fperez@colorado.edu>
1658
1663
1659 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1664 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1660 automatic show() calls. After discussing things with JDH, it
1665 automatic show() calls. After discussing things with JDH, it
1661 turns out there are too many corner cases where this can go wrong.
1666 turns out there are too many corner cases where this can go wrong.
1662 It's best not to try to be 'too smart', and simply have ipython
1667 It's best not to try to be 'too smart', and simply have ipython
1663 reproduce as much as possible the default behavior of a normal
1668 reproduce as much as possible the default behavior of a normal
1664 python shell.
1669 python shell.
1665
1670
1666 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1671 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1667 line-splitting regexp and _prefilter() to avoid calling getattr()
1672 line-splitting regexp and _prefilter() to avoid calling getattr()
1668 on assignments. This closes
1673 on assignments. This closes
1669 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1674 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1670 readline uses getattr(), so a simple <TAB> keypress is still
1675 readline uses getattr(), so a simple <TAB> keypress is still
1671 enough to trigger getattr() calls on an object.
1676 enough to trigger getattr() calls on an object.
1672
1677
1673 2005-01-21 Fernando Perez <fperez@colorado.edu>
1678 2005-01-21 Fernando Perez <fperez@colorado.edu>
1674
1679
1675 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1680 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1676 docstring under pylab so it doesn't mask the original.
1681 docstring under pylab so it doesn't mask the original.
1677
1682
1678 2005-01-21 *** Released version 0.6.7
1683 2005-01-21 *** Released version 0.6.7
1679
1684
1680 2005-01-21 Fernando Perez <fperez@colorado.edu>
1685 2005-01-21 Fernando Perez <fperez@colorado.edu>
1681
1686
1682 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1687 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1683 signal handling for win32 users in multithreaded mode.
1688 signal handling for win32 users in multithreaded mode.
1684
1689
1685 2005-01-17 Fernando Perez <fperez@colorado.edu>
1690 2005-01-17 Fernando Perez <fperez@colorado.edu>
1686
1691
1687 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1692 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1688 instances with no __init__. After a crash report by Norbert Nemec
1693 instances with no __init__. After a crash report by Norbert Nemec
1689 <Norbert-AT-nemec-online.de>.
1694 <Norbert-AT-nemec-online.de>.
1690
1695
1691 2005-01-14 Fernando Perez <fperez@colorado.edu>
1696 2005-01-14 Fernando Perez <fperez@colorado.edu>
1692
1697
1693 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1698 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1694 names for verbose exceptions, when multiple dotted names and the
1699 names for verbose exceptions, when multiple dotted names and the
1695 'parent' object were present on the same line.
1700 'parent' object were present on the same line.
1696
1701
1697 2005-01-11 Fernando Perez <fperez@colorado.edu>
1702 2005-01-11 Fernando Perez <fperez@colorado.edu>
1698
1703
1699 * IPython/genutils.py (flag_calls): new utility to trap and flag
1704 * IPython/genutils.py (flag_calls): new utility to trap and flag
1700 calls in functions. I need it to clean up matplotlib support.
1705 calls in functions. I need it to clean up matplotlib support.
1701 Also removed some deprecated code in genutils.
1706 Also removed some deprecated code in genutils.
1702
1707
1703 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1708 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1704 that matplotlib scripts called with %run, which don't call show()
1709 that matplotlib scripts called with %run, which don't call show()
1705 themselves, still have their plotting windows open.
1710 themselves, still have their plotting windows open.
1706
1711
1707 2005-01-05 Fernando Perez <fperez@colorado.edu>
1712 2005-01-05 Fernando Perez <fperez@colorado.edu>
1708
1713
1709 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1714 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1710 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1715 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1711
1716
1712 2004-12-19 Fernando Perez <fperez@colorado.edu>
1717 2004-12-19 Fernando Perez <fperez@colorado.edu>
1713
1718
1714 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1719 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1715 parent_runcode, which was an eyesore. The same result can be
1720 parent_runcode, which was an eyesore. The same result can be
1716 obtained with Python's regular superclass mechanisms.
1721 obtained with Python's regular superclass mechanisms.
1717
1722
1718 2004-12-17 Fernando Perez <fperez@colorado.edu>
1723 2004-12-17 Fernando Perez <fperez@colorado.edu>
1719
1724
1720 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1725 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1721 reported by Prabhu.
1726 reported by Prabhu.
1722 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1727 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1723 sys.stderr) instead of explicitly calling sys.stderr. This helps
1728 sys.stderr) instead of explicitly calling sys.stderr. This helps
1724 maintain our I/O abstractions clean, for future GUI embeddings.
1729 maintain our I/O abstractions clean, for future GUI embeddings.
1725
1730
1726 * IPython/genutils.py (info): added new utility for sys.stderr
1731 * IPython/genutils.py (info): added new utility for sys.stderr
1727 unified info message handling (thin wrapper around warn()).
1732 unified info message handling (thin wrapper around warn()).
1728
1733
1729 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1734 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1730 composite (dotted) names on verbose exceptions.
1735 composite (dotted) names on verbose exceptions.
1731 (VerboseTB.nullrepr): harden against another kind of errors which
1736 (VerboseTB.nullrepr): harden against another kind of errors which
1732 Python's inspect module can trigger, and which were crashing
1737 Python's inspect module can trigger, and which were crashing
1733 IPython. Thanks to a report by Marco Lombardi
1738 IPython. Thanks to a report by Marco Lombardi
1734 <mlombard-AT-ma010192.hq.eso.org>.
1739 <mlombard-AT-ma010192.hq.eso.org>.
1735
1740
1736 2004-12-13 *** Released version 0.6.6
1741 2004-12-13 *** Released version 0.6.6
1737
1742
1738 2004-12-12 Fernando Perez <fperez@colorado.edu>
1743 2004-12-12 Fernando Perez <fperez@colorado.edu>
1739
1744
1740 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1745 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1741 generated by pygtk upon initialization if it was built without
1746 generated by pygtk upon initialization if it was built without
1742 threads (for matplotlib users). After a crash reported by
1747 threads (for matplotlib users). After a crash reported by
1743 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1748 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1744
1749
1745 * IPython/ipmaker.py (make_IPython): fix small bug in the
1750 * IPython/ipmaker.py (make_IPython): fix small bug in the
1746 import_some parameter for multiple imports.
1751 import_some parameter for multiple imports.
1747
1752
1748 * IPython/iplib.py (ipmagic): simplified the interface of
1753 * IPython/iplib.py (ipmagic): simplified the interface of
1749 ipmagic() to take a single string argument, just as it would be
1754 ipmagic() to take a single string argument, just as it would be
1750 typed at the IPython cmd line.
1755 typed at the IPython cmd line.
1751 (ipalias): Added new ipalias() with an interface identical to
1756 (ipalias): Added new ipalias() with an interface identical to
1752 ipmagic(). This completes exposing a pure python interface to the
1757 ipmagic(). This completes exposing a pure python interface to the
1753 alias and magic system, which can be used in loops or more complex
1758 alias and magic system, which can be used in loops or more complex
1754 code where IPython's automatic line mangling is not active.
1759 code where IPython's automatic line mangling is not active.
1755
1760
1756 * IPython/genutils.py (timing): changed interface of timing to
1761 * IPython/genutils.py (timing): changed interface of timing to
1757 simply run code once, which is the most common case. timings()
1762 simply run code once, which is the most common case. timings()
1758 remains unchanged, for the cases where you want multiple runs.
1763 remains unchanged, for the cases where you want multiple runs.
1759
1764
1760 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1765 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1761 bug where Python2.2 crashes with exec'ing code which does not end
1766 bug where Python2.2 crashes with exec'ing code which does not end
1762 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1767 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1763 before.
1768 before.
1764
1769
1765 2004-12-10 Fernando Perez <fperez@colorado.edu>
1770 2004-12-10 Fernando Perez <fperez@colorado.edu>
1766
1771
1767 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1772 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1768 -t to -T, to accomodate the new -t flag in %run (the %run and
1773 -t to -T, to accomodate the new -t flag in %run (the %run and
1769 %prun options are kind of intermixed, and it's not easy to change
1774 %prun options are kind of intermixed, and it's not easy to change
1770 this with the limitations of python's getopt).
1775 this with the limitations of python's getopt).
1771
1776
1772 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1777 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1773 the execution of scripts. It's not as fine-tuned as timeit.py,
1778 the execution of scripts. It's not as fine-tuned as timeit.py,
1774 but it works from inside ipython (and under 2.2, which lacks
1779 but it works from inside ipython (and under 2.2, which lacks
1775 timeit.py). Optionally a number of runs > 1 can be given for
1780 timeit.py). Optionally a number of runs > 1 can be given for
1776 timing very short-running code.
1781 timing very short-running code.
1777
1782
1778 * IPython/genutils.py (uniq_stable): new routine which returns a
1783 * IPython/genutils.py (uniq_stable): new routine which returns a
1779 list of unique elements in any iterable, but in stable order of
1784 list of unique elements in any iterable, but in stable order of
1780 appearance. I needed this for the ultraTB fixes, and it's a handy
1785 appearance. I needed this for the ultraTB fixes, and it's a handy
1781 utility.
1786 utility.
1782
1787
1783 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1788 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1784 dotted names in Verbose exceptions. This had been broken since
1789 dotted names in Verbose exceptions. This had been broken since
1785 the very start, now x.y will properly be printed in a Verbose
1790 the very start, now x.y will properly be printed in a Verbose
1786 traceback, instead of x being shown and y appearing always as an
1791 traceback, instead of x being shown and y appearing always as an
1787 'undefined global'. Getting this to work was a bit tricky,
1792 'undefined global'. Getting this to work was a bit tricky,
1788 because by default python tokenizers are stateless. Saved by
1793 because by default python tokenizers are stateless. Saved by
1789 python's ability to easily add a bit of state to an arbitrary
1794 python's ability to easily add a bit of state to an arbitrary
1790 function (without needing to build a full-blown callable object).
1795 function (without needing to build a full-blown callable object).
1791
1796
1792 Also big cleanup of this code, which had horrendous runtime
1797 Also big cleanup of this code, which had horrendous runtime
1793 lookups of zillions of attributes for colorization. Moved all
1798 lookups of zillions of attributes for colorization. Moved all
1794 this code into a few templates, which make it cleaner and quicker.
1799 this code into a few templates, which make it cleaner and quicker.
1795
1800
1796 Printout quality was also improved for Verbose exceptions: one
1801 Printout quality was also improved for Verbose exceptions: one
1797 variable per line, and memory addresses are printed (this can be
1802 variable per line, and memory addresses are printed (this can be
1798 quite handy in nasty debugging situations, which is what Verbose
1803 quite handy in nasty debugging situations, which is what Verbose
1799 is for).
1804 is for).
1800
1805
1801 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1806 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1802 the command line as scripts to be loaded by embedded instances.
1807 the command line as scripts to be loaded by embedded instances.
1803 Doing so has the potential for an infinite recursion if there are
1808 Doing so has the potential for an infinite recursion if there are
1804 exceptions thrown in the process. This fixes a strange crash
1809 exceptions thrown in the process. This fixes a strange crash
1805 reported by Philippe MULLER <muller-AT-irit.fr>.
1810 reported by Philippe MULLER <muller-AT-irit.fr>.
1806
1811
1807 2004-12-09 Fernando Perez <fperez@colorado.edu>
1812 2004-12-09 Fernando Perez <fperez@colorado.edu>
1808
1813
1809 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1814 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1810 to reflect new names in matplotlib, which now expose the
1815 to reflect new names in matplotlib, which now expose the
1811 matlab-compatible interface via a pylab module instead of the
1816 matlab-compatible interface via a pylab module instead of the
1812 'matlab' name. The new code is backwards compatible, so users of
1817 'matlab' name. The new code is backwards compatible, so users of
1813 all matplotlib versions are OK. Patch by J. Hunter.
1818 all matplotlib versions are OK. Patch by J. Hunter.
1814
1819
1815 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1820 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1816 of __init__ docstrings for instances (class docstrings are already
1821 of __init__ docstrings for instances (class docstrings are already
1817 automatically printed). Instances with customized docstrings
1822 automatically printed). Instances with customized docstrings
1818 (indep. of the class) are also recognized and all 3 separate
1823 (indep. of the class) are also recognized and all 3 separate
1819 docstrings are printed (instance, class, constructor). After some
1824 docstrings are printed (instance, class, constructor). After some
1820 comments/suggestions by J. Hunter.
1825 comments/suggestions by J. Hunter.
1821
1826
1822 2004-12-05 Fernando Perez <fperez@colorado.edu>
1827 2004-12-05 Fernando Perez <fperez@colorado.edu>
1823
1828
1824 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1829 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1825 warnings when tab-completion fails and triggers an exception.
1830 warnings when tab-completion fails and triggers an exception.
1826
1831
1827 2004-12-03 Fernando Perez <fperez@colorado.edu>
1832 2004-12-03 Fernando Perez <fperez@colorado.edu>
1828
1833
1829 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1834 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1830 be triggered when using 'run -p'. An incorrect option flag was
1835 be triggered when using 'run -p'. An incorrect option flag was
1831 being set ('d' instead of 'D').
1836 being set ('d' instead of 'D').
1832 (manpage): fix missing escaped \- sign.
1837 (manpage): fix missing escaped \- sign.
1833
1838
1834 2004-11-30 *** Released version 0.6.5
1839 2004-11-30 *** Released version 0.6.5
1835
1840
1836 2004-11-30 Fernando Perez <fperez@colorado.edu>
1841 2004-11-30 Fernando Perez <fperez@colorado.edu>
1837
1842
1838 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1843 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1839 setting with -d option.
1844 setting with -d option.
1840
1845
1841 * setup.py (docfiles): Fix problem where the doc glob I was using
1846 * setup.py (docfiles): Fix problem where the doc glob I was using
1842 was COMPLETELY BROKEN. It was giving the right files by pure
1847 was COMPLETELY BROKEN. It was giving the right files by pure
1843 accident, but failed once I tried to include ipython.el. Note:
1848 accident, but failed once I tried to include ipython.el. Note:
1844 glob() does NOT allow you to do exclusion on multiple endings!
1849 glob() does NOT allow you to do exclusion on multiple endings!
1845
1850
1846 2004-11-29 Fernando Perez <fperez@colorado.edu>
1851 2004-11-29 Fernando Perez <fperez@colorado.edu>
1847
1852
1848 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1853 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1849 the manpage as the source. Better formatting & consistency.
1854 the manpage as the source. Better formatting & consistency.
1850
1855
1851 * IPython/Magic.py (magic_run): Added new -d option, to run
1856 * IPython/Magic.py (magic_run): Added new -d option, to run
1852 scripts under the control of the python pdb debugger. Note that
1857 scripts under the control of the python pdb debugger. Note that
1853 this required changing the %prun option -d to -D, to avoid a clash
1858 this required changing the %prun option -d to -D, to avoid a clash
1854 (since %run must pass options to %prun, and getopt is too dumb to
1859 (since %run must pass options to %prun, and getopt is too dumb to
1855 handle options with string values with embedded spaces). Thanks
1860 handle options with string values with embedded spaces). Thanks
1856 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1861 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1857 (magic_who_ls): added type matching to %who and %whos, so that one
1862 (magic_who_ls): added type matching to %who and %whos, so that one
1858 can filter their output to only include variables of certain
1863 can filter their output to only include variables of certain
1859 types. Another suggestion by Matthew.
1864 types. Another suggestion by Matthew.
1860 (magic_whos): Added memory summaries in kb and Mb for arrays.
1865 (magic_whos): Added memory summaries in kb and Mb for arrays.
1861 (magic_who): Improve formatting (break lines every 9 vars).
1866 (magic_who): Improve formatting (break lines every 9 vars).
1862
1867
1863 2004-11-28 Fernando Perez <fperez@colorado.edu>
1868 2004-11-28 Fernando Perez <fperez@colorado.edu>
1864
1869
1865 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1870 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1866 cache when empty lines were present.
1871 cache when empty lines were present.
1867
1872
1868 2004-11-24 Fernando Perez <fperez@colorado.edu>
1873 2004-11-24 Fernando Perez <fperez@colorado.edu>
1869
1874
1870 * IPython/usage.py (__doc__): document the re-activated threading
1875 * IPython/usage.py (__doc__): document the re-activated threading
1871 options for WX and GTK.
1876 options for WX and GTK.
1872
1877
1873 2004-11-23 Fernando Perez <fperez@colorado.edu>
1878 2004-11-23 Fernando Perez <fperez@colorado.edu>
1874
1879
1875 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1880 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1876 the -wthread and -gthread options, along with a new -tk one to try
1881 the -wthread and -gthread options, along with a new -tk one to try
1877 and coordinate Tk threading with wx/gtk. The tk support is very
1882 and coordinate Tk threading with wx/gtk. The tk support is very
1878 platform dependent, since it seems to require Tcl and Tk to be
1883 platform dependent, since it seems to require Tcl and Tk to be
1879 built with threads (Fedora1/2 appears NOT to have it, but in
1884 built with threads (Fedora1/2 appears NOT to have it, but in
1880 Prabhu's Debian boxes it works OK). But even with some Tk
1885 Prabhu's Debian boxes it works OK). But even with some Tk
1881 limitations, this is a great improvement.
1886 limitations, this is a great improvement.
1882
1887
1883 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1888 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1884 info in user prompts. Patch by Prabhu.
1889 info in user prompts. Patch by Prabhu.
1885
1890
1886 2004-11-18 Fernando Perez <fperez@colorado.edu>
1891 2004-11-18 Fernando Perez <fperez@colorado.edu>
1887
1892
1888 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1893 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1889 EOFErrors and bail, to avoid infinite loops if a non-terminating
1894 EOFErrors and bail, to avoid infinite loops if a non-terminating
1890 file is fed into ipython. Patch submitted in issue 19 by user,
1895 file is fed into ipython. Patch submitted in issue 19 by user,
1891 many thanks.
1896 many thanks.
1892
1897
1893 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1898 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1894 autoquote/parens in continuation prompts, which can cause lots of
1899 autoquote/parens in continuation prompts, which can cause lots of
1895 problems. Closes roundup issue 20.
1900 problems. Closes roundup issue 20.
1896
1901
1897 2004-11-17 Fernando Perez <fperez@colorado.edu>
1902 2004-11-17 Fernando Perez <fperez@colorado.edu>
1898
1903
1899 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1904 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1900 reported as debian bug #280505. I'm not sure my local changelog
1905 reported as debian bug #280505. I'm not sure my local changelog
1901 entry has the proper debian format (Jack?).
1906 entry has the proper debian format (Jack?).
1902
1907
1903 2004-11-08 *** Released version 0.6.4
1908 2004-11-08 *** Released version 0.6.4
1904
1909
1905 2004-11-08 Fernando Perez <fperez@colorado.edu>
1910 2004-11-08 Fernando Perez <fperez@colorado.edu>
1906
1911
1907 * IPython/iplib.py (init_readline): Fix exit message for Windows
1912 * IPython/iplib.py (init_readline): Fix exit message for Windows
1908 when readline is active. Thanks to a report by Eric Jones
1913 when readline is active. Thanks to a report by Eric Jones
1909 <eric-AT-enthought.com>.
1914 <eric-AT-enthought.com>.
1910
1915
1911 2004-11-07 Fernando Perez <fperez@colorado.edu>
1916 2004-11-07 Fernando Perez <fperez@colorado.edu>
1912
1917
1913 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1918 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1914 sometimes seen by win2k/cygwin users.
1919 sometimes seen by win2k/cygwin users.
1915
1920
1916 2004-11-06 Fernando Perez <fperez@colorado.edu>
1921 2004-11-06 Fernando Perez <fperez@colorado.edu>
1917
1922
1918 * IPython/iplib.py (interact): Change the handling of %Exit from
1923 * IPython/iplib.py (interact): Change the handling of %Exit from
1919 trying to propagate a SystemExit to an internal ipython flag.
1924 trying to propagate a SystemExit to an internal ipython flag.
1920 This is less elegant than using Python's exception mechanism, but
1925 This is less elegant than using Python's exception mechanism, but
1921 I can't get that to work reliably with threads, so under -pylab
1926 I can't get that to work reliably with threads, so under -pylab
1922 %Exit was hanging IPython. Cross-thread exception handling is
1927 %Exit was hanging IPython. Cross-thread exception handling is
1923 really a bitch. Thaks to a bug report by Stephen Walton
1928 really a bitch. Thaks to a bug report by Stephen Walton
1924 <stephen.walton-AT-csun.edu>.
1929 <stephen.walton-AT-csun.edu>.
1925
1930
1926 2004-11-04 Fernando Perez <fperez@colorado.edu>
1931 2004-11-04 Fernando Perez <fperez@colorado.edu>
1927
1932
1928 * IPython/iplib.py (raw_input_original): store a pointer to the
1933 * IPython/iplib.py (raw_input_original): store a pointer to the
1929 true raw_input to harden against code which can modify it
1934 true raw_input to harden against code which can modify it
1930 (wx.py.PyShell does this and would otherwise crash ipython).
1935 (wx.py.PyShell does this and would otherwise crash ipython).
1931 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1936 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1932
1937
1933 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1938 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1934 Ctrl-C problem, which does not mess up the input line.
1939 Ctrl-C problem, which does not mess up the input line.
1935
1940
1936 2004-11-03 Fernando Perez <fperez@colorado.edu>
1941 2004-11-03 Fernando Perez <fperez@colorado.edu>
1937
1942
1938 * IPython/Release.py: Changed licensing to BSD, in all files.
1943 * IPython/Release.py: Changed licensing to BSD, in all files.
1939 (name): lowercase name for tarball/RPM release.
1944 (name): lowercase name for tarball/RPM release.
1940
1945
1941 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1946 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1942 use throughout ipython.
1947 use throughout ipython.
1943
1948
1944 * IPython/Magic.py (Magic._ofind): Switch to using the new
1949 * IPython/Magic.py (Magic._ofind): Switch to using the new
1945 OInspect.getdoc() function.
1950 OInspect.getdoc() function.
1946
1951
1947 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1952 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1948 of the line currently being canceled via Ctrl-C. It's extremely
1953 of the line currently being canceled via Ctrl-C. It's extremely
1949 ugly, but I don't know how to do it better (the problem is one of
1954 ugly, but I don't know how to do it better (the problem is one of
1950 handling cross-thread exceptions).
1955 handling cross-thread exceptions).
1951
1956
1952 2004-10-28 Fernando Perez <fperez@colorado.edu>
1957 2004-10-28 Fernando Perez <fperez@colorado.edu>
1953
1958
1954 * IPython/Shell.py (signal_handler): add signal handlers to trap
1959 * IPython/Shell.py (signal_handler): add signal handlers to trap
1955 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1960 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1956 report by Francesc Alted.
1961 report by Francesc Alted.
1957
1962
1958 2004-10-21 Fernando Perez <fperez@colorado.edu>
1963 2004-10-21 Fernando Perez <fperez@colorado.edu>
1959
1964
1960 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1965 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1961 to % for pysh syntax extensions.
1966 to % for pysh syntax extensions.
1962
1967
1963 2004-10-09 Fernando Perez <fperez@colorado.edu>
1968 2004-10-09 Fernando Perez <fperez@colorado.edu>
1964
1969
1965 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1970 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1966 arrays to print a more useful summary, without calling str(arr).
1971 arrays to print a more useful summary, without calling str(arr).
1967 This avoids the problem of extremely lengthy computations which
1972 This avoids the problem of extremely lengthy computations which
1968 occur if arr is large, and appear to the user as a system lockup
1973 occur if arr is large, and appear to the user as a system lockup
1969 with 100% cpu activity. After a suggestion by Kristian Sandberg
1974 with 100% cpu activity. After a suggestion by Kristian Sandberg
1970 <Kristian.Sandberg@colorado.edu>.
1975 <Kristian.Sandberg@colorado.edu>.
1971 (Magic.__init__): fix bug in global magic escapes not being
1976 (Magic.__init__): fix bug in global magic escapes not being
1972 correctly set.
1977 correctly set.
1973
1978
1974 2004-10-08 Fernando Perez <fperez@colorado.edu>
1979 2004-10-08 Fernando Perez <fperez@colorado.edu>
1975
1980
1976 * IPython/Magic.py (__license__): change to absolute imports of
1981 * IPython/Magic.py (__license__): change to absolute imports of
1977 ipython's own internal packages, to start adapting to the absolute
1982 ipython's own internal packages, to start adapting to the absolute
1978 import requirement of PEP-328.
1983 import requirement of PEP-328.
1979
1984
1980 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1985 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1981 files, and standardize author/license marks through the Release
1986 files, and standardize author/license marks through the Release
1982 module instead of having per/file stuff (except for files with
1987 module instead of having per/file stuff (except for files with
1983 particular licenses, like the MIT/PSF-licensed codes).
1988 particular licenses, like the MIT/PSF-licensed codes).
1984
1989
1985 * IPython/Debugger.py: remove dead code for python 2.1
1990 * IPython/Debugger.py: remove dead code for python 2.1
1986
1991
1987 2004-10-04 Fernando Perez <fperez@colorado.edu>
1992 2004-10-04 Fernando Perez <fperez@colorado.edu>
1988
1993
1989 * IPython/iplib.py (ipmagic): New function for accessing magics
1994 * IPython/iplib.py (ipmagic): New function for accessing magics
1990 via a normal python function call.
1995 via a normal python function call.
1991
1996
1992 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1997 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1993 from '@' to '%', to accomodate the new @decorator syntax of python
1998 from '@' to '%', to accomodate the new @decorator syntax of python
1994 2.4.
1999 2.4.
1995
2000
1996 2004-09-29 Fernando Perez <fperez@colorado.edu>
2001 2004-09-29 Fernando Perez <fperez@colorado.edu>
1997
2002
1998 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2003 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1999 matplotlib.use to prevent running scripts which try to switch
2004 matplotlib.use to prevent running scripts which try to switch
2000 interactive backends from within ipython. This will just crash
2005 interactive backends from within ipython. This will just crash
2001 the python interpreter, so we can't allow it (but a detailed error
2006 the python interpreter, so we can't allow it (but a detailed error
2002 is given to the user).
2007 is given to the user).
2003
2008
2004 2004-09-28 Fernando Perez <fperez@colorado.edu>
2009 2004-09-28 Fernando Perez <fperez@colorado.edu>
2005
2010
2006 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2011 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2007 matplotlib-related fixes so that using @run with non-matplotlib
2012 matplotlib-related fixes so that using @run with non-matplotlib
2008 scripts doesn't pop up spurious plot windows. This requires
2013 scripts doesn't pop up spurious plot windows. This requires
2009 matplotlib >= 0.63, where I had to make some changes as well.
2014 matplotlib >= 0.63, where I had to make some changes as well.
2010
2015
2011 * IPython/ipmaker.py (make_IPython): update version requirement to
2016 * IPython/ipmaker.py (make_IPython): update version requirement to
2012 python 2.2.
2017 python 2.2.
2013
2018
2014 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2019 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2015 banner arg for embedded customization.
2020 banner arg for embedded customization.
2016
2021
2017 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2022 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2018 explicit uses of __IP as the IPython's instance name. Now things
2023 explicit uses of __IP as the IPython's instance name. Now things
2019 are properly handled via the shell.name value. The actual code
2024 are properly handled via the shell.name value. The actual code
2020 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2025 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2021 is much better than before. I'll clean things completely when the
2026 is much better than before. I'll clean things completely when the
2022 magic stuff gets a real overhaul.
2027 magic stuff gets a real overhaul.
2023
2028
2024 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2029 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2025 minor changes to debian dir.
2030 minor changes to debian dir.
2026
2031
2027 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2032 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2028 pointer to the shell itself in the interactive namespace even when
2033 pointer to the shell itself in the interactive namespace even when
2029 a user-supplied dict is provided. This is needed for embedding
2034 a user-supplied dict is provided. This is needed for embedding
2030 purposes (found by tests with Michel Sanner).
2035 purposes (found by tests with Michel Sanner).
2031
2036
2032 2004-09-27 Fernando Perez <fperez@colorado.edu>
2037 2004-09-27 Fernando Perez <fperez@colorado.edu>
2033
2038
2034 * IPython/UserConfig/ipythonrc: remove []{} from
2039 * IPython/UserConfig/ipythonrc: remove []{} from
2035 readline_remove_delims, so that things like [modname.<TAB> do
2040 readline_remove_delims, so that things like [modname.<TAB> do
2036 proper completion. This disables [].TAB, but that's a less common
2041 proper completion. This disables [].TAB, but that's a less common
2037 case than module names in list comprehensions, for example.
2042 case than module names in list comprehensions, for example.
2038 Thanks to a report by Andrea Riciputi.
2043 Thanks to a report by Andrea Riciputi.
2039
2044
2040 2004-09-09 Fernando Perez <fperez@colorado.edu>
2045 2004-09-09 Fernando Perez <fperez@colorado.edu>
2041
2046
2042 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2047 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2043 blocking problems in win32 and osx. Fix by John.
2048 blocking problems in win32 and osx. Fix by John.
2044
2049
2045 2004-09-08 Fernando Perez <fperez@colorado.edu>
2050 2004-09-08 Fernando Perez <fperez@colorado.edu>
2046
2051
2047 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2052 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2048 for Win32 and OSX. Fix by John Hunter.
2053 for Win32 and OSX. Fix by John Hunter.
2049
2054
2050 2004-08-30 *** Released version 0.6.3
2055 2004-08-30 *** Released version 0.6.3
2051
2056
2052 2004-08-30 Fernando Perez <fperez@colorado.edu>
2057 2004-08-30 Fernando Perez <fperez@colorado.edu>
2053
2058
2054 * setup.py (isfile): Add manpages to list of dependent files to be
2059 * setup.py (isfile): Add manpages to list of dependent files to be
2055 updated.
2060 updated.
2056
2061
2057 2004-08-27 Fernando Perez <fperez@colorado.edu>
2062 2004-08-27 Fernando Perez <fperez@colorado.edu>
2058
2063
2059 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2064 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2060 for now. They don't really work with standalone WX/GTK code
2065 for now. They don't really work with standalone WX/GTK code
2061 (though matplotlib IS working fine with both of those backends).
2066 (though matplotlib IS working fine with both of those backends).
2062 This will neeed much more testing. I disabled most things with
2067 This will neeed much more testing. I disabled most things with
2063 comments, so turning it back on later should be pretty easy.
2068 comments, so turning it back on later should be pretty easy.
2064
2069
2065 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2070 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2066 autocalling of expressions like r'foo', by modifying the line
2071 autocalling of expressions like r'foo', by modifying the line
2067 split regexp. Closes
2072 split regexp. Closes
2068 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2073 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2069 Riley <ipythonbugs-AT-sabi.net>.
2074 Riley <ipythonbugs-AT-sabi.net>.
2070 (InteractiveShell.mainloop): honor --nobanner with banner
2075 (InteractiveShell.mainloop): honor --nobanner with banner
2071 extensions.
2076 extensions.
2072
2077
2073 * IPython/Shell.py: Significant refactoring of all classes, so
2078 * IPython/Shell.py: Significant refactoring of all classes, so
2074 that we can really support ALL matplotlib backends and threading
2079 that we can really support ALL matplotlib backends and threading
2075 models (John spotted a bug with Tk which required this). Now we
2080 models (John spotted a bug with Tk which required this). Now we
2076 should support single-threaded, WX-threads and GTK-threads, both
2081 should support single-threaded, WX-threads and GTK-threads, both
2077 for generic code and for matplotlib.
2082 for generic code and for matplotlib.
2078
2083
2079 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2084 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2080 -pylab, to simplify things for users. Will also remove the pylab
2085 -pylab, to simplify things for users. Will also remove the pylab
2081 profile, since now all of matplotlib configuration is directly
2086 profile, since now all of matplotlib configuration is directly
2082 handled here. This also reduces startup time.
2087 handled here. This also reduces startup time.
2083
2088
2084 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2089 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2085 shell wasn't being correctly called. Also in IPShellWX.
2090 shell wasn't being correctly called. Also in IPShellWX.
2086
2091
2087 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2092 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2088 fine-tune banner.
2093 fine-tune banner.
2089
2094
2090 * IPython/numutils.py (spike): Deprecate these spike functions,
2095 * IPython/numutils.py (spike): Deprecate these spike functions,
2091 delete (long deprecated) gnuplot_exec handler.
2096 delete (long deprecated) gnuplot_exec handler.
2092
2097
2093 2004-08-26 Fernando Perez <fperez@colorado.edu>
2098 2004-08-26 Fernando Perez <fperez@colorado.edu>
2094
2099
2095 * ipython.1: Update for threading options, plus some others which
2100 * ipython.1: Update for threading options, plus some others which
2096 were missing.
2101 were missing.
2097
2102
2098 * IPython/ipmaker.py (__call__): Added -wthread option for
2103 * IPython/ipmaker.py (__call__): Added -wthread option for
2099 wxpython thread handling. Make sure threading options are only
2104 wxpython thread handling. Make sure threading options are only
2100 valid at the command line.
2105 valid at the command line.
2101
2106
2102 * scripts/ipython: moved shell selection into a factory function
2107 * scripts/ipython: moved shell selection into a factory function
2103 in Shell.py, to keep the starter script to a minimum.
2108 in Shell.py, to keep the starter script to a minimum.
2104
2109
2105 2004-08-25 Fernando Perez <fperez@colorado.edu>
2110 2004-08-25 Fernando Perez <fperez@colorado.edu>
2106
2111
2107 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2112 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2108 John. Along with some recent changes he made to matplotlib, the
2113 John. Along with some recent changes he made to matplotlib, the
2109 next versions of both systems should work very well together.
2114 next versions of both systems should work very well together.
2110
2115
2111 2004-08-24 Fernando Perez <fperez@colorado.edu>
2116 2004-08-24 Fernando Perez <fperez@colorado.edu>
2112
2117
2113 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2118 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2114 tried to switch the profiling to using hotshot, but I'm getting
2119 tried to switch the profiling to using hotshot, but I'm getting
2115 strange errors from prof.runctx() there. I may be misreading the
2120 strange errors from prof.runctx() there. I may be misreading the
2116 docs, but it looks weird. For now the profiling code will
2121 docs, but it looks weird. For now the profiling code will
2117 continue to use the standard profiler.
2122 continue to use the standard profiler.
2118
2123
2119 2004-08-23 Fernando Perez <fperez@colorado.edu>
2124 2004-08-23 Fernando Perez <fperez@colorado.edu>
2120
2125
2121 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2126 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2122 threaded shell, by John Hunter. It's not quite ready yet, but
2127 threaded shell, by John Hunter. It's not quite ready yet, but
2123 close.
2128 close.
2124
2129
2125 2004-08-22 Fernando Perez <fperez@colorado.edu>
2130 2004-08-22 Fernando Perez <fperez@colorado.edu>
2126
2131
2127 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2132 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2128 in Magic and ultraTB.
2133 in Magic and ultraTB.
2129
2134
2130 * ipython.1: document threading options in manpage.
2135 * ipython.1: document threading options in manpage.
2131
2136
2132 * scripts/ipython: Changed name of -thread option to -gthread,
2137 * scripts/ipython: Changed name of -thread option to -gthread,
2133 since this is GTK specific. I want to leave the door open for a
2138 since this is GTK specific. I want to leave the door open for a
2134 -wthread option for WX, which will most likely be necessary. This
2139 -wthread option for WX, which will most likely be necessary. This
2135 change affects usage and ipmaker as well.
2140 change affects usage and ipmaker as well.
2136
2141
2137 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2142 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2138 handle the matplotlib shell issues. Code by John Hunter
2143 handle the matplotlib shell issues. Code by John Hunter
2139 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2144 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2140 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2145 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2141 broken (and disabled for end users) for now, but it puts the
2146 broken (and disabled for end users) for now, but it puts the
2142 infrastructure in place.
2147 infrastructure in place.
2143
2148
2144 2004-08-21 Fernando Perez <fperez@colorado.edu>
2149 2004-08-21 Fernando Perez <fperez@colorado.edu>
2145
2150
2146 * ipythonrc-pylab: Add matplotlib support.
2151 * ipythonrc-pylab: Add matplotlib support.
2147
2152
2148 * matplotlib_config.py: new files for matplotlib support, part of
2153 * matplotlib_config.py: new files for matplotlib support, part of
2149 the pylab profile.
2154 the pylab profile.
2150
2155
2151 * IPython/usage.py (__doc__): documented the threading options.
2156 * IPython/usage.py (__doc__): documented the threading options.
2152
2157
2153 2004-08-20 Fernando Perez <fperez@colorado.edu>
2158 2004-08-20 Fernando Perez <fperez@colorado.edu>
2154
2159
2155 * ipython: Modified the main calling routine to handle the -thread
2160 * ipython: Modified the main calling routine to handle the -thread
2156 and -mpthread options. This needs to be done as a top-level hack,
2161 and -mpthread options. This needs to be done as a top-level hack,
2157 because it determines which class to instantiate for IPython
2162 because it determines which class to instantiate for IPython
2158 itself.
2163 itself.
2159
2164
2160 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2165 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2161 classes to support multithreaded GTK operation without blocking,
2166 classes to support multithreaded GTK operation without blocking,
2162 and matplotlib with all backends. This is a lot of still very
2167 and matplotlib with all backends. This is a lot of still very
2163 experimental code, and threads are tricky. So it may still have a
2168 experimental code, and threads are tricky. So it may still have a
2164 few rough edges... This code owes a lot to
2169 few rough edges... This code owes a lot to
2165 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2170 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2166 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2171 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2167 to John Hunter for all the matplotlib work.
2172 to John Hunter for all the matplotlib work.
2168
2173
2169 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2174 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2170 options for gtk thread and matplotlib support.
2175 options for gtk thread and matplotlib support.
2171
2176
2172 2004-08-16 Fernando Perez <fperez@colorado.edu>
2177 2004-08-16 Fernando Perez <fperez@colorado.edu>
2173
2178
2174 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2179 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2175 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2180 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2176 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2181 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2177
2182
2178 2004-08-11 Fernando Perez <fperez@colorado.edu>
2183 2004-08-11 Fernando Perez <fperez@colorado.edu>
2179
2184
2180 * setup.py (isfile): Fix build so documentation gets updated for
2185 * setup.py (isfile): Fix build so documentation gets updated for
2181 rpms (it was only done for .tgz builds).
2186 rpms (it was only done for .tgz builds).
2182
2187
2183 2004-08-10 Fernando Perez <fperez@colorado.edu>
2188 2004-08-10 Fernando Perez <fperez@colorado.edu>
2184
2189
2185 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2190 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2186
2191
2187 * iplib.py : Silence syntax error exceptions in tab-completion.
2192 * iplib.py : Silence syntax error exceptions in tab-completion.
2188
2193
2189 2004-08-05 Fernando Perez <fperez@colorado.edu>
2194 2004-08-05 Fernando Perez <fperez@colorado.edu>
2190
2195
2191 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2196 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2192 'color off' mark for continuation prompts. This was causing long
2197 'color off' mark for continuation prompts. This was causing long
2193 continuation lines to mis-wrap.
2198 continuation lines to mis-wrap.
2194
2199
2195 2004-08-01 Fernando Perez <fperez@colorado.edu>
2200 2004-08-01 Fernando Perez <fperez@colorado.edu>
2196
2201
2197 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2202 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2198 for building ipython to be a parameter. All this is necessary
2203 for building ipython to be a parameter. All this is necessary
2199 right now to have a multithreaded version, but this insane
2204 right now to have a multithreaded version, but this insane
2200 non-design will be cleaned up soon. For now, it's a hack that
2205 non-design will be cleaned up soon. For now, it's a hack that
2201 works.
2206 works.
2202
2207
2203 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2208 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2204 args in various places. No bugs so far, but it's a dangerous
2209 args in various places. No bugs so far, but it's a dangerous
2205 practice.
2210 practice.
2206
2211
2207 2004-07-31 Fernando Perez <fperez@colorado.edu>
2212 2004-07-31 Fernando Perez <fperez@colorado.edu>
2208
2213
2209 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2214 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2210 fix completion of files with dots in their names under most
2215 fix completion of files with dots in their names under most
2211 profiles (pysh was OK because the completion order is different).
2216 profiles (pysh was OK because the completion order is different).
2212
2217
2213 2004-07-27 Fernando Perez <fperez@colorado.edu>
2218 2004-07-27 Fernando Perez <fperez@colorado.edu>
2214
2219
2215 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2220 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2216 keywords manually, b/c the one in keyword.py was removed in python
2221 keywords manually, b/c the one in keyword.py was removed in python
2217 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2222 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2218 This is NOT a bug under python 2.3 and earlier.
2223 This is NOT a bug under python 2.3 and earlier.
2219
2224
2220 2004-07-26 Fernando Perez <fperez@colorado.edu>
2225 2004-07-26 Fernando Perez <fperez@colorado.edu>
2221
2226
2222 * IPython/ultraTB.py (VerboseTB.text): Add another
2227 * IPython/ultraTB.py (VerboseTB.text): Add another
2223 linecache.checkcache() call to try to prevent inspect.py from
2228 linecache.checkcache() call to try to prevent inspect.py from
2224 crashing under python 2.3. I think this fixes
2229 crashing under python 2.3. I think this fixes
2225 http://www.scipy.net/roundup/ipython/issue17.
2230 http://www.scipy.net/roundup/ipython/issue17.
2226
2231
2227 2004-07-26 *** Released version 0.6.2
2232 2004-07-26 *** Released version 0.6.2
2228
2233
2229 2004-07-26 Fernando Perez <fperez@colorado.edu>
2234 2004-07-26 Fernando Perez <fperez@colorado.edu>
2230
2235
2231 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2236 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2232 fail for any number.
2237 fail for any number.
2233 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2238 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2234 empty bookmarks.
2239 empty bookmarks.
2235
2240
2236 2004-07-26 *** Released version 0.6.1
2241 2004-07-26 *** Released version 0.6.1
2237
2242
2238 2004-07-26 Fernando Perez <fperez@colorado.edu>
2243 2004-07-26 Fernando Perez <fperez@colorado.edu>
2239
2244
2240 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2245 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2241
2246
2242 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2247 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2243 escaping '()[]{}' in filenames.
2248 escaping '()[]{}' in filenames.
2244
2249
2245 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2250 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2246 Python 2.2 users who lack a proper shlex.split.
2251 Python 2.2 users who lack a proper shlex.split.
2247
2252
2248 2004-07-19 Fernando Perez <fperez@colorado.edu>
2253 2004-07-19 Fernando Perez <fperez@colorado.edu>
2249
2254
2250 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2255 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2251 for reading readline's init file. I follow the normal chain:
2256 for reading readline's init file. I follow the normal chain:
2252 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2257 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2253 report by Mike Heeter. This closes
2258 report by Mike Heeter. This closes
2254 http://www.scipy.net/roundup/ipython/issue16.
2259 http://www.scipy.net/roundup/ipython/issue16.
2255
2260
2256 2004-07-18 Fernando Perez <fperez@colorado.edu>
2261 2004-07-18 Fernando Perez <fperez@colorado.edu>
2257
2262
2258 * IPython/iplib.py (__init__): Add better handling of '\' under
2263 * IPython/iplib.py (__init__): Add better handling of '\' under
2259 Win32 for filenames. After a patch by Ville.
2264 Win32 for filenames. After a patch by Ville.
2260
2265
2261 2004-07-17 Fernando Perez <fperez@colorado.edu>
2266 2004-07-17 Fernando Perez <fperez@colorado.edu>
2262
2267
2263 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2268 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2264 autocalling would be triggered for 'foo is bar' if foo is
2269 autocalling would be triggered for 'foo is bar' if foo is
2265 callable. I also cleaned up the autocall detection code to use a
2270 callable. I also cleaned up the autocall detection code to use a
2266 regexp, which is faster. Bug reported by Alexander Schmolck.
2271 regexp, which is faster. Bug reported by Alexander Schmolck.
2267
2272
2268 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2273 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2269 '?' in them would confuse the help system. Reported by Alex
2274 '?' in them would confuse the help system. Reported by Alex
2270 Schmolck.
2275 Schmolck.
2271
2276
2272 2004-07-16 Fernando Perez <fperez@colorado.edu>
2277 2004-07-16 Fernando Perez <fperez@colorado.edu>
2273
2278
2274 * IPython/GnuplotInteractive.py (__all__): added plot2.
2279 * IPython/GnuplotInteractive.py (__all__): added plot2.
2275
2280
2276 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2281 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2277 plotting dictionaries, lists or tuples of 1d arrays.
2282 plotting dictionaries, lists or tuples of 1d arrays.
2278
2283
2279 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2284 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2280 optimizations.
2285 optimizations.
2281
2286
2282 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2287 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2283 the information which was there from Janko's original IPP code:
2288 the information which was there from Janko's original IPP code:
2284
2289
2285 03.05.99 20:53 porto.ifm.uni-kiel.de
2290 03.05.99 20:53 porto.ifm.uni-kiel.de
2286 --Started changelog.
2291 --Started changelog.
2287 --make clear do what it say it does
2292 --make clear do what it say it does
2288 --added pretty output of lines from inputcache
2293 --added pretty output of lines from inputcache
2289 --Made Logger a mixin class, simplifies handling of switches
2294 --Made Logger a mixin class, simplifies handling of switches
2290 --Added own completer class. .string<TAB> expands to last history
2295 --Added own completer class. .string<TAB> expands to last history
2291 line which starts with string. The new expansion is also present
2296 line which starts with string. The new expansion is also present
2292 with Ctrl-r from the readline library. But this shows, who this
2297 with Ctrl-r from the readline library. But this shows, who this
2293 can be done for other cases.
2298 can be done for other cases.
2294 --Added convention that all shell functions should accept a
2299 --Added convention that all shell functions should accept a
2295 parameter_string This opens the door for different behaviour for
2300 parameter_string This opens the door for different behaviour for
2296 each function. @cd is a good example of this.
2301 each function. @cd is a good example of this.
2297
2302
2298 04.05.99 12:12 porto.ifm.uni-kiel.de
2303 04.05.99 12:12 porto.ifm.uni-kiel.de
2299 --added logfile rotation
2304 --added logfile rotation
2300 --added new mainloop method which freezes first the namespace
2305 --added new mainloop method which freezes first the namespace
2301
2306
2302 07.05.99 21:24 porto.ifm.uni-kiel.de
2307 07.05.99 21:24 porto.ifm.uni-kiel.de
2303 --added the docreader classes. Now there is a help system.
2308 --added the docreader classes. Now there is a help system.
2304 -This is only a first try. Currently it's not easy to put new
2309 -This is only a first try. Currently it's not easy to put new
2305 stuff in the indices. But this is the way to go. Info would be
2310 stuff in the indices. But this is the way to go. Info would be
2306 better, but HTML is every where and not everybody has an info
2311 better, but HTML is every where and not everybody has an info
2307 system installed and it's not so easy to change html-docs to info.
2312 system installed and it's not so easy to change html-docs to info.
2308 --added global logfile option
2313 --added global logfile option
2309 --there is now a hook for object inspection method pinfo needs to
2314 --there is now a hook for object inspection method pinfo needs to
2310 be provided for this. Can be reached by two '??'.
2315 be provided for this. Can be reached by two '??'.
2311
2316
2312 08.05.99 20:51 porto.ifm.uni-kiel.de
2317 08.05.99 20:51 porto.ifm.uni-kiel.de
2313 --added a README
2318 --added a README
2314 --bug in rc file. Something has changed so functions in the rc
2319 --bug in rc file. Something has changed so functions in the rc
2315 file need to reference the shell and not self. Not clear if it's a
2320 file need to reference the shell and not self. Not clear if it's a
2316 bug or feature.
2321 bug or feature.
2317 --changed rc file for new behavior
2322 --changed rc file for new behavior
2318
2323
2319 2004-07-15 Fernando Perez <fperez@colorado.edu>
2324 2004-07-15 Fernando Perez <fperez@colorado.edu>
2320
2325
2321 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2326 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2322 cache was falling out of sync in bizarre manners when multi-line
2327 cache was falling out of sync in bizarre manners when multi-line
2323 input was present. Minor optimizations and cleanup.
2328 input was present. Minor optimizations and cleanup.
2324
2329
2325 (Logger): Remove old Changelog info for cleanup. This is the
2330 (Logger): Remove old Changelog info for cleanup. This is the
2326 information which was there from Janko's original code:
2331 information which was there from Janko's original code:
2327
2332
2328 Changes to Logger: - made the default log filename a parameter
2333 Changes to Logger: - made the default log filename a parameter
2329
2334
2330 - put a check for lines beginning with !@? in log(). Needed
2335 - put a check for lines beginning with !@? in log(). Needed
2331 (even if the handlers properly log their lines) for mid-session
2336 (even if the handlers properly log their lines) for mid-session
2332 logging activation to work properly. Without this, lines logged
2337 logging activation to work properly. Without this, lines logged
2333 in mid session, which get read from the cache, would end up
2338 in mid session, which get read from the cache, would end up
2334 'bare' (with !@? in the open) in the log. Now they are caught
2339 'bare' (with !@? in the open) in the log. Now they are caught
2335 and prepended with a #.
2340 and prepended with a #.
2336
2341
2337 * IPython/iplib.py (InteractiveShell.init_readline): added check
2342 * IPython/iplib.py (InteractiveShell.init_readline): added check
2338 in case MagicCompleter fails to be defined, so we don't crash.
2343 in case MagicCompleter fails to be defined, so we don't crash.
2339
2344
2340 2004-07-13 Fernando Perez <fperez@colorado.edu>
2345 2004-07-13 Fernando Perez <fperez@colorado.edu>
2341
2346
2342 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2347 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2343 of EPS if the requested filename ends in '.eps'.
2348 of EPS if the requested filename ends in '.eps'.
2344
2349
2345 2004-07-04 Fernando Perez <fperez@colorado.edu>
2350 2004-07-04 Fernando Perez <fperez@colorado.edu>
2346
2351
2347 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2352 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2348 escaping of quotes when calling the shell.
2353 escaping of quotes when calling the shell.
2349
2354
2350 2004-07-02 Fernando Perez <fperez@colorado.edu>
2355 2004-07-02 Fernando Perez <fperez@colorado.edu>
2351
2356
2352 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2357 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2353 gettext not working because we were clobbering '_'. Fixes
2358 gettext not working because we were clobbering '_'. Fixes
2354 http://www.scipy.net/roundup/ipython/issue6.
2359 http://www.scipy.net/roundup/ipython/issue6.
2355
2360
2356 2004-07-01 Fernando Perez <fperez@colorado.edu>
2361 2004-07-01 Fernando Perez <fperez@colorado.edu>
2357
2362
2358 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2363 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2359 into @cd. Patch by Ville.
2364 into @cd. Patch by Ville.
2360
2365
2361 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2366 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2362 new function to store things after ipmaker runs. Patch by Ville.
2367 new function to store things after ipmaker runs. Patch by Ville.
2363 Eventually this will go away once ipmaker is removed and the class
2368 Eventually this will go away once ipmaker is removed and the class
2364 gets cleaned up, but for now it's ok. Key functionality here is
2369 gets cleaned up, but for now it's ok. Key functionality here is
2365 the addition of the persistent storage mechanism, a dict for
2370 the addition of the persistent storage mechanism, a dict for
2366 keeping data across sessions (for now just bookmarks, but more can
2371 keeping data across sessions (for now just bookmarks, but more can
2367 be implemented later).
2372 be implemented later).
2368
2373
2369 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2374 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2370 persistent across sections. Patch by Ville, I modified it
2375 persistent across sections. Patch by Ville, I modified it
2371 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2376 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2372 added a '-l' option to list all bookmarks.
2377 added a '-l' option to list all bookmarks.
2373
2378
2374 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2379 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2375 center for cleanup. Registered with atexit.register(). I moved
2380 center for cleanup. Registered with atexit.register(). I moved
2376 here the old exit_cleanup(). After a patch by Ville.
2381 here the old exit_cleanup(). After a patch by Ville.
2377
2382
2378 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2383 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2379 characters in the hacked shlex_split for python 2.2.
2384 characters in the hacked shlex_split for python 2.2.
2380
2385
2381 * IPython/iplib.py (file_matches): more fixes to filenames with
2386 * IPython/iplib.py (file_matches): more fixes to filenames with
2382 whitespace in them. It's not perfect, but limitations in python's
2387 whitespace in them. It's not perfect, but limitations in python's
2383 readline make it impossible to go further.
2388 readline make it impossible to go further.
2384
2389
2385 2004-06-29 Fernando Perez <fperez@colorado.edu>
2390 2004-06-29 Fernando Perez <fperez@colorado.edu>
2386
2391
2387 * IPython/iplib.py (file_matches): escape whitespace correctly in
2392 * IPython/iplib.py (file_matches): escape whitespace correctly in
2388 filename completions. Bug reported by Ville.
2393 filename completions. Bug reported by Ville.
2389
2394
2390 2004-06-28 Fernando Perez <fperez@colorado.edu>
2395 2004-06-28 Fernando Perez <fperez@colorado.edu>
2391
2396
2392 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2397 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2393 the history file will be called 'history-PROFNAME' (or just
2398 the history file will be called 'history-PROFNAME' (or just
2394 'history' if no profile is loaded). I was getting annoyed at
2399 'history' if no profile is loaded). I was getting annoyed at
2395 getting my Numerical work history clobbered by pysh sessions.
2400 getting my Numerical work history clobbered by pysh sessions.
2396
2401
2397 * IPython/iplib.py (InteractiveShell.__init__): Internal
2402 * IPython/iplib.py (InteractiveShell.__init__): Internal
2398 getoutputerror() function so that we can honor the system_verbose
2403 getoutputerror() function so that we can honor the system_verbose
2399 flag for _all_ system calls. I also added escaping of #
2404 flag for _all_ system calls. I also added escaping of #
2400 characters here to avoid confusing Itpl.
2405 characters here to avoid confusing Itpl.
2401
2406
2402 * IPython/Magic.py (shlex_split): removed call to shell in
2407 * IPython/Magic.py (shlex_split): removed call to shell in
2403 parse_options and replaced it with shlex.split(). The annoying
2408 parse_options and replaced it with shlex.split(). The annoying
2404 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2409 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2405 to backport it from 2.3, with several frail hacks (the shlex
2410 to backport it from 2.3, with several frail hacks (the shlex
2406 module is rather limited in 2.2). Thanks to a suggestion by Ville
2411 module is rather limited in 2.2). Thanks to a suggestion by Ville
2407 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2412 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2408 problem.
2413 problem.
2409
2414
2410 (Magic.magic_system_verbose): new toggle to print the actual
2415 (Magic.magic_system_verbose): new toggle to print the actual
2411 system calls made by ipython. Mainly for debugging purposes.
2416 system calls made by ipython. Mainly for debugging purposes.
2412
2417
2413 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2418 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2414 doesn't support persistence. Reported (and fix suggested) by
2419 doesn't support persistence. Reported (and fix suggested) by
2415 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2420 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2416
2421
2417 2004-06-26 Fernando Perez <fperez@colorado.edu>
2422 2004-06-26 Fernando Perez <fperez@colorado.edu>
2418
2423
2419 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2424 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2420 continue prompts.
2425 continue prompts.
2421
2426
2422 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2427 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2423 function (basically a big docstring) and a few more things here to
2428 function (basically a big docstring) and a few more things here to
2424 speedup startup. pysh.py is now very lightweight. We want because
2429 speedup startup. pysh.py is now very lightweight. We want because
2425 it gets execfile'd, while InterpreterExec gets imported, so
2430 it gets execfile'd, while InterpreterExec gets imported, so
2426 byte-compilation saves time.
2431 byte-compilation saves time.
2427
2432
2428 2004-06-25 Fernando Perez <fperez@colorado.edu>
2433 2004-06-25 Fernando Perez <fperez@colorado.edu>
2429
2434
2430 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2435 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2431 -NUM', which was recently broken.
2436 -NUM', which was recently broken.
2432
2437
2433 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2438 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2434 in multi-line input (but not !!, which doesn't make sense there).
2439 in multi-line input (but not !!, which doesn't make sense there).
2435
2440
2436 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2441 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2437 It's just too useful, and people can turn it off in the less
2442 It's just too useful, and people can turn it off in the less
2438 common cases where it's a problem.
2443 common cases where it's a problem.
2439
2444
2440 2004-06-24 Fernando Perez <fperez@colorado.edu>
2445 2004-06-24 Fernando Perez <fperez@colorado.edu>
2441
2446
2442 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2447 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2443 special syntaxes (like alias calling) is now allied in multi-line
2448 special syntaxes (like alias calling) is now allied in multi-line
2444 input. This is still _very_ experimental, but it's necessary for
2449 input. This is still _very_ experimental, but it's necessary for
2445 efficient shell usage combining python looping syntax with system
2450 efficient shell usage combining python looping syntax with system
2446 calls. For now it's restricted to aliases, I don't think it
2451 calls. For now it's restricted to aliases, I don't think it
2447 really even makes sense to have this for magics.
2452 really even makes sense to have this for magics.
2448
2453
2449 2004-06-23 Fernando Perez <fperez@colorado.edu>
2454 2004-06-23 Fernando Perez <fperez@colorado.edu>
2450
2455
2451 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2456 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2452 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2457 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2453
2458
2454 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2459 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2455 extensions under Windows (after code sent by Gary Bishop). The
2460 extensions under Windows (after code sent by Gary Bishop). The
2456 extensions considered 'executable' are stored in IPython's rc
2461 extensions considered 'executable' are stored in IPython's rc
2457 structure as win_exec_ext.
2462 structure as win_exec_ext.
2458
2463
2459 * IPython/genutils.py (shell): new function, like system() but
2464 * IPython/genutils.py (shell): new function, like system() but
2460 without return value. Very useful for interactive shell work.
2465 without return value. Very useful for interactive shell work.
2461
2466
2462 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2467 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2463 delete aliases.
2468 delete aliases.
2464
2469
2465 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2470 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2466 sure that the alias table doesn't contain python keywords.
2471 sure that the alias table doesn't contain python keywords.
2467
2472
2468 2004-06-21 Fernando Perez <fperez@colorado.edu>
2473 2004-06-21 Fernando Perez <fperez@colorado.edu>
2469
2474
2470 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2475 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2471 non-existent items are found in $PATH. Reported by Thorsten.
2476 non-existent items are found in $PATH. Reported by Thorsten.
2472
2477
2473 2004-06-20 Fernando Perez <fperez@colorado.edu>
2478 2004-06-20 Fernando Perez <fperez@colorado.edu>
2474
2479
2475 * IPython/iplib.py (complete): modified the completer so that the
2480 * IPython/iplib.py (complete): modified the completer so that the
2476 order of priorities can be easily changed at runtime.
2481 order of priorities can be easily changed at runtime.
2477
2482
2478 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2483 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2479 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2484 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2480
2485
2481 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2486 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2482 expand Python variables prepended with $ in all system calls. The
2487 expand Python variables prepended with $ in all system calls. The
2483 same was done to InteractiveShell.handle_shell_escape. Now all
2488 same was done to InteractiveShell.handle_shell_escape. Now all
2484 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2489 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2485 expansion of python variables and expressions according to the
2490 expansion of python variables and expressions according to the
2486 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2491 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2487
2492
2488 Though PEP-215 has been rejected, a similar (but simpler) one
2493 Though PEP-215 has been rejected, a similar (but simpler) one
2489 seems like it will go into Python 2.4, PEP-292 -
2494 seems like it will go into Python 2.4, PEP-292 -
2490 http://www.python.org/peps/pep-0292.html.
2495 http://www.python.org/peps/pep-0292.html.
2491
2496
2492 I'll keep the full syntax of PEP-215, since IPython has since the
2497 I'll keep the full syntax of PEP-215, since IPython has since the
2493 start used Ka-Ping Yee's reference implementation discussed there
2498 start used Ka-Ping Yee's reference implementation discussed there
2494 (Itpl), and I actually like the powerful semantics it offers.
2499 (Itpl), and I actually like the powerful semantics it offers.
2495
2500
2496 In order to access normal shell variables, the $ has to be escaped
2501 In order to access normal shell variables, the $ has to be escaped
2497 via an extra $. For example:
2502 via an extra $. For example:
2498
2503
2499 In [7]: PATH='a python variable'
2504 In [7]: PATH='a python variable'
2500
2505
2501 In [8]: !echo $PATH
2506 In [8]: !echo $PATH
2502 a python variable
2507 a python variable
2503
2508
2504 In [9]: !echo $$PATH
2509 In [9]: !echo $$PATH
2505 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2510 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2506
2511
2507 (Magic.parse_options): escape $ so the shell doesn't evaluate
2512 (Magic.parse_options): escape $ so the shell doesn't evaluate
2508 things prematurely.
2513 things prematurely.
2509
2514
2510 * IPython/iplib.py (InteractiveShell.call_alias): added the
2515 * IPython/iplib.py (InteractiveShell.call_alias): added the
2511 ability for aliases to expand python variables via $.
2516 ability for aliases to expand python variables via $.
2512
2517
2513 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2518 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2514 system, now there's a @rehash/@rehashx pair of magics. These work
2519 system, now there's a @rehash/@rehashx pair of magics. These work
2515 like the csh rehash command, and can be invoked at any time. They
2520 like the csh rehash command, and can be invoked at any time. They
2516 build a table of aliases to everything in the user's $PATH
2521 build a table of aliases to everything in the user's $PATH
2517 (@rehash uses everything, @rehashx is slower but only adds
2522 (@rehash uses everything, @rehashx is slower but only adds
2518 executable files). With this, the pysh.py-based shell profile can
2523 executable files). With this, the pysh.py-based shell profile can
2519 now simply call rehash upon startup, and full access to all
2524 now simply call rehash upon startup, and full access to all
2520 programs in the user's path is obtained.
2525 programs in the user's path is obtained.
2521
2526
2522 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2527 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2523 functionality is now fully in place. I removed the old dynamic
2528 functionality is now fully in place. I removed the old dynamic
2524 code generation based approach, in favor of a much lighter one
2529 code generation based approach, in favor of a much lighter one
2525 based on a simple dict. The advantage is that this allows me to
2530 based on a simple dict. The advantage is that this allows me to
2526 now have thousands of aliases with negligible cost (unthinkable
2531 now have thousands of aliases with negligible cost (unthinkable
2527 with the old system).
2532 with the old system).
2528
2533
2529 2004-06-19 Fernando Perez <fperez@colorado.edu>
2534 2004-06-19 Fernando Perez <fperez@colorado.edu>
2530
2535
2531 * IPython/iplib.py (__init__): extended MagicCompleter class to
2536 * IPython/iplib.py (__init__): extended MagicCompleter class to
2532 also complete (last in priority) on user aliases.
2537 also complete (last in priority) on user aliases.
2533
2538
2534 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2539 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2535 call to eval.
2540 call to eval.
2536 (ItplNS.__init__): Added a new class which functions like Itpl,
2541 (ItplNS.__init__): Added a new class which functions like Itpl,
2537 but allows configuring the namespace for the evaluation to occur
2542 but allows configuring the namespace for the evaluation to occur
2538 in.
2543 in.
2539
2544
2540 2004-06-18 Fernando Perez <fperez@colorado.edu>
2545 2004-06-18 Fernando Perez <fperez@colorado.edu>
2541
2546
2542 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2547 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2543 better message when 'exit' or 'quit' are typed (a common newbie
2548 better message when 'exit' or 'quit' are typed (a common newbie
2544 confusion).
2549 confusion).
2545
2550
2546 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2551 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2547 check for Windows users.
2552 check for Windows users.
2548
2553
2549 * IPython/iplib.py (InteractiveShell.user_setup): removed
2554 * IPython/iplib.py (InteractiveShell.user_setup): removed
2550 disabling of colors for Windows. I'll test at runtime and issue a
2555 disabling of colors for Windows. I'll test at runtime and issue a
2551 warning if Gary's readline isn't found, as to nudge users to
2556 warning if Gary's readline isn't found, as to nudge users to
2552 download it.
2557 download it.
2553
2558
2554 2004-06-16 Fernando Perez <fperez@colorado.edu>
2559 2004-06-16 Fernando Perez <fperez@colorado.edu>
2555
2560
2556 * IPython/genutils.py (Stream.__init__): changed to print errors
2561 * IPython/genutils.py (Stream.__init__): changed to print errors
2557 to sys.stderr. I had a circular dependency here. Now it's
2562 to sys.stderr. I had a circular dependency here. Now it's
2558 possible to run ipython as IDLE's shell (consider this pre-alpha,
2563 possible to run ipython as IDLE's shell (consider this pre-alpha,
2559 since true stdout things end up in the starting terminal instead
2564 since true stdout things end up in the starting terminal instead
2560 of IDLE's out).
2565 of IDLE's out).
2561
2566
2562 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2567 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2563 users who haven't # updated their prompt_in2 definitions. Remove
2568 users who haven't # updated their prompt_in2 definitions. Remove
2564 eventually.
2569 eventually.
2565 (multiple_replace): added credit to original ASPN recipe.
2570 (multiple_replace): added credit to original ASPN recipe.
2566
2571
2567 2004-06-15 Fernando Perez <fperez@colorado.edu>
2572 2004-06-15 Fernando Perez <fperez@colorado.edu>
2568
2573
2569 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2574 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2570 list of auto-defined aliases.
2575 list of auto-defined aliases.
2571
2576
2572 2004-06-13 Fernando Perez <fperez@colorado.edu>
2577 2004-06-13 Fernando Perez <fperez@colorado.edu>
2573
2578
2574 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2579 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2575 install was really requested (so setup.py can be used for other
2580 install was really requested (so setup.py can be used for other
2576 things under Windows).
2581 things under Windows).
2577
2582
2578 2004-06-10 Fernando Perez <fperez@colorado.edu>
2583 2004-06-10 Fernando Perez <fperez@colorado.edu>
2579
2584
2580 * IPython/Logger.py (Logger.create_log): Manually remove any old
2585 * IPython/Logger.py (Logger.create_log): Manually remove any old
2581 backup, since os.remove may fail under Windows. Fixes bug
2586 backup, since os.remove may fail under Windows. Fixes bug
2582 reported by Thorsten.
2587 reported by Thorsten.
2583
2588
2584 2004-06-09 Fernando Perez <fperez@colorado.edu>
2589 2004-06-09 Fernando Perez <fperez@colorado.edu>
2585
2590
2586 * examples/example-embed.py: fixed all references to %n (replaced
2591 * examples/example-embed.py: fixed all references to %n (replaced
2587 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2592 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2588 for all examples and the manual as well.
2593 for all examples and the manual as well.
2589
2594
2590 2004-06-08 Fernando Perez <fperez@colorado.edu>
2595 2004-06-08 Fernando Perez <fperez@colorado.edu>
2591
2596
2592 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2597 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2593 alignment and color management. All 3 prompt subsystems now
2598 alignment and color management. All 3 prompt subsystems now
2594 inherit from BasePrompt.
2599 inherit from BasePrompt.
2595
2600
2596 * tools/release: updates for windows installer build and tag rpms
2601 * tools/release: updates for windows installer build and tag rpms
2597 with python version (since paths are fixed).
2602 with python version (since paths are fixed).
2598
2603
2599 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2604 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2600 which will become eventually obsolete. Also fixed the default
2605 which will become eventually obsolete. Also fixed the default
2601 prompt_in2 to use \D, so at least new users start with the correct
2606 prompt_in2 to use \D, so at least new users start with the correct
2602 defaults.
2607 defaults.
2603 WARNING: Users with existing ipythonrc files will need to apply
2608 WARNING: Users with existing ipythonrc files will need to apply
2604 this fix manually!
2609 this fix manually!
2605
2610
2606 * setup.py: make windows installer (.exe). This is finally the
2611 * setup.py: make windows installer (.exe). This is finally the
2607 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2612 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2608 which I hadn't included because it required Python 2.3 (or recent
2613 which I hadn't included because it required Python 2.3 (or recent
2609 distutils).
2614 distutils).
2610
2615
2611 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2616 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2612 usage of new '\D' escape.
2617 usage of new '\D' escape.
2613
2618
2614 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2619 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2615 lacks os.getuid())
2620 lacks os.getuid())
2616 (CachedOutput.set_colors): Added the ability to turn coloring
2621 (CachedOutput.set_colors): Added the ability to turn coloring
2617 on/off with @colors even for manually defined prompt colors. It
2622 on/off with @colors even for manually defined prompt colors. It
2618 uses a nasty global, but it works safely and via the generic color
2623 uses a nasty global, but it works safely and via the generic color
2619 handling mechanism.
2624 handling mechanism.
2620 (Prompt2.__init__): Introduced new escape '\D' for continuation
2625 (Prompt2.__init__): Introduced new escape '\D' for continuation
2621 prompts. It represents the counter ('\#') as dots.
2626 prompts. It represents the counter ('\#') as dots.
2622 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2627 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2623 need to update their ipythonrc files and replace '%n' with '\D' in
2628 need to update their ipythonrc files and replace '%n' with '\D' in
2624 their prompt_in2 settings everywhere. Sorry, but there's
2629 their prompt_in2 settings everywhere. Sorry, but there's
2625 otherwise no clean way to get all prompts to properly align. The
2630 otherwise no clean way to get all prompts to properly align. The
2626 ipythonrc shipped with IPython has been updated.
2631 ipythonrc shipped with IPython has been updated.
2627
2632
2628 2004-06-07 Fernando Perez <fperez@colorado.edu>
2633 2004-06-07 Fernando Perez <fperez@colorado.edu>
2629
2634
2630 * setup.py (isfile): Pass local_icons option to latex2html, so the
2635 * setup.py (isfile): Pass local_icons option to latex2html, so the
2631 resulting HTML file is self-contained. Thanks to
2636 resulting HTML file is self-contained. Thanks to
2632 dryice-AT-liu.com.cn for the tip.
2637 dryice-AT-liu.com.cn for the tip.
2633
2638
2634 * pysh.py: I created a new profile 'shell', which implements a
2639 * pysh.py: I created a new profile 'shell', which implements a
2635 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2640 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2636 system shell, nor will it become one anytime soon. It's mainly
2641 system shell, nor will it become one anytime soon. It's mainly
2637 meant to illustrate the use of the new flexible bash-like prompts.
2642 meant to illustrate the use of the new flexible bash-like prompts.
2638 I guess it could be used by hardy souls for true shell management,
2643 I guess it could be used by hardy souls for true shell management,
2639 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2644 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2640 profile. This uses the InterpreterExec extension provided by
2645 profile. This uses the InterpreterExec extension provided by
2641 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2646 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2642
2647
2643 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2648 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2644 auto-align itself with the length of the previous input prompt
2649 auto-align itself with the length of the previous input prompt
2645 (taking into account the invisible color escapes).
2650 (taking into account the invisible color escapes).
2646 (CachedOutput.__init__): Large restructuring of this class. Now
2651 (CachedOutput.__init__): Large restructuring of this class. Now
2647 all three prompts (primary1, primary2, output) are proper objects,
2652 all three prompts (primary1, primary2, output) are proper objects,
2648 managed by the 'parent' CachedOutput class. The code is still a
2653 managed by the 'parent' CachedOutput class. The code is still a
2649 bit hackish (all prompts share state via a pointer to the cache),
2654 bit hackish (all prompts share state via a pointer to the cache),
2650 but it's overall far cleaner than before.
2655 but it's overall far cleaner than before.
2651
2656
2652 * IPython/genutils.py (getoutputerror): modified to add verbose,
2657 * IPython/genutils.py (getoutputerror): modified to add verbose,
2653 debug and header options. This makes the interface of all getout*
2658 debug and header options. This makes the interface of all getout*
2654 functions uniform.
2659 functions uniform.
2655 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2660 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2656
2661
2657 * IPython/Magic.py (Magic.default_option): added a function to
2662 * IPython/Magic.py (Magic.default_option): added a function to
2658 allow registering default options for any magic command. This
2663 allow registering default options for any magic command. This
2659 makes it easy to have profiles which customize the magics globally
2664 makes it easy to have profiles which customize the magics globally
2660 for a certain use. The values set through this function are
2665 for a certain use. The values set through this function are
2661 picked up by the parse_options() method, which all magics should
2666 picked up by the parse_options() method, which all magics should
2662 use to parse their options.
2667 use to parse their options.
2663
2668
2664 * IPython/genutils.py (warn): modified the warnings framework to
2669 * IPython/genutils.py (warn): modified the warnings framework to
2665 use the Term I/O class. I'm trying to slowly unify all of
2670 use the Term I/O class. I'm trying to slowly unify all of
2666 IPython's I/O operations to pass through Term.
2671 IPython's I/O operations to pass through Term.
2667
2672
2668 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2673 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2669 the secondary prompt to correctly match the length of the primary
2674 the secondary prompt to correctly match the length of the primary
2670 one for any prompt. Now multi-line code will properly line up
2675 one for any prompt. Now multi-line code will properly line up
2671 even for path dependent prompts, such as the new ones available
2676 even for path dependent prompts, such as the new ones available
2672 via the prompt_specials.
2677 via the prompt_specials.
2673
2678
2674 2004-06-06 Fernando Perez <fperez@colorado.edu>
2679 2004-06-06 Fernando Perez <fperez@colorado.edu>
2675
2680
2676 * IPython/Prompts.py (prompt_specials): Added the ability to have
2681 * IPython/Prompts.py (prompt_specials): Added the ability to have
2677 bash-like special sequences in the prompts, which get
2682 bash-like special sequences in the prompts, which get
2678 automatically expanded. Things like hostname, current working
2683 automatically expanded. Things like hostname, current working
2679 directory and username are implemented already, but it's easy to
2684 directory and username are implemented already, but it's easy to
2680 add more in the future. Thanks to a patch by W.J. van der Laan
2685 add more in the future. Thanks to a patch by W.J. van der Laan
2681 <gnufnork-AT-hetdigitalegat.nl>
2686 <gnufnork-AT-hetdigitalegat.nl>
2682 (prompt_specials): Added color support for prompt strings, so
2687 (prompt_specials): Added color support for prompt strings, so
2683 users can define arbitrary color setups for their prompts.
2688 users can define arbitrary color setups for their prompts.
2684
2689
2685 2004-06-05 Fernando Perez <fperez@colorado.edu>
2690 2004-06-05 Fernando Perez <fperez@colorado.edu>
2686
2691
2687 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2692 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2688 code to load Gary Bishop's readline and configure it
2693 code to load Gary Bishop's readline and configure it
2689 automatically. Thanks to Gary for help on this.
2694 automatically. Thanks to Gary for help on this.
2690
2695
2691 2004-06-01 Fernando Perez <fperez@colorado.edu>
2696 2004-06-01 Fernando Perez <fperez@colorado.edu>
2692
2697
2693 * IPython/Logger.py (Logger.create_log): fix bug for logging
2698 * IPython/Logger.py (Logger.create_log): fix bug for logging
2694 with no filename (previous fix was incomplete).
2699 with no filename (previous fix was incomplete).
2695
2700
2696 2004-05-25 Fernando Perez <fperez@colorado.edu>
2701 2004-05-25 Fernando Perez <fperez@colorado.edu>
2697
2702
2698 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2703 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2699 parens would get passed to the shell.
2704 parens would get passed to the shell.
2700
2705
2701 2004-05-20 Fernando Perez <fperez@colorado.edu>
2706 2004-05-20 Fernando Perez <fperez@colorado.edu>
2702
2707
2703 * IPython/Magic.py (Magic.magic_prun): changed default profile
2708 * IPython/Magic.py (Magic.magic_prun): changed default profile
2704 sort order to 'time' (the more common profiling need).
2709 sort order to 'time' (the more common profiling need).
2705
2710
2706 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2711 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2707 so that source code shown is guaranteed in sync with the file on
2712 so that source code shown is guaranteed in sync with the file on
2708 disk (also changed in psource). Similar fix to the one for
2713 disk (also changed in psource). Similar fix to the one for
2709 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2714 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2710 <yann.ledu-AT-noos.fr>.
2715 <yann.ledu-AT-noos.fr>.
2711
2716
2712 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2717 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2713 with a single option would not be correctly parsed. Closes
2718 with a single option would not be correctly parsed. Closes
2714 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2719 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2715 introduced in 0.6.0 (on 2004-05-06).
2720 introduced in 0.6.0 (on 2004-05-06).
2716
2721
2717 2004-05-13 *** Released version 0.6.0
2722 2004-05-13 *** Released version 0.6.0
2718
2723
2719 2004-05-13 Fernando Perez <fperez@colorado.edu>
2724 2004-05-13 Fernando Perez <fperez@colorado.edu>
2720
2725
2721 * debian/: Added debian/ directory to CVS, so that debian support
2726 * debian/: Added debian/ directory to CVS, so that debian support
2722 is publicly accessible. The debian package is maintained by Jack
2727 is publicly accessible. The debian package is maintained by Jack
2723 Moffit <jack-AT-xiph.org>.
2728 Moffit <jack-AT-xiph.org>.
2724
2729
2725 * Documentation: included the notes about an ipython-based system
2730 * Documentation: included the notes about an ipython-based system
2726 shell (the hypothetical 'pysh') into the new_design.pdf document,
2731 shell (the hypothetical 'pysh') into the new_design.pdf document,
2727 so that these ideas get distributed to users along with the
2732 so that these ideas get distributed to users along with the
2728 official documentation.
2733 official documentation.
2729
2734
2730 2004-05-10 Fernando Perez <fperez@colorado.edu>
2735 2004-05-10 Fernando Perez <fperez@colorado.edu>
2731
2736
2732 * IPython/Logger.py (Logger.create_log): fix recently introduced
2737 * IPython/Logger.py (Logger.create_log): fix recently introduced
2733 bug (misindented line) where logstart would fail when not given an
2738 bug (misindented line) where logstart would fail when not given an
2734 explicit filename.
2739 explicit filename.
2735
2740
2736 2004-05-09 Fernando Perez <fperez@colorado.edu>
2741 2004-05-09 Fernando Perez <fperez@colorado.edu>
2737
2742
2738 * IPython/Magic.py (Magic.parse_options): skip system call when
2743 * IPython/Magic.py (Magic.parse_options): skip system call when
2739 there are no options to look for. Faster, cleaner for the common
2744 there are no options to look for. Faster, cleaner for the common
2740 case.
2745 case.
2741
2746
2742 * Documentation: many updates to the manual: describing Windows
2747 * Documentation: many updates to the manual: describing Windows
2743 support better, Gnuplot updates, credits, misc small stuff. Also
2748 support better, Gnuplot updates, credits, misc small stuff. Also
2744 updated the new_design doc a bit.
2749 updated the new_design doc a bit.
2745
2750
2746 2004-05-06 *** Released version 0.6.0.rc1
2751 2004-05-06 *** Released version 0.6.0.rc1
2747
2752
2748 2004-05-06 Fernando Perez <fperez@colorado.edu>
2753 2004-05-06 Fernando Perez <fperez@colorado.edu>
2749
2754
2750 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2755 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2751 operations to use the vastly more efficient list/''.join() method.
2756 operations to use the vastly more efficient list/''.join() method.
2752 (FormattedTB.text): Fix
2757 (FormattedTB.text): Fix
2753 http://www.scipy.net/roundup/ipython/issue12 - exception source
2758 http://www.scipy.net/roundup/ipython/issue12 - exception source
2754 extract not updated after reload. Thanks to Mike Salib
2759 extract not updated after reload. Thanks to Mike Salib
2755 <msalib-AT-mit.edu> for pinning the source of the problem.
2760 <msalib-AT-mit.edu> for pinning the source of the problem.
2756 Fortunately, the solution works inside ipython and doesn't require
2761 Fortunately, the solution works inside ipython and doesn't require
2757 any changes to python proper.
2762 any changes to python proper.
2758
2763
2759 * IPython/Magic.py (Magic.parse_options): Improved to process the
2764 * IPython/Magic.py (Magic.parse_options): Improved to process the
2760 argument list as a true shell would (by actually using the
2765 argument list as a true shell would (by actually using the
2761 underlying system shell). This way, all @magics automatically get
2766 underlying system shell). This way, all @magics automatically get
2762 shell expansion for variables. Thanks to a comment by Alex
2767 shell expansion for variables. Thanks to a comment by Alex
2763 Schmolck.
2768 Schmolck.
2764
2769
2765 2004-04-04 Fernando Perez <fperez@colorado.edu>
2770 2004-04-04 Fernando Perez <fperez@colorado.edu>
2766
2771
2767 * IPython/iplib.py (InteractiveShell.interact): Added a special
2772 * IPython/iplib.py (InteractiveShell.interact): Added a special
2768 trap for a debugger quit exception, which is basically impossible
2773 trap for a debugger quit exception, which is basically impossible
2769 to handle by normal mechanisms, given what pdb does to the stack.
2774 to handle by normal mechanisms, given what pdb does to the stack.
2770 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2775 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2771
2776
2772 2004-04-03 Fernando Perez <fperez@colorado.edu>
2777 2004-04-03 Fernando Perez <fperez@colorado.edu>
2773
2778
2774 * IPython/genutils.py (Term): Standardized the names of the Term
2779 * IPython/genutils.py (Term): Standardized the names of the Term
2775 class streams to cin/cout/cerr, following C++ naming conventions
2780 class streams to cin/cout/cerr, following C++ naming conventions
2776 (I can't use in/out/err because 'in' is not a valid attribute
2781 (I can't use in/out/err because 'in' is not a valid attribute
2777 name).
2782 name).
2778
2783
2779 * IPython/iplib.py (InteractiveShell.interact): don't increment
2784 * IPython/iplib.py (InteractiveShell.interact): don't increment
2780 the prompt if there's no user input. By Daniel 'Dang' Griffith
2785 the prompt if there's no user input. By Daniel 'Dang' Griffith
2781 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2786 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2782 Francois Pinard.
2787 Francois Pinard.
2783
2788
2784 2004-04-02 Fernando Perez <fperez@colorado.edu>
2789 2004-04-02 Fernando Perez <fperez@colorado.edu>
2785
2790
2786 * IPython/genutils.py (Stream.__init__): Modified to survive at
2791 * IPython/genutils.py (Stream.__init__): Modified to survive at
2787 least importing in contexts where stdin/out/err aren't true file
2792 least importing in contexts where stdin/out/err aren't true file
2788 objects, such as PyCrust (they lack fileno() and mode). However,
2793 objects, such as PyCrust (they lack fileno() and mode). However,
2789 the recovery facilities which rely on these things existing will
2794 the recovery facilities which rely on these things existing will
2790 not work.
2795 not work.
2791
2796
2792 2004-04-01 Fernando Perez <fperez@colorado.edu>
2797 2004-04-01 Fernando Perez <fperez@colorado.edu>
2793
2798
2794 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2799 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2795 use the new getoutputerror() function, so it properly
2800 use the new getoutputerror() function, so it properly
2796 distinguishes stdout/err.
2801 distinguishes stdout/err.
2797
2802
2798 * IPython/genutils.py (getoutputerror): added a function to
2803 * IPython/genutils.py (getoutputerror): added a function to
2799 capture separately the standard output and error of a command.
2804 capture separately the standard output and error of a command.
2800 After a comment from dang on the mailing lists. This code is
2805 After a comment from dang on the mailing lists. This code is
2801 basically a modified version of commands.getstatusoutput(), from
2806 basically a modified version of commands.getstatusoutput(), from
2802 the standard library.
2807 the standard library.
2803
2808
2804 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2809 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2805 '!!' as a special syntax (shorthand) to access @sx.
2810 '!!' as a special syntax (shorthand) to access @sx.
2806
2811
2807 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2812 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2808 command and return its output as a list split on '\n'.
2813 command and return its output as a list split on '\n'.
2809
2814
2810 2004-03-31 Fernando Perez <fperez@colorado.edu>
2815 2004-03-31 Fernando Perez <fperez@colorado.edu>
2811
2816
2812 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2817 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2813 method to dictionaries used as FakeModule instances if they lack
2818 method to dictionaries used as FakeModule instances if they lack
2814 it. At least pydoc in python2.3 breaks for runtime-defined
2819 it. At least pydoc in python2.3 breaks for runtime-defined
2815 functions without this hack. At some point I need to _really_
2820 functions without this hack. At some point I need to _really_
2816 understand what FakeModule is doing, because it's a gross hack.
2821 understand what FakeModule is doing, because it's a gross hack.
2817 But it solves Arnd's problem for now...
2822 But it solves Arnd's problem for now...
2818
2823
2819 2004-02-27 Fernando Perez <fperez@colorado.edu>
2824 2004-02-27 Fernando Perez <fperez@colorado.edu>
2820
2825
2821 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2826 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2822 mode would behave erratically. Also increased the number of
2827 mode would behave erratically. Also increased the number of
2823 possible logs in rotate mod to 999. Thanks to Rod Holland
2828 possible logs in rotate mod to 999. Thanks to Rod Holland
2824 <rhh@StructureLABS.com> for the report and fixes.
2829 <rhh@StructureLABS.com> for the report and fixes.
2825
2830
2826 2004-02-26 Fernando Perez <fperez@colorado.edu>
2831 2004-02-26 Fernando Perez <fperez@colorado.edu>
2827
2832
2828 * IPython/genutils.py (page): Check that the curses module really
2833 * IPython/genutils.py (page): Check that the curses module really
2829 has the initscr attribute before trying to use it. For some
2834 has the initscr attribute before trying to use it. For some
2830 reason, the Solaris curses module is missing this. I think this
2835 reason, the Solaris curses module is missing this. I think this
2831 should be considered a Solaris python bug, but I'm not sure.
2836 should be considered a Solaris python bug, but I'm not sure.
2832
2837
2833 2004-01-17 Fernando Perez <fperez@colorado.edu>
2838 2004-01-17 Fernando Perez <fperez@colorado.edu>
2834
2839
2835 * IPython/genutils.py (Stream.__init__): Changes to try to make
2840 * IPython/genutils.py (Stream.__init__): Changes to try to make
2836 ipython robust against stdin/out/err being closed by the user.
2841 ipython robust against stdin/out/err being closed by the user.
2837 This is 'user error' (and blocks a normal python session, at least
2842 This is 'user error' (and blocks a normal python session, at least
2838 the stdout case). However, Ipython should be able to survive such
2843 the stdout case). However, Ipython should be able to survive such
2839 instances of abuse as gracefully as possible. To simplify the
2844 instances of abuse as gracefully as possible. To simplify the
2840 coding and maintain compatibility with Gary Bishop's Term
2845 coding and maintain compatibility with Gary Bishop's Term
2841 contributions, I've made use of classmethods for this. I think
2846 contributions, I've made use of classmethods for this. I think
2842 this introduces a dependency on python 2.2.
2847 this introduces a dependency on python 2.2.
2843
2848
2844 2004-01-13 Fernando Perez <fperez@colorado.edu>
2849 2004-01-13 Fernando Perez <fperez@colorado.edu>
2845
2850
2846 * IPython/numutils.py (exp_safe): simplified the code a bit and
2851 * IPython/numutils.py (exp_safe): simplified the code a bit and
2847 removed the need for importing the kinds module altogether.
2852 removed the need for importing the kinds module altogether.
2848
2853
2849 2004-01-06 Fernando Perez <fperez@colorado.edu>
2854 2004-01-06 Fernando Perez <fperez@colorado.edu>
2850
2855
2851 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2856 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2852 a magic function instead, after some community feedback. No
2857 a magic function instead, after some community feedback. No
2853 special syntax will exist for it, but its name is deliberately
2858 special syntax will exist for it, but its name is deliberately
2854 very short.
2859 very short.
2855
2860
2856 2003-12-20 Fernando Perez <fperez@colorado.edu>
2861 2003-12-20 Fernando Perez <fperez@colorado.edu>
2857
2862
2858 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2863 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2859 new functionality, to automagically assign the result of a shell
2864 new functionality, to automagically assign the result of a shell
2860 command to a variable. I'll solicit some community feedback on
2865 command to a variable. I'll solicit some community feedback on
2861 this before making it permanent.
2866 this before making it permanent.
2862
2867
2863 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2868 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2864 requested about callables for which inspect couldn't obtain a
2869 requested about callables for which inspect couldn't obtain a
2865 proper argspec. Thanks to a crash report sent by Etienne
2870 proper argspec. Thanks to a crash report sent by Etienne
2866 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2871 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2867
2872
2868 2003-12-09 Fernando Perez <fperez@colorado.edu>
2873 2003-12-09 Fernando Perez <fperez@colorado.edu>
2869
2874
2870 * IPython/genutils.py (page): patch for the pager to work across
2875 * IPython/genutils.py (page): patch for the pager to work across
2871 various versions of Windows. By Gary Bishop.
2876 various versions of Windows. By Gary Bishop.
2872
2877
2873 2003-12-04 Fernando Perez <fperez@colorado.edu>
2878 2003-12-04 Fernando Perez <fperez@colorado.edu>
2874
2879
2875 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2880 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2876 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2881 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2877 While I tested this and it looks ok, there may still be corner
2882 While I tested this and it looks ok, there may still be corner
2878 cases I've missed.
2883 cases I've missed.
2879
2884
2880 2003-12-01 Fernando Perez <fperez@colorado.edu>
2885 2003-12-01 Fernando Perez <fperez@colorado.edu>
2881
2886
2882 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2887 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2883 where a line like 'p,q=1,2' would fail because the automagic
2888 where a line like 'p,q=1,2' would fail because the automagic
2884 system would be triggered for @p.
2889 system would be triggered for @p.
2885
2890
2886 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2891 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2887 cleanups, code unmodified.
2892 cleanups, code unmodified.
2888
2893
2889 * IPython/genutils.py (Term): added a class for IPython to handle
2894 * IPython/genutils.py (Term): added a class for IPython to handle
2890 output. In most cases it will just be a proxy for stdout/err, but
2895 output. In most cases it will just be a proxy for stdout/err, but
2891 having this allows modifications to be made for some platforms,
2896 having this allows modifications to be made for some platforms,
2892 such as handling color escapes under Windows. All of this code
2897 such as handling color escapes under Windows. All of this code
2893 was contributed by Gary Bishop, with minor modifications by me.
2898 was contributed by Gary Bishop, with minor modifications by me.
2894 The actual changes affect many files.
2899 The actual changes affect many files.
2895
2900
2896 2003-11-30 Fernando Perez <fperez@colorado.edu>
2901 2003-11-30 Fernando Perez <fperez@colorado.edu>
2897
2902
2898 * IPython/iplib.py (file_matches): new completion code, courtesy
2903 * IPython/iplib.py (file_matches): new completion code, courtesy
2899 of Jeff Collins. This enables filename completion again under
2904 of Jeff Collins. This enables filename completion again under
2900 python 2.3, which disabled it at the C level.
2905 python 2.3, which disabled it at the C level.
2901
2906
2902 2003-11-11 Fernando Perez <fperez@colorado.edu>
2907 2003-11-11 Fernando Perez <fperez@colorado.edu>
2903
2908
2904 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2909 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2905 for Numeric.array(map(...)), but often convenient.
2910 for Numeric.array(map(...)), but often convenient.
2906
2911
2907 2003-11-05 Fernando Perez <fperez@colorado.edu>
2912 2003-11-05 Fernando Perez <fperez@colorado.edu>
2908
2913
2909 * IPython/numutils.py (frange): Changed a call from int() to
2914 * IPython/numutils.py (frange): Changed a call from int() to
2910 int(round()) to prevent a problem reported with arange() in the
2915 int(round()) to prevent a problem reported with arange() in the
2911 numpy list.
2916 numpy list.
2912
2917
2913 2003-10-06 Fernando Perez <fperez@colorado.edu>
2918 2003-10-06 Fernando Perez <fperez@colorado.edu>
2914
2919
2915 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2920 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2916 prevent crashes if sys lacks an argv attribute (it happens with
2921 prevent crashes if sys lacks an argv attribute (it happens with
2917 embedded interpreters which build a bare-bones sys module).
2922 embedded interpreters which build a bare-bones sys module).
2918 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2923 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2919
2924
2920 2003-09-24 Fernando Perez <fperez@colorado.edu>
2925 2003-09-24 Fernando Perez <fperez@colorado.edu>
2921
2926
2922 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2927 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2923 to protect against poorly written user objects where __getattr__
2928 to protect against poorly written user objects where __getattr__
2924 raises exceptions other than AttributeError. Thanks to a bug
2929 raises exceptions other than AttributeError. Thanks to a bug
2925 report by Oliver Sander <osander-AT-gmx.de>.
2930 report by Oliver Sander <osander-AT-gmx.de>.
2926
2931
2927 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2932 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2928 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2933 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2929
2934
2930 2003-09-09 Fernando Perez <fperez@colorado.edu>
2935 2003-09-09 Fernando Perez <fperez@colorado.edu>
2931
2936
2932 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2937 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2933 unpacking a list whith a callable as first element would
2938 unpacking a list whith a callable as first element would
2934 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2939 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2935 Collins.
2940 Collins.
2936
2941
2937 2003-08-25 *** Released version 0.5.0
2942 2003-08-25 *** Released version 0.5.0
2938
2943
2939 2003-08-22 Fernando Perez <fperez@colorado.edu>
2944 2003-08-22 Fernando Perez <fperez@colorado.edu>
2940
2945
2941 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2946 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2942 improperly defined user exceptions. Thanks to feedback from Mark
2947 improperly defined user exceptions. Thanks to feedback from Mark
2943 Russell <mrussell-AT-verio.net>.
2948 Russell <mrussell-AT-verio.net>.
2944
2949
2945 2003-08-20 Fernando Perez <fperez@colorado.edu>
2950 2003-08-20 Fernando Perez <fperez@colorado.edu>
2946
2951
2947 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2952 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2948 printing so that it would print multi-line string forms starting
2953 printing so that it would print multi-line string forms starting
2949 with a new line. This way the formatting is better respected for
2954 with a new line. This way the formatting is better respected for
2950 objects which work hard to make nice string forms.
2955 objects which work hard to make nice string forms.
2951
2956
2952 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2957 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2953 autocall would overtake data access for objects with both
2958 autocall would overtake data access for objects with both
2954 __getitem__ and __call__.
2959 __getitem__ and __call__.
2955
2960
2956 2003-08-19 *** Released version 0.5.0-rc1
2961 2003-08-19 *** Released version 0.5.0-rc1
2957
2962
2958 2003-08-19 Fernando Perez <fperez@colorado.edu>
2963 2003-08-19 Fernando Perez <fperez@colorado.edu>
2959
2964
2960 * IPython/deep_reload.py (load_tail): single tiny change here
2965 * IPython/deep_reload.py (load_tail): single tiny change here
2961 seems to fix the long-standing bug of dreload() failing to work
2966 seems to fix the long-standing bug of dreload() failing to work
2962 for dotted names. But this module is pretty tricky, so I may have
2967 for dotted names. But this module is pretty tricky, so I may have
2963 missed some subtlety. Needs more testing!.
2968 missed some subtlety. Needs more testing!.
2964
2969
2965 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2970 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2966 exceptions which have badly implemented __str__ methods.
2971 exceptions which have badly implemented __str__ methods.
2967 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2972 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2968 which I've been getting reports about from Python 2.3 users. I
2973 which I've been getting reports about from Python 2.3 users. I
2969 wish I had a simple test case to reproduce the problem, so I could
2974 wish I had a simple test case to reproduce the problem, so I could
2970 either write a cleaner workaround or file a bug report if
2975 either write a cleaner workaround or file a bug report if
2971 necessary.
2976 necessary.
2972
2977
2973 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2978 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2974 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2979 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2975 a bug report by Tjabo Kloppenburg.
2980 a bug report by Tjabo Kloppenburg.
2976
2981
2977 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2982 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2978 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2983 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2979 seems rather unstable. Thanks to a bug report by Tjabo
2984 seems rather unstable. Thanks to a bug report by Tjabo
2980 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2985 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2981
2986
2982 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2987 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2983 this out soon because of the critical fixes in the inner loop for
2988 this out soon because of the critical fixes in the inner loop for
2984 generators.
2989 generators.
2985
2990
2986 * IPython/Magic.py (Magic.getargspec): removed. This (and
2991 * IPython/Magic.py (Magic.getargspec): removed. This (and
2987 _get_def) have been obsoleted by OInspect for a long time, I
2992 _get_def) have been obsoleted by OInspect for a long time, I
2988 hadn't noticed that they were dead code.
2993 hadn't noticed that they were dead code.
2989 (Magic._ofind): restored _ofind functionality for a few literals
2994 (Magic._ofind): restored _ofind functionality for a few literals
2990 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2995 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2991 for things like "hello".capitalize?, since that would require a
2996 for things like "hello".capitalize?, since that would require a
2992 potentially dangerous eval() again.
2997 potentially dangerous eval() again.
2993
2998
2994 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2999 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2995 logic a bit more to clean up the escapes handling and minimize the
3000 logic a bit more to clean up the escapes handling and minimize the
2996 use of _ofind to only necessary cases. The interactive 'feel' of
3001 use of _ofind to only necessary cases. The interactive 'feel' of
2997 IPython should have improved quite a bit with the changes in
3002 IPython should have improved quite a bit with the changes in
2998 _prefilter and _ofind (besides being far safer than before).
3003 _prefilter and _ofind (besides being far safer than before).
2999
3004
3000 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3005 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3001 obscure, never reported). Edit would fail to find the object to
3006 obscure, never reported). Edit would fail to find the object to
3002 edit under some circumstances.
3007 edit under some circumstances.
3003 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3008 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3004 which were causing double-calling of generators. Those eval calls
3009 which were causing double-calling of generators. Those eval calls
3005 were _very_ dangerous, since code with side effects could be
3010 were _very_ dangerous, since code with side effects could be
3006 triggered. As they say, 'eval is evil'... These were the
3011 triggered. As they say, 'eval is evil'... These were the
3007 nastiest evals in IPython. Besides, _ofind is now far simpler,
3012 nastiest evals in IPython. Besides, _ofind is now far simpler,
3008 and it should also be quite a bit faster. Its use of inspect is
3013 and it should also be quite a bit faster. Its use of inspect is
3009 also safer, so perhaps some of the inspect-related crashes I've
3014 also safer, so perhaps some of the inspect-related crashes I've
3010 seen lately with Python 2.3 might be taken care of. That will
3015 seen lately with Python 2.3 might be taken care of. That will
3011 need more testing.
3016 need more testing.
3012
3017
3013 2003-08-17 Fernando Perez <fperez@colorado.edu>
3018 2003-08-17 Fernando Perez <fperez@colorado.edu>
3014
3019
3015 * IPython/iplib.py (InteractiveShell._prefilter): significant
3020 * IPython/iplib.py (InteractiveShell._prefilter): significant
3016 simplifications to the logic for handling user escapes. Faster
3021 simplifications to the logic for handling user escapes. Faster
3017 and simpler code.
3022 and simpler code.
3018
3023
3019 2003-08-14 Fernando Perez <fperez@colorado.edu>
3024 2003-08-14 Fernando Perez <fperez@colorado.edu>
3020
3025
3021 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3026 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3022 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3027 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3023 but it should be quite a bit faster. And the recursive version
3028 but it should be quite a bit faster. And the recursive version
3024 generated O(log N) intermediate storage for all rank>1 arrays,
3029 generated O(log N) intermediate storage for all rank>1 arrays,
3025 even if they were contiguous.
3030 even if they were contiguous.
3026 (l1norm): Added this function.
3031 (l1norm): Added this function.
3027 (norm): Added this function for arbitrary norms (including
3032 (norm): Added this function for arbitrary norms (including
3028 l-infinity). l1 and l2 are still special cases for convenience
3033 l-infinity). l1 and l2 are still special cases for convenience
3029 and speed.
3034 and speed.
3030
3035
3031 2003-08-03 Fernando Perez <fperez@colorado.edu>
3036 2003-08-03 Fernando Perez <fperez@colorado.edu>
3032
3037
3033 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3038 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3034 exceptions, which now raise PendingDeprecationWarnings in Python
3039 exceptions, which now raise PendingDeprecationWarnings in Python
3035 2.3. There were some in Magic and some in Gnuplot2.
3040 2.3. There were some in Magic and some in Gnuplot2.
3036
3041
3037 2003-06-30 Fernando Perez <fperez@colorado.edu>
3042 2003-06-30 Fernando Perez <fperez@colorado.edu>
3038
3043
3039 * IPython/genutils.py (page): modified to call curses only for
3044 * IPython/genutils.py (page): modified to call curses only for
3040 terminals where TERM=='xterm'. After problems under many other
3045 terminals where TERM=='xterm'. After problems under many other
3041 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3046 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3042
3047
3043 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3048 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3044 would be triggered when readline was absent. This was just an old
3049 would be triggered when readline was absent. This was just an old
3045 debugging statement I'd forgotten to take out.
3050 debugging statement I'd forgotten to take out.
3046
3051
3047 2003-06-20 Fernando Perez <fperez@colorado.edu>
3052 2003-06-20 Fernando Perez <fperez@colorado.edu>
3048
3053
3049 * IPython/genutils.py (clock): modified to return only user time
3054 * IPython/genutils.py (clock): modified to return only user time
3050 (not counting system time), after a discussion on scipy. While
3055 (not counting system time), after a discussion on scipy. While
3051 system time may be a useful quantity occasionally, it may much
3056 system time may be a useful quantity occasionally, it may much
3052 more easily be skewed by occasional swapping or other similar
3057 more easily be skewed by occasional swapping or other similar
3053 activity.
3058 activity.
3054
3059
3055 2003-06-05 Fernando Perez <fperez@colorado.edu>
3060 2003-06-05 Fernando Perez <fperez@colorado.edu>
3056
3061
3057 * IPython/numutils.py (identity): new function, for building
3062 * IPython/numutils.py (identity): new function, for building
3058 arbitrary rank Kronecker deltas (mostly backwards compatible with
3063 arbitrary rank Kronecker deltas (mostly backwards compatible with
3059 Numeric.identity)
3064 Numeric.identity)
3060
3065
3061 2003-06-03 Fernando Perez <fperez@colorado.edu>
3066 2003-06-03 Fernando Perez <fperez@colorado.edu>
3062
3067
3063 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3068 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3064 arguments passed to magics with spaces, to allow trailing '\' to
3069 arguments passed to magics with spaces, to allow trailing '\' to
3065 work normally (mainly for Windows users).
3070 work normally (mainly for Windows users).
3066
3071
3067 2003-05-29 Fernando Perez <fperez@colorado.edu>
3072 2003-05-29 Fernando Perez <fperez@colorado.edu>
3068
3073
3069 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3074 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3070 instead of pydoc.help. This fixes a bizarre behavior where
3075 instead of pydoc.help. This fixes a bizarre behavior where
3071 printing '%s' % locals() would trigger the help system. Now
3076 printing '%s' % locals() would trigger the help system. Now
3072 ipython behaves like normal python does.
3077 ipython behaves like normal python does.
3073
3078
3074 Note that if one does 'from pydoc import help', the bizarre
3079 Note that if one does 'from pydoc import help', the bizarre
3075 behavior returns, but this will also happen in normal python, so
3080 behavior returns, but this will also happen in normal python, so
3076 it's not an ipython bug anymore (it has to do with how pydoc.help
3081 it's not an ipython bug anymore (it has to do with how pydoc.help
3077 is implemented).
3082 is implemented).
3078
3083
3079 2003-05-22 Fernando Perez <fperez@colorado.edu>
3084 2003-05-22 Fernando Perez <fperez@colorado.edu>
3080
3085
3081 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3086 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3082 return [] instead of None when nothing matches, also match to end
3087 return [] instead of None when nothing matches, also match to end
3083 of line. Patch by Gary Bishop.
3088 of line. Patch by Gary Bishop.
3084
3089
3085 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3090 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3086 protection as before, for files passed on the command line. This
3091 protection as before, for files passed on the command line. This
3087 prevents the CrashHandler from kicking in if user files call into
3092 prevents the CrashHandler from kicking in if user files call into
3088 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3093 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3089 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3094 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3090
3095
3091 2003-05-20 *** Released version 0.4.0
3096 2003-05-20 *** Released version 0.4.0
3092
3097
3093 2003-05-20 Fernando Perez <fperez@colorado.edu>
3098 2003-05-20 Fernando Perez <fperez@colorado.edu>
3094
3099
3095 * setup.py: added support for manpages. It's a bit hackish b/c of
3100 * setup.py: added support for manpages. It's a bit hackish b/c of
3096 a bug in the way the bdist_rpm distutils target handles gzipped
3101 a bug in the way the bdist_rpm distutils target handles gzipped
3097 manpages, but it works. After a patch by Jack.
3102 manpages, but it works. After a patch by Jack.
3098
3103
3099 2003-05-19 Fernando Perez <fperez@colorado.edu>
3104 2003-05-19 Fernando Perez <fperez@colorado.edu>
3100
3105
3101 * IPython/numutils.py: added a mockup of the kinds module, since
3106 * IPython/numutils.py: added a mockup of the kinds module, since
3102 it was recently removed from Numeric. This way, numutils will
3107 it was recently removed from Numeric. This way, numutils will
3103 work for all users even if they are missing kinds.
3108 work for all users even if they are missing kinds.
3104
3109
3105 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3110 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3106 failure, which can occur with SWIG-wrapped extensions. After a
3111 failure, which can occur with SWIG-wrapped extensions. After a
3107 crash report from Prabhu.
3112 crash report from Prabhu.
3108
3113
3109 2003-05-16 Fernando Perez <fperez@colorado.edu>
3114 2003-05-16 Fernando Perez <fperez@colorado.edu>
3110
3115
3111 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3116 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3112 protect ipython from user code which may call directly
3117 protect ipython from user code which may call directly
3113 sys.excepthook (this looks like an ipython crash to the user, even
3118 sys.excepthook (this looks like an ipython crash to the user, even
3114 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3119 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3115 This is especially important to help users of WxWindows, but may
3120 This is especially important to help users of WxWindows, but may
3116 also be useful in other cases.
3121 also be useful in other cases.
3117
3122
3118 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3123 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3119 an optional tb_offset to be specified, and to preserve exception
3124 an optional tb_offset to be specified, and to preserve exception
3120 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3125 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3121
3126
3122 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3127 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3123
3128
3124 2003-05-15 Fernando Perez <fperez@colorado.edu>
3129 2003-05-15 Fernando Perez <fperez@colorado.edu>
3125
3130
3126 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3131 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3127 installing for a new user under Windows.
3132 installing for a new user under Windows.
3128
3133
3129 2003-05-12 Fernando Perez <fperez@colorado.edu>
3134 2003-05-12 Fernando Perez <fperez@colorado.edu>
3130
3135
3131 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3136 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3132 handler for Emacs comint-based lines. Currently it doesn't do
3137 handler for Emacs comint-based lines. Currently it doesn't do
3133 much (but importantly, it doesn't update the history cache). In
3138 much (but importantly, it doesn't update the history cache). In
3134 the future it may be expanded if Alex needs more functionality
3139 the future it may be expanded if Alex needs more functionality
3135 there.
3140 there.
3136
3141
3137 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3142 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3138 info to crash reports.
3143 info to crash reports.
3139
3144
3140 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3145 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3141 just like Python's -c. Also fixed crash with invalid -color
3146 just like Python's -c. Also fixed crash with invalid -color
3142 option value at startup. Thanks to Will French
3147 option value at startup. Thanks to Will French
3143 <wfrench-AT-bestweb.net> for the bug report.
3148 <wfrench-AT-bestweb.net> for the bug report.
3144
3149
3145 2003-05-09 Fernando Perez <fperez@colorado.edu>
3150 2003-05-09 Fernando Perez <fperez@colorado.edu>
3146
3151
3147 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3152 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3148 to EvalDict (it's a mapping, after all) and simplified its code
3153 to EvalDict (it's a mapping, after all) and simplified its code
3149 quite a bit, after a nice discussion on c.l.py where Gustavo
3154 quite a bit, after a nice discussion on c.l.py where Gustavo
3150 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3155 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3151
3156
3152 2003-04-30 Fernando Perez <fperez@colorado.edu>
3157 2003-04-30 Fernando Perez <fperez@colorado.edu>
3153
3158
3154 * IPython/genutils.py (timings_out): modified it to reduce its
3159 * IPython/genutils.py (timings_out): modified it to reduce its
3155 overhead in the common reps==1 case.
3160 overhead in the common reps==1 case.
3156
3161
3157 2003-04-29 Fernando Perez <fperez@colorado.edu>
3162 2003-04-29 Fernando Perez <fperez@colorado.edu>
3158
3163
3159 * IPython/genutils.py (timings_out): Modified to use the resource
3164 * IPython/genutils.py (timings_out): Modified to use the resource
3160 module, which avoids the wraparound problems of time.clock().
3165 module, which avoids the wraparound problems of time.clock().
3161
3166
3162 2003-04-17 *** Released version 0.2.15pre4
3167 2003-04-17 *** Released version 0.2.15pre4
3163
3168
3164 2003-04-17 Fernando Perez <fperez@colorado.edu>
3169 2003-04-17 Fernando Perez <fperez@colorado.edu>
3165
3170
3166 * setup.py (scriptfiles): Split windows-specific stuff over to a
3171 * setup.py (scriptfiles): Split windows-specific stuff over to a
3167 separate file, in an attempt to have a Windows GUI installer.
3172 separate file, in an attempt to have a Windows GUI installer.
3168 That didn't work, but part of the groundwork is done.
3173 That didn't work, but part of the groundwork is done.
3169
3174
3170 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3175 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3171 indent/unindent with 4 spaces. Particularly useful in combination
3176 indent/unindent with 4 spaces. Particularly useful in combination
3172 with the new auto-indent option.
3177 with the new auto-indent option.
3173
3178
3174 2003-04-16 Fernando Perez <fperez@colorado.edu>
3179 2003-04-16 Fernando Perez <fperez@colorado.edu>
3175
3180
3176 * IPython/Magic.py: various replacements of self.rc for
3181 * IPython/Magic.py: various replacements of self.rc for
3177 self.shell.rc. A lot more remains to be done to fully disentangle
3182 self.shell.rc. A lot more remains to be done to fully disentangle
3178 this class from the main Shell class.
3183 this class from the main Shell class.
3179
3184
3180 * IPython/GnuplotRuntime.py: added checks for mouse support so
3185 * IPython/GnuplotRuntime.py: added checks for mouse support so
3181 that we don't try to enable it if the current gnuplot doesn't
3186 that we don't try to enable it if the current gnuplot doesn't
3182 really support it. Also added checks so that we don't try to
3187 really support it. Also added checks so that we don't try to
3183 enable persist under Windows (where Gnuplot doesn't recognize the
3188 enable persist under Windows (where Gnuplot doesn't recognize the
3184 option).
3189 option).
3185
3190
3186 * IPython/iplib.py (InteractiveShell.interact): Added optional
3191 * IPython/iplib.py (InteractiveShell.interact): Added optional
3187 auto-indenting code, after a patch by King C. Shu
3192 auto-indenting code, after a patch by King C. Shu
3188 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3193 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3189 get along well with pasting indented code. If I ever figure out
3194 get along well with pasting indented code. If I ever figure out
3190 how to make that part go well, it will become on by default.
3195 how to make that part go well, it will become on by default.
3191
3196
3192 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3197 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3193 crash ipython if there was an unmatched '%' in the user's prompt
3198 crash ipython if there was an unmatched '%' in the user's prompt
3194 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3199 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3195
3200
3196 * IPython/iplib.py (InteractiveShell.interact): removed the
3201 * IPython/iplib.py (InteractiveShell.interact): removed the
3197 ability to ask the user whether he wants to crash or not at the
3202 ability to ask the user whether he wants to crash or not at the
3198 'last line' exception handler. Calling functions at that point
3203 'last line' exception handler. Calling functions at that point
3199 changes the stack, and the error reports would have incorrect
3204 changes the stack, and the error reports would have incorrect
3200 tracebacks.
3205 tracebacks.
3201
3206
3202 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3207 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3203 pass through a peger a pretty-printed form of any object. After a
3208 pass through a peger a pretty-printed form of any object. After a
3204 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3209 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3205
3210
3206 2003-04-14 Fernando Perez <fperez@colorado.edu>
3211 2003-04-14 Fernando Perez <fperez@colorado.edu>
3207
3212
3208 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3213 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3209 all files in ~ would be modified at first install (instead of
3214 all files in ~ would be modified at first install (instead of
3210 ~/.ipython). This could be potentially disastrous, as the
3215 ~/.ipython). This could be potentially disastrous, as the
3211 modification (make line-endings native) could damage binary files.
3216 modification (make line-endings native) could damage binary files.
3212
3217
3213 2003-04-10 Fernando Perez <fperez@colorado.edu>
3218 2003-04-10 Fernando Perez <fperez@colorado.edu>
3214
3219
3215 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3220 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3216 handle only lines which are invalid python. This now means that
3221 handle only lines which are invalid python. This now means that
3217 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3222 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3218 for the bug report.
3223 for the bug report.
3219
3224
3220 2003-04-01 Fernando Perez <fperez@colorado.edu>
3225 2003-04-01 Fernando Perez <fperez@colorado.edu>
3221
3226
3222 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3227 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3223 where failing to set sys.last_traceback would crash pdb.pm().
3228 where failing to set sys.last_traceback would crash pdb.pm().
3224 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3229 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3225 report.
3230 report.
3226
3231
3227 2003-03-25 Fernando Perez <fperez@colorado.edu>
3232 2003-03-25 Fernando Perez <fperez@colorado.edu>
3228
3233
3229 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3234 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3230 before printing it (it had a lot of spurious blank lines at the
3235 before printing it (it had a lot of spurious blank lines at the
3231 end).
3236 end).
3232
3237
3233 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3238 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3234 output would be sent 21 times! Obviously people don't use this
3239 output would be sent 21 times! Obviously people don't use this
3235 too often, or I would have heard about it.
3240 too often, or I would have heard about it.
3236
3241
3237 2003-03-24 Fernando Perez <fperez@colorado.edu>
3242 2003-03-24 Fernando Perez <fperez@colorado.edu>
3238
3243
3239 * setup.py (scriptfiles): renamed the data_files parameter from
3244 * setup.py (scriptfiles): renamed the data_files parameter from
3240 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3245 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3241 for the patch.
3246 for the patch.
3242
3247
3243 2003-03-20 Fernando Perez <fperez@colorado.edu>
3248 2003-03-20 Fernando Perez <fperez@colorado.edu>
3244
3249
3245 * IPython/genutils.py (error): added error() and fatal()
3250 * IPython/genutils.py (error): added error() and fatal()
3246 functions.
3251 functions.
3247
3252
3248 2003-03-18 *** Released version 0.2.15pre3
3253 2003-03-18 *** Released version 0.2.15pre3
3249
3254
3250 2003-03-18 Fernando Perez <fperez@colorado.edu>
3255 2003-03-18 Fernando Perez <fperez@colorado.edu>
3251
3256
3252 * setupext/install_data_ext.py
3257 * setupext/install_data_ext.py
3253 (install_data_ext.initialize_options): Class contributed by Jack
3258 (install_data_ext.initialize_options): Class contributed by Jack
3254 Moffit for fixing the old distutils hack. He is sending this to
3259 Moffit for fixing the old distutils hack. He is sending this to
3255 the distutils folks so in the future we may not need it as a
3260 the distutils folks so in the future we may not need it as a
3256 private fix.
3261 private fix.
3257
3262
3258 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3263 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3259 changes for Debian packaging. See his patch for full details.
3264 changes for Debian packaging. See his patch for full details.
3260 The old distutils hack of making the ipythonrc* files carry a
3265 The old distutils hack of making the ipythonrc* files carry a
3261 bogus .py extension is gone, at last. Examples were moved to a
3266 bogus .py extension is gone, at last. Examples were moved to a
3262 separate subdir under doc/, and the separate executable scripts
3267 separate subdir under doc/, and the separate executable scripts
3263 now live in their own directory. Overall a great cleanup. The
3268 now live in their own directory. Overall a great cleanup. The
3264 manual was updated to use the new files, and setup.py has been
3269 manual was updated to use the new files, and setup.py has been
3265 fixed for this setup.
3270 fixed for this setup.
3266
3271
3267 * IPython/PyColorize.py (Parser.usage): made non-executable and
3272 * IPython/PyColorize.py (Parser.usage): made non-executable and
3268 created a pycolor wrapper around it to be included as a script.
3273 created a pycolor wrapper around it to be included as a script.
3269
3274
3270 2003-03-12 *** Released version 0.2.15pre2
3275 2003-03-12 *** Released version 0.2.15pre2
3271
3276
3272 2003-03-12 Fernando Perez <fperez@colorado.edu>
3277 2003-03-12 Fernando Perez <fperez@colorado.edu>
3273
3278
3274 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3279 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3275 long-standing problem with garbage characters in some terminals.
3280 long-standing problem with garbage characters in some terminals.
3276 The issue was really that the \001 and \002 escapes must _only_ be
3281 The issue was really that the \001 and \002 escapes must _only_ be
3277 passed to input prompts (which call readline), but _never_ to
3282 passed to input prompts (which call readline), but _never_ to
3278 normal text to be printed on screen. I changed ColorANSI to have
3283 normal text to be printed on screen. I changed ColorANSI to have
3279 two classes: TermColors and InputTermColors, each with the
3284 two classes: TermColors and InputTermColors, each with the
3280 appropriate escapes for input prompts or normal text. The code in
3285 appropriate escapes for input prompts or normal text. The code in
3281 Prompts.py got slightly more complicated, but this very old and
3286 Prompts.py got slightly more complicated, but this very old and
3282 annoying bug is finally fixed.
3287 annoying bug is finally fixed.
3283
3288
3284 All the credit for nailing down the real origin of this problem
3289 All the credit for nailing down the real origin of this problem
3285 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3290 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3286 *Many* thanks to him for spending quite a bit of effort on this.
3291 *Many* thanks to him for spending quite a bit of effort on this.
3287
3292
3288 2003-03-05 *** Released version 0.2.15pre1
3293 2003-03-05 *** Released version 0.2.15pre1
3289
3294
3290 2003-03-03 Fernando Perez <fperez@colorado.edu>
3295 2003-03-03 Fernando Perez <fperez@colorado.edu>
3291
3296
3292 * IPython/FakeModule.py: Moved the former _FakeModule to a
3297 * IPython/FakeModule.py: Moved the former _FakeModule to a
3293 separate file, because it's also needed by Magic (to fix a similar
3298 separate file, because it's also needed by Magic (to fix a similar
3294 pickle-related issue in @run).
3299 pickle-related issue in @run).
3295
3300
3296 2003-03-02 Fernando Perez <fperez@colorado.edu>
3301 2003-03-02 Fernando Perez <fperez@colorado.edu>
3297
3302
3298 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3303 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3299 the autocall option at runtime.
3304 the autocall option at runtime.
3300 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3305 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3301 across Magic.py to start separating Magic from InteractiveShell.
3306 across Magic.py to start separating Magic from InteractiveShell.
3302 (Magic._ofind): Fixed to return proper namespace for dotted
3307 (Magic._ofind): Fixed to return proper namespace for dotted
3303 names. Before, a dotted name would always return 'not currently
3308 names. Before, a dotted name would always return 'not currently
3304 defined', because it would find the 'parent'. s.x would be found,
3309 defined', because it would find the 'parent'. s.x would be found,
3305 but since 'x' isn't defined by itself, it would get confused.
3310 but since 'x' isn't defined by itself, it would get confused.
3306 (Magic.magic_run): Fixed pickling problems reported by Ralf
3311 (Magic.magic_run): Fixed pickling problems reported by Ralf
3307 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3312 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3308 that I'd used when Mike Heeter reported similar issues at the
3313 that I'd used when Mike Heeter reported similar issues at the
3309 top-level, but now for @run. It boils down to injecting the
3314 top-level, but now for @run. It boils down to injecting the
3310 namespace where code is being executed with something that looks
3315 namespace where code is being executed with something that looks
3311 enough like a module to fool pickle.dump(). Since a pickle stores
3316 enough like a module to fool pickle.dump(). Since a pickle stores
3312 a named reference to the importing module, we need this for
3317 a named reference to the importing module, we need this for
3313 pickles to save something sensible.
3318 pickles to save something sensible.
3314
3319
3315 * IPython/ipmaker.py (make_IPython): added an autocall option.
3320 * IPython/ipmaker.py (make_IPython): added an autocall option.
3316
3321
3317 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3322 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3318 the auto-eval code. Now autocalling is an option, and the code is
3323 the auto-eval code. Now autocalling is an option, and the code is
3319 also vastly safer. There is no more eval() involved at all.
3324 also vastly safer. There is no more eval() involved at all.
3320
3325
3321 2003-03-01 Fernando Perez <fperez@colorado.edu>
3326 2003-03-01 Fernando Perez <fperez@colorado.edu>
3322
3327
3323 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3328 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3324 dict with named keys instead of a tuple.
3329 dict with named keys instead of a tuple.
3325
3330
3326 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3331 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3327
3332
3328 * setup.py (make_shortcut): Fixed message about directories
3333 * setup.py (make_shortcut): Fixed message about directories
3329 created during Windows installation (the directories were ok, just
3334 created during Windows installation (the directories were ok, just
3330 the printed message was misleading). Thanks to Chris Liechti
3335 the printed message was misleading). Thanks to Chris Liechti
3331 <cliechti-AT-gmx.net> for the heads up.
3336 <cliechti-AT-gmx.net> for the heads up.
3332
3337
3333 2003-02-21 Fernando Perez <fperez@colorado.edu>
3338 2003-02-21 Fernando Perez <fperez@colorado.edu>
3334
3339
3335 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3340 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3336 of ValueError exception when checking for auto-execution. This
3341 of ValueError exception when checking for auto-execution. This
3337 one is raised by things like Numeric arrays arr.flat when the
3342 one is raised by things like Numeric arrays arr.flat when the
3338 array is non-contiguous.
3343 array is non-contiguous.
3339
3344
3340 2003-01-31 Fernando Perez <fperez@colorado.edu>
3345 2003-01-31 Fernando Perez <fperez@colorado.edu>
3341
3346
3342 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3347 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3343 not return any value at all (even though the command would get
3348 not return any value at all (even though the command would get
3344 executed).
3349 executed).
3345 (xsys): Flush stdout right after printing the command to ensure
3350 (xsys): Flush stdout right after printing the command to ensure
3346 proper ordering of commands and command output in the total
3351 proper ordering of commands and command output in the total
3347 output.
3352 output.
3348 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3353 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3349 system/getoutput as defaults. The old ones are kept for
3354 system/getoutput as defaults. The old ones are kept for
3350 compatibility reasons, so no code which uses this library needs
3355 compatibility reasons, so no code which uses this library needs
3351 changing.
3356 changing.
3352
3357
3353 2003-01-27 *** Released version 0.2.14
3358 2003-01-27 *** Released version 0.2.14
3354
3359
3355 2003-01-25 Fernando Perez <fperez@colorado.edu>
3360 2003-01-25 Fernando Perez <fperez@colorado.edu>
3356
3361
3357 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3362 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3358 functions defined in previous edit sessions could not be re-edited
3363 functions defined in previous edit sessions could not be re-edited
3359 (because the temp files were immediately removed). Now temp files
3364 (because the temp files were immediately removed). Now temp files
3360 are removed only at IPython's exit.
3365 are removed only at IPython's exit.
3361 (Magic.magic_run): Improved @run to perform shell-like expansions
3366 (Magic.magic_run): Improved @run to perform shell-like expansions
3362 on its arguments (~users and $VARS). With this, @run becomes more
3367 on its arguments (~users and $VARS). With this, @run becomes more
3363 like a normal command-line.
3368 like a normal command-line.
3364
3369
3365 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3370 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3366 bugs related to embedding and cleaned up that code. A fairly
3371 bugs related to embedding and cleaned up that code. A fairly
3367 important one was the impossibility to access the global namespace
3372 important one was the impossibility to access the global namespace
3368 through the embedded IPython (only local variables were visible).
3373 through the embedded IPython (only local variables were visible).
3369
3374
3370 2003-01-14 Fernando Perez <fperez@colorado.edu>
3375 2003-01-14 Fernando Perez <fperez@colorado.edu>
3371
3376
3372 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3377 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3373 auto-calling to be a bit more conservative. Now it doesn't get
3378 auto-calling to be a bit more conservative. Now it doesn't get
3374 triggered if any of '!=()<>' are in the rest of the input line, to
3379 triggered if any of '!=()<>' are in the rest of the input line, to
3375 allow comparing callables. Thanks to Alex for the heads up.
3380 allow comparing callables. Thanks to Alex for the heads up.
3376
3381
3377 2003-01-07 Fernando Perez <fperez@colorado.edu>
3382 2003-01-07 Fernando Perez <fperez@colorado.edu>
3378
3383
3379 * IPython/genutils.py (page): fixed estimation of the number of
3384 * IPython/genutils.py (page): fixed estimation of the number of
3380 lines in a string to be paged to simply count newlines. This
3385 lines in a string to be paged to simply count newlines. This
3381 prevents over-guessing due to embedded escape sequences. A better
3386 prevents over-guessing due to embedded escape sequences. A better
3382 long-term solution would involve stripping out the control chars
3387 long-term solution would involve stripping out the control chars
3383 for the count, but it's potentially so expensive I just don't
3388 for the count, but it's potentially so expensive I just don't
3384 think it's worth doing.
3389 think it's worth doing.
3385
3390
3386 2002-12-19 *** Released version 0.2.14pre50
3391 2002-12-19 *** Released version 0.2.14pre50
3387
3392
3388 2002-12-19 Fernando Perez <fperez@colorado.edu>
3393 2002-12-19 Fernando Perez <fperez@colorado.edu>
3389
3394
3390 * tools/release (version): Changed release scripts to inform
3395 * tools/release (version): Changed release scripts to inform
3391 Andrea and build a NEWS file with a list of recent changes.
3396 Andrea and build a NEWS file with a list of recent changes.
3392
3397
3393 * IPython/ColorANSI.py (__all__): changed terminal detection
3398 * IPython/ColorANSI.py (__all__): changed terminal detection
3394 code. Seems to work better for xterms without breaking
3399 code. Seems to work better for xterms without breaking
3395 konsole. Will need more testing to determine if WinXP and Mac OSX
3400 konsole. Will need more testing to determine if WinXP and Mac OSX
3396 also work ok.
3401 also work ok.
3397
3402
3398 2002-12-18 *** Released version 0.2.14pre49
3403 2002-12-18 *** Released version 0.2.14pre49
3399
3404
3400 2002-12-18 Fernando Perez <fperez@colorado.edu>
3405 2002-12-18 Fernando Perez <fperez@colorado.edu>
3401
3406
3402 * Docs: added new info about Mac OSX, from Andrea.
3407 * Docs: added new info about Mac OSX, from Andrea.
3403
3408
3404 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3409 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3405 allow direct plotting of python strings whose format is the same
3410 allow direct plotting of python strings whose format is the same
3406 of gnuplot data files.
3411 of gnuplot data files.
3407
3412
3408 2002-12-16 Fernando Perez <fperez@colorado.edu>
3413 2002-12-16 Fernando Perez <fperez@colorado.edu>
3409
3414
3410 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3415 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3411 value of exit question to be acknowledged.
3416 value of exit question to be acknowledged.
3412
3417
3413 2002-12-03 Fernando Perez <fperez@colorado.edu>
3418 2002-12-03 Fernando Perez <fperez@colorado.edu>
3414
3419
3415 * IPython/ipmaker.py: removed generators, which had been added
3420 * IPython/ipmaker.py: removed generators, which had been added
3416 by mistake in an earlier debugging run. This was causing trouble
3421 by mistake in an earlier debugging run. This was causing trouble
3417 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3422 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3418 for pointing this out.
3423 for pointing this out.
3419
3424
3420 2002-11-17 Fernando Perez <fperez@colorado.edu>
3425 2002-11-17 Fernando Perez <fperez@colorado.edu>
3421
3426
3422 * Manual: updated the Gnuplot section.
3427 * Manual: updated the Gnuplot section.
3423
3428
3424 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3429 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3425 a much better split of what goes in Runtime and what goes in
3430 a much better split of what goes in Runtime and what goes in
3426 Interactive.
3431 Interactive.
3427
3432
3428 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3433 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3429 being imported from iplib.
3434 being imported from iplib.
3430
3435
3431 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3436 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3432 for command-passing. Now the global Gnuplot instance is called
3437 for command-passing. Now the global Gnuplot instance is called
3433 'gp' instead of 'g', which was really a far too fragile and
3438 'gp' instead of 'g', which was really a far too fragile and
3434 common name.
3439 common name.
3435
3440
3436 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3441 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3437 bounding boxes generated by Gnuplot for square plots.
3442 bounding boxes generated by Gnuplot for square plots.
3438
3443
3439 * IPython/genutils.py (popkey): new function added. I should
3444 * IPython/genutils.py (popkey): new function added. I should
3440 suggest this on c.l.py as a dict method, it seems useful.
3445 suggest this on c.l.py as a dict method, it seems useful.
3441
3446
3442 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3447 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3443 to transparently handle PostScript generation. MUCH better than
3448 to transparently handle PostScript generation. MUCH better than
3444 the previous plot_eps/replot_eps (which I removed now). The code
3449 the previous plot_eps/replot_eps (which I removed now). The code
3445 is also fairly clean and well documented now (including
3450 is also fairly clean and well documented now (including
3446 docstrings).
3451 docstrings).
3447
3452
3448 2002-11-13 Fernando Perez <fperez@colorado.edu>
3453 2002-11-13 Fernando Perez <fperez@colorado.edu>
3449
3454
3450 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3455 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3451 (inconsistent with options).
3456 (inconsistent with options).
3452
3457
3453 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3458 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3454 manually disabled, I don't know why. Fixed it.
3459 manually disabled, I don't know why. Fixed it.
3455 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3460 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3456 eps output.
3461 eps output.
3457
3462
3458 2002-11-12 Fernando Perez <fperez@colorado.edu>
3463 2002-11-12 Fernando Perez <fperez@colorado.edu>
3459
3464
3460 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3465 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3461 don't propagate up to caller. Fixes crash reported by François
3466 don't propagate up to caller. Fixes crash reported by François
3462 Pinard.
3467 Pinard.
3463
3468
3464 2002-11-09 Fernando Perez <fperez@colorado.edu>
3469 2002-11-09 Fernando Perez <fperez@colorado.edu>
3465
3470
3466 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3471 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3467 history file for new users.
3472 history file for new users.
3468 (make_IPython): fixed bug where initial install would leave the
3473 (make_IPython): fixed bug where initial install would leave the
3469 user running in the .ipython dir.
3474 user running in the .ipython dir.
3470 (make_IPython): fixed bug where config dir .ipython would be
3475 (make_IPython): fixed bug where config dir .ipython would be
3471 created regardless of the given -ipythondir option. Thanks to Cory
3476 created regardless of the given -ipythondir option. Thanks to Cory
3472 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3477 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3473
3478
3474 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3479 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3475 type confirmations. Will need to use it in all of IPython's code
3480 type confirmations. Will need to use it in all of IPython's code
3476 consistently.
3481 consistently.
3477
3482
3478 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3483 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3479 context to print 31 lines instead of the default 5. This will make
3484 context to print 31 lines instead of the default 5. This will make
3480 the crash reports extremely detailed in case the problem is in
3485 the crash reports extremely detailed in case the problem is in
3481 libraries I don't have access to.
3486 libraries I don't have access to.
3482
3487
3483 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3488 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3484 line of defense' code to still crash, but giving users fair
3489 line of defense' code to still crash, but giving users fair
3485 warning. I don't want internal errors to go unreported: if there's
3490 warning. I don't want internal errors to go unreported: if there's
3486 an internal problem, IPython should crash and generate a full
3491 an internal problem, IPython should crash and generate a full
3487 report.
3492 report.
3488
3493
3489 2002-11-08 Fernando Perez <fperez@colorado.edu>
3494 2002-11-08 Fernando Perez <fperez@colorado.edu>
3490
3495
3491 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3496 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3492 otherwise uncaught exceptions which can appear if people set
3497 otherwise uncaught exceptions which can appear if people set
3493 sys.stdout to something badly broken. Thanks to a crash report
3498 sys.stdout to something badly broken. Thanks to a crash report
3494 from henni-AT-mail.brainbot.com.
3499 from henni-AT-mail.brainbot.com.
3495
3500
3496 2002-11-04 Fernando Perez <fperez@colorado.edu>
3501 2002-11-04 Fernando Perez <fperez@colorado.edu>
3497
3502
3498 * IPython/iplib.py (InteractiveShell.interact): added
3503 * IPython/iplib.py (InteractiveShell.interact): added
3499 __IPYTHON__active to the builtins. It's a flag which goes on when
3504 __IPYTHON__active to the builtins. It's a flag which goes on when
3500 the interaction starts and goes off again when it stops. This
3505 the interaction starts and goes off again when it stops. This
3501 allows embedding code to detect being inside IPython. Before this
3506 allows embedding code to detect being inside IPython. Before this
3502 was done via __IPYTHON__, but that only shows that an IPython
3507 was done via __IPYTHON__, but that only shows that an IPython
3503 instance has been created.
3508 instance has been created.
3504
3509
3505 * IPython/Magic.py (Magic.magic_env): I realized that in a
3510 * IPython/Magic.py (Magic.magic_env): I realized that in a
3506 UserDict, instance.data holds the data as a normal dict. So I
3511 UserDict, instance.data holds the data as a normal dict. So I
3507 modified @env to return os.environ.data instead of rebuilding a
3512 modified @env to return os.environ.data instead of rebuilding a
3508 dict by hand.
3513 dict by hand.
3509
3514
3510 2002-11-02 Fernando Perez <fperez@colorado.edu>
3515 2002-11-02 Fernando Perez <fperez@colorado.edu>
3511
3516
3512 * IPython/genutils.py (warn): changed so that level 1 prints no
3517 * IPython/genutils.py (warn): changed so that level 1 prints no
3513 header. Level 2 is now the default (with 'WARNING' header, as
3518 header. Level 2 is now the default (with 'WARNING' header, as
3514 before). I think I tracked all places where changes were needed in
3519 before). I think I tracked all places where changes were needed in
3515 IPython, but outside code using the old level numbering may have
3520 IPython, but outside code using the old level numbering may have
3516 broken.
3521 broken.
3517
3522
3518 * IPython/iplib.py (InteractiveShell.runcode): added this to
3523 * IPython/iplib.py (InteractiveShell.runcode): added this to
3519 handle the tracebacks in SystemExit traps correctly. The previous
3524 handle the tracebacks in SystemExit traps correctly. The previous
3520 code (through interact) was printing more of the stack than
3525 code (through interact) was printing more of the stack than
3521 necessary, showing IPython internal code to the user.
3526 necessary, showing IPython internal code to the user.
3522
3527
3523 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3528 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3524 default. Now that the default at the confirmation prompt is yes,
3529 default. Now that the default at the confirmation prompt is yes,
3525 it's not so intrusive. François' argument that ipython sessions
3530 it's not so intrusive. François' argument that ipython sessions
3526 tend to be complex enough not to lose them from an accidental C-d,
3531 tend to be complex enough not to lose them from an accidental C-d,
3527 is a valid one.
3532 is a valid one.
3528
3533
3529 * IPython/iplib.py (InteractiveShell.interact): added a
3534 * IPython/iplib.py (InteractiveShell.interact): added a
3530 showtraceback() call to the SystemExit trap, and modified the exit
3535 showtraceback() call to the SystemExit trap, and modified the exit
3531 confirmation to have yes as the default.
3536 confirmation to have yes as the default.
3532
3537
3533 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3538 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3534 this file. It's been gone from the code for a long time, this was
3539 this file. It's been gone from the code for a long time, this was
3535 simply leftover junk.
3540 simply leftover junk.
3536
3541
3537 2002-11-01 Fernando Perez <fperez@colorado.edu>
3542 2002-11-01 Fernando Perez <fperez@colorado.edu>
3538
3543
3539 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3544 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3540 added. If set, IPython now traps EOF and asks for
3545 added. If set, IPython now traps EOF and asks for
3541 confirmation. After a request by François Pinard.
3546 confirmation. After a request by François Pinard.
3542
3547
3543 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3548 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3544 of @abort, and with a new (better) mechanism for handling the
3549 of @abort, and with a new (better) mechanism for handling the
3545 exceptions.
3550 exceptions.
3546
3551
3547 2002-10-27 Fernando Perez <fperez@colorado.edu>
3552 2002-10-27 Fernando Perez <fperez@colorado.edu>
3548
3553
3549 * IPython/usage.py (__doc__): updated the --help information and
3554 * IPython/usage.py (__doc__): updated the --help information and
3550 the ipythonrc file to indicate that -log generates
3555 the ipythonrc file to indicate that -log generates
3551 ./ipython.log. Also fixed the corresponding info in @logstart.
3556 ./ipython.log. Also fixed the corresponding info in @logstart.
3552 This and several other fixes in the manuals thanks to reports by
3557 This and several other fixes in the manuals thanks to reports by
3553 François Pinard <pinard-AT-iro.umontreal.ca>.
3558 François Pinard <pinard-AT-iro.umontreal.ca>.
3554
3559
3555 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3560 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3556 refer to @logstart (instead of @log, which doesn't exist).
3561 refer to @logstart (instead of @log, which doesn't exist).
3557
3562
3558 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3563 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3559 AttributeError crash. Thanks to Christopher Armstrong
3564 AttributeError crash. Thanks to Christopher Armstrong
3560 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3565 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3561 introduced recently (in 0.2.14pre37) with the fix to the eval
3566 introduced recently (in 0.2.14pre37) with the fix to the eval
3562 problem mentioned below.
3567 problem mentioned below.
3563
3568
3564 2002-10-17 Fernando Perez <fperez@colorado.edu>
3569 2002-10-17 Fernando Perez <fperez@colorado.edu>
3565
3570
3566 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3571 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3567 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3572 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3568
3573
3569 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3574 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3570 this function to fix a problem reported by Alex Schmolck. He saw
3575 this function to fix a problem reported by Alex Schmolck. He saw
3571 it with list comprehensions and generators, which were getting
3576 it with list comprehensions and generators, which were getting
3572 called twice. The real problem was an 'eval' call in testing for
3577 called twice. The real problem was an 'eval' call in testing for
3573 automagic which was evaluating the input line silently.
3578 automagic which was evaluating the input line silently.
3574
3579
3575 This is a potentially very nasty bug, if the input has side
3580 This is a potentially very nasty bug, if the input has side
3576 effects which must not be repeated. The code is much cleaner now,
3581 effects which must not be repeated. The code is much cleaner now,
3577 without any blanket 'except' left and with a regexp test for
3582 without any blanket 'except' left and with a regexp test for
3578 actual function names.
3583 actual function names.
3579
3584
3580 But an eval remains, which I'm not fully comfortable with. I just
3585 But an eval remains, which I'm not fully comfortable with. I just
3581 don't know how to find out if an expression could be a callable in
3586 don't know how to find out if an expression could be a callable in
3582 the user's namespace without doing an eval on the string. However
3587 the user's namespace without doing an eval on the string. However
3583 that string is now much more strictly checked so that no code
3588 that string is now much more strictly checked so that no code
3584 slips by, so the eval should only happen for things that can
3589 slips by, so the eval should only happen for things that can
3585 really be only function/method names.
3590 really be only function/method names.
3586
3591
3587 2002-10-15 Fernando Perez <fperez@colorado.edu>
3592 2002-10-15 Fernando Perez <fperez@colorado.edu>
3588
3593
3589 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3594 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3590 OSX information to main manual, removed README_Mac_OSX file from
3595 OSX information to main manual, removed README_Mac_OSX file from
3591 distribution. Also updated credits for recent additions.
3596 distribution. Also updated credits for recent additions.
3592
3597
3593 2002-10-10 Fernando Perez <fperez@colorado.edu>
3598 2002-10-10 Fernando Perez <fperez@colorado.edu>
3594
3599
3595 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3600 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3596 terminal-related issues. Many thanks to Andrea Riciputi
3601 terminal-related issues. Many thanks to Andrea Riciputi
3597 <andrea.riciputi-AT-libero.it> for writing it.
3602 <andrea.riciputi-AT-libero.it> for writing it.
3598
3603
3599 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3604 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3600 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3605 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3601
3606
3602 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3607 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3603 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3608 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3604 <syver-en-AT-online.no> who both submitted patches for this problem.
3609 <syver-en-AT-online.no> who both submitted patches for this problem.
3605
3610
3606 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3611 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3607 global embedding to make sure that things don't overwrite user
3612 global embedding to make sure that things don't overwrite user
3608 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3613 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3609
3614
3610 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3615 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3611 compatibility. Thanks to Hayden Callow
3616 compatibility. Thanks to Hayden Callow
3612 <h.callow-AT-elec.canterbury.ac.nz>
3617 <h.callow-AT-elec.canterbury.ac.nz>
3613
3618
3614 2002-10-04 Fernando Perez <fperez@colorado.edu>
3619 2002-10-04 Fernando Perez <fperez@colorado.edu>
3615
3620
3616 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3621 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3617 Gnuplot.File objects.
3622 Gnuplot.File objects.
3618
3623
3619 2002-07-23 Fernando Perez <fperez@colorado.edu>
3624 2002-07-23 Fernando Perez <fperez@colorado.edu>
3620
3625
3621 * IPython/genutils.py (timing): Added timings() and timing() for
3626 * IPython/genutils.py (timing): Added timings() and timing() for
3622 quick access to the most commonly needed data, the execution
3627 quick access to the most commonly needed data, the execution
3623 times. Old timing() renamed to timings_out().
3628 times. Old timing() renamed to timings_out().
3624
3629
3625 2002-07-18 Fernando Perez <fperez@colorado.edu>
3630 2002-07-18 Fernando Perez <fperez@colorado.edu>
3626
3631
3627 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3632 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3628 bug with nested instances disrupting the parent's tab completion.
3633 bug with nested instances disrupting the parent's tab completion.
3629
3634
3630 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3635 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3631 all_completions code to begin the emacs integration.
3636 all_completions code to begin the emacs integration.
3632
3637
3633 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3638 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3634 argument to allow titling individual arrays when plotting.
3639 argument to allow titling individual arrays when plotting.
3635
3640
3636 2002-07-15 Fernando Perez <fperez@colorado.edu>
3641 2002-07-15 Fernando Perez <fperez@colorado.edu>
3637
3642
3638 * setup.py (make_shortcut): changed to retrieve the value of
3643 * setup.py (make_shortcut): changed to retrieve the value of
3639 'Program Files' directory from the registry (this value changes in
3644 'Program Files' directory from the registry (this value changes in
3640 non-english versions of Windows). Thanks to Thomas Fanslau
3645 non-english versions of Windows). Thanks to Thomas Fanslau
3641 <tfanslau-AT-gmx.de> for the report.
3646 <tfanslau-AT-gmx.de> for the report.
3642
3647
3643 2002-07-10 Fernando Perez <fperez@colorado.edu>
3648 2002-07-10 Fernando Perez <fperez@colorado.edu>
3644
3649
3645 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3650 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3646 a bug in pdb, which crashes if a line with only whitespace is
3651 a bug in pdb, which crashes if a line with only whitespace is
3647 entered. Bug report submitted to sourceforge.
3652 entered. Bug report submitted to sourceforge.
3648
3653
3649 2002-07-09 Fernando Perez <fperez@colorado.edu>
3654 2002-07-09 Fernando Perez <fperez@colorado.edu>
3650
3655
3651 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3656 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3652 reporting exceptions (it's a bug in inspect.py, I just set a
3657 reporting exceptions (it's a bug in inspect.py, I just set a
3653 workaround).
3658 workaround).
3654
3659
3655 2002-07-08 Fernando Perez <fperez@colorado.edu>
3660 2002-07-08 Fernando Perez <fperez@colorado.edu>
3656
3661
3657 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3662 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3658 __IPYTHON__ in __builtins__ to show up in user_ns.
3663 __IPYTHON__ in __builtins__ to show up in user_ns.
3659
3664
3660 2002-07-03 Fernando Perez <fperez@colorado.edu>
3665 2002-07-03 Fernando Perez <fperez@colorado.edu>
3661
3666
3662 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3667 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3663 name from @gp_set_instance to @gp_set_default.
3668 name from @gp_set_instance to @gp_set_default.
3664
3669
3665 * IPython/ipmaker.py (make_IPython): default editor value set to
3670 * IPython/ipmaker.py (make_IPython): default editor value set to
3666 '0' (a string), to match the rc file. Otherwise will crash when
3671 '0' (a string), to match the rc file. Otherwise will crash when
3667 .strip() is called on it.
3672 .strip() is called on it.
3668
3673
3669
3674
3670 2002-06-28 Fernando Perez <fperez@colorado.edu>
3675 2002-06-28 Fernando Perez <fperez@colorado.edu>
3671
3676
3672 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3677 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3673 of files in current directory when a file is executed via
3678 of files in current directory when a file is executed via
3674 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3679 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3675
3680
3676 * setup.py (manfiles): fix for rpm builds, submitted by RA
3681 * setup.py (manfiles): fix for rpm builds, submitted by RA
3677 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3682 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3678
3683
3679 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3684 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3680 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3685 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3681 string!). A. Schmolck caught this one.
3686 string!). A. Schmolck caught this one.
3682
3687
3683 2002-06-27 Fernando Perez <fperez@colorado.edu>
3688 2002-06-27 Fernando Perez <fperez@colorado.edu>
3684
3689
3685 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3690 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3686 defined files at the cmd line. __name__ wasn't being set to
3691 defined files at the cmd line. __name__ wasn't being set to
3687 __main__.
3692 __main__.
3688
3693
3689 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3694 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3690 regular lists and tuples besides Numeric arrays.
3695 regular lists and tuples besides Numeric arrays.
3691
3696
3692 * IPython/Prompts.py (CachedOutput.__call__): Added output
3697 * IPython/Prompts.py (CachedOutput.__call__): Added output
3693 supression for input ending with ';'. Similar to Mathematica and
3698 supression for input ending with ';'. Similar to Mathematica and
3694 Matlab. The _* vars and Out[] list are still updated, just like
3699 Matlab. The _* vars and Out[] list are still updated, just like
3695 Mathematica behaves.
3700 Mathematica behaves.
3696
3701
3697 2002-06-25 Fernando Perez <fperez@colorado.edu>
3702 2002-06-25 Fernando Perez <fperez@colorado.edu>
3698
3703
3699 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3704 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3700 .ini extensions for profiels under Windows.
3705 .ini extensions for profiels under Windows.
3701
3706
3702 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3707 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3703 string form. Fix contributed by Alexander Schmolck
3708 string form. Fix contributed by Alexander Schmolck
3704 <a.schmolck-AT-gmx.net>
3709 <a.schmolck-AT-gmx.net>
3705
3710
3706 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3711 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3707 pre-configured Gnuplot instance.
3712 pre-configured Gnuplot instance.
3708
3713
3709 2002-06-21 Fernando Perez <fperez@colorado.edu>
3714 2002-06-21 Fernando Perez <fperez@colorado.edu>
3710
3715
3711 * IPython/numutils.py (exp_safe): new function, works around the
3716 * IPython/numutils.py (exp_safe): new function, works around the
3712 underflow problems in Numeric.
3717 underflow problems in Numeric.
3713 (log2): New fn. Safe log in base 2: returns exact integer answer
3718 (log2): New fn. Safe log in base 2: returns exact integer answer
3714 for exact integer powers of 2.
3719 for exact integer powers of 2.
3715
3720
3716 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3721 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3717 properly.
3722 properly.
3718
3723
3719 2002-06-20 Fernando Perez <fperez@colorado.edu>
3724 2002-06-20 Fernando Perez <fperez@colorado.edu>
3720
3725
3721 * IPython/genutils.py (timing): new function like
3726 * IPython/genutils.py (timing): new function like
3722 Mathematica's. Similar to time_test, but returns more info.
3727 Mathematica's. Similar to time_test, but returns more info.
3723
3728
3724 2002-06-18 Fernando Perez <fperez@colorado.edu>
3729 2002-06-18 Fernando Perez <fperez@colorado.edu>
3725
3730
3726 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3731 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3727 according to Mike Heeter's suggestions.
3732 according to Mike Heeter's suggestions.
3728
3733
3729 2002-06-16 Fernando Perez <fperez@colorado.edu>
3734 2002-06-16 Fernando Perez <fperez@colorado.edu>
3730
3735
3731 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3736 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3732 system. GnuplotMagic is gone as a user-directory option. New files
3737 system. GnuplotMagic is gone as a user-directory option. New files
3733 make it easier to use all the gnuplot stuff both from external
3738 make it easier to use all the gnuplot stuff both from external
3734 programs as well as from IPython. Had to rewrite part of
3739 programs as well as from IPython. Had to rewrite part of
3735 hardcopy() b/c of a strange bug: often the ps files simply don't
3740 hardcopy() b/c of a strange bug: often the ps files simply don't
3736 get created, and require a repeat of the command (often several
3741 get created, and require a repeat of the command (often several
3737 times).
3742 times).
3738
3743
3739 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3744 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3740 resolve output channel at call time, so that if sys.stderr has
3745 resolve output channel at call time, so that if sys.stderr has
3741 been redirected by user this gets honored.
3746 been redirected by user this gets honored.
3742
3747
3743 2002-06-13 Fernando Perez <fperez@colorado.edu>
3748 2002-06-13 Fernando Perez <fperez@colorado.edu>
3744
3749
3745 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3750 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3746 IPShell. Kept a copy with the old names to avoid breaking people's
3751 IPShell. Kept a copy with the old names to avoid breaking people's
3747 embedded code.
3752 embedded code.
3748
3753
3749 * IPython/ipython: simplified it to the bare minimum after
3754 * IPython/ipython: simplified it to the bare minimum after
3750 Holger's suggestions. Added info about how to use it in
3755 Holger's suggestions. Added info about how to use it in
3751 PYTHONSTARTUP.
3756 PYTHONSTARTUP.
3752
3757
3753 * IPython/Shell.py (IPythonShell): changed the options passing
3758 * IPython/Shell.py (IPythonShell): changed the options passing
3754 from a string with funky %s replacements to a straight list. Maybe
3759 from a string with funky %s replacements to a straight list. Maybe
3755 a bit more typing, but it follows sys.argv conventions, so there's
3760 a bit more typing, but it follows sys.argv conventions, so there's
3756 less special-casing to remember.
3761 less special-casing to remember.
3757
3762
3758 2002-06-12 Fernando Perez <fperez@colorado.edu>
3763 2002-06-12 Fernando Perez <fperez@colorado.edu>
3759
3764
3760 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3765 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3761 command. Thanks to a suggestion by Mike Heeter.
3766 command. Thanks to a suggestion by Mike Heeter.
3762 (Magic.magic_pfile): added behavior to look at filenames if given
3767 (Magic.magic_pfile): added behavior to look at filenames if given
3763 arg is not a defined object.
3768 arg is not a defined object.
3764 (Magic.magic_save): New @save function to save code snippets. Also
3769 (Magic.magic_save): New @save function to save code snippets. Also
3765 a Mike Heeter idea.
3770 a Mike Heeter idea.
3766
3771
3767 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3772 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3768 plot() and replot(). Much more convenient now, especially for
3773 plot() and replot(). Much more convenient now, especially for
3769 interactive use.
3774 interactive use.
3770
3775
3771 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3776 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3772 filenames.
3777 filenames.
3773
3778
3774 2002-06-02 Fernando Perez <fperez@colorado.edu>
3779 2002-06-02 Fernando Perez <fperez@colorado.edu>
3775
3780
3776 * IPython/Struct.py (Struct.__init__): modified to admit
3781 * IPython/Struct.py (Struct.__init__): modified to admit
3777 initialization via another struct.
3782 initialization via another struct.
3778
3783
3779 * IPython/genutils.py (SystemExec.__init__): New stateful
3784 * IPython/genutils.py (SystemExec.__init__): New stateful
3780 interface to xsys and bq. Useful for writing system scripts.
3785 interface to xsys and bq. Useful for writing system scripts.
3781
3786
3782 2002-05-30 Fernando Perez <fperez@colorado.edu>
3787 2002-05-30 Fernando Perez <fperez@colorado.edu>
3783
3788
3784 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3789 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3785 documents. This will make the user download smaller (it's getting
3790 documents. This will make the user download smaller (it's getting
3786 too big).
3791 too big).
3787
3792
3788 2002-05-29 Fernando Perez <fperez@colorado.edu>
3793 2002-05-29 Fernando Perez <fperez@colorado.edu>
3789
3794
3790 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3795 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3791 fix problems with shelve and pickle. Seems to work, but I don't
3796 fix problems with shelve and pickle. Seems to work, but I don't
3792 know if corner cases break it. Thanks to Mike Heeter
3797 know if corner cases break it. Thanks to Mike Heeter
3793 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3798 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3794
3799
3795 2002-05-24 Fernando Perez <fperez@colorado.edu>
3800 2002-05-24 Fernando Perez <fperez@colorado.edu>
3796
3801
3797 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3802 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3798 macros having broken.
3803 macros having broken.
3799
3804
3800 2002-05-21 Fernando Perez <fperez@colorado.edu>
3805 2002-05-21 Fernando Perez <fperez@colorado.edu>
3801
3806
3802 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3807 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3803 introduced logging bug: all history before logging started was
3808 introduced logging bug: all history before logging started was
3804 being written one character per line! This came from the redesign
3809 being written one character per line! This came from the redesign
3805 of the input history as a special list which slices to strings,
3810 of the input history as a special list which slices to strings,
3806 not to lists.
3811 not to lists.
3807
3812
3808 2002-05-20 Fernando Perez <fperez@colorado.edu>
3813 2002-05-20 Fernando Perez <fperez@colorado.edu>
3809
3814
3810 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3815 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3811 be an attribute of all classes in this module. The design of these
3816 be an attribute of all classes in this module. The design of these
3812 classes needs some serious overhauling.
3817 classes needs some serious overhauling.
3813
3818
3814 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3819 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3815 which was ignoring '_' in option names.
3820 which was ignoring '_' in option names.
3816
3821
3817 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3822 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3818 'Verbose_novars' to 'Context' and made it the new default. It's a
3823 'Verbose_novars' to 'Context' and made it the new default. It's a
3819 bit more readable and also safer than verbose.
3824 bit more readable and also safer than verbose.
3820
3825
3821 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3826 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3822 triple-quoted strings.
3827 triple-quoted strings.
3823
3828
3824 * IPython/OInspect.py (__all__): new module exposing the object
3829 * IPython/OInspect.py (__all__): new module exposing the object
3825 introspection facilities. Now the corresponding magics are dummy
3830 introspection facilities. Now the corresponding magics are dummy
3826 wrappers around this. Having this module will make it much easier
3831 wrappers around this. Having this module will make it much easier
3827 to put these functions into our modified pdb.
3832 to put these functions into our modified pdb.
3828 This new object inspector system uses the new colorizing module,
3833 This new object inspector system uses the new colorizing module,
3829 so source code and other things are nicely syntax highlighted.
3834 so source code and other things are nicely syntax highlighted.
3830
3835
3831 2002-05-18 Fernando Perez <fperez@colorado.edu>
3836 2002-05-18 Fernando Perez <fperez@colorado.edu>
3832
3837
3833 * IPython/ColorANSI.py: Split the coloring tools into a separate
3838 * IPython/ColorANSI.py: Split the coloring tools into a separate
3834 module so I can use them in other code easier (they were part of
3839 module so I can use them in other code easier (they were part of
3835 ultraTB).
3840 ultraTB).
3836
3841
3837 2002-05-17 Fernando Perez <fperez@colorado.edu>
3842 2002-05-17 Fernando Perez <fperez@colorado.edu>
3838
3843
3839 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3844 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3840 fixed it to set the global 'g' also to the called instance, as
3845 fixed it to set the global 'g' also to the called instance, as
3841 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3846 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3842 user's 'g' variables).
3847 user's 'g' variables).
3843
3848
3844 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3849 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3845 global variables (aliases to _ih,_oh) so that users which expect
3850 global variables (aliases to _ih,_oh) so that users which expect
3846 In[5] or Out[7] to work aren't unpleasantly surprised.
3851 In[5] or Out[7] to work aren't unpleasantly surprised.
3847 (InputList.__getslice__): new class to allow executing slices of
3852 (InputList.__getslice__): new class to allow executing slices of
3848 input history directly. Very simple class, complements the use of
3853 input history directly. Very simple class, complements the use of
3849 macros.
3854 macros.
3850
3855
3851 2002-05-16 Fernando Perez <fperez@colorado.edu>
3856 2002-05-16 Fernando Perez <fperez@colorado.edu>
3852
3857
3853 * setup.py (docdirbase): make doc directory be just doc/IPython
3858 * setup.py (docdirbase): make doc directory be just doc/IPython
3854 without version numbers, it will reduce clutter for users.
3859 without version numbers, it will reduce clutter for users.
3855
3860
3856 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3861 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3857 execfile call to prevent possible memory leak. See for details:
3862 execfile call to prevent possible memory leak. See for details:
3858 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3863 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3859
3864
3860 2002-05-15 Fernando Perez <fperez@colorado.edu>
3865 2002-05-15 Fernando Perez <fperez@colorado.edu>
3861
3866
3862 * IPython/Magic.py (Magic.magic_psource): made the object
3867 * IPython/Magic.py (Magic.magic_psource): made the object
3863 introspection names be more standard: pdoc, pdef, pfile and
3868 introspection names be more standard: pdoc, pdef, pfile and
3864 psource. They all print/page their output, and it makes
3869 psource. They all print/page their output, and it makes
3865 remembering them easier. Kept old names for compatibility as
3870 remembering them easier. Kept old names for compatibility as
3866 aliases.
3871 aliases.
3867
3872
3868 2002-05-14 Fernando Perez <fperez@colorado.edu>
3873 2002-05-14 Fernando Perez <fperez@colorado.edu>
3869
3874
3870 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3875 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3871 what the mouse problem was. The trick is to use gnuplot with temp
3876 what the mouse problem was. The trick is to use gnuplot with temp
3872 files and NOT with pipes (for data communication), because having
3877 files and NOT with pipes (for data communication), because having
3873 both pipes and the mouse on is bad news.
3878 both pipes and the mouse on is bad news.
3874
3879
3875 2002-05-13 Fernando Perez <fperez@colorado.edu>
3880 2002-05-13 Fernando Perez <fperez@colorado.edu>
3876
3881
3877 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3882 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3878 bug. Information would be reported about builtins even when
3883 bug. Information would be reported about builtins even when
3879 user-defined functions overrode them.
3884 user-defined functions overrode them.
3880
3885
3881 2002-05-11 Fernando Perez <fperez@colorado.edu>
3886 2002-05-11 Fernando Perez <fperez@colorado.edu>
3882
3887
3883 * IPython/__init__.py (__all__): removed FlexCompleter from
3888 * IPython/__init__.py (__all__): removed FlexCompleter from
3884 __all__ so that things don't fail in platforms without readline.
3889 __all__ so that things don't fail in platforms without readline.
3885
3890
3886 2002-05-10 Fernando Perez <fperez@colorado.edu>
3891 2002-05-10 Fernando Perez <fperez@colorado.edu>
3887
3892
3888 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3893 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3889 it requires Numeric, effectively making Numeric a dependency for
3894 it requires Numeric, effectively making Numeric a dependency for
3890 IPython.
3895 IPython.
3891
3896
3892 * Released 0.2.13
3897 * Released 0.2.13
3893
3898
3894 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3899 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3895 profiler interface. Now all the major options from the profiler
3900 profiler interface. Now all the major options from the profiler
3896 module are directly supported in IPython, both for single
3901 module are directly supported in IPython, both for single
3897 expressions (@prun) and for full programs (@run -p).
3902 expressions (@prun) and for full programs (@run -p).
3898
3903
3899 2002-05-09 Fernando Perez <fperez@colorado.edu>
3904 2002-05-09 Fernando Perez <fperez@colorado.edu>
3900
3905
3901 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3906 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3902 magic properly formatted for screen.
3907 magic properly formatted for screen.
3903
3908
3904 * setup.py (make_shortcut): Changed things to put pdf version in
3909 * setup.py (make_shortcut): Changed things to put pdf version in
3905 doc/ instead of doc/manual (had to change lyxport a bit).
3910 doc/ instead of doc/manual (had to change lyxport a bit).
3906
3911
3907 * IPython/Magic.py (Profile.string_stats): made profile runs go
3912 * IPython/Magic.py (Profile.string_stats): made profile runs go
3908 through pager (they are long and a pager allows searching, saving,
3913 through pager (they are long and a pager allows searching, saving,
3909 etc.)
3914 etc.)
3910
3915
3911 2002-05-08 Fernando Perez <fperez@colorado.edu>
3916 2002-05-08 Fernando Perez <fperez@colorado.edu>
3912
3917
3913 * Released 0.2.12
3918 * Released 0.2.12
3914
3919
3915 2002-05-06 Fernando Perez <fperez@colorado.edu>
3920 2002-05-06 Fernando Perez <fperez@colorado.edu>
3916
3921
3917 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3922 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3918 introduced); 'hist n1 n2' was broken.
3923 introduced); 'hist n1 n2' was broken.
3919 (Magic.magic_pdb): added optional on/off arguments to @pdb
3924 (Magic.magic_pdb): added optional on/off arguments to @pdb
3920 (Magic.magic_run): added option -i to @run, which executes code in
3925 (Magic.magic_run): added option -i to @run, which executes code in
3921 the IPython namespace instead of a clean one. Also added @irun as
3926 the IPython namespace instead of a clean one. Also added @irun as
3922 an alias to @run -i.
3927 an alias to @run -i.
3923
3928
3924 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3929 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3925 fixed (it didn't really do anything, the namespaces were wrong).
3930 fixed (it didn't really do anything, the namespaces were wrong).
3926
3931
3927 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3932 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3928
3933
3929 * IPython/__init__.py (__all__): Fixed package namespace, now
3934 * IPython/__init__.py (__all__): Fixed package namespace, now
3930 'import IPython' does give access to IPython.<all> as
3935 'import IPython' does give access to IPython.<all> as
3931 expected. Also renamed __release__ to Release.
3936 expected. Also renamed __release__ to Release.
3932
3937
3933 * IPython/Debugger.py (__license__): created new Pdb class which
3938 * IPython/Debugger.py (__license__): created new Pdb class which
3934 functions like a drop-in for the normal pdb.Pdb but does NOT
3939 functions like a drop-in for the normal pdb.Pdb but does NOT
3935 import readline by default. This way it doesn't muck up IPython's
3940 import readline by default. This way it doesn't muck up IPython's
3936 readline handling, and now tab-completion finally works in the
3941 readline handling, and now tab-completion finally works in the
3937 debugger -- sort of. It completes things globally visible, but the
3942 debugger -- sort of. It completes things globally visible, but the
3938 completer doesn't track the stack as pdb walks it. That's a bit
3943 completer doesn't track the stack as pdb walks it. That's a bit
3939 tricky, and I'll have to implement it later.
3944 tricky, and I'll have to implement it later.
3940
3945
3941 2002-05-05 Fernando Perez <fperez@colorado.edu>
3946 2002-05-05 Fernando Perez <fperez@colorado.edu>
3942
3947
3943 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3948 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3944 magic docstrings when printed via ? (explicit \'s were being
3949 magic docstrings when printed via ? (explicit \'s were being
3945 printed).
3950 printed).
3946
3951
3947 * IPython/ipmaker.py (make_IPython): fixed namespace
3952 * IPython/ipmaker.py (make_IPython): fixed namespace
3948 identification bug. Now variables loaded via logs or command-line
3953 identification bug. Now variables loaded via logs or command-line
3949 files are recognized in the interactive namespace by @who.
3954 files are recognized in the interactive namespace by @who.
3950
3955
3951 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3956 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3952 log replay system stemming from the string form of Structs.
3957 log replay system stemming from the string form of Structs.
3953
3958
3954 * IPython/Magic.py (Macro.__init__): improved macros to properly
3959 * IPython/Magic.py (Macro.__init__): improved macros to properly
3955 handle magic commands in them.
3960 handle magic commands in them.
3956 (Magic.magic_logstart): usernames are now expanded so 'logstart
3961 (Magic.magic_logstart): usernames are now expanded so 'logstart
3957 ~/mylog' now works.
3962 ~/mylog' now works.
3958
3963
3959 * IPython/iplib.py (complete): fixed bug where paths starting with
3964 * IPython/iplib.py (complete): fixed bug where paths starting with
3960 '/' would be completed as magic names.
3965 '/' would be completed as magic names.
3961
3966
3962 2002-05-04 Fernando Perez <fperez@colorado.edu>
3967 2002-05-04 Fernando Perez <fperez@colorado.edu>
3963
3968
3964 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3969 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3965 allow running full programs under the profiler's control.
3970 allow running full programs under the profiler's control.
3966
3971
3967 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3972 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3968 mode to report exceptions verbosely but without formatting
3973 mode to report exceptions verbosely but without formatting
3969 variables. This addresses the issue of ipython 'freezing' (it's
3974 variables. This addresses the issue of ipython 'freezing' (it's
3970 not frozen, but caught in an expensive formatting loop) when huge
3975 not frozen, but caught in an expensive formatting loop) when huge
3971 variables are in the context of an exception.
3976 variables are in the context of an exception.
3972 (VerboseTB.text): Added '--->' markers at line where exception was
3977 (VerboseTB.text): Added '--->' markers at line where exception was
3973 triggered. Much clearer to read, especially in NoColor modes.
3978 triggered. Much clearer to read, especially in NoColor modes.
3974
3979
3975 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3980 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3976 implemented in reverse when changing to the new parse_options().
3981 implemented in reverse when changing to the new parse_options().
3977
3982
3978 2002-05-03 Fernando Perez <fperez@colorado.edu>
3983 2002-05-03 Fernando Perez <fperez@colorado.edu>
3979
3984
3980 * IPython/Magic.py (Magic.parse_options): new function so that
3985 * IPython/Magic.py (Magic.parse_options): new function so that
3981 magics can parse options easier.
3986 magics can parse options easier.
3982 (Magic.magic_prun): new function similar to profile.run(),
3987 (Magic.magic_prun): new function similar to profile.run(),
3983 suggested by Chris Hart.
3988 suggested by Chris Hart.
3984 (Magic.magic_cd): fixed behavior so that it only changes if
3989 (Magic.magic_cd): fixed behavior so that it only changes if
3985 directory actually is in history.
3990 directory actually is in history.
3986
3991
3987 * IPython/usage.py (__doc__): added information about potential
3992 * IPython/usage.py (__doc__): added information about potential
3988 slowness of Verbose exception mode when there are huge data
3993 slowness of Verbose exception mode when there are huge data
3989 structures to be formatted (thanks to Archie Paulson).
3994 structures to be formatted (thanks to Archie Paulson).
3990
3995
3991 * IPython/ipmaker.py (make_IPython): Changed default logging
3996 * IPython/ipmaker.py (make_IPython): Changed default logging
3992 (when simply called with -log) to use curr_dir/ipython.log in
3997 (when simply called with -log) to use curr_dir/ipython.log in
3993 rotate mode. Fixed crash which was occuring with -log before
3998 rotate mode. Fixed crash which was occuring with -log before
3994 (thanks to Jim Boyle).
3999 (thanks to Jim Boyle).
3995
4000
3996 2002-05-01 Fernando Perez <fperez@colorado.edu>
4001 2002-05-01 Fernando Perez <fperez@colorado.edu>
3997
4002
3998 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4003 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3999 was nasty -- though somewhat of a corner case).
4004 was nasty -- though somewhat of a corner case).
4000
4005
4001 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4006 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4002 text (was a bug).
4007 text (was a bug).
4003
4008
4004 2002-04-30 Fernando Perez <fperez@colorado.edu>
4009 2002-04-30 Fernando Perez <fperez@colorado.edu>
4005
4010
4006 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4011 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4007 a print after ^D or ^C from the user so that the In[] prompt
4012 a print after ^D or ^C from the user so that the In[] prompt
4008 doesn't over-run the gnuplot one.
4013 doesn't over-run the gnuplot one.
4009
4014
4010 2002-04-29 Fernando Perez <fperez@colorado.edu>
4015 2002-04-29 Fernando Perez <fperez@colorado.edu>
4011
4016
4012 * Released 0.2.10
4017 * Released 0.2.10
4013
4018
4014 * IPython/__release__.py (version): get date dynamically.
4019 * IPython/__release__.py (version): get date dynamically.
4015
4020
4016 * Misc. documentation updates thanks to Arnd's comments. Also ran
4021 * Misc. documentation updates thanks to Arnd's comments. Also ran
4017 a full spellcheck on the manual (hadn't been done in a while).
4022 a full spellcheck on the manual (hadn't been done in a while).
4018
4023
4019 2002-04-27 Fernando Perez <fperez@colorado.edu>
4024 2002-04-27 Fernando Perez <fperez@colorado.edu>
4020
4025
4021 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4026 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4022 starting a log in mid-session would reset the input history list.
4027 starting a log in mid-session would reset the input history list.
4023
4028
4024 2002-04-26 Fernando Perez <fperez@colorado.edu>
4029 2002-04-26 Fernando Perez <fperez@colorado.edu>
4025
4030
4026 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4031 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4027 all files were being included in an update. Now anything in
4032 all files were being included in an update. Now anything in
4028 UserConfig that matches [A-Za-z]*.py will go (this excludes
4033 UserConfig that matches [A-Za-z]*.py will go (this excludes
4029 __init__.py)
4034 __init__.py)
4030
4035
4031 2002-04-25 Fernando Perez <fperez@colorado.edu>
4036 2002-04-25 Fernando Perez <fperez@colorado.edu>
4032
4037
4033 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4038 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4034 to __builtins__ so that any form of embedded or imported code can
4039 to __builtins__ so that any form of embedded or imported code can
4035 test for being inside IPython.
4040 test for being inside IPython.
4036
4041
4037 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4042 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4038 changed to GnuplotMagic because it's now an importable module,
4043 changed to GnuplotMagic because it's now an importable module,
4039 this makes the name follow that of the standard Gnuplot module.
4044 this makes the name follow that of the standard Gnuplot module.
4040 GnuplotMagic can now be loaded at any time in mid-session.
4045 GnuplotMagic can now be loaded at any time in mid-session.
4041
4046
4042 2002-04-24 Fernando Perez <fperez@colorado.edu>
4047 2002-04-24 Fernando Perez <fperez@colorado.edu>
4043
4048
4044 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4049 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4045 the globals (IPython has its own namespace) and the
4050 the globals (IPython has its own namespace) and the
4046 PhysicalQuantity stuff is much better anyway.
4051 PhysicalQuantity stuff is much better anyway.
4047
4052
4048 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4053 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4049 embedding example to standard user directory for
4054 embedding example to standard user directory for
4050 distribution. Also put it in the manual.
4055 distribution. Also put it in the manual.
4051
4056
4052 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4057 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4053 instance as first argument (so it doesn't rely on some obscure
4058 instance as first argument (so it doesn't rely on some obscure
4054 hidden global).
4059 hidden global).
4055
4060
4056 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4061 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4057 delimiters. While it prevents ().TAB from working, it allows
4062 delimiters. While it prevents ().TAB from working, it allows
4058 completions in open (... expressions. This is by far a more common
4063 completions in open (... expressions. This is by far a more common
4059 case.
4064 case.
4060
4065
4061 2002-04-23 Fernando Perez <fperez@colorado.edu>
4066 2002-04-23 Fernando Perez <fperez@colorado.edu>
4062
4067
4063 * IPython/Extensions/InterpreterPasteInput.py: new
4068 * IPython/Extensions/InterpreterPasteInput.py: new
4064 syntax-processing module for pasting lines with >>> or ... at the
4069 syntax-processing module for pasting lines with >>> or ... at the
4065 start.
4070 start.
4066
4071
4067 * IPython/Extensions/PhysicalQ_Interactive.py
4072 * IPython/Extensions/PhysicalQ_Interactive.py
4068 (PhysicalQuantityInteractive.__int__): fixed to work with either
4073 (PhysicalQuantityInteractive.__int__): fixed to work with either
4069 Numeric or math.
4074 Numeric or math.
4070
4075
4071 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4076 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4072 provided profiles. Now we have:
4077 provided profiles. Now we have:
4073 -math -> math module as * and cmath with its own namespace.
4078 -math -> math module as * and cmath with its own namespace.
4074 -numeric -> Numeric as *, plus gnuplot & grace
4079 -numeric -> Numeric as *, plus gnuplot & grace
4075 -physics -> same as before
4080 -physics -> same as before
4076
4081
4077 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4082 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4078 user-defined magics wouldn't be found by @magic if they were
4083 user-defined magics wouldn't be found by @magic if they were
4079 defined as class methods. Also cleaned up the namespace search
4084 defined as class methods. Also cleaned up the namespace search
4080 logic and the string building (to use %s instead of many repeated
4085 logic and the string building (to use %s instead of many repeated
4081 string adds).
4086 string adds).
4082
4087
4083 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4088 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4084 of user-defined magics to operate with class methods (cleaner, in
4089 of user-defined magics to operate with class methods (cleaner, in
4085 line with the gnuplot code).
4090 line with the gnuplot code).
4086
4091
4087 2002-04-22 Fernando Perez <fperez@colorado.edu>
4092 2002-04-22 Fernando Perez <fperez@colorado.edu>
4088
4093
4089 * setup.py: updated dependency list so that manual is updated when
4094 * setup.py: updated dependency list so that manual is updated when
4090 all included files change.
4095 all included files change.
4091
4096
4092 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4097 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4093 the delimiter removal option (the fix is ugly right now).
4098 the delimiter removal option (the fix is ugly right now).
4094
4099
4095 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4100 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4096 all of the math profile (quicker loading, no conflict between
4101 all of the math profile (quicker loading, no conflict between
4097 g-9.8 and g-gnuplot).
4102 g-9.8 and g-gnuplot).
4098
4103
4099 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4104 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4100 name of post-mortem files to IPython_crash_report.txt.
4105 name of post-mortem files to IPython_crash_report.txt.
4101
4106
4102 * Cleanup/update of the docs. Added all the new readline info and
4107 * Cleanup/update of the docs. Added all the new readline info and
4103 formatted all lists as 'real lists'.
4108 formatted all lists as 'real lists'.
4104
4109
4105 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4110 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4106 tab-completion options, since the full readline parse_and_bind is
4111 tab-completion options, since the full readline parse_and_bind is
4107 now accessible.
4112 now accessible.
4108
4113
4109 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4114 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4110 handling of readline options. Now users can specify any string to
4115 handling of readline options. Now users can specify any string to
4111 be passed to parse_and_bind(), as well as the delimiters to be
4116 be passed to parse_and_bind(), as well as the delimiters to be
4112 removed.
4117 removed.
4113 (InteractiveShell.__init__): Added __name__ to the global
4118 (InteractiveShell.__init__): Added __name__ to the global
4114 namespace so that things like Itpl which rely on its existence
4119 namespace so that things like Itpl which rely on its existence
4115 don't crash.
4120 don't crash.
4116 (InteractiveShell._prefilter): Defined the default with a _ so
4121 (InteractiveShell._prefilter): Defined the default with a _ so
4117 that prefilter() is easier to override, while the default one
4122 that prefilter() is easier to override, while the default one
4118 remains available.
4123 remains available.
4119
4124
4120 2002-04-18 Fernando Perez <fperez@colorado.edu>
4125 2002-04-18 Fernando Perez <fperez@colorado.edu>
4121
4126
4122 * Added information about pdb in the docs.
4127 * Added information about pdb in the docs.
4123
4128
4124 2002-04-17 Fernando Perez <fperez@colorado.edu>
4129 2002-04-17 Fernando Perez <fperez@colorado.edu>
4125
4130
4126 * IPython/ipmaker.py (make_IPython): added rc_override option to
4131 * IPython/ipmaker.py (make_IPython): added rc_override option to
4127 allow passing config options at creation time which may override
4132 allow passing config options at creation time which may override
4128 anything set in the config files or command line. This is
4133 anything set in the config files or command line. This is
4129 particularly useful for configuring embedded instances.
4134 particularly useful for configuring embedded instances.
4130
4135
4131 2002-04-15 Fernando Perez <fperez@colorado.edu>
4136 2002-04-15 Fernando Perez <fperez@colorado.edu>
4132
4137
4133 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4138 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4134 crash embedded instances because of the input cache falling out of
4139 crash embedded instances because of the input cache falling out of
4135 sync with the output counter.
4140 sync with the output counter.
4136
4141
4137 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4142 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4138 mode which calls pdb after an uncaught exception in IPython itself.
4143 mode which calls pdb after an uncaught exception in IPython itself.
4139
4144
4140 2002-04-14 Fernando Perez <fperez@colorado.edu>
4145 2002-04-14 Fernando Perez <fperez@colorado.edu>
4141
4146
4142 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4147 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4143 readline, fix it back after each call.
4148 readline, fix it back after each call.
4144
4149
4145 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4150 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4146 method to force all access via __call__(), which guarantees that
4151 method to force all access via __call__(), which guarantees that
4147 traceback references are properly deleted.
4152 traceback references are properly deleted.
4148
4153
4149 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4154 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4150 improve printing when pprint is in use.
4155 improve printing when pprint is in use.
4151
4156
4152 2002-04-13 Fernando Perez <fperez@colorado.edu>
4157 2002-04-13 Fernando Perez <fperez@colorado.edu>
4153
4158
4154 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4159 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4155 exceptions aren't caught anymore. If the user triggers one, he
4160 exceptions aren't caught anymore. If the user triggers one, he
4156 should know why he's doing it and it should go all the way up,
4161 should know why he's doing it and it should go all the way up,
4157 just like any other exception. So now @abort will fully kill the
4162 just like any other exception. So now @abort will fully kill the
4158 embedded interpreter and the embedding code (unless that happens
4163 embedded interpreter and the embedding code (unless that happens
4159 to catch SystemExit).
4164 to catch SystemExit).
4160
4165
4161 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4166 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4162 and a debugger() method to invoke the interactive pdb debugger
4167 and a debugger() method to invoke the interactive pdb debugger
4163 after printing exception information. Also added the corresponding
4168 after printing exception information. Also added the corresponding
4164 -pdb option and @pdb magic to control this feature, and updated
4169 -pdb option and @pdb magic to control this feature, and updated
4165 the docs. After a suggestion from Christopher Hart
4170 the docs. After a suggestion from Christopher Hart
4166 (hart-AT-caltech.edu).
4171 (hart-AT-caltech.edu).
4167
4172
4168 2002-04-12 Fernando Perez <fperez@colorado.edu>
4173 2002-04-12 Fernando Perez <fperez@colorado.edu>
4169
4174
4170 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4175 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4171 the exception handlers defined by the user (not the CrashHandler)
4176 the exception handlers defined by the user (not the CrashHandler)
4172 so that user exceptions don't trigger an ipython bug report.
4177 so that user exceptions don't trigger an ipython bug report.
4173
4178
4174 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4179 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4175 configurable (it should have always been so).
4180 configurable (it should have always been so).
4176
4181
4177 2002-03-26 Fernando Perez <fperez@colorado.edu>
4182 2002-03-26 Fernando Perez <fperez@colorado.edu>
4178
4183
4179 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4184 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4180 and there to fix embedding namespace issues. This should all be
4185 and there to fix embedding namespace issues. This should all be
4181 done in a more elegant way.
4186 done in a more elegant way.
4182
4187
4183 2002-03-25 Fernando Perez <fperez@colorado.edu>
4188 2002-03-25 Fernando Perez <fperez@colorado.edu>
4184
4189
4185 * IPython/genutils.py (get_home_dir): Try to make it work under
4190 * IPython/genutils.py (get_home_dir): Try to make it work under
4186 win9x also.
4191 win9x also.
4187
4192
4188 2002-03-20 Fernando Perez <fperez@colorado.edu>
4193 2002-03-20 Fernando Perez <fperez@colorado.edu>
4189
4194
4190 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4195 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4191 sys.displayhook untouched upon __init__.
4196 sys.displayhook untouched upon __init__.
4192
4197
4193 2002-03-19 Fernando Perez <fperez@colorado.edu>
4198 2002-03-19 Fernando Perez <fperez@colorado.edu>
4194
4199
4195 * Released 0.2.9 (for embedding bug, basically).
4200 * Released 0.2.9 (for embedding bug, basically).
4196
4201
4197 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4202 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4198 exceptions so that enclosing shell's state can be restored.
4203 exceptions so that enclosing shell's state can be restored.
4199
4204
4200 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4205 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4201 naming conventions in the .ipython/ dir.
4206 naming conventions in the .ipython/ dir.
4202
4207
4203 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4208 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4204 from delimiters list so filenames with - in them get expanded.
4209 from delimiters list so filenames with - in them get expanded.
4205
4210
4206 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4211 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4207 sys.displayhook not being properly restored after an embedded call.
4212 sys.displayhook not being properly restored after an embedded call.
4208
4213
4209 2002-03-18 Fernando Perez <fperez@colorado.edu>
4214 2002-03-18 Fernando Perez <fperez@colorado.edu>
4210
4215
4211 * Released 0.2.8
4216 * Released 0.2.8
4212
4217
4213 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4218 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4214 some files weren't being included in a -upgrade.
4219 some files weren't being included in a -upgrade.
4215 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4220 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4216 on' so that the first tab completes.
4221 on' so that the first tab completes.
4217 (InteractiveShell.handle_magic): fixed bug with spaces around
4222 (InteractiveShell.handle_magic): fixed bug with spaces around
4218 quotes breaking many magic commands.
4223 quotes breaking many magic commands.
4219
4224
4220 * setup.py: added note about ignoring the syntax error messages at
4225 * setup.py: added note about ignoring the syntax error messages at
4221 installation.
4226 installation.
4222
4227
4223 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4228 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4224 streamlining the gnuplot interface, now there's only one magic @gp.
4229 streamlining the gnuplot interface, now there's only one magic @gp.
4225
4230
4226 2002-03-17 Fernando Perez <fperez@colorado.edu>
4231 2002-03-17 Fernando Perez <fperez@colorado.edu>
4227
4232
4228 * IPython/UserConfig/magic_gnuplot.py: new name for the
4233 * IPython/UserConfig/magic_gnuplot.py: new name for the
4229 example-magic_pm.py file. Much enhanced system, now with a shell
4234 example-magic_pm.py file. Much enhanced system, now with a shell
4230 for communicating directly with gnuplot, one command at a time.
4235 for communicating directly with gnuplot, one command at a time.
4231
4236
4232 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4237 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4233 setting __name__=='__main__'.
4238 setting __name__=='__main__'.
4234
4239
4235 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4240 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4236 mini-shell for accessing gnuplot from inside ipython. Should
4241 mini-shell for accessing gnuplot from inside ipython. Should
4237 extend it later for grace access too. Inspired by Arnd's
4242 extend it later for grace access too. Inspired by Arnd's
4238 suggestion.
4243 suggestion.
4239
4244
4240 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4245 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4241 calling magic functions with () in their arguments. Thanks to Arnd
4246 calling magic functions with () in their arguments. Thanks to Arnd
4242 Baecker for pointing this to me.
4247 Baecker for pointing this to me.
4243
4248
4244 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4249 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4245 infinitely for integer or complex arrays (only worked with floats).
4250 infinitely for integer or complex arrays (only worked with floats).
4246
4251
4247 2002-03-16 Fernando Perez <fperez@colorado.edu>
4252 2002-03-16 Fernando Perez <fperez@colorado.edu>
4248
4253
4249 * setup.py: Merged setup and setup_windows into a single script
4254 * setup.py: Merged setup and setup_windows into a single script
4250 which properly handles things for windows users.
4255 which properly handles things for windows users.
4251
4256
4252 2002-03-15 Fernando Perez <fperez@colorado.edu>
4257 2002-03-15 Fernando Perez <fperez@colorado.edu>
4253
4258
4254 * Big change to the manual: now the magics are all automatically
4259 * Big change to the manual: now the magics are all automatically
4255 documented. This information is generated from their docstrings
4260 documented. This information is generated from their docstrings
4256 and put in a latex file included by the manual lyx file. This way
4261 and put in a latex file included by the manual lyx file. This way
4257 we get always up to date information for the magics. The manual
4262 we get always up to date information for the magics. The manual
4258 now also has proper version information, also auto-synced.
4263 now also has proper version information, also auto-synced.
4259
4264
4260 For this to work, an undocumented --magic_docstrings option was added.
4265 For this to work, an undocumented --magic_docstrings option was added.
4261
4266
4262 2002-03-13 Fernando Perez <fperez@colorado.edu>
4267 2002-03-13 Fernando Perez <fperez@colorado.edu>
4263
4268
4264 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4269 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4265 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4270 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4266
4271
4267 2002-03-12 Fernando Perez <fperez@colorado.edu>
4272 2002-03-12 Fernando Perez <fperez@colorado.edu>
4268
4273
4269 * IPython/ultraTB.py (TermColors): changed color escapes again to
4274 * IPython/ultraTB.py (TermColors): changed color escapes again to
4270 fix the (old, reintroduced) line-wrapping bug. Basically, if
4275 fix the (old, reintroduced) line-wrapping bug. Basically, if
4271 \001..\002 aren't given in the color escapes, lines get wrapped
4276 \001..\002 aren't given in the color escapes, lines get wrapped
4272 weirdly. But giving those screws up old xterms and emacs terms. So
4277 weirdly. But giving those screws up old xterms and emacs terms. So
4273 I added some logic for emacs terms to be ok, but I can't identify old
4278 I added some logic for emacs terms to be ok, but I can't identify old
4274 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4279 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4275
4280
4276 2002-03-10 Fernando Perez <fperez@colorado.edu>
4281 2002-03-10 Fernando Perez <fperez@colorado.edu>
4277
4282
4278 * IPython/usage.py (__doc__): Various documentation cleanups and
4283 * IPython/usage.py (__doc__): Various documentation cleanups and
4279 updates, both in usage docstrings and in the manual.
4284 updates, both in usage docstrings and in the manual.
4280
4285
4281 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4286 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4282 handling of caching. Set minimum acceptabe value for having a
4287 handling of caching. Set minimum acceptabe value for having a
4283 cache at 20 values.
4288 cache at 20 values.
4284
4289
4285 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4290 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4286 install_first_time function to a method, renamed it and added an
4291 install_first_time function to a method, renamed it and added an
4287 'upgrade' mode. Now people can update their config directory with
4292 'upgrade' mode. Now people can update their config directory with
4288 a simple command line switch (-upgrade, also new).
4293 a simple command line switch (-upgrade, also new).
4289
4294
4290 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4295 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4291 @file (convenient for automagic users under Python >= 2.2).
4296 @file (convenient for automagic users under Python >= 2.2).
4292 Removed @files (it seemed more like a plural than an abbrev. of
4297 Removed @files (it seemed more like a plural than an abbrev. of
4293 'file show').
4298 'file show').
4294
4299
4295 * IPython/iplib.py (install_first_time): Fixed crash if there were
4300 * IPython/iplib.py (install_first_time): Fixed crash if there were
4296 backup files ('~') in .ipython/ install directory.
4301 backup files ('~') in .ipython/ install directory.
4297
4302
4298 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4303 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4299 system. Things look fine, but these changes are fairly
4304 system. Things look fine, but these changes are fairly
4300 intrusive. Test them for a few days.
4305 intrusive. Test them for a few days.
4301
4306
4302 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4307 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4303 the prompts system. Now all in/out prompt strings are user
4308 the prompts system. Now all in/out prompt strings are user
4304 controllable. This is particularly useful for embedding, as one
4309 controllable. This is particularly useful for embedding, as one
4305 can tag embedded instances with particular prompts.
4310 can tag embedded instances with particular prompts.
4306
4311
4307 Also removed global use of sys.ps1/2, which now allows nested
4312 Also removed global use of sys.ps1/2, which now allows nested
4308 embeddings without any problems. Added command-line options for
4313 embeddings without any problems. Added command-line options for
4309 the prompt strings.
4314 the prompt strings.
4310
4315
4311 2002-03-08 Fernando Perez <fperez@colorado.edu>
4316 2002-03-08 Fernando Perez <fperez@colorado.edu>
4312
4317
4313 * IPython/UserConfig/example-embed-short.py (ipshell): added
4318 * IPython/UserConfig/example-embed-short.py (ipshell): added
4314 example file with the bare minimum code for embedding.
4319 example file with the bare minimum code for embedding.
4315
4320
4316 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4321 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4317 functionality for the embeddable shell to be activated/deactivated
4322 functionality for the embeddable shell to be activated/deactivated
4318 either globally or at each call.
4323 either globally or at each call.
4319
4324
4320 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4325 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4321 rewriting the prompt with '--->' for auto-inputs with proper
4326 rewriting the prompt with '--->' for auto-inputs with proper
4322 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4327 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4323 this is handled by the prompts class itself, as it should.
4328 this is handled by the prompts class itself, as it should.
4324
4329
4325 2002-03-05 Fernando Perez <fperez@colorado.edu>
4330 2002-03-05 Fernando Perez <fperez@colorado.edu>
4326
4331
4327 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4332 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4328 @logstart to avoid name clashes with the math log function.
4333 @logstart to avoid name clashes with the math log function.
4329
4334
4330 * Big updates to X/Emacs section of the manual.
4335 * Big updates to X/Emacs section of the manual.
4331
4336
4332 * Removed ipython_emacs. Milan explained to me how to pass
4337 * Removed ipython_emacs. Milan explained to me how to pass
4333 arguments to ipython through Emacs. Some day I'm going to end up
4338 arguments to ipython through Emacs. Some day I'm going to end up
4334 learning some lisp...
4339 learning some lisp...
4335
4340
4336 2002-03-04 Fernando Perez <fperez@colorado.edu>
4341 2002-03-04 Fernando Perez <fperez@colorado.edu>
4337
4342
4338 * IPython/ipython_emacs: Created script to be used as the
4343 * IPython/ipython_emacs: Created script to be used as the
4339 py-python-command Emacs variable so we can pass IPython
4344 py-python-command Emacs variable so we can pass IPython
4340 parameters. I can't figure out how to tell Emacs directly to pass
4345 parameters. I can't figure out how to tell Emacs directly to pass
4341 parameters to IPython, so a dummy shell script will do it.
4346 parameters to IPython, so a dummy shell script will do it.
4342
4347
4343 Other enhancements made for things to work better under Emacs'
4348 Other enhancements made for things to work better under Emacs'
4344 various types of terminals. Many thanks to Milan Zamazal
4349 various types of terminals. Many thanks to Milan Zamazal
4345 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4350 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4346
4351
4347 2002-03-01 Fernando Perez <fperez@colorado.edu>
4352 2002-03-01 Fernando Perez <fperez@colorado.edu>
4348
4353
4349 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4354 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4350 that loading of readline is now optional. This gives better
4355 that loading of readline is now optional. This gives better
4351 control to emacs users.
4356 control to emacs users.
4352
4357
4353 * IPython/ultraTB.py (__date__): Modified color escape sequences
4358 * IPython/ultraTB.py (__date__): Modified color escape sequences
4354 and now things work fine under xterm and in Emacs' term buffers
4359 and now things work fine under xterm and in Emacs' term buffers
4355 (though not shell ones). Well, in emacs you get colors, but all
4360 (though not shell ones). Well, in emacs you get colors, but all
4356 seem to be 'light' colors (no difference between dark and light
4361 seem to be 'light' colors (no difference between dark and light
4357 ones). But the garbage chars are gone, and also in xterms. It
4362 ones). But the garbage chars are gone, and also in xterms. It
4358 seems that now I'm using 'cleaner' ansi sequences.
4363 seems that now I'm using 'cleaner' ansi sequences.
4359
4364
4360 2002-02-21 Fernando Perez <fperez@colorado.edu>
4365 2002-02-21 Fernando Perez <fperez@colorado.edu>
4361
4366
4362 * Released 0.2.7 (mainly to publish the scoping fix).
4367 * Released 0.2.7 (mainly to publish the scoping fix).
4363
4368
4364 * IPython/Logger.py (Logger.logstate): added. A corresponding
4369 * IPython/Logger.py (Logger.logstate): added. A corresponding
4365 @logstate magic was created.
4370 @logstate magic was created.
4366
4371
4367 * IPython/Magic.py: fixed nested scoping problem under Python
4372 * IPython/Magic.py: fixed nested scoping problem under Python
4368 2.1.x (automagic wasn't working).
4373 2.1.x (automagic wasn't working).
4369
4374
4370 2002-02-20 Fernando Perez <fperez@colorado.edu>
4375 2002-02-20 Fernando Perez <fperez@colorado.edu>
4371
4376
4372 * Released 0.2.6.
4377 * Released 0.2.6.
4373
4378
4374 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4379 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4375 option so that logs can come out without any headers at all.
4380 option so that logs can come out without any headers at all.
4376
4381
4377 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4382 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4378 SciPy.
4383 SciPy.
4379
4384
4380 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4385 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4381 that embedded IPython calls don't require vars() to be explicitly
4386 that embedded IPython calls don't require vars() to be explicitly
4382 passed. Now they are extracted from the caller's frame (code
4387 passed. Now they are extracted from the caller's frame (code
4383 snatched from Eric Jones' weave). Added better documentation to
4388 snatched from Eric Jones' weave). Added better documentation to
4384 the section on embedding and the example file.
4389 the section on embedding and the example file.
4385
4390
4386 * IPython/genutils.py (page): Changed so that under emacs, it just
4391 * IPython/genutils.py (page): Changed so that under emacs, it just
4387 prints the string. You can then page up and down in the emacs
4392 prints the string. You can then page up and down in the emacs
4388 buffer itself. This is how the builtin help() works.
4393 buffer itself. This is how the builtin help() works.
4389
4394
4390 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4395 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4391 macro scoping: macros need to be executed in the user's namespace
4396 macro scoping: macros need to be executed in the user's namespace
4392 to work as if they had been typed by the user.
4397 to work as if they had been typed by the user.
4393
4398
4394 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4399 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4395 execute automatically (no need to type 'exec...'). They then
4400 execute automatically (no need to type 'exec...'). They then
4396 behave like 'true macros'. The printing system was also modified
4401 behave like 'true macros'. The printing system was also modified
4397 for this to work.
4402 for this to work.
4398
4403
4399 2002-02-19 Fernando Perez <fperez@colorado.edu>
4404 2002-02-19 Fernando Perez <fperez@colorado.edu>
4400
4405
4401 * IPython/genutils.py (page_file): new function for paging files
4406 * IPython/genutils.py (page_file): new function for paging files
4402 in an OS-independent way. Also necessary for file viewing to work
4407 in an OS-independent way. Also necessary for file viewing to work
4403 well inside Emacs buffers.
4408 well inside Emacs buffers.
4404 (page): Added checks for being in an emacs buffer.
4409 (page): Added checks for being in an emacs buffer.
4405 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4410 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4406 same bug in iplib.
4411 same bug in iplib.
4407
4412
4408 2002-02-18 Fernando Perez <fperez@colorado.edu>
4413 2002-02-18 Fernando Perez <fperez@colorado.edu>
4409
4414
4410 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4415 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4411 of readline so that IPython can work inside an Emacs buffer.
4416 of readline so that IPython can work inside an Emacs buffer.
4412
4417
4413 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4418 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4414 method signatures (they weren't really bugs, but it looks cleaner
4419 method signatures (they weren't really bugs, but it looks cleaner
4415 and keeps PyChecker happy).
4420 and keeps PyChecker happy).
4416
4421
4417 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4422 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4418 for implementing various user-defined hooks. Currently only
4423 for implementing various user-defined hooks. Currently only
4419 display is done.
4424 display is done.
4420
4425
4421 * IPython/Prompts.py (CachedOutput._display): changed display
4426 * IPython/Prompts.py (CachedOutput._display): changed display
4422 functions so that they can be dynamically changed by users easily.
4427 functions so that they can be dynamically changed by users easily.
4423
4428
4424 * IPython/Extensions/numeric_formats.py (num_display): added an
4429 * IPython/Extensions/numeric_formats.py (num_display): added an
4425 extension for printing NumPy arrays in flexible manners. It
4430 extension for printing NumPy arrays in flexible manners. It
4426 doesn't do anything yet, but all the structure is in
4431 doesn't do anything yet, but all the structure is in
4427 place. Ultimately the plan is to implement output format control
4432 place. Ultimately the plan is to implement output format control
4428 like in Octave.
4433 like in Octave.
4429
4434
4430 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4435 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4431 methods are found at run-time by all the automatic machinery.
4436 methods are found at run-time by all the automatic machinery.
4432
4437
4433 2002-02-17 Fernando Perez <fperez@colorado.edu>
4438 2002-02-17 Fernando Perez <fperez@colorado.edu>
4434
4439
4435 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4440 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4436 whole file a little.
4441 whole file a little.
4437
4442
4438 * ToDo: closed this document. Now there's a new_design.lyx
4443 * ToDo: closed this document. Now there's a new_design.lyx
4439 document for all new ideas. Added making a pdf of it for the
4444 document for all new ideas. Added making a pdf of it for the
4440 end-user distro.
4445 end-user distro.
4441
4446
4442 * IPython/Logger.py (Logger.switch_log): Created this to replace
4447 * IPython/Logger.py (Logger.switch_log): Created this to replace
4443 logon() and logoff(). It also fixes a nasty crash reported by
4448 logon() and logoff(). It also fixes a nasty crash reported by
4444 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4449 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4445
4450
4446 * IPython/iplib.py (complete): got auto-completion to work with
4451 * IPython/iplib.py (complete): got auto-completion to work with
4447 automagic (I had wanted this for a long time).
4452 automagic (I had wanted this for a long time).
4448
4453
4449 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4454 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4450 to @file, since file() is now a builtin and clashes with automagic
4455 to @file, since file() is now a builtin and clashes with automagic
4451 for @file.
4456 for @file.
4452
4457
4453 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4458 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4454 of this was previously in iplib, which had grown to more than 2000
4459 of this was previously in iplib, which had grown to more than 2000
4455 lines, way too long. No new functionality, but it makes managing
4460 lines, way too long. No new functionality, but it makes managing
4456 the code a bit easier.
4461 the code a bit easier.
4457
4462
4458 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4463 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4459 information to crash reports.
4464 information to crash reports.
4460
4465
4461 2002-02-12 Fernando Perez <fperez@colorado.edu>
4466 2002-02-12 Fernando Perez <fperez@colorado.edu>
4462
4467
4463 * Released 0.2.5.
4468 * Released 0.2.5.
4464
4469
4465 2002-02-11 Fernando Perez <fperez@colorado.edu>
4470 2002-02-11 Fernando Perez <fperez@colorado.edu>
4466
4471
4467 * Wrote a relatively complete Windows installer. It puts
4472 * Wrote a relatively complete Windows installer. It puts
4468 everything in place, creates Start Menu entries and fixes the
4473 everything in place, creates Start Menu entries and fixes the
4469 color issues. Nothing fancy, but it works.
4474 color issues. Nothing fancy, but it works.
4470
4475
4471 2002-02-10 Fernando Perez <fperez@colorado.edu>
4476 2002-02-10 Fernando Perez <fperez@colorado.edu>
4472
4477
4473 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4478 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4474 os.path.expanduser() call so that we can type @run ~/myfile.py and
4479 os.path.expanduser() call so that we can type @run ~/myfile.py and
4475 have thigs work as expected.
4480 have thigs work as expected.
4476
4481
4477 * IPython/genutils.py (page): fixed exception handling so things
4482 * IPython/genutils.py (page): fixed exception handling so things
4478 work both in Unix and Windows correctly. Quitting a pager triggers
4483 work both in Unix and Windows correctly. Quitting a pager triggers
4479 an IOError/broken pipe in Unix, and in windows not finding a pager
4484 an IOError/broken pipe in Unix, and in windows not finding a pager
4480 is also an IOError, so I had to actually look at the return value
4485 is also an IOError, so I had to actually look at the return value
4481 of the exception, not just the exception itself. Should be ok now.
4486 of the exception, not just the exception itself. Should be ok now.
4482
4487
4483 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4488 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4484 modified to allow case-insensitive color scheme changes.
4489 modified to allow case-insensitive color scheme changes.
4485
4490
4486 2002-02-09 Fernando Perez <fperez@colorado.edu>
4491 2002-02-09 Fernando Perez <fperez@colorado.edu>
4487
4492
4488 * IPython/genutils.py (native_line_ends): new function to leave
4493 * IPython/genutils.py (native_line_ends): new function to leave
4489 user config files with os-native line-endings.
4494 user config files with os-native line-endings.
4490
4495
4491 * README and manual updates.
4496 * README and manual updates.
4492
4497
4493 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4498 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4494 instead of StringType to catch Unicode strings.
4499 instead of StringType to catch Unicode strings.
4495
4500
4496 * IPython/genutils.py (filefind): fixed bug for paths with
4501 * IPython/genutils.py (filefind): fixed bug for paths with
4497 embedded spaces (very common in Windows).
4502 embedded spaces (very common in Windows).
4498
4503
4499 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4504 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4500 files under Windows, so that they get automatically associated
4505 files under Windows, so that they get automatically associated
4501 with a text editor. Windows makes it a pain to handle
4506 with a text editor. Windows makes it a pain to handle
4502 extension-less files.
4507 extension-less files.
4503
4508
4504 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4509 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4505 warning about readline only occur for Posix. In Windows there's no
4510 warning about readline only occur for Posix. In Windows there's no
4506 way to get readline, so why bother with the warning.
4511 way to get readline, so why bother with the warning.
4507
4512
4508 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4513 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4509 for __str__ instead of dir(self), since dir() changed in 2.2.
4514 for __str__ instead of dir(self), since dir() changed in 2.2.
4510
4515
4511 * Ported to Windows! Tested on XP, I suspect it should work fine
4516 * Ported to Windows! Tested on XP, I suspect it should work fine
4512 on NT/2000, but I don't think it will work on 98 et al. That
4517 on NT/2000, but I don't think it will work on 98 et al. That
4513 series of Windows is such a piece of junk anyway that I won't try
4518 series of Windows is such a piece of junk anyway that I won't try
4514 porting it there. The XP port was straightforward, showed a few
4519 porting it there. The XP port was straightforward, showed a few
4515 bugs here and there (fixed all), in particular some string
4520 bugs here and there (fixed all), in particular some string
4516 handling stuff which required considering Unicode strings (which
4521 handling stuff which required considering Unicode strings (which
4517 Windows uses). This is good, but hasn't been too tested :) No
4522 Windows uses). This is good, but hasn't been too tested :) No
4518 fancy installer yet, I'll put a note in the manual so people at
4523 fancy installer yet, I'll put a note in the manual so people at
4519 least make manually a shortcut.
4524 least make manually a shortcut.
4520
4525
4521 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4526 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4522 into a single one, "colors". This now controls both prompt and
4527 into a single one, "colors". This now controls both prompt and
4523 exception color schemes, and can be changed both at startup
4528 exception color schemes, and can be changed both at startup
4524 (either via command-line switches or via ipythonrc files) and at
4529 (either via command-line switches or via ipythonrc files) and at
4525 runtime, with @colors.
4530 runtime, with @colors.
4526 (Magic.magic_run): renamed @prun to @run and removed the old
4531 (Magic.magic_run): renamed @prun to @run and removed the old
4527 @run. The two were too similar to warrant keeping both.
4532 @run. The two were too similar to warrant keeping both.
4528
4533
4529 2002-02-03 Fernando Perez <fperez@colorado.edu>
4534 2002-02-03 Fernando Perez <fperez@colorado.edu>
4530
4535
4531 * IPython/iplib.py (install_first_time): Added comment on how to
4536 * IPython/iplib.py (install_first_time): Added comment on how to
4532 configure the color options for first-time users. Put a <return>
4537 configure the color options for first-time users. Put a <return>
4533 request at the end so that small-terminal users get a chance to
4538 request at the end so that small-terminal users get a chance to
4534 read the startup info.
4539 read the startup info.
4535
4540
4536 2002-01-23 Fernando Perez <fperez@colorado.edu>
4541 2002-01-23 Fernando Perez <fperez@colorado.edu>
4537
4542
4538 * IPython/iplib.py (CachedOutput.update): Changed output memory
4543 * IPython/iplib.py (CachedOutput.update): Changed output memory
4539 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4544 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4540 input history we still use _i. Did this b/c these variable are
4545 input history we still use _i. Did this b/c these variable are
4541 very commonly used in interactive work, so the less we need to
4546 very commonly used in interactive work, so the less we need to
4542 type the better off we are.
4547 type the better off we are.
4543 (Magic.magic_prun): updated @prun to better handle the namespaces
4548 (Magic.magic_prun): updated @prun to better handle the namespaces
4544 the file will run in, including a fix for __name__ not being set
4549 the file will run in, including a fix for __name__ not being set
4545 before.
4550 before.
4546
4551
4547 2002-01-20 Fernando Perez <fperez@colorado.edu>
4552 2002-01-20 Fernando Perez <fperez@colorado.edu>
4548
4553
4549 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4554 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4550 extra garbage for Python 2.2. Need to look more carefully into
4555 extra garbage for Python 2.2. Need to look more carefully into
4551 this later.
4556 this later.
4552
4557
4553 2002-01-19 Fernando Perez <fperez@colorado.edu>
4558 2002-01-19 Fernando Perez <fperez@colorado.edu>
4554
4559
4555 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4560 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4556 display SyntaxError exceptions properly formatted when they occur
4561 display SyntaxError exceptions properly formatted when they occur
4557 (they can be triggered by imported code).
4562 (they can be triggered by imported code).
4558
4563
4559 2002-01-18 Fernando Perez <fperez@colorado.edu>
4564 2002-01-18 Fernando Perez <fperez@colorado.edu>
4560
4565
4561 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4566 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4562 SyntaxError exceptions are reported nicely formatted, instead of
4567 SyntaxError exceptions are reported nicely formatted, instead of
4563 spitting out only offset information as before.
4568 spitting out only offset information as before.
4564 (Magic.magic_prun): Added the @prun function for executing
4569 (Magic.magic_prun): Added the @prun function for executing
4565 programs with command line args inside IPython.
4570 programs with command line args inside IPython.
4566
4571
4567 2002-01-16 Fernando Perez <fperez@colorado.edu>
4572 2002-01-16 Fernando Perez <fperez@colorado.edu>
4568
4573
4569 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4574 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4570 to *not* include the last item given in a range. This brings their
4575 to *not* include the last item given in a range. This brings their
4571 behavior in line with Python's slicing:
4576 behavior in line with Python's slicing:
4572 a[n1:n2] -> a[n1]...a[n2-1]
4577 a[n1:n2] -> a[n1]...a[n2-1]
4573 It may be a bit less convenient, but I prefer to stick to Python's
4578 It may be a bit less convenient, but I prefer to stick to Python's
4574 conventions *everywhere*, so users never have to wonder.
4579 conventions *everywhere*, so users never have to wonder.
4575 (Magic.magic_macro): Added @macro function to ease the creation of
4580 (Magic.magic_macro): Added @macro function to ease the creation of
4576 macros.
4581 macros.
4577
4582
4578 2002-01-05 Fernando Perez <fperez@colorado.edu>
4583 2002-01-05 Fernando Perez <fperez@colorado.edu>
4579
4584
4580 * Released 0.2.4.
4585 * Released 0.2.4.
4581
4586
4582 * IPython/iplib.py (Magic.magic_pdef):
4587 * IPython/iplib.py (Magic.magic_pdef):
4583 (InteractiveShell.safe_execfile): report magic lines and error
4588 (InteractiveShell.safe_execfile): report magic lines and error
4584 lines without line numbers so one can easily copy/paste them for
4589 lines without line numbers so one can easily copy/paste them for
4585 re-execution.
4590 re-execution.
4586
4591
4587 * Updated manual with recent changes.
4592 * Updated manual with recent changes.
4588
4593
4589 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4594 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4590 docstring printing when class? is called. Very handy for knowing
4595 docstring printing when class? is called. Very handy for knowing
4591 how to create class instances (as long as __init__ is well
4596 how to create class instances (as long as __init__ is well
4592 documented, of course :)
4597 documented, of course :)
4593 (Magic.magic_doc): print both class and constructor docstrings.
4598 (Magic.magic_doc): print both class and constructor docstrings.
4594 (Magic.magic_pdef): give constructor info if passed a class and
4599 (Magic.magic_pdef): give constructor info if passed a class and
4595 __call__ info for callable object instances.
4600 __call__ info for callable object instances.
4596
4601
4597 2002-01-04 Fernando Perez <fperez@colorado.edu>
4602 2002-01-04 Fernando Perez <fperez@colorado.edu>
4598
4603
4599 * Made deep_reload() off by default. It doesn't always work
4604 * Made deep_reload() off by default. It doesn't always work
4600 exactly as intended, so it's probably safer to have it off. It's
4605 exactly as intended, so it's probably safer to have it off. It's
4601 still available as dreload() anyway, so nothing is lost.
4606 still available as dreload() anyway, so nothing is lost.
4602
4607
4603 2002-01-02 Fernando Perez <fperez@colorado.edu>
4608 2002-01-02 Fernando Perez <fperez@colorado.edu>
4604
4609
4605 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4610 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4606 so I wanted an updated release).
4611 so I wanted an updated release).
4607
4612
4608 2001-12-27 Fernando Perez <fperez@colorado.edu>
4613 2001-12-27 Fernando Perez <fperez@colorado.edu>
4609
4614
4610 * IPython/iplib.py (InteractiveShell.interact): Added the original
4615 * IPython/iplib.py (InteractiveShell.interact): Added the original
4611 code from 'code.py' for this module in order to change the
4616 code from 'code.py' for this module in order to change the
4612 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4617 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4613 the history cache would break when the user hit Ctrl-C, and
4618 the history cache would break when the user hit Ctrl-C, and
4614 interact() offers no way to add any hooks to it.
4619 interact() offers no way to add any hooks to it.
4615
4620
4616 2001-12-23 Fernando Perez <fperez@colorado.edu>
4621 2001-12-23 Fernando Perez <fperez@colorado.edu>
4617
4622
4618 * setup.py: added check for 'MANIFEST' before trying to remove
4623 * setup.py: added check for 'MANIFEST' before trying to remove
4619 it. Thanks to Sean Reifschneider.
4624 it. Thanks to Sean Reifschneider.
4620
4625
4621 2001-12-22 Fernando Perez <fperez@colorado.edu>
4626 2001-12-22 Fernando Perez <fperez@colorado.edu>
4622
4627
4623 * Released 0.2.2.
4628 * Released 0.2.2.
4624
4629
4625 * Finished (reasonably) writing the manual. Later will add the
4630 * Finished (reasonably) writing the manual. Later will add the
4626 python-standard navigation stylesheets, but for the time being
4631 python-standard navigation stylesheets, but for the time being
4627 it's fairly complete. Distribution will include html and pdf
4632 it's fairly complete. Distribution will include html and pdf
4628 versions.
4633 versions.
4629
4634
4630 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4635 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4631 (MayaVi author).
4636 (MayaVi author).
4632
4637
4633 2001-12-21 Fernando Perez <fperez@colorado.edu>
4638 2001-12-21 Fernando Perez <fperez@colorado.edu>
4634
4639
4635 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4640 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4636 good public release, I think (with the manual and the distutils
4641 good public release, I think (with the manual and the distutils
4637 installer). The manual can use some work, but that can go
4642 installer). The manual can use some work, but that can go
4638 slowly. Otherwise I think it's quite nice for end users. Next
4643 slowly. Otherwise I think it's quite nice for end users. Next
4639 summer, rewrite the guts of it...
4644 summer, rewrite the guts of it...
4640
4645
4641 * Changed format of ipythonrc files to use whitespace as the
4646 * Changed format of ipythonrc files to use whitespace as the
4642 separator instead of an explicit '='. Cleaner.
4647 separator instead of an explicit '='. Cleaner.
4643
4648
4644 2001-12-20 Fernando Perez <fperez@colorado.edu>
4649 2001-12-20 Fernando Perez <fperez@colorado.edu>
4645
4650
4646 * Started a manual in LyX. For now it's just a quick merge of the
4651 * Started a manual in LyX. For now it's just a quick merge of the
4647 various internal docstrings and READMEs. Later it may grow into a
4652 various internal docstrings and READMEs. Later it may grow into a
4648 nice, full-blown manual.
4653 nice, full-blown manual.
4649
4654
4650 * Set up a distutils based installer. Installation should now be
4655 * Set up a distutils based installer. Installation should now be
4651 trivially simple for end-users.
4656 trivially simple for end-users.
4652
4657
4653 2001-12-11 Fernando Perez <fperez@colorado.edu>
4658 2001-12-11 Fernando Perez <fperez@colorado.edu>
4654
4659
4655 * Released 0.2.0. First public release, announced it at
4660 * Released 0.2.0. First public release, announced it at
4656 comp.lang.python. From now on, just bugfixes...
4661 comp.lang.python. From now on, just bugfixes...
4657
4662
4658 * Went through all the files, set copyright/license notices and
4663 * Went through all the files, set copyright/license notices and
4659 cleaned up things. Ready for release.
4664 cleaned up things. Ready for release.
4660
4665
4661 2001-12-10 Fernando Perez <fperez@colorado.edu>
4666 2001-12-10 Fernando Perez <fperez@colorado.edu>
4662
4667
4663 * Changed the first-time installer not to use tarfiles. It's more
4668 * Changed the first-time installer not to use tarfiles. It's more
4664 robust now and less unix-dependent. Also makes it easier for
4669 robust now and less unix-dependent. Also makes it easier for
4665 people to later upgrade versions.
4670 people to later upgrade versions.
4666
4671
4667 * Changed @exit to @abort to reflect the fact that it's pretty
4672 * Changed @exit to @abort to reflect the fact that it's pretty
4668 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4673 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4669 becomes significant only when IPyhton is embedded: in that case,
4674 becomes significant only when IPyhton is embedded: in that case,
4670 C-D closes IPython only, but @abort kills the enclosing program
4675 C-D closes IPython only, but @abort kills the enclosing program
4671 too (unless it had called IPython inside a try catching
4676 too (unless it had called IPython inside a try catching
4672 SystemExit).
4677 SystemExit).
4673
4678
4674 * Created Shell module which exposes the actuall IPython Shell
4679 * Created Shell module which exposes the actuall IPython Shell
4675 classes, currently the normal and the embeddable one. This at
4680 classes, currently the normal and the embeddable one. This at
4676 least offers a stable interface we won't need to change when
4681 least offers a stable interface we won't need to change when
4677 (later) the internals are rewritten. That rewrite will be confined
4682 (later) the internals are rewritten. That rewrite will be confined
4678 to iplib and ipmaker, but the Shell interface should remain as is.
4683 to iplib and ipmaker, but the Shell interface should remain as is.
4679
4684
4680 * Added embed module which offers an embeddable IPShell object,
4685 * Added embed module which offers an embeddable IPShell object,
4681 useful to fire up IPython *inside* a running program. Great for
4686 useful to fire up IPython *inside* a running program. Great for
4682 debugging or dynamical data analysis.
4687 debugging or dynamical data analysis.
4683
4688
4684 2001-12-08 Fernando Perez <fperez@colorado.edu>
4689 2001-12-08 Fernando Perez <fperez@colorado.edu>
4685
4690
4686 * Fixed small bug preventing seeing info from methods of defined
4691 * Fixed small bug preventing seeing info from methods of defined
4687 objects (incorrect namespace in _ofind()).
4692 objects (incorrect namespace in _ofind()).
4688
4693
4689 * Documentation cleanup. Moved the main usage docstrings to a
4694 * Documentation cleanup. Moved the main usage docstrings to a
4690 separate file, usage.py (cleaner to maintain, and hopefully in the
4695 separate file, usage.py (cleaner to maintain, and hopefully in the
4691 future some perlpod-like way of producing interactive, man and
4696 future some perlpod-like way of producing interactive, man and
4692 html docs out of it will be found).
4697 html docs out of it will be found).
4693
4698
4694 * Added @profile to see your profile at any time.
4699 * Added @profile to see your profile at any time.
4695
4700
4696 * Added @p as an alias for 'print'. It's especially convenient if
4701 * Added @p as an alias for 'print'. It's especially convenient if
4697 using automagic ('p x' prints x).
4702 using automagic ('p x' prints x).
4698
4703
4699 * Small cleanups and fixes after a pychecker run.
4704 * Small cleanups and fixes after a pychecker run.
4700
4705
4701 * Changed the @cd command to handle @cd - and @cd -<n> for
4706 * Changed the @cd command to handle @cd - and @cd -<n> for
4702 visiting any directory in _dh.
4707 visiting any directory in _dh.
4703
4708
4704 * Introduced _dh, a history of visited directories. @dhist prints
4709 * Introduced _dh, a history of visited directories. @dhist prints
4705 it out with numbers.
4710 it out with numbers.
4706
4711
4707 2001-12-07 Fernando Perez <fperez@colorado.edu>
4712 2001-12-07 Fernando Perez <fperez@colorado.edu>
4708
4713
4709 * Released 0.1.22
4714 * Released 0.1.22
4710
4715
4711 * Made initialization a bit more robust against invalid color
4716 * Made initialization a bit more robust against invalid color
4712 options in user input (exit, not traceback-crash).
4717 options in user input (exit, not traceback-crash).
4713
4718
4714 * Changed the bug crash reporter to write the report only in the
4719 * Changed the bug crash reporter to write the report only in the
4715 user's .ipython directory. That way IPython won't litter people's
4720 user's .ipython directory. That way IPython won't litter people's
4716 hard disks with crash files all over the place. Also print on
4721 hard disks with crash files all over the place. Also print on
4717 screen the necessary mail command.
4722 screen the necessary mail command.
4718
4723
4719 * With the new ultraTB, implemented LightBG color scheme for light
4724 * With the new ultraTB, implemented LightBG color scheme for light
4720 background terminals. A lot of people like white backgrounds, so I
4725 background terminals. A lot of people like white backgrounds, so I
4721 guess we should at least give them something readable.
4726 guess we should at least give them something readable.
4722
4727
4723 2001-12-06 Fernando Perez <fperez@colorado.edu>
4728 2001-12-06 Fernando Perez <fperez@colorado.edu>
4724
4729
4725 * Modified the structure of ultraTB. Now there's a proper class
4730 * Modified the structure of ultraTB. Now there's a proper class
4726 for tables of color schemes which allow adding schemes easily and
4731 for tables of color schemes which allow adding schemes easily and
4727 switching the active scheme without creating a new instance every
4732 switching the active scheme without creating a new instance every
4728 time (which was ridiculous). The syntax for creating new schemes
4733 time (which was ridiculous). The syntax for creating new schemes
4729 is also cleaner. I think ultraTB is finally done, with a clean
4734 is also cleaner. I think ultraTB is finally done, with a clean
4730 class structure. Names are also much cleaner (now there's proper
4735 class structure. Names are also much cleaner (now there's proper
4731 color tables, no need for every variable to also have 'color' in
4736 color tables, no need for every variable to also have 'color' in
4732 its name).
4737 its name).
4733
4738
4734 * Broke down genutils into separate files. Now genutils only
4739 * Broke down genutils into separate files. Now genutils only
4735 contains utility functions, and classes have been moved to their
4740 contains utility functions, and classes have been moved to their
4736 own files (they had enough independent functionality to warrant
4741 own files (they had enough independent functionality to warrant
4737 it): ConfigLoader, OutputTrap, Struct.
4742 it): ConfigLoader, OutputTrap, Struct.
4738
4743
4739 2001-12-05 Fernando Perez <fperez@colorado.edu>
4744 2001-12-05 Fernando Perez <fperez@colorado.edu>
4740
4745
4741 * IPython turns 21! Released version 0.1.21, as a candidate for
4746 * IPython turns 21! Released version 0.1.21, as a candidate for
4742 public consumption. If all goes well, release in a few days.
4747 public consumption. If all goes well, release in a few days.
4743
4748
4744 * Fixed path bug (files in Extensions/ directory wouldn't be found
4749 * Fixed path bug (files in Extensions/ directory wouldn't be found
4745 unless IPython/ was explicitly in sys.path).
4750 unless IPython/ was explicitly in sys.path).
4746
4751
4747 * Extended the FlexCompleter class as MagicCompleter to allow
4752 * Extended the FlexCompleter class as MagicCompleter to allow
4748 completion of @-starting lines.
4753 completion of @-starting lines.
4749
4754
4750 * Created __release__.py file as a central repository for release
4755 * Created __release__.py file as a central repository for release
4751 info that other files can read from.
4756 info that other files can read from.
4752
4757
4753 * Fixed small bug in logging: when logging was turned on in
4758 * Fixed small bug in logging: when logging was turned on in
4754 mid-session, old lines with special meanings (!@?) were being
4759 mid-session, old lines with special meanings (!@?) were being
4755 logged without the prepended comment, which is necessary since
4760 logged without the prepended comment, which is necessary since
4756 they are not truly valid python syntax. This should make session
4761 they are not truly valid python syntax. This should make session
4757 restores produce less errors.
4762 restores produce less errors.
4758
4763
4759 * The namespace cleanup forced me to make a FlexCompleter class
4764 * The namespace cleanup forced me to make a FlexCompleter class
4760 which is nothing but a ripoff of rlcompleter, but with selectable
4765 which is nothing but a ripoff of rlcompleter, but with selectable
4761 namespace (rlcompleter only works in __main__.__dict__). I'll try
4766 namespace (rlcompleter only works in __main__.__dict__). I'll try
4762 to submit a note to the authors to see if this change can be
4767 to submit a note to the authors to see if this change can be
4763 incorporated in future rlcompleter releases (Dec.6: done)
4768 incorporated in future rlcompleter releases (Dec.6: done)
4764
4769
4765 * More fixes to namespace handling. It was a mess! Now all
4770 * More fixes to namespace handling. It was a mess! Now all
4766 explicit references to __main__.__dict__ are gone (except when
4771 explicit references to __main__.__dict__ are gone (except when
4767 really needed) and everything is handled through the namespace
4772 really needed) and everything is handled through the namespace
4768 dicts in the IPython instance. We seem to be getting somewhere
4773 dicts in the IPython instance. We seem to be getting somewhere
4769 with this, finally...
4774 with this, finally...
4770
4775
4771 * Small documentation updates.
4776 * Small documentation updates.
4772
4777
4773 * Created the Extensions directory under IPython (with an
4778 * Created the Extensions directory under IPython (with an
4774 __init__.py). Put the PhysicalQ stuff there. This directory should
4779 __init__.py). Put the PhysicalQ stuff there. This directory should
4775 be used for all special-purpose extensions.
4780 be used for all special-purpose extensions.
4776
4781
4777 * File renaming:
4782 * File renaming:
4778 ipythonlib --> ipmaker
4783 ipythonlib --> ipmaker
4779 ipplib --> iplib
4784 ipplib --> iplib
4780 This makes a bit more sense in terms of what these files actually do.
4785 This makes a bit more sense in terms of what these files actually do.
4781
4786
4782 * Moved all the classes and functions in ipythonlib to ipplib, so
4787 * Moved all the classes and functions in ipythonlib to ipplib, so
4783 now ipythonlib only has make_IPython(). This will ease up its
4788 now ipythonlib only has make_IPython(). This will ease up its
4784 splitting in smaller functional chunks later.
4789 splitting in smaller functional chunks later.
4785
4790
4786 * Cleaned up (done, I think) output of @whos. Better column
4791 * Cleaned up (done, I think) output of @whos. Better column
4787 formatting, and now shows str(var) for as much as it can, which is
4792 formatting, and now shows str(var) for as much as it can, which is
4788 typically what one gets with a 'print var'.
4793 typically what one gets with a 'print var'.
4789
4794
4790 2001-12-04 Fernando Perez <fperez@colorado.edu>
4795 2001-12-04 Fernando Perez <fperez@colorado.edu>
4791
4796
4792 * Fixed namespace problems. Now builtin/IPyhton/user names get
4797 * Fixed namespace problems. Now builtin/IPyhton/user names get
4793 properly reported in their namespace. Internal namespace handling
4798 properly reported in their namespace. Internal namespace handling
4794 is finally getting decent (not perfect yet, but much better than
4799 is finally getting decent (not perfect yet, but much better than
4795 the ad-hoc mess we had).
4800 the ad-hoc mess we had).
4796
4801
4797 * Removed -exit option. If people just want to run a python
4802 * Removed -exit option. If people just want to run a python
4798 script, that's what the normal interpreter is for. Less
4803 script, that's what the normal interpreter is for. Less
4799 unnecessary options, less chances for bugs.
4804 unnecessary options, less chances for bugs.
4800
4805
4801 * Added a crash handler which generates a complete post-mortem if
4806 * Added a crash handler which generates a complete post-mortem if
4802 IPython crashes. This will help a lot in tracking bugs down the
4807 IPython crashes. This will help a lot in tracking bugs down the
4803 road.
4808 road.
4804
4809
4805 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4810 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4806 which were boud to functions being reassigned would bypass the
4811 which were boud to functions being reassigned would bypass the
4807 logger, breaking the sync of _il with the prompt counter. This
4812 logger, breaking the sync of _il with the prompt counter. This
4808 would then crash IPython later when a new line was logged.
4813 would then crash IPython later when a new line was logged.
4809
4814
4810 2001-12-02 Fernando Perez <fperez@colorado.edu>
4815 2001-12-02 Fernando Perez <fperez@colorado.edu>
4811
4816
4812 * Made IPython a package. This means people don't have to clutter
4817 * Made IPython a package. This means people don't have to clutter
4813 their sys.path with yet another directory. Changed the INSTALL
4818 their sys.path with yet another directory. Changed the INSTALL
4814 file accordingly.
4819 file accordingly.
4815
4820
4816 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4821 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4817 sorts its output (so @who shows it sorted) and @whos formats the
4822 sorts its output (so @who shows it sorted) and @whos formats the
4818 table according to the width of the first column. Nicer, easier to
4823 table according to the width of the first column. Nicer, easier to
4819 read. Todo: write a generic table_format() which takes a list of
4824 read. Todo: write a generic table_format() which takes a list of
4820 lists and prints it nicely formatted, with optional row/column
4825 lists and prints it nicely formatted, with optional row/column
4821 separators and proper padding and justification.
4826 separators and proper padding and justification.
4822
4827
4823 * Released 0.1.20
4828 * Released 0.1.20
4824
4829
4825 * Fixed bug in @log which would reverse the inputcache list (a
4830 * Fixed bug in @log which would reverse the inputcache list (a
4826 copy operation was missing).
4831 copy operation was missing).
4827
4832
4828 * Code cleanup. @config was changed to use page(). Better, since
4833 * Code cleanup. @config was changed to use page(). Better, since
4829 its output is always quite long.
4834 its output is always quite long.
4830
4835
4831 * Itpl is back as a dependency. I was having too many problems
4836 * Itpl is back as a dependency. I was having too many problems
4832 getting the parametric aliases to work reliably, and it's just
4837 getting the parametric aliases to work reliably, and it's just
4833 easier to code weird string operations with it than playing %()s
4838 easier to code weird string operations with it than playing %()s
4834 games. It's only ~6k, so I don't think it's too big a deal.
4839 games. It's only ~6k, so I don't think it's too big a deal.
4835
4840
4836 * Found (and fixed) a very nasty bug with history. !lines weren't
4841 * Found (and fixed) a very nasty bug with history. !lines weren't
4837 getting cached, and the out of sync caches would crash
4842 getting cached, and the out of sync caches would crash
4838 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4843 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4839 division of labor a bit better. Bug fixed, cleaner structure.
4844 division of labor a bit better. Bug fixed, cleaner structure.
4840
4845
4841 2001-12-01 Fernando Perez <fperez@colorado.edu>
4846 2001-12-01 Fernando Perez <fperez@colorado.edu>
4842
4847
4843 * Released 0.1.19
4848 * Released 0.1.19
4844
4849
4845 * Added option -n to @hist to prevent line number printing. Much
4850 * Added option -n to @hist to prevent line number printing. Much
4846 easier to copy/paste code this way.
4851 easier to copy/paste code this way.
4847
4852
4848 * Created global _il to hold the input list. Allows easy
4853 * Created global _il to hold the input list. Allows easy
4849 re-execution of blocks of code by slicing it (inspired by Janko's
4854 re-execution of blocks of code by slicing it (inspired by Janko's
4850 comment on 'macros').
4855 comment on 'macros').
4851
4856
4852 * Small fixes and doc updates.
4857 * Small fixes and doc updates.
4853
4858
4854 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4859 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4855 much too fragile with automagic. Handles properly multi-line
4860 much too fragile with automagic. Handles properly multi-line
4856 statements and takes parameters.
4861 statements and takes parameters.
4857
4862
4858 2001-11-30 Fernando Perez <fperez@colorado.edu>
4863 2001-11-30 Fernando Perez <fperez@colorado.edu>
4859
4864
4860 * Version 0.1.18 released.
4865 * Version 0.1.18 released.
4861
4866
4862 * Fixed nasty namespace bug in initial module imports.
4867 * Fixed nasty namespace bug in initial module imports.
4863
4868
4864 * Added copyright/license notes to all code files (except
4869 * Added copyright/license notes to all code files (except
4865 DPyGetOpt). For the time being, LGPL. That could change.
4870 DPyGetOpt). For the time being, LGPL. That could change.
4866
4871
4867 * Rewrote a much nicer README, updated INSTALL, cleaned up
4872 * Rewrote a much nicer README, updated INSTALL, cleaned up
4868 ipythonrc-* samples.
4873 ipythonrc-* samples.
4869
4874
4870 * Overall code/documentation cleanup. Basically ready for
4875 * Overall code/documentation cleanup. Basically ready for
4871 release. Only remaining thing: licence decision (LGPL?).
4876 release. Only remaining thing: licence decision (LGPL?).
4872
4877
4873 * Converted load_config to a class, ConfigLoader. Now recursion
4878 * Converted load_config to a class, ConfigLoader. Now recursion
4874 control is better organized. Doesn't include the same file twice.
4879 control is better organized. Doesn't include the same file twice.
4875
4880
4876 2001-11-29 Fernando Perez <fperez@colorado.edu>
4881 2001-11-29 Fernando Perez <fperez@colorado.edu>
4877
4882
4878 * Got input history working. Changed output history variables from
4883 * Got input history working. Changed output history variables from
4879 _p to _o so that _i is for input and _o for output. Just cleaner
4884 _p to _o so that _i is for input and _o for output. Just cleaner
4880 convention.
4885 convention.
4881
4886
4882 * Implemented parametric aliases. This pretty much allows the
4887 * Implemented parametric aliases. This pretty much allows the
4883 alias system to offer full-blown shell convenience, I think.
4888 alias system to offer full-blown shell convenience, I think.
4884
4889
4885 * Version 0.1.17 released, 0.1.18 opened.
4890 * Version 0.1.17 released, 0.1.18 opened.
4886
4891
4887 * dot_ipython/ipythonrc (alias): added documentation.
4892 * dot_ipython/ipythonrc (alias): added documentation.
4888 (xcolor): Fixed small bug (xcolors -> xcolor)
4893 (xcolor): Fixed small bug (xcolors -> xcolor)
4889
4894
4890 * Changed the alias system. Now alias is a magic command to define
4895 * Changed the alias system. Now alias is a magic command to define
4891 aliases just like the shell. Rationale: the builtin magics should
4896 aliases just like the shell. Rationale: the builtin magics should
4892 be there for things deeply connected to IPython's
4897 be there for things deeply connected to IPython's
4893 architecture. And this is a much lighter system for what I think
4898 architecture. And this is a much lighter system for what I think
4894 is the really important feature: allowing users to define quickly
4899 is the really important feature: allowing users to define quickly
4895 magics that will do shell things for them, so they can customize
4900 magics that will do shell things for them, so they can customize
4896 IPython easily to match their work habits. If someone is really
4901 IPython easily to match their work habits. If someone is really
4897 desperate to have another name for a builtin alias, they can
4902 desperate to have another name for a builtin alias, they can
4898 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4903 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4899 works.
4904 works.
4900
4905
4901 2001-11-28 Fernando Perez <fperez@colorado.edu>
4906 2001-11-28 Fernando Perez <fperez@colorado.edu>
4902
4907
4903 * Changed @file so that it opens the source file at the proper
4908 * Changed @file so that it opens the source file at the proper
4904 line. Since it uses less, if your EDITOR environment is
4909 line. Since it uses less, if your EDITOR environment is
4905 configured, typing v will immediately open your editor of choice
4910 configured, typing v will immediately open your editor of choice
4906 right at the line where the object is defined. Not as quick as
4911 right at the line where the object is defined. Not as quick as
4907 having a direct @edit command, but for all intents and purposes it
4912 having a direct @edit command, but for all intents and purposes it
4908 works. And I don't have to worry about writing @edit to deal with
4913 works. And I don't have to worry about writing @edit to deal with
4909 all the editors, less does that.
4914 all the editors, less does that.
4910
4915
4911 * Version 0.1.16 released, 0.1.17 opened.
4916 * Version 0.1.16 released, 0.1.17 opened.
4912
4917
4913 * Fixed some nasty bugs in the page/page_dumb combo that could
4918 * Fixed some nasty bugs in the page/page_dumb combo that could
4914 crash IPython.
4919 crash IPython.
4915
4920
4916 2001-11-27 Fernando Perez <fperez@colorado.edu>
4921 2001-11-27 Fernando Perez <fperez@colorado.edu>
4917
4922
4918 * Version 0.1.15 released, 0.1.16 opened.
4923 * Version 0.1.15 released, 0.1.16 opened.
4919
4924
4920 * Finally got ? and ?? to work for undefined things: now it's
4925 * Finally got ? and ?? to work for undefined things: now it's
4921 possible to type {}.get? and get information about the get method
4926 possible to type {}.get? and get information about the get method
4922 of dicts, or os.path? even if only os is defined (so technically
4927 of dicts, or os.path? even if only os is defined (so technically
4923 os.path isn't). Works at any level. For example, after import os,
4928 os.path isn't). Works at any level. For example, after import os,
4924 os?, os.path?, os.path.abspath? all work. This is great, took some
4929 os?, os.path?, os.path.abspath? all work. This is great, took some
4925 work in _ofind.
4930 work in _ofind.
4926
4931
4927 * Fixed more bugs with logging. The sanest way to do it was to add
4932 * Fixed more bugs with logging. The sanest way to do it was to add
4928 to @log a 'mode' parameter. Killed two in one shot (this mode
4933 to @log a 'mode' parameter. Killed two in one shot (this mode
4929 option was a request of Janko's). I think it's finally clean
4934 option was a request of Janko's). I think it's finally clean
4930 (famous last words).
4935 (famous last words).
4931
4936
4932 * Added a page_dumb() pager which does a decent job of paging on
4937 * Added a page_dumb() pager which does a decent job of paging on
4933 screen, if better things (like less) aren't available. One less
4938 screen, if better things (like less) aren't available. One less
4934 unix dependency (someday maybe somebody will port this to
4939 unix dependency (someday maybe somebody will port this to
4935 windows).
4940 windows).
4936
4941
4937 * Fixed problem in magic_log: would lock of logging out if log
4942 * Fixed problem in magic_log: would lock of logging out if log
4938 creation failed (because it would still think it had succeeded).
4943 creation failed (because it would still think it had succeeded).
4939
4944
4940 * Improved the page() function using curses to auto-detect screen
4945 * Improved the page() function using curses to auto-detect screen
4941 size. Now it can make a much better decision on whether to print
4946 size. Now it can make a much better decision on whether to print
4942 or page a string. Option screen_length was modified: a value 0
4947 or page a string. Option screen_length was modified: a value 0
4943 means auto-detect, and that's the default now.
4948 means auto-detect, and that's the default now.
4944
4949
4945 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4950 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4946 go out. I'll test it for a few days, then talk to Janko about
4951 go out. I'll test it for a few days, then talk to Janko about
4947 licences and announce it.
4952 licences and announce it.
4948
4953
4949 * Fixed the length of the auto-generated ---> prompt which appears
4954 * Fixed the length of the auto-generated ---> prompt which appears
4950 for auto-parens and auto-quotes. Getting this right isn't trivial,
4955 for auto-parens and auto-quotes. Getting this right isn't trivial,
4951 with all the color escapes, different prompt types and optional
4956 with all the color escapes, different prompt types and optional
4952 separators. But it seems to be working in all the combinations.
4957 separators. But it seems to be working in all the combinations.
4953
4958
4954 2001-11-26 Fernando Perez <fperez@colorado.edu>
4959 2001-11-26 Fernando Perez <fperez@colorado.edu>
4955
4960
4956 * Wrote a regexp filter to get option types from the option names
4961 * Wrote a regexp filter to get option types from the option names
4957 string. This eliminates the need to manually keep two duplicate
4962 string. This eliminates the need to manually keep two duplicate
4958 lists.
4963 lists.
4959
4964
4960 * Removed the unneeded check_option_names. Now options are handled
4965 * Removed the unneeded check_option_names. Now options are handled
4961 in a much saner manner and it's easy to visually check that things
4966 in a much saner manner and it's easy to visually check that things
4962 are ok.
4967 are ok.
4963
4968
4964 * Updated version numbers on all files I modified to carry a
4969 * Updated version numbers on all files I modified to carry a
4965 notice so Janko and Nathan have clear version markers.
4970 notice so Janko and Nathan have clear version markers.
4966
4971
4967 * Updated docstring for ultraTB with my changes. I should send
4972 * Updated docstring for ultraTB with my changes. I should send
4968 this to Nathan.
4973 this to Nathan.
4969
4974
4970 * Lots of small fixes. Ran everything through pychecker again.
4975 * Lots of small fixes. Ran everything through pychecker again.
4971
4976
4972 * Made loading of deep_reload an cmd line option. If it's not too
4977 * Made loading of deep_reload an cmd line option. If it's not too
4973 kosher, now people can just disable it. With -nodeep_reload it's
4978 kosher, now people can just disable it. With -nodeep_reload it's
4974 still available as dreload(), it just won't overwrite reload().
4979 still available as dreload(), it just won't overwrite reload().
4975
4980
4976 * Moved many options to the no| form (-opt and -noopt
4981 * Moved many options to the no| form (-opt and -noopt
4977 accepted). Cleaner.
4982 accepted). Cleaner.
4978
4983
4979 * Changed magic_log so that if called with no parameters, it uses
4984 * Changed magic_log so that if called with no parameters, it uses
4980 'rotate' mode. That way auto-generated logs aren't automatically
4985 'rotate' mode. That way auto-generated logs aren't automatically
4981 over-written. For normal logs, now a backup is made if it exists
4986 over-written. For normal logs, now a backup is made if it exists
4982 (only 1 level of backups). A new 'backup' mode was added to the
4987 (only 1 level of backups). A new 'backup' mode was added to the
4983 Logger class to support this. This was a request by Janko.
4988 Logger class to support this. This was a request by Janko.
4984
4989
4985 * Added @logoff/@logon to stop/restart an active log.
4990 * Added @logoff/@logon to stop/restart an active log.
4986
4991
4987 * Fixed a lot of bugs in log saving/replay. It was pretty
4992 * Fixed a lot of bugs in log saving/replay. It was pretty
4988 broken. Now special lines (!@,/) appear properly in the command
4993 broken. Now special lines (!@,/) appear properly in the command
4989 history after a log replay.
4994 history after a log replay.
4990
4995
4991 * Tried and failed to implement full session saving via pickle. My
4996 * Tried and failed to implement full session saving via pickle. My
4992 idea was to pickle __main__.__dict__, but modules can't be
4997 idea was to pickle __main__.__dict__, but modules can't be
4993 pickled. This would be a better alternative to replaying logs, but
4998 pickled. This would be a better alternative to replaying logs, but
4994 seems quite tricky to get to work. Changed -session to be called
4999 seems quite tricky to get to work. Changed -session to be called
4995 -logplay, which more accurately reflects what it does. And if we
5000 -logplay, which more accurately reflects what it does. And if we
4996 ever get real session saving working, -session is now available.
5001 ever get real session saving working, -session is now available.
4997
5002
4998 * Implemented color schemes for prompts also. As for tracebacks,
5003 * Implemented color schemes for prompts also. As for tracebacks,
4999 currently only NoColor and Linux are supported. But now the
5004 currently only NoColor and Linux are supported. But now the
5000 infrastructure is in place, based on a generic ColorScheme
5005 infrastructure is in place, based on a generic ColorScheme
5001 class. So writing and activating new schemes both for the prompts
5006 class. So writing and activating new schemes both for the prompts
5002 and the tracebacks should be straightforward.
5007 and the tracebacks should be straightforward.
5003
5008
5004 * Version 0.1.13 released, 0.1.14 opened.
5009 * Version 0.1.13 released, 0.1.14 opened.
5005
5010
5006 * Changed handling of options for output cache. Now counter is
5011 * Changed handling of options for output cache. Now counter is
5007 hardwired starting at 1 and one specifies the maximum number of
5012 hardwired starting at 1 and one specifies the maximum number of
5008 entries *in the outcache* (not the max prompt counter). This is
5013 entries *in the outcache* (not the max prompt counter). This is
5009 much better, since many statements won't increase the cache
5014 much better, since many statements won't increase the cache
5010 count. It also eliminated some confusing options, now there's only
5015 count. It also eliminated some confusing options, now there's only
5011 one: cache_size.
5016 one: cache_size.
5012
5017
5013 * Added 'alias' magic function and magic_alias option in the
5018 * Added 'alias' magic function and magic_alias option in the
5014 ipythonrc file. Now the user can easily define whatever names he
5019 ipythonrc file. Now the user can easily define whatever names he
5015 wants for the magic functions without having to play weird
5020 wants for the magic functions without having to play weird
5016 namespace games. This gives IPython a real shell-like feel.
5021 namespace games. This gives IPython a real shell-like feel.
5017
5022
5018 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5023 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5019 @ or not).
5024 @ or not).
5020
5025
5021 This was one of the last remaining 'visible' bugs (that I know
5026 This was one of the last remaining 'visible' bugs (that I know
5022 of). I think if I can clean up the session loading so it works
5027 of). I think if I can clean up the session loading so it works
5023 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5028 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5024 about licensing).
5029 about licensing).
5025
5030
5026 2001-11-25 Fernando Perez <fperez@colorado.edu>
5031 2001-11-25 Fernando Perez <fperez@colorado.edu>
5027
5032
5028 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5033 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5029 there's a cleaner distinction between what ? and ?? show.
5034 there's a cleaner distinction between what ? and ?? show.
5030
5035
5031 * Added screen_length option. Now the user can define his own
5036 * Added screen_length option. Now the user can define his own
5032 screen size for page() operations.
5037 screen size for page() operations.
5033
5038
5034 * Implemented magic shell-like functions with automatic code
5039 * Implemented magic shell-like functions with automatic code
5035 generation. Now adding another function is just a matter of adding
5040 generation. Now adding another function is just a matter of adding
5036 an entry to a dict, and the function is dynamically generated at
5041 an entry to a dict, and the function is dynamically generated at
5037 run-time. Python has some really cool features!
5042 run-time. Python has some really cool features!
5038
5043
5039 * Renamed many options to cleanup conventions a little. Now all
5044 * Renamed many options to cleanup conventions a little. Now all
5040 are lowercase, and only underscores where needed. Also in the code
5045 are lowercase, and only underscores where needed. Also in the code
5041 option name tables are clearer.
5046 option name tables are clearer.
5042
5047
5043 * Changed prompts a little. Now input is 'In [n]:' instead of
5048 * Changed prompts a little. Now input is 'In [n]:' instead of
5044 'In[n]:='. This allows it the numbers to be aligned with the
5049 'In[n]:='. This allows it the numbers to be aligned with the
5045 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5050 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5046 Python (it was a Mathematica thing). The '...' continuation prompt
5051 Python (it was a Mathematica thing). The '...' continuation prompt
5047 was also changed a little to align better.
5052 was also changed a little to align better.
5048
5053
5049 * Fixed bug when flushing output cache. Not all _p<n> variables
5054 * Fixed bug when flushing output cache. Not all _p<n> variables
5050 exist, so their deletion needs to be wrapped in a try:
5055 exist, so their deletion needs to be wrapped in a try:
5051
5056
5052 * Figured out how to properly use inspect.formatargspec() (it
5057 * Figured out how to properly use inspect.formatargspec() (it
5053 requires the args preceded by *). So I removed all the code from
5058 requires the args preceded by *). So I removed all the code from
5054 _get_pdef in Magic, which was just replicating that.
5059 _get_pdef in Magic, which was just replicating that.
5055
5060
5056 * Added test to prefilter to allow redefining magic function names
5061 * Added test to prefilter to allow redefining magic function names
5057 as variables. This is ok, since the @ form is always available,
5062 as variables. This is ok, since the @ form is always available,
5058 but whe should allow the user to define a variable called 'ls' if
5063 but whe should allow the user to define a variable called 'ls' if
5059 he needs it.
5064 he needs it.
5060
5065
5061 * Moved the ToDo information from README into a separate ToDo.
5066 * Moved the ToDo information from README into a separate ToDo.
5062
5067
5063 * General code cleanup and small bugfixes. I think it's close to a
5068 * General code cleanup and small bugfixes. I think it's close to a
5064 state where it can be released, obviously with a big 'beta'
5069 state where it can be released, obviously with a big 'beta'
5065 warning on it.
5070 warning on it.
5066
5071
5067 * Got the magic function split to work. Now all magics are defined
5072 * Got the magic function split to work. Now all magics are defined
5068 in a separate class. It just organizes things a bit, and now
5073 in a separate class. It just organizes things a bit, and now
5069 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5074 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5070 was too long).
5075 was too long).
5071
5076
5072 * Changed @clear to @reset to avoid potential confusions with
5077 * Changed @clear to @reset to avoid potential confusions with
5073 the shell command clear. Also renamed @cl to @clear, which does
5078 the shell command clear. Also renamed @cl to @clear, which does
5074 exactly what people expect it to from their shell experience.
5079 exactly what people expect it to from their shell experience.
5075
5080
5076 Added a check to the @reset command (since it's so
5081 Added a check to the @reset command (since it's so
5077 destructive, it's probably a good idea to ask for confirmation).
5082 destructive, it's probably a good idea to ask for confirmation).
5078 But now reset only works for full namespace resetting. Since the
5083 But now reset only works for full namespace resetting. Since the
5079 del keyword is already there for deleting a few specific
5084 del keyword is already there for deleting a few specific
5080 variables, I don't see the point of having a redundant magic
5085 variables, I don't see the point of having a redundant magic
5081 function for the same task.
5086 function for the same task.
5082
5087
5083 2001-11-24 Fernando Perez <fperez@colorado.edu>
5088 2001-11-24 Fernando Perez <fperez@colorado.edu>
5084
5089
5085 * Updated the builtin docs (esp. the ? ones).
5090 * Updated the builtin docs (esp. the ? ones).
5086
5091
5087 * Ran all the code through pychecker. Not terribly impressed with
5092 * Ran all the code through pychecker. Not terribly impressed with
5088 it: lots of spurious warnings and didn't really find anything of
5093 it: lots of spurious warnings and didn't really find anything of
5089 substance (just a few modules being imported and not used).
5094 substance (just a few modules being imported and not used).
5090
5095
5091 * Implemented the new ultraTB functionality into IPython. New
5096 * Implemented the new ultraTB functionality into IPython. New
5092 option: xcolors. This chooses color scheme. xmode now only selects
5097 option: xcolors. This chooses color scheme. xmode now only selects
5093 between Plain and Verbose. Better orthogonality.
5098 between Plain and Verbose. Better orthogonality.
5094
5099
5095 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5100 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5096 mode and color scheme for the exception handlers. Now it's
5101 mode and color scheme for the exception handlers. Now it's
5097 possible to have the verbose traceback with no coloring.
5102 possible to have the verbose traceback with no coloring.
5098
5103
5099 2001-11-23 Fernando Perez <fperez@colorado.edu>
5104 2001-11-23 Fernando Perez <fperez@colorado.edu>
5100
5105
5101 * Version 0.1.12 released, 0.1.13 opened.
5106 * Version 0.1.12 released, 0.1.13 opened.
5102
5107
5103 * Removed option to set auto-quote and auto-paren escapes by
5108 * Removed option to set auto-quote and auto-paren escapes by
5104 user. The chances of breaking valid syntax are just too high. If
5109 user. The chances of breaking valid syntax are just too high. If
5105 someone *really* wants, they can always dig into the code.
5110 someone *really* wants, they can always dig into the code.
5106
5111
5107 * Made prompt separators configurable.
5112 * Made prompt separators configurable.
5108
5113
5109 2001-11-22 Fernando Perez <fperez@colorado.edu>
5114 2001-11-22 Fernando Perez <fperez@colorado.edu>
5110
5115
5111 * Small bugfixes in many places.
5116 * Small bugfixes in many places.
5112
5117
5113 * Removed the MyCompleter class from ipplib. It seemed redundant
5118 * Removed the MyCompleter class from ipplib. It seemed redundant
5114 with the C-p,C-n history search functionality. Less code to
5119 with the C-p,C-n history search functionality. Less code to
5115 maintain.
5120 maintain.
5116
5121
5117 * Moved all the original ipython.py code into ipythonlib.py. Right
5122 * Moved all the original ipython.py code into ipythonlib.py. Right
5118 now it's just one big dump into a function called make_IPython, so
5123 now it's just one big dump into a function called make_IPython, so
5119 no real modularity has been gained. But at least it makes the
5124 no real modularity has been gained. But at least it makes the
5120 wrapper script tiny, and since ipythonlib is a module, it gets
5125 wrapper script tiny, and since ipythonlib is a module, it gets
5121 compiled and startup is much faster.
5126 compiled and startup is much faster.
5122
5127
5123 This is a reasobably 'deep' change, so we should test it for a
5128 This is a reasobably 'deep' change, so we should test it for a
5124 while without messing too much more with the code.
5129 while without messing too much more with the code.
5125
5130
5126 2001-11-21 Fernando Perez <fperez@colorado.edu>
5131 2001-11-21 Fernando Perez <fperez@colorado.edu>
5127
5132
5128 * Version 0.1.11 released, 0.1.12 opened for further work.
5133 * Version 0.1.11 released, 0.1.12 opened for further work.
5129
5134
5130 * Removed dependency on Itpl. It was only needed in one place. It
5135 * Removed dependency on Itpl. It was only needed in one place. It
5131 would be nice if this became part of python, though. It makes life
5136 would be nice if this became part of python, though. It makes life
5132 *a lot* easier in some cases.
5137 *a lot* easier in some cases.
5133
5138
5134 * Simplified the prefilter code a bit. Now all handlers are
5139 * Simplified the prefilter code a bit. Now all handlers are
5135 expected to explicitly return a value (at least a blank string).
5140 expected to explicitly return a value (at least a blank string).
5136
5141
5137 * Heavy edits in ipplib. Removed the help system altogether. Now
5142 * Heavy edits in ipplib. Removed the help system altogether. Now
5138 obj?/?? is used for inspecting objects, a magic @doc prints
5143 obj?/?? is used for inspecting objects, a magic @doc prints
5139 docstrings, and full-blown Python help is accessed via the 'help'
5144 docstrings, and full-blown Python help is accessed via the 'help'
5140 keyword. This cleans up a lot of code (less to maintain) and does
5145 keyword. This cleans up a lot of code (less to maintain) and does
5141 the job. Since 'help' is now a standard Python component, might as
5146 the job. Since 'help' is now a standard Python component, might as
5142 well use it and remove duplicate functionality.
5147 well use it and remove duplicate functionality.
5143
5148
5144 Also removed the option to use ipplib as a standalone program. By
5149 Also removed the option to use ipplib as a standalone program. By
5145 now it's too dependent on other parts of IPython to function alone.
5150 now it's too dependent on other parts of IPython to function alone.
5146
5151
5147 * Fixed bug in genutils.pager. It would crash if the pager was
5152 * Fixed bug in genutils.pager. It would crash if the pager was
5148 exited immediately after opening (broken pipe).
5153 exited immediately after opening (broken pipe).
5149
5154
5150 * Trimmed down the VerboseTB reporting a little. The header is
5155 * Trimmed down the VerboseTB reporting a little. The header is
5151 much shorter now and the repeated exception arguments at the end
5156 much shorter now and the repeated exception arguments at the end
5152 have been removed. For interactive use the old header seemed a bit
5157 have been removed. For interactive use the old header seemed a bit
5153 excessive.
5158 excessive.
5154
5159
5155 * Fixed small bug in output of @whos for variables with multi-word
5160 * Fixed small bug in output of @whos for variables with multi-word
5156 types (only first word was displayed).
5161 types (only first word was displayed).
5157
5162
5158 2001-11-17 Fernando Perez <fperez@colorado.edu>
5163 2001-11-17 Fernando Perez <fperez@colorado.edu>
5159
5164
5160 * Version 0.1.10 released, 0.1.11 opened for further work.
5165 * Version 0.1.10 released, 0.1.11 opened for further work.
5161
5166
5162 * Modified dirs and friends. dirs now *returns* the stack (not
5167 * Modified dirs and friends. dirs now *returns* the stack (not
5163 prints), so one can manipulate it as a variable. Convenient to
5168 prints), so one can manipulate it as a variable. Convenient to
5164 travel along many directories.
5169 travel along many directories.
5165
5170
5166 * Fixed bug in magic_pdef: would only work with functions with
5171 * Fixed bug in magic_pdef: would only work with functions with
5167 arguments with default values.
5172 arguments with default values.
5168
5173
5169 2001-11-14 Fernando Perez <fperez@colorado.edu>
5174 2001-11-14 Fernando Perez <fperez@colorado.edu>
5170
5175
5171 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5176 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5172 example with IPython. Various other minor fixes and cleanups.
5177 example with IPython. Various other minor fixes and cleanups.
5173
5178
5174 * Version 0.1.9 released, 0.1.10 opened for further work.
5179 * Version 0.1.9 released, 0.1.10 opened for further work.
5175
5180
5176 * Added sys.path to the list of directories searched in the
5181 * Added sys.path to the list of directories searched in the
5177 execfile= option. It used to be the current directory and the
5182 execfile= option. It used to be the current directory and the
5178 user's IPYTHONDIR only.
5183 user's IPYTHONDIR only.
5179
5184
5180 2001-11-13 Fernando Perez <fperez@colorado.edu>
5185 2001-11-13 Fernando Perez <fperez@colorado.edu>
5181
5186
5182 * Reinstated the raw_input/prefilter separation that Janko had
5187 * Reinstated the raw_input/prefilter separation that Janko had
5183 initially. This gives a more convenient setup for extending the
5188 initially. This gives a more convenient setup for extending the
5184 pre-processor from the outside: raw_input always gets a string,
5189 pre-processor from the outside: raw_input always gets a string,
5185 and prefilter has to process it. We can then redefine prefilter
5190 and prefilter has to process it. We can then redefine prefilter
5186 from the outside and implement extensions for special
5191 from the outside and implement extensions for special
5187 purposes.
5192 purposes.
5188
5193
5189 Today I got one for inputting PhysicalQuantity objects
5194 Today I got one for inputting PhysicalQuantity objects
5190 (from Scientific) without needing any function calls at
5195 (from Scientific) without needing any function calls at
5191 all. Extremely convenient, and it's all done as a user-level
5196 all. Extremely convenient, and it's all done as a user-level
5192 extension (no IPython code was touched). Now instead of:
5197 extension (no IPython code was touched). Now instead of:
5193 a = PhysicalQuantity(4.2,'m/s**2')
5198 a = PhysicalQuantity(4.2,'m/s**2')
5194 one can simply say
5199 one can simply say
5195 a = 4.2 m/s**2
5200 a = 4.2 m/s**2
5196 or even
5201 or even
5197 a = 4.2 m/s^2
5202 a = 4.2 m/s^2
5198
5203
5199 I use this, but it's also a proof of concept: IPython really is
5204 I use this, but it's also a proof of concept: IPython really is
5200 fully user-extensible, even at the level of the parsing of the
5205 fully user-extensible, even at the level of the parsing of the
5201 command line. It's not trivial, but it's perfectly doable.
5206 command line. It's not trivial, but it's perfectly doable.
5202
5207
5203 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5208 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5204 the problem of modules being loaded in the inverse order in which
5209 the problem of modules being loaded in the inverse order in which
5205 they were defined in
5210 they were defined in
5206
5211
5207 * Version 0.1.8 released, 0.1.9 opened for further work.
5212 * Version 0.1.8 released, 0.1.9 opened for further work.
5208
5213
5209 * Added magics pdef, source and file. They respectively show the
5214 * Added magics pdef, source and file. They respectively show the
5210 definition line ('prototype' in C), source code and full python
5215 definition line ('prototype' in C), source code and full python
5211 file for any callable object. The object inspector oinfo uses
5216 file for any callable object. The object inspector oinfo uses
5212 these to show the same information.
5217 these to show the same information.
5213
5218
5214 * Version 0.1.7 released, 0.1.8 opened for further work.
5219 * Version 0.1.7 released, 0.1.8 opened for further work.
5215
5220
5216 * Separated all the magic functions into a class called Magic. The
5221 * Separated all the magic functions into a class called Magic. The
5217 InteractiveShell class was becoming too big for Xemacs to handle
5222 InteractiveShell class was becoming too big for Xemacs to handle
5218 (de-indenting a line would lock it up for 10 seconds while it
5223 (de-indenting a line would lock it up for 10 seconds while it
5219 backtracked on the whole class!)
5224 backtracked on the whole class!)
5220
5225
5221 FIXME: didn't work. It can be done, but right now namespaces are
5226 FIXME: didn't work. It can be done, but right now namespaces are
5222 all messed up. Do it later (reverted it for now, so at least
5227 all messed up. Do it later (reverted it for now, so at least
5223 everything works as before).
5228 everything works as before).
5224
5229
5225 * Got the object introspection system (magic_oinfo) working! I
5230 * Got the object introspection system (magic_oinfo) working! I
5226 think this is pretty much ready for release to Janko, so he can
5231 think this is pretty much ready for release to Janko, so he can
5227 test it for a while and then announce it. Pretty much 100% of what
5232 test it for a while and then announce it. Pretty much 100% of what
5228 I wanted for the 'phase 1' release is ready. Happy, tired.
5233 I wanted for the 'phase 1' release is ready. Happy, tired.
5229
5234
5230 2001-11-12 Fernando Perez <fperez@colorado.edu>
5235 2001-11-12 Fernando Perez <fperez@colorado.edu>
5231
5236
5232 * Version 0.1.6 released, 0.1.7 opened for further work.
5237 * Version 0.1.6 released, 0.1.7 opened for further work.
5233
5238
5234 * Fixed bug in printing: it used to test for truth before
5239 * Fixed bug in printing: it used to test for truth before
5235 printing, so 0 wouldn't print. Now checks for None.
5240 printing, so 0 wouldn't print. Now checks for None.
5236
5241
5237 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5242 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5238 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5243 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5239 reaches by hand into the outputcache. Think of a better way to do
5244 reaches by hand into the outputcache. Think of a better way to do
5240 this later.
5245 this later.
5241
5246
5242 * Various small fixes thanks to Nathan's comments.
5247 * Various small fixes thanks to Nathan's comments.
5243
5248
5244 * Changed magic_pprint to magic_Pprint. This way it doesn't
5249 * Changed magic_pprint to magic_Pprint. This way it doesn't
5245 collide with pprint() and the name is consistent with the command
5250 collide with pprint() and the name is consistent with the command
5246 line option.
5251 line option.
5247
5252
5248 * Changed prompt counter behavior to be fully like
5253 * Changed prompt counter behavior to be fully like
5249 Mathematica's. That is, even input that doesn't return a result
5254 Mathematica's. That is, even input that doesn't return a result
5250 raises the prompt counter. The old behavior was kind of confusing
5255 raises the prompt counter. The old behavior was kind of confusing
5251 (getting the same prompt number several times if the operation
5256 (getting the same prompt number several times if the operation
5252 didn't return a result).
5257 didn't return a result).
5253
5258
5254 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5259 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5255
5260
5256 * Fixed -Classic mode (wasn't working anymore).
5261 * Fixed -Classic mode (wasn't working anymore).
5257
5262
5258 * Added colored prompts using Nathan's new code. Colors are
5263 * Added colored prompts using Nathan's new code. Colors are
5259 currently hardwired, they can be user-configurable. For
5264 currently hardwired, they can be user-configurable. For
5260 developers, they can be chosen in file ipythonlib.py, at the
5265 developers, they can be chosen in file ipythonlib.py, at the
5261 beginning of the CachedOutput class def.
5266 beginning of the CachedOutput class def.
5262
5267
5263 2001-11-11 Fernando Perez <fperez@colorado.edu>
5268 2001-11-11 Fernando Perez <fperez@colorado.edu>
5264
5269
5265 * Version 0.1.5 released, 0.1.6 opened for further work.
5270 * Version 0.1.5 released, 0.1.6 opened for further work.
5266
5271
5267 * Changed magic_env to *return* the environment as a dict (not to
5272 * Changed magic_env to *return* the environment as a dict (not to
5268 print it). This way it prints, but it can also be processed.
5273 print it). This way it prints, but it can also be processed.
5269
5274
5270 * Added Verbose exception reporting to interactive
5275 * Added Verbose exception reporting to interactive
5271 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5276 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5272 traceback. Had to make some changes to the ultraTB file. This is
5277 traceback. Had to make some changes to the ultraTB file. This is
5273 probably the last 'big' thing in my mental todo list. This ties
5278 probably the last 'big' thing in my mental todo list. This ties
5274 in with the next entry:
5279 in with the next entry:
5275
5280
5276 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5281 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5277 has to specify is Plain, Color or Verbose for all exception
5282 has to specify is Plain, Color or Verbose for all exception
5278 handling.
5283 handling.
5279
5284
5280 * Removed ShellServices option. All this can really be done via
5285 * Removed ShellServices option. All this can really be done via
5281 the magic system. It's easier to extend, cleaner and has automatic
5286 the magic system. It's easier to extend, cleaner and has automatic
5282 namespace protection and documentation.
5287 namespace protection and documentation.
5283
5288
5284 2001-11-09 Fernando Perez <fperez@colorado.edu>
5289 2001-11-09 Fernando Perez <fperez@colorado.edu>
5285
5290
5286 * Fixed bug in output cache flushing (missing parameter to
5291 * Fixed bug in output cache flushing (missing parameter to
5287 __init__). Other small bugs fixed (found using pychecker).
5292 __init__). Other small bugs fixed (found using pychecker).
5288
5293
5289 * Version 0.1.4 opened for bugfixing.
5294 * Version 0.1.4 opened for bugfixing.
5290
5295
5291 2001-11-07 Fernando Perez <fperez@colorado.edu>
5296 2001-11-07 Fernando Perez <fperez@colorado.edu>
5292
5297
5293 * Version 0.1.3 released, mainly because of the raw_input bug.
5298 * Version 0.1.3 released, mainly because of the raw_input bug.
5294
5299
5295 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5300 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5296 and when testing for whether things were callable, a call could
5301 and when testing for whether things were callable, a call could
5297 actually be made to certain functions. They would get called again
5302 actually be made to certain functions. They would get called again
5298 once 'really' executed, with a resulting double call. A disaster
5303 once 'really' executed, with a resulting double call. A disaster
5299 in many cases (list.reverse() would never work!).
5304 in many cases (list.reverse() would never work!).
5300
5305
5301 * Removed prefilter() function, moved its code to raw_input (which
5306 * Removed prefilter() function, moved its code to raw_input (which
5302 after all was just a near-empty caller for prefilter). This saves
5307 after all was just a near-empty caller for prefilter). This saves
5303 a function call on every prompt, and simplifies the class a tiny bit.
5308 a function call on every prompt, and simplifies the class a tiny bit.
5304
5309
5305 * Fix _ip to __ip name in magic example file.
5310 * Fix _ip to __ip name in magic example file.
5306
5311
5307 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5312 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5308 work with non-gnu versions of tar.
5313 work with non-gnu versions of tar.
5309
5314
5310 2001-11-06 Fernando Perez <fperez@colorado.edu>
5315 2001-11-06 Fernando Perez <fperez@colorado.edu>
5311
5316
5312 * Version 0.1.2. Just to keep track of the recent changes.
5317 * Version 0.1.2. Just to keep track of the recent changes.
5313
5318
5314 * Fixed nasty bug in output prompt routine. It used to check 'if
5319 * Fixed nasty bug in output prompt routine. It used to check 'if
5315 arg != None...'. Problem is, this fails if arg implements a
5320 arg != None...'. Problem is, this fails if arg implements a
5316 special comparison (__cmp__) which disallows comparing to
5321 special comparison (__cmp__) which disallows comparing to
5317 None. Found it when trying to use the PhysicalQuantity module from
5322 None. Found it when trying to use the PhysicalQuantity module from
5318 ScientificPython.
5323 ScientificPython.
5319
5324
5320 2001-11-05 Fernando Perez <fperez@colorado.edu>
5325 2001-11-05 Fernando Perez <fperez@colorado.edu>
5321
5326
5322 * Also added dirs. Now the pushd/popd/dirs family functions
5327 * Also added dirs. Now the pushd/popd/dirs family functions
5323 basically like the shell, with the added convenience of going home
5328 basically like the shell, with the added convenience of going home
5324 when called with no args.
5329 when called with no args.
5325
5330
5326 * pushd/popd slightly modified to mimic shell behavior more
5331 * pushd/popd slightly modified to mimic shell behavior more
5327 closely.
5332 closely.
5328
5333
5329 * Added env,pushd,popd from ShellServices as magic functions. I
5334 * Added env,pushd,popd from ShellServices as magic functions. I
5330 think the cleanest will be to port all desired functions from
5335 think the cleanest will be to port all desired functions from
5331 ShellServices as magics and remove ShellServices altogether. This
5336 ShellServices as magics and remove ShellServices altogether. This
5332 will provide a single, clean way of adding functionality
5337 will provide a single, clean way of adding functionality
5333 (shell-type or otherwise) to IP.
5338 (shell-type or otherwise) to IP.
5334
5339
5335 2001-11-04 Fernando Perez <fperez@colorado.edu>
5340 2001-11-04 Fernando Perez <fperez@colorado.edu>
5336
5341
5337 * Added .ipython/ directory to sys.path. This way users can keep
5342 * Added .ipython/ directory to sys.path. This way users can keep
5338 customizations there and access them via import.
5343 customizations there and access them via import.
5339
5344
5340 2001-11-03 Fernando Perez <fperez@colorado.edu>
5345 2001-11-03 Fernando Perez <fperez@colorado.edu>
5341
5346
5342 * Opened version 0.1.1 for new changes.
5347 * Opened version 0.1.1 for new changes.
5343
5348
5344 * Changed version number to 0.1.0: first 'public' release, sent to
5349 * Changed version number to 0.1.0: first 'public' release, sent to
5345 Nathan and Janko.
5350 Nathan and Janko.
5346
5351
5347 * Lots of small fixes and tweaks.
5352 * Lots of small fixes and tweaks.
5348
5353
5349 * Minor changes to whos format. Now strings are shown, snipped if
5354 * Minor changes to whos format. Now strings are shown, snipped if
5350 too long.
5355 too long.
5351
5356
5352 * Changed ShellServices to work on __main__ so they show up in @who
5357 * Changed ShellServices to work on __main__ so they show up in @who
5353
5358
5354 * Help also works with ? at the end of a line:
5359 * Help also works with ? at the end of a line:
5355 ?sin and sin?
5360 ?sin and sin?
5356 both produce the same effect. This is nice, as often I use the
5361 both produce the same effect. This is nice, as often I use the
5357 tab-complete to find the name of a method, but I used to then have
5362 tab-complete to find the name of a method, but I used to then have
5358 to go to the beginning of the line to put a ? if I wanted more
5363 to go to the beginning of the line to put a ? if I wanted more
5359 info. Now I can just add the ? and hit return. Convenient.
5364 info. Now I can just add the ? and hit return. Convenient.
5360
5365
5361 2001-11-02 Fernando Perez <fperez@colorado.edu>
5366 2001-11-02 Fernando Perez <fperez@colorado.edu>
5362
5367
5363 * Python version check (>=2.1) added.
5368 * Python version check (>=2.1) added.
5364
5369
5365 * Added LazyPython documentation. At this point the docs are quite
5370 * Added LazyPython documentation. At this point the docs are quite
5366 a mess. A cleanup is in order.
5371 a mess. A cleanup is in order.
5367
5372
5368 * Auto-installer created. For some bizarre reason, the zipfiles
5373 * Auto-installer created. For some bizarre reason, the zipfiles
5369 module isn't working on my system. So I made a tar version
5374 module isn't working on my system. So I made a tar version
5370 (hopefully the command line options in various systems won't kill
5375 (hopefully the command line options in various systems won't kill
5371 me).
5376 me).
5372
5377
5373 * Fixes to Struct in genutils. Now all dictionary-like methods are
5378 * Fixes to Struct in genutils. Now all dictionary-like methods are
5374 protected (reasonably).
5379 protected (reasonably).
5375
5380
5376 * Added pager function to genutils and changed ? to print usage
5381 * Added pager function to genutils and changed ? to print usage
5377 note through it (it was too long).
5382 note through it (it was too long).
5378
5383
5379 * Added the LazyPython functionality. Works great! I changed the
5384 * Added the LazyPython functionality. Works great! I changed the
5380 auto-quote escape to ';', it's on home row and next to '. But
5385 auto-quote escape to ';', it's on home row and next to '. But
5381 both auto-quote and auto-paren (still /) escapes are command-line
5386 both auto-quote and auto-paren (still /) escapes are command-line
5382 parameters.
5387 parameters.
5383
5388
5384
5389
5385 2001-11-01 Fernando Perez <fperez@colorado.edu>
5390 2001-11-01 Fernando Perez <fperez@colorado.edu>
5386
5391
5387 * Version changed to 0.0.7. Fairly large change: configuration now
5392 * Version changed to 0.0.7. Fairly large change: configuration now
5388 is all stored in a directory, by default .ipython. There, all
5393 is all stored in a directory, by default .ipython. There, all
5389 config files have normal looking names (not .names)
5394 config files have normal looking names (not .names)
5390
5395
5391 * Version 0.0.6 Released first to Lucas and Archie as a test
5396 * Version 0.0.6 Released first to Lucas and Archie as a test
5392 run. Since it's the first 'semi-public' release, change version to
5397 run. Since it's the first 'semi-public' release, change version to
5393 > 0.0.6 for any changes now.
5398 > 0.0.6 for any changes now.
5394
5399
5395 * Stuff I had put in the ipplib.py changelog:
5400 * Stuff I had put in the ipplib.py changelog:
5396
5401
5397 Changes to InteractiveShell:
5402 Changes to InteractiveShell:
5398
5403
5399 - Made the usage message a parameter.
5404 - Made the usage message a parameter.
5400
5405
5401 - Require the name of the shell variable to be given. It's a bit
5406 - Require the name of the shell variable to be given. It's a bit
5402 of a hack, but allows the name 'shell' not to be hardwire in the
5407 of a hack, but allows the name 'shell' not to be hardwire in the
5403 magic (@) handler, which is problematic b/c it requires
5408 magic (@) handler, which is problematic b/c it requires
5404 polluting the global namespace with 'shell'. This in turn is
5409 polluting the global namespace with 'shell'. This in turn is
5405 fragile: if a user redefines a variable called shell, things
5410 fragile: if a user redefines a variable called shell, things
5406 break.
5411 break.
5407
5412
5408 - magic @: all functions available through @ need to be defined
5413 - magic @: all functions available through @ need to be defined
5409 as magic_<name>, even though they can be called simply as
5414 as magic_<name>, even though they can be called simply as
5410 @<name>. This allows the special command @magic to gather
5415 @<name>. This allows the special command @magic to gather
5411 information automatically about all existing magic functions,
5416 information automatically about all existing magic functions,
5412 even if they are run-time user extensions, by parsing the shell
5417 even if they are run-time user extensions, by parsing the shell
5413 instance __dict__ looking for special magic_ names.
5418 instance __dict__ looking for special magic_ names.
5414
5419
5415 - mainloop: added *two* local namespace parameters. This allows
5420 - mainloop: added *two* local namespace parameters. This allows
5416 the class to differentiate between parameters which were there
5421 the class to differentiate between parameters which were there
5417 before and after command line initialization was processed. This
5422 before and after command line initialization was processed. This
5418 way, later @who can show things loaded at startup by the
5423 way, later @who can show things loaded at startup by the
5419 user. This trick was necessary to make session saving/reloading
5424 user. This trick was necessary to make session saving/reloading
5420 really work: ideally after saving/exiting/reloading a session,
5425 really work: ideally after saving/exiting/reloading a session,
5421 *everythin* should look the same, including the output of @who. I
5426 *everythin* should look the same, including the output of @who. I
5422 was only able to make this work with this double namespace
5427 was only able to make this work with this double namespace
5423 trick.
5428 trick.
5424
5429
5425 - added a header to the logfile which allows (almost) full
5430 - added a header to the logfile which allows (almost) full
5426 session restoring.
5431 session restoring.
5427
5432
5428 - prepend lines beginning with @ or !, with a and log
5433 - prepend lines beginning with @ or !, with a and log
5429 them. Why? !lines: may be useful to know what you did @lines:
5434 them. Why? !lines: may be useful to know what you did @lines:
5430 they may affect session state. So when restoring a session, at
5435 they may affect session state. So when restoring a session, at
5431 least inform the user of their presence. I couldn't quite get
5436 least inform the user of their presence. I couldn't quite get
5432 them to properly re-execute, but at least the user is warned.
5437 them to properly re-execute, but at least the user is warned.
5433
5438
5434 * Started ChangeLog.
5439 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now