##// END OF EJS Templates
Add support for autoindent inside (X)emacs.
fperez -
Show More
@@ -1,5420 +1,5424 b''
1 2006-05-24 Fernando Perez <Fernando.Perez@colorado.edu>
1 2006-05-24 Fernando Perez <Fernando.Perez@colorado.edu>
2
2
3 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
3 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
4 python-mode recognizes our debugger mode.
4 python-mode recognizes our debugger mode. Add support for
5 autoindent inside (X)emacs. After a patch sent in by Jin Liu
6 <m.liu.jin-AT-gmail.com> originally written by
7 doxgen-AT-newsmth.net (with minor modifications for xemacs
8 compatibility)
5
9
6 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
10 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
7 tracebacks when walking the stack so that the stack tracking system
11 tracebacks when walking the stack so that the stack tracking system
8 in emacs' python-mode can identify the frames correctly.
12 in emacs' python-mode can identify the frames correctly.
9
13
10 * IPython/ipmaker.py (make_IPython): make the internal (and
14 * IPython/ipmaker.py (make_IPython): make the internal (and
11 default config) autoedit_syntax value false by default. Too many
15 default config) autoedit_syntax value false by default. Too many
12 users have complained to me (both on and off-list) about problems
16 users have complained to me (both on and off-list) about problems
13 with this option being on by default, so I'm making it default to
17 with this option being on by default, so I'm making it default to
14 off. It can still be enabled by anyone via the usual mechanisms.
18 off. It can still be enabled by anyone via the usual mechanisms.
15
19
16 * IPython/completer.py (Completer.attr_matches): add support for
20 * IPython/completer.py (Completer.attr_matches): add support for
17 PyCrust-style _getAttributeNames magic method. Patch contributed
21 PyCrust-style _getAttributeNames magic method. Patch contributed
18 by <mscott-AT-goldenspud.com>. Closes #50.
22 by <mscott-AT-goldenspud.com>. Closes #50.
19
23
20 * IPython/iplib.py (InteractiveShell.__init__): remove the
24 * IPython/iplib.py (InteractiveShell.__init__): remove the
21 deletion of exit/quit from __builtin__, which can break
25 deletion of exit/quit from __builtin__, which can break
22 third-party tools like the Zope debugging console. The
26 third-party tools like the Zope debugging console. The
23 %exit/%quit magics remain. In general, it's probably a good idea
27 %exit/%quit magics remain. In general, it's probably a good idea
24 not to delete anything from __builtin__, since we never know what
28 not to delete anything from __builtin__, since we never know what
25 that will break. In any case, python now (for 2.5) will support
29 that will break. In any case, python now (for 2.5) will support
26 'real' exit/quit, so this issue is moot. Closes #55.
30 'real' exit/quit, so this issue is moot. Closes #55.
27
31
28 * IPython/genutils.py (with_obj): rename the 'with' function to
32 * IPython/genutils.py (with_obj): rename the 'with' function to
29 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
33 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
30 becomes a language keyword. Closes #53.
34 becomes a language keyword. Closes #53.
31
35
32 * IPython/FakeModule.py (FakeModule.__init__): add a proper
36 * IPython/FakeModule.py (FakeModule.__init__): add a proper
33 __file__ attribute to this so it fools more things into thinking
37 __file__ attribute to this so it fools more things into thinking
34 it is a real module. Closes #59.
38 it is a real module. Closes #59.
35
39
36 * IPython/Magic.py (magic_edit): add -n option to open the editor
40 * IPython/Magic.py (magic_edit): add -n option to open the editor
37 at a specific line number. After a patch by Stefan van der Walt.
41 at a specific line number. After a patch by Stefan van der Walt.
38
42
39 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
43 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
40
44
41 * IPython/iplib.py (edit_syntax_error): fix crash when for some
45 * IPython/iplib.py (edit_syntax_error): fix crash when for some
42 reason the file could not be opened. After automatic crash
46 reason the file could not be opened. After automatic crash
43 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
47 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
44 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
48 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
45 (_should_recompile): Don't fire editor if using %bg, since there
49 (_should_recompile): Don't fire editor if using %bg, since there
46 is no file in the first place. From the same report as above.
50 is no file in the first place. From the same report as above.
47 (raw_input): protect against faulty third-party prefilters. After
51 (raw_input): protect against faulty third-party prefilters. After
48 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
52 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
49 while running under SAGE.
53 while running under SAGE.
50
54
51 2006-05-23 Ville Vainio <vivainio@gmail.com>
55 2006-05-23 Ville Vainio <vivainio@gmail.com>
52
56
53 * ipapi.py: Stripped down ip.to_user_ns() to work only as
57 * ipapi.py: Stripped down ip.to_user_ns() to work only as
54 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
58 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
55 now returns None (again), unless dummy is specifically allowed by
59 now returns None (again), unless dummy is specifically allowed by
56 ipapi.get(allow_dummy=True).
60 ipapi.get(allow_dummy=True).
57
61
58 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
62 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
59
63
60 * IPython: remove all 2.2-compatibility objects and hacks from
64 * IPython: remove all 2.2-compatibility objects and hacks from
61 everywhere, since we only support 2.3 at this point. Docs
65 everywhere, since we only support 2.3 at this point. Docs
62 updated.
66 updated.
63
67
64 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
68 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
65 Anything requiring extra validation can be turned into a Python
69 Anything requiring extra validation can be turned into a Python
66 property in the future. I used a property for the db one b/c
70 property in the future. I used a property for the db one b/c
67 there was a nasty circularity problem with the initialization
71 there was a nasty circularity problem with the initialization
68 order, which right now I don't have time to clean up.
72 order, which right now I don't have time to clean up.
69
73
70 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
74 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
71 another locking bug reported by Jorgen. I'm not 100% sure though,
75 another locking bug reported by Jorgen. I'm not 100% sure though,
72 so more testing is needed...
76 so more testing is needed...
73
77
74 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
78 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
75
79
76 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
80 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
77 local variables from any routine in user code (typically executed
81 local variables from any routine in user code (typically executed
78 with %run) directly into the interactive namespace. Very useful
82 with %run) directly into the interactive namespace. Very useful
79 when doing complex debugging.
83 when doing complex debugging.
80 (IPythonNotRunning): Changed the default None object to a dummy
84 (IPythonNotRunning): Changed the default None object to a dummy
81 whose attributes can be queried as well as called without
85 whose attributes can be queried as well as called without
82 exploding, to ease writing code which works transparently both in
86 exploding, to ease writing code which works transparently both in
83 and out of ipython and uses some of this API.
87 and out of ipython and uses some of this API.
84
88
85 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
89 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
86
90
87 * IPython/hooks.py (result_display): Fix the fact that our display
91 * IPython/hooks.py (result_display): Fix the fact that our display
88 hook was using str() instead of repr(), as the default python
92 hook was using str() instead of repr(), as the default python
89 console does. This had gone unnoticed b/c it only happened if
93 console does. This had gone unnoticed b/c it only happened if
90 %Pprint was off, but the inconsistency was there.
94 %Pprint was off, but the inconsistency was there.
91
95
92 2006-05-15 Ville Vainio <vivainio@gmail.com>
96 2006-05-15 Ville Vainio <vivainio@gmail.com>
93
97
94 * Oinspect.py: Only show docstring for nonexisting/binary files
98 * Oinspect.py: Only show docstring for nonexisting/binary files
95 when doing object??, closing ticket #62
99 when doing object??, closing ticket #62
96
100
97 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
101 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
98
102
99 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
103 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
100 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
104 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
101 was being released in a routine which hadn't checked if it had
105 was being released in a routine which hadn't checked if it had
102 been the one to acquire it.
106 been the one to acquire it.
103
107
104 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
108 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
105
109
106 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
110 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
107
111
108 2006-04-11 Ville Vainio <vivainio@gmail.com>
112 2006-04-11 Ville Vainio <vivainio@gmail.com>
109
113
110 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
114 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
111 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
115 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
112 prefilters, allowing stuff like magics and aliases in the file.
116 prefilters, allowing stuff like magics and aliases in the file.
113
117
114 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
118 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
115 added. Supported now are "%clear in" and "%clear out" (clear input and
119 added. Supported now are "%clear in" and "%clear out" (clear input and
116 output history, respectively). Also fixed CachedOutput.flush to
120 output history, respectively). Also fixed CachedOutput.flush to
117 properly flush the output cache.
121 properly flush the output cache.
118
122
119 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
123 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
120 half-success (and fail explicitly).
124 half-success (and fail explicitly).
121
125
122 2006-03-28 Ville Vainio <vivainio@gmail.com>
126 2006-03-28 Ville Vainio <vivainio@gmail.com>
123
127
124 * iplib.py: Fix quoting of aliases so that only argless ones
128 * iplib.py: Fix quoting of aliases so that only argless ones
125 are quoted
129 are quoted
126
130
127 2006-03-28 Ville Vainio <vivainio@gmail.com>
131 2006-03-28 Ville Vainio <vivainio@gmail.com>
128
132
129 * iplib.py: Quote aliases with spaces in the name.
133 * iplib.py: Quote aliases with spaces in the name.
130 "c:\program files\blah\bin" is now legal alias target.
134 "c:\program files\blah\bin" is now legal alias target.
131
135
132 * ext_rehashdir.py: Space no longer allowed as arg
136 * ext_rehashdir.py: Space no longer allowed as arg
133 separator, since space is legal in path names.
137 separator, since space is legal in path names.
134
138
135 2006-03-16 Ville Vainio <vivainio@gmail.com>
139 2006-03-16 Ville Vainio <vivainio@gmail.com>
136
140
137 * upgrade_dir.py: Take path.py from Extensions, correcting
141 * upgrade_dir.py: Take path.py from Extensions, correcting
138 %upgrade magic
142 %upgrade magic
139
143
140 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
144 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
141
145
142 * hooks.py: Only enclose editor binary in quotes if legal and
146 * hooks.py: Only enclose editor binary in quotes if legal and
143 necessary (space in the name, and is an existing file). Fixes a bug
147 necessary (space in the name, and is an existing file). Fixes a bug
144 reported by Zachary Pincus.
148 reported by Zachary Pincus.
145
149
146 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
150 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
147
151
148 * Manual: thanks to a tip on proper color handling for Emacs, by
152 * Manual: thanks to a tip on proper color handling for Emacs, by
149 Eric J Haywiser <ejh1-AT-MIT.EDU>.
153 Eric J Haywiser <ejh1-AT-MIT.EDU>.
150
154
151 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
155 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
152 by applying the provided patch. Thanks to Liu Jin
156 by applying the provided patch. Thanks to Liu Jin
153 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
157 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
154 XEmacs/Linux, I'm trusting the submitter that it actually helps
158 XEmacs/Linux, I'm trusting the submitter that it actually helps
155 under win32/GNU Emacs. Will revisit if any problems are reported.
159 under win32/GNU Emacs. Will revisit if any problems are reported.
156
160
157 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
161 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
158
162
159 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
163 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
160 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
164 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
161
165
162 2006-03-12 Ville Vainio <vivainio@gmail.com>
166 2006-03-12 Ville Vainio <vivainio@gmail.com>
163
167
164 * Magic.py (magic_timeit): Added %timeit magic, contributed by
168 * Magic.py (magic_timeit): Added %timeit magic, contributed by
165 Torsten Marek.
169 Torsten Marek.
166
170
167 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
171 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
168
172
169 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
173 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
170 line ranges works again.
174 line ranges works again.
171
175
172 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
176 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
173
177
174 * IPython/iplib.py (showtraceback): add back sys.last_traceback
178 * IPython/iplib.py (showtraceback): add back sys.last_traceback
175 and friends, after a discussion with Zach Pincus on ipython-user.
179 and friends, after a discussion with Zach Pincus on ipython-user.
176 I'm not 100% sure, but after thinking aobut it quite a bit, it may
180 I'm not 100% sure, but after thinking aobut it quite a bit, it may
177 be OK. Testing with the multithreaded shells didn't reveal any
181 be OK. Testing with the multithreaded shells didn't reveal any
178 problems, but let's keep an eye out.
182 problems, but let's keep an eye out.
179
183
180 In the process, I fixed a few things which were calling
184 In the process, I fixed a few things which were calling
181 self.InteractiveTB() directly (like safe_execfile), which is a
185 self.InteractiveTB() directly (like safe_execfile), which is a
182 mistake: ALL exception reporting should be done by calling
186 mistake: ALL exception reporting should be done by calling
183 self.showtraceback(), which handles state and tab-completion and
187 self.showtraceback(), which handles state and tab-completion and
184 more.
188 more.
185
189
186 2006-03-01 Ville Vainio <vivainio@gmail.com>
190 2006-03-01 Ville Vainio <vivainio@gmail.com>
187
191
188 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
192 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
189 To use, do "from ipipe import *".
193 To use, do "from ipipe import *".
190
194
191 2006-02-24 Ville Vainio <vivainio@gmail.com>
195 2006-02-24 Ville Vainio <vivainio@gmail.com>
192
196
193 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
197 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
194 "cleanly" and safely than the older upgrade mechanism.
198 "cleanly" and safely than the older upgrade mechanism.
195
199
196 2006-02-21 Ville Vainio <vivainio@gmail.com>
200 2006-02-21 Ville Vainio <vivainio@gmail.com>
197
201
198 * Magic.py: %save works again.
202 * Magic.py: %save works again.
199
203
200 2006-02-15 Ville Vainio <vivainio@gmail.com>
204 2006-02-15 Ville Vainio <vivainio@gmail.com>
201
205
202 * Magic.py: %Pprint works again
206 * Magic.py: %Pprint works again
203
207
204 * Extensions/ipy_sane_defaults.py: Provide everything provided
208 * Extensions/ipy_sane_defaults.py: Provide everything provided
205 in default ipythonrc, to make it possible to have a completely empty
209 in default ipythonrc, to make it possible to have a completely empty
206 ipythonrc (and thus completely rc-file free configuration)
210 ipythonrc (and thus completely rc-file free configuration)
207
211
208
212
209 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
213 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
210
214
211 * IPython/hooks.py (editor): quote the call to the editor command,
215 * IPython/hooks.py (editor): quote the call to the editor command,
212 to allow commands with spaces in them. Problem noted by watching
216 to allow commands with spaces in them. Problem noted by watching
213 Ian Oswald's video about textpad under win32 at
217 Ian Oswald's video about textpad under win32 at
214 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
218 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
215
219
216 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
220 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
217 describing magics (we haven't used @ for a loong time).
221 describing magics (we haven't used @ for a loong time).
218
222
219 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
223 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
220 contributed by marienz to close
224 contributed by marienz to close
221 http://www.scipy.net/roundup/ipython/issue53.
225 http://www.scipy.net/roundup/ipython/issue53.
222
226
223 2006-02-10 Ville Vainio <vivainio@gmail.com>
227 2006-02-10 Ville Vainio <vivainio@gmail.com>
224
228
225 * genutils.py: getoutput now works in win32 too
229 * genutils.py: getoutput now works in win32 too
226
230
227 * completer.py: alias and magic completion only invoked
231 * completer.py: alias and magic completion only invoked
228 at the first "item" in the line, to avoid "cd %store"
232 at the first "item" in the line, to avoid "cd %store"
229 nonsense.
233 nonsense.
230
234
231 2006-02-09 Ville Vainio <vivainio@gmail.com>
235 2006-02-09 Ville Vainio <vivainio@gmail.com>
232
236
233 * test/*: Added a unit testing framework (finally).
237 * test/*: Added a unit testing framework (finally).
234 '%run runtests.py' to run test_*.
238 '%run runtests.py' to run test_*.
235
239
236 * ipapi.py: Exposed runlines and set_custom_exc
240 * ipapi.py: Exposed runlines and set_custom_exc
237
241
238 2006-02-07 Ville Vainio <vivainio@gmail.com>
242 2006-02-07 Ville Vainio <vivainio@gmail.com>
239
243
240 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
244 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
241 instead use "f(1 2)" as before.
245 instead use "f(1 2)" as before.
242
246
243 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
247 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
244
248
245 * IPython/demo.py (IPythonDemo): Add new classes to the demo
249 * IPython/demo.py (IPythonDemo): Add new classes to the demo
246 facilities, for demos processed by the IPython input filter
250 facilities, for demos processed by the IPython input filter
247 (IPythonDemo), and for running a script one-line-at-a-time as a
251 (IPythonDemo), and for running a script one-line-at-a-time as a
248 demo, both for pure Python (LineDemo) and for IPython-processed
252 demo, both for pure Python (LineDemo) and for IPython-processed
249 input (IPythonLineDemo). After a request by Dave Kohel, from the
253 input (IPythonLineDemo). After a request by Dave Kohel, from the
250 SAGE team.
254 SAGE team.
251 (Demo.edit): added and edit() method to the demo objects, to edit
255 (Demo.edit): added and edit() method to the demo objects, to edit
252 the in-memory copy of the last executed block.
256 the in-memory copy of the last executed block.
253
257
254 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
258 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
255 processing to %edit, %macro and %save. These commands can now be
259 processing to %edit, %macro and %save. These commands can now be
256 invoked on the unprocessed input as it was typed by the user
260 invoked on the unprocessed input as it was typed by the user
257 (without any prefilters applied). After requests by the SAGE team
261 (without any prefilters applied). After requests by the SAGE team
258 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
262 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
259
263
260 2006-02-01 Ville Vainio <vivainio@gmail.com>
264 2006-02-01 Ville Vainio <vivainio@gmail.com>
261
265
262 * setup.py, eggsetup.py: easy_install ipython==dev works
266 * setup.py, eggsetup.py: easy_install ipython==dev works
263 correctly now (on Linux)
267 correctly now (on Linux)
264
268
265 * ipy_user_conf,ipmaker: user config changes, removed spurious
269 * ipy_user_conf,ipmaker: user config changes, removed spurious
266 warnings
270 warnings
267
271
268 * iplib: if rc.banner is string, use it as is.
272 * iplib: if rc.banner is string, use it as is.
269
273
270 * Magic: %pycat accepts a string argument and pages it's contents.
274 * Magic: %pycat accepts a string argument and pages it's contents.
271
275
272
276
273 2006-01-30 Ville Vainio <vivainio@gmail.com>
277 2006-01-30 Ville Vainio <vivainio@gmail.com>
274
278
275 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
279 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
276 Now %store and bookmarks work through PickleShare, meaning that
280 Now %store and bookmarks work through PickleShare, meaning that
277 concurrent access is possible and all ipython sessions see the
281 concurrent access is possible and all ipython sessions see the
278 same database situation all the time, instead of snapshot of
282 same database situation all the time, instead of snapshot of
279 the situation when the session was started. Hence, %bookmark
283 the situation when the session was started. Hence, %bookmark
280 results are immediately accessible from othes sessions. The database
284 results are immediately accessible from othes sessions. The database
281 is also available for use by user extensions. See:
285 is also available for use by user extensions. See:
282 http://www.python.org/pypi/pickleshare
286 http://www.python.org/pypi/pickleshare
283
287
284 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
288 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
285
289
286 * aliases can now be %store'd
290 * aliases can now be %store'd
287
291
288 * path.py move to Extensions so that pickleshare does not need
292 * path.py move to Extensions so that pickleshare does not need
289 IPython-specific import. Extensions added to pythonpath right
293 IPython-specific import. Extensions added to pythonpath right
290 at __init__.
294 at __init__.
291
295
292 * iplib.py: ipalias deprecated/redundant; aliases are converted and
296 * iplib.py: ipalias deprecated/redundant; aliases are converted and
293 called with _ip.system and the pre-transformed command string.
297 called with _ip.system and the pre-transformed command string.
294
298
295 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
299 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
296
300
297 * IPython/iplib.py (interact): Fix that we were not catching
301 * IPython/iplib.py (interact): Fix that we were not catching
298 KeyboardInterrupt exceptions properly. I'm not quite sure why the
302 KeyboardInterrupt exceptions properly. I'm not quite sure why the
299 logic here had to change, but it's fixed now.
303 logic here had to change, but it's fixed now.
300
304
301 2006-01-29 Ville Vainio <vivainio@gmail.com>
305 2006-01-29 Ville Vainio <vivainio@gmail.com>
302
306
303 * iplib.py: Try to import pyreadline on Windows.
307 * iplib.py: Try to import pyreadline on Windows.
304
308
305 2006-01-27 Ville Vainio <vivainio@gmail.com>
309 2006-01-27 Ville Vainio <vivainio@gmail.com>
306
310
307 * iplib.py: Expose ipapi as _ip in builtin namespace.
311 * iplib.py: Expose ipapi as _ip in builtin namespace.
308 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
312 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
309 and ip_set_hook (-> _ip.set_hook) redundant. % and !
313 and ip_set_hook (-> _ip.set_hook) redundant. % and !
310 syntax now produce _ip.* variant of the commands.
314 syntax now produce _ip.* variant of the commands.
311
315
312 * "_ip.options().autoedit_syntax = 2" automatically throws
316 * "_ip.options().autoedit_syntax = 2" automatically throws
313 user to editor for syntax error correction without prompting.
317 user to editor for syntax error correction without prompting.
314
318
315 2006-01-27 Ville Vainio <vivainio@gmail.com>
319 2006-01-27 Ville Vainio <vivainio@gmail.com>
316
320
317 * ipmaker.py: Give "realistic" sys.argv for scripts (without
321 * ipmaker.py: Give "realistic" sys.argv for scripts (without
318 'ipython' at argv[0]) executed through command line.
322 'ipython' at argv[0]) executed through command line.
319 NOTE: this DEPRECATES calling ipython with multiple scripts
323 NOTE: this DEPRECATES calling ipython with multiple scripts
320 ("ipython a.py b.py c.py")
324 ("ipython a.py b.py c.py")
321
325
322 * iplib.py, hooks.py: Added configurable input prefilter,
326 * iplib.py, hooks.py: Added configurable input prefilter,
323 named 'input_prefilter'. See ext_rescapture.py for example
327 named 'input_prefilter'. See ext_rescapture.py for example
324 usage.
328 usage.
325
329
326 * ext_rescapture.py, Magic.py: Better system command output capture
330 * ext_rescapture.py, Magic.py: Better system command output capture
327 through 'var = !ls' (deprecates user-visible %sc). Same notation
331 through 'var = !ls' (deprecates user-visible %sc). Same notation
328 applies for magics, 'var = %alias' assigns alias list to var.
332 applies for magics, 'var = %alias' assigns alias list to var.
329
333
330 * ipapi.py: added meta() for accessing extension-usable data store.
334 * ipapi.py: added meta() for accessing extension-usable data store.
331
335
332 * iplib.py: added InteractiveShell.getapi(). New magics should be
336 * iplib.py: added InteractiveShell.getapi(). New magics should be
333 written doing self.getapi() instead of using the shell directly.
337 written doing self.getapi() instead of using the shell directly.
334
338
335 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
339 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
336 %store foo >> ~/myfoo.txt to store variables to files (in clean
340 %store foo >> ~/myfoo.txt to store variables to files (in clean
337 textual form, not a restorable pickle).
341 textual form, not a restorable pickle).
338
342
339 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
343 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
340
344
341 * usage.py, Magic.py: added %quickref
345 * usage.py, Magic.py: added %quickref
342
346
343 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
347 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
344
348
345 * GetoptErrors when invoking magics etc. with wrong args
349 * GetoptErrors when invoking magics etc. with wrong args
346 are now more helpful:
350 are now more helpful:
347 GetoptError: option -l not recognized (allowed: "qb" )
351 GetoptError: option -l not recognized (allowed: "qb" )
348
352
349 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
353 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
350
354
351 * IPython/demo.py (Demo.show): Flush stdout after each block, so
355 * IPython/demo.py (Demo.show): Flush stdout after each block, so
352 computationally intensive blocks don't appear to stall the demo.
356 computationally intensive blocks don't appear to stall the demo.
353
357
354 2006-01-24 Ville Vainio <vivainio@gmail.com>
358 2006-01-24 Ville Vainio <vivainio@gmail.com>
355
359
356 * iplib.py, hooks.py: 'result_display' hook can return a non-None
360 * iplib.py, hooks.py: 'result_display' hook can return a non-None
357 value to manipulate resulting history entry.
361 value to manipulate resulting history entry.
358
362
359 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
363 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
360 to instance methods of IPApi class, to make extending an embedded
364 to instance methods of IPApi class, to make extending an embedded
361 IPython feasible. See ext_rehashdir.py for example usage.
365 IPython feasible. See ext_rehashdir.py for example usage.
362
366
363 * Merged 1071-1076 from banches/0.7.1
367 * Merged 1071-1076 from banches/0.7.1
364
368
365
369
366 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
370 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
367
371
368 * tools/release (daystamp): Fix build tools to use the new
372 * tools/release (daystamp): Fix build tools to use the new
369 eggsetup.py script to build lightweight eggs.
373 eggsetup.py script to build lightweight eggs.
370
374
371 * Applied changesets 1062 and 1064 before 0.7.1 release.
375 * Applied changesets 1062 and 1064 before 0.7.1 release.
372
376
373 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
377 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
374 see the raw input history (without conversions like %ls ->
378 see the raw input history (without conversions like %ls ->
375 ipmagic("ls")). After a request from W. Stein, SAGE
379 ipmagic("ls")). After a request from W. Stein, SAGE
376 (http://modular.ucsd.edu/sage) developer. This information is
380 (http://modular.ucsd.edu/sage) developer. This information is
377 stored in the input_hist_raw attribute of the IPython instance, so
381 stored in the input_hist_raw attribute of the IPython instance, so
378 developers can access it if needed (it's an InputList instance).
382 developers can access it if needed (it's an InputList instance).
379
383
380 * Versionstring = 0.7.2.svn
384 * Versionstring = 0.7.2.svn
381
385
382 * eggsetup.py: A separate script for constructing eggs, creates
386 * eggsetup.py: A separate script for constructing eggs, creates
383 proper launch scripts even on Windows (an .exe file in
387 proper launch scripts even on Windows (an .exe file in
384 \python24\scripts).
388 \python24\scripts).
385
389
386 * ipapi.py: launch_new_instance, launch entry point needed for the
390 * ipapi.py: launch_new_instance, launch entry point needed for the
387 egg.
391 egg.
388
392
389 2006-01-23 Ville Vainio <vivainio@gmail.com>
393 2006-01-23 Ville Vainio <vivainio@gmail.com>
390
394
391 * Added %cpaste magic for pasting python code
395 * Added %cpaste magic for pasting python code
392
396
393 2006-01-22 Ville Vainio <vivainio@gmail.com>
397 2006-01-22 Ville Vainio <vivainio@gmail.com>
394
398
395 * Merge from branches/0.7.1 into trunk, revs 1052-1057
399 * Merge from branches/0.7.1 into trunk, revs 1052-1057
396
400
397 * Versionstring = 0.7.2.svn
401 * Versionstring = 0.7.2.svn
398
402
399 * eggsetup.py: A separate script for constructing eggs, creates
403 * eggsetup.py: A separate script for constructing eggs, creates
400 proper launch scripts even on Windows (an .exe file in
404 proper launch scripts even on Windows (an .exe file in
401 \python24\scripts).
405 \python24\scripts).
402
406
403 * ipapi.py: launch_new_instance, launch entry point needed for the
407 * ipapi.py: launch_new_instance, launch entry point needed for the
404 egg.
408 egg.
405
409
406 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
410 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
407
411
408 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
412 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
409 %pfile foo would print the file for foo even if it was a binary.
413 %pfile foo would print the file for foo even if it was a binary.
410 Now, extensions '.so' and '.dll' are skipped.
414 Now, extensions '.so' and '.dll' are skipped.
411
415
412 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
416 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
413 bug, where macros would fail in all threaded modes. I'm not 100%
417 bug, where macros would fail in all threaded modes. I'm not 100%
414 sure, so I'm going to put out an rc instead of making a release
418 sure, so I'm going to put out an rc instead of making a release
415 today, and wait for feedback for at least a few days.
419 today, and wait for feedback for at least a few days.
416
420
417 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
421 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
418 it...) the handling of pasting external code with autoindent on.
422 it...) the handling of pasting external code with autoindent on.
419 To get out of a multiline input, the rule will appear for most
423 To get out of a multiline input, the rule will appear for most
420 users unchanged: two blank lines or change the indent level
424 users unchanged: two blank lines or change the indent level
421 proposed by IPython. But there is a twist now: you can
425 proposed by IPython. But there is a twist now: you can
422 add/subtract only *one or two spaces*. If you add/subtract three
426 add/subtract only *one or two spaces*. If you add/subtract three
423 or more (unless you completely delete the line), IPython will
427 or more (unless you completely delete the line), IPython will
424 accept that line, and you'll need to enter a second one of pure
428 accept that line, and you'll need to enter a second one of pure
425 whitespace. I know it sounds complicated, but I can't find a
429 whitespace. I know it sounds complicated, but I can't find a
426 different solution that covers all the cases, with the right
430 different solution that covers all the cases, with the right
427 heuristics. Hopefully in actual use, nobody will really notice
431 heuristics. Hopefully in actual use, nobody will really notice
428 all these strange rules and things will 'just work'.
432 all these strange rules and things will 'just work'.
429
433
430 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
434 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
431
435
432 * IPython/iplib.py (interact): catch exceptions which can be
436 * IPython/iplib.py (interact): catch exceptions which can be
433 triggered asynchronously by signal handlers. Thanks to an
437 triggered asynchronously by signal handlers. Thanks to an
434 automatic crash report, submitted by Colin Kingsley
438 automatic crash report, submitted by Colin Kingsley
435 <tercel-AT-gentoo.org>.
439 <tercel-AT-gentoo.org>.
436
440
437 2006-01-20 Ville Vainio <vivainio@gmail.com>
441 2006-01-20 Ville Vainio <vivainio@gmail.com>
438
442
439 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
443 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
440 (%rehashdir, very useful, try it out) of how to extend ipython
444 (%rehashdir, very useful, try it out) of how to extend ipython
441 with new magics. Also added Extensions dir to pythonpath to make
445 with new magics. Also added Extensions dir to pythonpath to make
442 importing extensions easy.
446 importing extensions easy.
443
447
444 * %store now complains when trying to store interactively declared
448 * %store now complains when trying to store interactively declared
445 classes / instances of those classes.
449 classes / instances of those classes.
446
450
447 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
451 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
448 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
452 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
449 if they exist, and ipy_user_conf.py with some defaults is created for
453 if they exist, and ipy_user_conf.py with some defaults is created for
450 the user.
454 the user.
451
455
452 * Startup rehashing done by the config file, not InterpreterExec.
456 * Startup rehashing done by the config file, not InterpreterExec.
453 This means system commands are available even without selecting the
457 This means system commands are available even without selecting the
454 pysh profile. It's the sensible default after all.
458 pysh profile. It's the sensible default after all.
455
459
456 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
460 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
457
461
458 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
462 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
459 multiline code with autoindent on working. But I am really not
463 multiline code with autoindent on working. But I am really not
460 sure, so this needs more testing. Will commit a debug-enabled
464 sure, so this needs more testing. Will commit a debug-enabled
461 version for now, while I test it some more, so that Ville and
465 version for now, while I test it some more, so that Ville and
462 others may also catch any problems. Also made
466 others may also catch any problems. Also made
463 self.indent_current_str() a method, to ensure that there's no
467 self.indent_current_str() a method, to ensure that there's no
464 chance of the indent space count and the corresponding string
468 chance of the indent space count and the corresponding string
465 falling out of sync. All code needing the string should just call
469 falling out of sync. All code needing the string should just call
466 the method.
470 the method.
467
471
468 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
472 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
469
473
470 * IPython/Magic.py (magic_edit): fix check for when users don't
474 * IPython/Magic.py (magic_edit): fix check for when users don't
471 save their output files, the try/except was in the wrong section.
475 save their output files, the try/except was in the wrong section.
472
476
473 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
477 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
474
478
475 * IPython/Magic.py (magic_run): fix __file__ global missing from
479 * IPython/Magic.py (magic_run): fix __file__ global missing from
476 script's namespace when executed via %run. After a report by
480 script's namespace when executed via %run. After a report by
477 Vivian.
481 Vivian.
478
482
479 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
483 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
480 when using python 2.4. The parent constructor changed in 2.4, and
484 when using python 2.4. The parent constructor changed in 2.4, and
481 we need to track it directly (we can't call it, as it messes up
485 we need to track it directly (we can't call it, as it messes up
482 readline and tab-completion inside our pdb would stop working).
486 readline and tab-completion inside our pdb would stop working).
483 After a bug report by R. Bernstein <rocky-AT-panix.com>.
487 After a bug report by R. Bernstein <rocky-AT-panix.com>.
484
488
485 2006-01-16 Ville Vainio <vivainio@gmail.com>
489 2006-01-16 Ville Vainio <vivainio@gmail.com>
486
490
487 * Ipython/magic.py:Reverted back to old %edit functionality
491 * Ipython/magic.py:Reverted back to old %edit functionality
488 that returns file contents on exit.
492 that returns file contents on exit.
489
493
490 * IPython/path.py: Added Jason Orendorff's "path" module to
494 * IPython/path.py: Added Jason Orendorff's "path" module to
491 IPython tree, http://www.jorendorff.com/articles/python/path/.
495 IPython tree, http://www.jorendorff.com/articles/python/path/.
492 You can get path objects conveniently through %sc, and !!, e.g.:
496 You can get path objects conveniently through %sc, and !!, e.g.:
493 sc files=ls
497 sc files=ls
494 for p in files.paths: # or files.p
498 for p in files.paths: # or files.p
495 print p,p.mtime
499 print p,p.mtime
496
500
497 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
501 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
498 now work again without considering the exclusion regexp -
502 now work again without considering the exclusion regexp -
499 hence, things like ',foo my/path' turn to 'foo("my/path")'
503 hence, things like ',foo my/path' turn to 'foo("my/path")'
500 instead of syntax error.
504 instead of syntax error.
501
505
502
506
503 2006-01-14 Ville Vainio <vivainio@gmail.com>
507 2006-01-14 Ville Vainio <vivainio@gmail.com>
504
508
505 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
509 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
506 ipapi decorators for python 2.4 users, options() provides access to rc
510 ipapi decorators for python 2.4 users, options() provides access to rc
507 data.
511 data.
508
512
509 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
513 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
510 as path separators (even on Linux ;-). Space character after
514 as path separators (even on Linux ;-). Space character after
511 backslash (as yielded by tab completer) is still space;
515 backslash (as yielded by tab completer) is still space;
512 "%cd long\ name" works as expected.
516 "%cd long\ name" works as expected.
513
517
514 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
518 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
515 as "chain of command", with priority. API stays the same,
519 as "chain of command", with priority. API stays the same,
516 TryNext exception raised by a hook function signals that
520 TryNext exception raised by a hook function signals that
517 current hook failed and next hook should try handling it, as
521 current hook failed and next hook should try handling it, as
518 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
522 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
519 requested configurable display hook, which is now implemented.
523 requested configurable display hook, which is now implemented.
520
524
521 2006-01-13 Ville Vainio <vivainio@gmail.com>
525 2006-01-13 Ville Vainio <vivainio@gmail.com>
522
526
523 * IPython/platutils*.py: platform specific utility functions,
527 * IPython/platutils*.py: platform specific utility functions,
524 so far only set_term_title is implemented (change terminal
528 so far only set_term_title is implemented (change terminal
525 label in windowing systems). %cd now changes the title to
529 label in windowing systems). %cd now changes the title to
526 current dir.
530 current dir.
527
531
528 * IPython/Release.py: Added myself to "authors" list,
532 * IPython/Release.py: Added myself to "authors" list,
529 had to create new files.
533 had to create new files.
530
534
531 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
535 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
532 shell escape; not a known bug but had potential to be one in the
536 shell escape; not a known bug but had potential to be one in the
533 future.
537 future.
534
538
535 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
539 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
536 extension API for IPython! See the module for usage example. Fix
540 extension API for IPython! See the module for usage example. Fix
537 OInspect for docstring-less magic functions.
541 OInspect for docstring-less magic functions.
538
542
539
543
540 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
544 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
541
545
542 * IPython/iplib.py (raw_input): temporarily deactivate all
546 * IPython/iplib.py (raw_input): temporarily deactivate all
543 attempts at allowing pasting of code with autoindent on. It
547 attempts at allowing pasting of code with autoindent on. It
544 introduced bugs (reported by Prabhu) and I can't seem to find a
548 introduced bugs (reported by Prabhu) and I can't seem to find a
545 robust combination which works in all cases. Will have to revisit
549 robust combination which works in all cases. Will have to revisit
546 later.
550 later.
547
551
548 * IPython/genutils.py: remove isspace() function. We've dropped
552 * IPython/genutils.py: remove isspace() function. We've dropped
549 2.2 compatibility, so it's OK to use the string method.
553 2.2 compatibility, so it's OK to use the string method.
550
554
551 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
555 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
552
556
553 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
557 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
554 matching what NOT to autocall on, to include all python binary
558 matching what NOT to autocall on, to include all python binary
555 operators (including things like 'and', 'or', 'is' and 'in').
559 operators (including things like 'and', 'or', 'is' and 'in').
556 Prompted by a bug report on 'foo & bar', but I realized we had
560 Prompted by a bug report on 'foo & bar', but I realized we had
557 many more potential bug cases with other operators. The regexp is
561 many more potential bug cases with other operators. The regexp is
558 self.re_exclude_auto, it's fairly commented.
562 self.re_exclude_auto, it's fairly commented.
559
563
560 2006-01-12 Ville Vainio <vivainio@gmail.com>
564 2006-01-12 Ville Vainio <vivainio@gmail.com>
561
565
562 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
566 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
563 Prettified and hardened string/backslash quoting with ipsystem(),
567 Prettified and hardened string/backslash quoting with ipsystem(),
564 ipalias() and ipmagic(). Now even \ characters are passed to
568 ipalias() and ipmagic(). Now even \ characters are passed to
565 %magics, !shell escapes and aliases exactly as they are in the
569 %magics, !shell escapes and aliases exactly as they are in the
566 ipython command line. Should improve backslash experience,
570 ipython command line. Should improve backslash experience,
567 particularly in Windows (path delimiter for some commands that
571 particularly in Windows (path delimiter for some commands that
568 won't understand '/'), but Unix benefits as well (regexps). %cd
572 won't understand '/'), but Unix benefits as well (regexps). %cd
569 magic still doesn't support backslash path delimiters, though. Also
573 magic still doesn't support backslash path delimiters, though. Also
570 deleted all pretense of supporting multiline command strings in
574 deleted all pretense of supporting multiline command strings in
571 !system or %magic commands. Thanks to Jerry McRae for suggestions.
575 !system or %magic commands. Thanks to Jerry McRae for suggestions.
572
576
573 * doc/build_doc_instructions.txt added. Documentation on how to
577 * doc/build_doc_instructions.txt added. Documentation on how to
574 use doc/update_manual.py, added yesterday. Both files contributed
578 use doc/update_manual.py, added yesterday. Both files contributed
575 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
579 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
576 doc/*.sh for deprecation at a later date.
580 doc/*.sh for deprecation at a later date.
577
581
578 * /ipython.py Added ipython.py to root directory for
582 * /ipython.py Added ipython.py to root directory for
579 zero-installation (tar xzvf ipython.tgz; cd ipython; python
583 zero-installation (tar xzvf ipython.tgz; cd ipython; python
580 ipython.py) and development convenience (no need to kee doing
584 ipython.py) and development convenience (no need to kee doing
581 "setup.py install" between changes).
585 "setup.py install" between changes).
582
586
583 * Made ! and !! shell escapes work (again) in multiline expressions:
587 * Made ! and !! shell escapes work (again) in multiline expressions:
584 if 1:
588 if 1:
585 !ls
589 !ls
586 !!ls
590 !!ls
587
591
588 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
592 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
589
593
590 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
594 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
591 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
595 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
592 module in case-insensitive installation. Was causing crashes
596 module in case-insensitive installation. Was causing crashes
593 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
597 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
594
598
595 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
599 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
596 <marienz-AT-gentoo.org>, closes
600 <marienz-AT-gentoo.org>, closes
597 http://www.scipy.net/roundup/ipython/issue51.
601 http://www.scipy.net/roundup/ipython/issue51.
598
602
599 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
603 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
600
604
601 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
605 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
602 problem of excessive CPU usage under *nix and keyboard lag under
606 problem of excessive CPU usage under *nix and keyboard lag under
603 win32.
607 win32.
604
608
605 2006-01-10 *** Released version 0.7.0
609 2006-01-10 *** Released version 0.7.0
606
610
607 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
611 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
608
612
609 * IPython/Release.py (revision): tag version number to 0.7.0,
613 * IPython/Release.py (revision): tag version number to 0.7.0,
610 ready for release.
614 ready for release.
611
615
612 * IPython/Magic.py (magic_edit): Add print statement to %edit so
616 * IPython/Magic.py (magic_edit): Add print statement to %edit so
613 it informs the user of the name of the temp. file used. This can
617 it informs the user of the name of the temp. file used. This can
614 help if you decide later to reuse that same file, so you know
618 help if you decide later to reuse that same file, so you know
615 where to copy the info from.
619 where to copy the info from.
616
620
617 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
621 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
618
622
619 * setup_bdist_egg.py: little script to build an egg. Added
623 * setup_bdist_egg.py: little script to build an egg. Added
620 support in the release tools as well.
624 support in the release tools as well.
621
625
622 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
626 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
623
627
624 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
628 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
625 version selection (new -wxversion command line and ipythonrc
629 version selection (new -wxversion command line and ipythonrc
626 parameter). Patch contributed by Arnd Baecker
630 parameter). Patch contributed by Arnd Baecker
627 <arnd.baecker-AT-web.de>.
631 <arnd.baecker-AT-web.de>.
628
632
629 * IPython/iplib.py (embed_mainloop): fix tab-completion in
633 * IPython/iplib.py (embed_mainloop): fix tab-completion in
630 embedded instances, for variables defined at the interactive
634 embedded instances, for variables defined at the interactive
631 prompt of the embedded ipython. Reported by Arnd.
635 prompt of the embedded ipython. Reported by Arnd.
632
636
633 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
637 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
634 it can be used as a (stateful) toggle, or with a direct parameter.
638 it can be used as a (stateful) toggle, or with a direct parameter.
635
639
636 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
640 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
637 could be triggered in certain cases and cause the traceback
641 could be triggered in certain cases and cause the traceback
638 printer not to work.
642 printer not to work.
639
643
640 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
644 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
641
645
642 * IPython/iplib.py (_should_recompile): Small fix, closes
646 * IPython/iplib.py (_should_recompile): Small fix, closes
643 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
647 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
644
648
645 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
649 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
646
650
647 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
651 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
648 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
652 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
649 Moad for help with tracking it down.
653 Moad for help with tracking it down.
650
654
651 * IPython/iplib.py (handle_auto): fix autocall handling for
655 * IPython/iplib.py (handle_auto): fix autocall handling for
652 objects which support BOTH __getitem__ and __call__ (so that f [x]
656 objects which support BOTH __getitem__ and __call__ (so that f [x]
653 is left alone, instead of becoming f([x]) automatically).
657 is left alone, instead of becoming f([x]) automatically).
654
658
655 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
659 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
656 Ville's patch.
660 Ville's patch.
657
661
658 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
662 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
659
663
660 * IPython/iplib.py (handle_auto): changed autocall semantics to
664 * IPython/iplib.py (handle_auto): changed autocall semantics to
661 include 'smart' mode, where the autocall transformation is NOT
665 include 'smart' mode, where the autocall transformation is NOT
662 applied if there are no arguments on the line. This allows you to
666 applied if there are no arguments on the line. This allows you to
663 just type 'foo' if foo is a callable to see its internal form,
667 just type 'foo' if foo is a callable to see its internal form,
664 instead of having it called with no arguments (typically a
668 instead of having it called with no arguments (typically a
665 mistake). The old 'full' autocall still exists: for that, you
669 mistake). The old 'full' autocall still exists: for that, you
666 need to set the 'autocall' parameter to 2 in your ipythonrc file.
670 need to set the 'autocall' parameter to 2 in your ipythonrc file.
667
671
668 * IPython/completer.py (Completer.attr_matches): add
672 * IPython/completer.py (Completer.attr_matches): add
669 tab-completion support for Enthoughts' traits. After a report by
673 tab-completion support for Enthoughts' traits. After a report by
670 Arnd and a patch by Prabhu.
674 Arnd and a patch by Prabhu.
671
675
672 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
676 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
673
677
674 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
678 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
675 Schmolck's patch to fix inspect.getinnerframes().
679 Schmolck's patch to fix inspect.getinnerframes().
676
680
677 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
681 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
678 for embedded instances, regarding handling of namespaces and items
682 for embedded instances, regarding handling of namespaces and items
679 added to the __builtin__ one. Multiple embedded instances and
683 added to the __builtin__ one. Multiple embedded instances and
680 recursive embeddings should work better now (though I'm not sure
684 recursive embeddings should work better now (though I'm not sure
681 I've got all the corner cases fixed, that code is a bit of a brain
685 I've got all the corner cases fixed, that code is a bit of a brain
682 twister).
686 twister).
683
687
684 * IPython/Magic.py (magic_edit): added support to edit in-memory
688 * IPython/Magic.py (magic_edit): added support to edit in-memory
685 macros (automatically creates the necessary temp files). %edit
689 macros (automatically creates the necessary temp files). %edit
686 also doesn't return the file contents anymore, it's just noise.
690 also doesn't return the file contents anymore, it's just noise.
687
691
688 * IPython/completer.py (Completer.attr_matches): revert change to
692 * IPython/completer.py (Completer.attr_matches): revert change to
689 complete only on attributes listed in __all__. I realized it
693 complete only on attributes listed in __all__. I realized it
690 cripples the tab-completion system as a tool for exploring the
694 cripples the tab-completion system as a tool for exploring the
691 internals of unknown libraries (it renders any non-__all__
695 internals of unknown libraries (it renders any non-__all__
692 attribute off-limits). I got bit by this when trying to see
696 attribute off-limits). I got bit by this when trying to see
693 something inside the dis module.
697 something inside the dis module.
694
698
695 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
699 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
696
700
697 * IPython/iplib.py (InteractiveShell.__init__): add .meta
701 * IPython/iplib.py (InteractiveShell.__init__): add .meta
698 namespace for users and extension writers to hold data in. This
702 namespace for users and extension writers to hold data in. This
699 follows the discussion in
703 follows the discussion in
700 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
704 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
701
705
702 * IPython/completer.py (IPCompleter.complete): small patch to help
706 * IPython/completer.py (IPCompleter.complete): small patch to help
703 tab-completion under Emacs, after a suggestion by John Barnard
707 tab-completion under Emacs, after a suggestion by John Barnard
704 <barnarj-AT-ccf.org>.
708 <barnarj-AT-ccf.org>.
705
709
706 * IPython/Magic.py (Magic.extract_input_slices): added support for
710 * IPython/Magic.py (Magic.extract_input_slices): added support for
707 the slice notation in magics to use N-M to represent numbers N...M
711 the slice notation in magics to use N-M to represent numbers N...M
708 (closed endpoints). This is used by %macro and %save.
712 (closed endpoints). This is used by %macro and %save.
709
713
710 * IPython/completer.py (Completer.attr_matches): for modules which
714 * IPython/completer.py (Completer.attr_matches): for modules which
711 define __all__, complete only on those. After a patch by Jeffrey
715 define __all__, complete only on those. After a patch by Jeffrey
712 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
716 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
713 speed up this routine.
717 speed up this routine.
714
718
715 * IPython/Logger.py (Logger.log): fix a history handling bug. I
719 * IPython/Logger.py (Logger.log): fix a history handling bug. I
716 don't know if this is the end of it, but the behavior now is
720 don't know if this is the end of it, but the behavior now is
717 certainly much more correct. Note that coupled with macros,
721 certainly much more correct. Note that coupled with macros,
718 slightly surprising (at first) behavior may occur: a macro will in
722 slightly surprising (at first) behavior may occur: a macro will in
719 general expand to multiple lines of input, so upon exiting, the
723 general expand to multiple lines of input, so upon exiting, the
720 in/out counters will both be bumped by the corresponding amount
724 in/out counters will both be bumped by the corresponding amount
721 (as if the macro's contents had been typed interactively). Typing
725 (as if the macro's contents had been typed interactively). Typing
722 %hist will reveal the intermediate (silently processed) lines.
726 %hist will reveal the intermediate (silently processed) lines.
723
727
724 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
728 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
725 pickle to fail (%run was overwriting __main__ and not restoring
729 pickle to fail (%run was overwriting __main__ and not restoring
726 it, but pickle relies on __main__ to operate).
730 it, but pickle relies on __main__ to operate).
727
731
728 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
732 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
729 using properties, but forgot to make the main InteractiveShell
733 using properties, but forgot to make the main InteractiveShell
730 class a new-style class. Properties fail silently, and
734 class a new-style class. Properties fail silently, and
731 misteriously, with old-style class (getters work, but
735 misteriously, with old-style class (getters work, but
732 setters don't do anything).
736 setters don't do anything).
733
737
734 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
738 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
735
739
736 * IPython/Magic.py (magic_history): fix history reporting bug (I
740 * IPython/Magic.py (magic_history): fix history reporting bug (I
737 know some nasties are still there, I just can't seem to find a
741 know some nasties are still there, I just can't seem to find a
738 reproducible test case to track them down; the input history is
742 reproducible test case to track them down; the input history is
739 falling out of sync...)
743 falling out of sync...)
740
744
741 * IPython/iplib.py (handle_shell_escape): fix bug where both
745 * IPython/iplib.py (handle_shell_escape): fix bug where both
742 aliases and system accesses where broken for indented code (such
746 aliases and system accesses where broken for indented code (such
743 as loops).
747 as loops).
744
748
745 * IPython/genutils.py (shell): fix small but critical bug for
749 * IPython/genutils.py (shell): fix small but critical bug for
746 win32 system access.
750 win32 system access.
747
751
748 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
752 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
749
753
750 * IPython/iplib.py (showtraceback): remove use of the
754 * IPython/iplib.py (showtraceback): remove use of the
751 sys.last_{type/value/traceback} structures, which are non
755 sys.last_{type/value/traceback} structures, which are non
752 thread-safe.
756 thread-safe.
753 (_prefilter): change control flow to ensure that we NEVER
757 (_prefilter): change control flow to ensure that we NEVER
754 introspect objects when autocall is off. This will guarantee that
758 introspect objects when autocall is off. This will guarantee that
755 having an input line of the form 'x.y', where access to attribute
759 having an input line of the form 'x.y', where access to attribute
756 'y' has side effects, doesn't trigger the side effect TWICE. It
760 'y' has side effects, doesn't trigger the side effect TWICE. It
757 is important to note that, with autocall on, these side effects
761 is important to note that, with autocall on, these side effects
758 can still happen.
762 can still happen.
759 (ipsystem): new builtin, to complete the ip{magic/alias/system}
763 (ipsystem): new builtin, to complete the ip{magic/alias/system}
760 trio. IPython offers these three kinds of special calls which are
764 trio. IPython offers these three kinds of special calls which are
761 not python code, and it's a good thing to have their call method
765 not python code, and it's a good thing to have their call method
762 be accessible as pure python functions (not just special syntax at
766 be accessible as pure python functions (not just special syntax at
763 the command line). It gives us a better internal implementation
767 the command line). It gives us a better internal implementation
764 structure, as well as exposing these for user scripting more
768 structure, as well as exposing these for user scripting more
765 cleanly.
769 cleanly.
766
770
767 * IPython/macro.py (Macro.__init__): moved macros to a standalone
771 * IPython/macro.py (Macro.__init__): moved macros to a standalone
768 file. Now that they'll be more likely to be used with the
772 file. Now that they'll be more likely to be used with the
769 persistance system (%store), I want to make sure their module path
773 persistance system (%store), I want to make sure their module path
770 doesn't change in the future, so that we don't break things for
774 doesn't change in the future, so that we don't break things for
771 users' persisted data.
775 users' persisted data.
772
776
773 * IPython/iplib.py (autoindent_update): move indentation
777 * IPython/iplib.py (autoindent_update): move indentation
774 management into the _text_ processing loop, not the keyboard
778 management into the _text_ processing loop, not the keyboard
775 interactive one. This is necessary to correctly process non-typed
779 interactive one. This is necessary to correctly process non-typed
776 multiline input (such as macros).
780 multiline input (such as macros).
777
781
778 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
782 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
779 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
783 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
780 which was producing problems in the resulting manual.
784 which was producing problems in the resulting manual.
781 (magic_whos): improve reporting of instances (show their class,
785 (magic_whos): improve reporting of instances (show their class,
782 instead of simply printing 'instance' which isn't terribly
786 instead of simply printing 'instance' which isn't terribly
783 informative).
787 informative).
784
788
785 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
789 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
786 (minor mods) to support network shares under win32.
790 (minor mods) to support network shares under win32.
787
791
788 * IPython/winconsole.py (get_console_size): add new winconsole
792 * IPython/winconsole.py (get_console_size): add new winconsole
789 module and fixes to page_dumb() to improve its behavior under
793 module and fixes to page_dumb() to improve its behavior under
790 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
794 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
791
795
792 * IPython/Magic.py (Macro): simplified Macro class to just
796 * IPython/Magic.py (Macro): simplified Macro class to just
793 subclass list. We've had only 2.2 compatibility for a very long
797 subclass list. We've had only 2.2 compatibility for a very long
794 time, yet I was still avoiding subclassing the builtin types. No
798 time, yet I was still avoiding subclassing the builtin types. No
795 more (I'm also starting to use properties, though I won't shift to
799 more (I'm also starting to use properties, though I won't shift to
796 2.3-specific features quite yet).
800 2.3-specific features quite yet).
797 (magic_store): added Ville's patch for lightweight variable
801 (magic_store): added Ville's patch for lightweight variable
798 persistence, after a request on the user list by Matt Wilkie
802 persistence, after a request on the user list by Matt Wilkie
799 <maphew-AT-gmail.com>. The new %store magic's docstring has full
803 <maphew-AT-gmail.com>. The new %store magic's docstring has full
800 details.
804 details.
801
805
802 * IPython/iplib.py (InteractiveShell.post_config_initialization):
806 * IPython/iplib.py (InteractiveShell.post_config_initialization):
803 changed the default logfile name from 'ipython.log' to
807 changed the default logfile name from 'ipython.log' to
804 'ipython_log.py'. These logs are real python files, and now that
808 'ipython_log.py'. These logs are real python files, and now that
805 we have much better multiline support, people are more likely to
809 we have much better multiline support, people are more likely to
806 want to use them as such. Might as well name them correctly.
810 want to use them as such. Might as well name them correctly.
807
811
808 * IPython/Magic.py: substantial cleanup. While we can't stop
812 * IPython/Magic.py: substantial cleanup. While we can't stop
809 using magics as mixins, due to the existing customizations 'out
813 using magics as mixins, due to the existing customizations 'out
810 there' which rely on the mixin naming conventions, at least I
814 there' which rely on the mixin naming conventions, at least I
811 cleaned out all cross-class name usage. So once we are OK with
815 cleaned out all cross-class name usage. So once we are OK with
812 breaking compatibility, the two systems can be separated.
816 breaking compatibility, the two systems can be separated.
813
817
814 * IPython/Logger.py: major cleanup. This one is NOT a mixin
818 * IPython/Logger.py: major cleanup. This one is NOT a mixin
815 anymore, and the class is a fair bit less hideous as well. New
819 anymore, and the class is a fair bit less hideous as well. New
816 features were also introduced: timestamping of input, and logging
820 features were also introduced: timestamping of input, and logging
817 of output results. These are user-visible with the -t and -o
821 of output results. These are user-visible with the -t and -o
818 options to %logstart. Closes
822 options to %logstart. Closes
819 http://www.scipy.net/roundup/ipython/issue11 and a request by
823 http://www.scipy.net/roundup/ipython/issue11 and a request by
820 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
824 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
821
825
822 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
826 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
823
827
824 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
828 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
825 better hadnle backslashes in paths. See the thread 'More Windows
829 better hadnle backslashes in paths. See the thread 'More Windows
826 questions part 2 - \/ characters revisited' on the iypthon user
830 questions part 2 - \/ characters revisited' on the iypthon user
827 list:
831 list:
828 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
832 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
829
833
830 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
834 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
831
835
832 (InteractiveShell.__init__): change threaded shells to not use the
836 (InteractiveShell.__init__): change threaded shells to not use the
833 ipython crash handler. This was causing more problems than not,
837 ipython crash handler. This was causing more problems than not,
834 as exceptions in the main thread (GUI code, typically) would
838 as exceptions in the main thread (GUI code, typically) would
835 always show up as a 'crash', when they really weren't.
839 always show up as a 'crash', when they really weren't.
836
840
837 The colors and exception mode commands (%colors/%xmode) have been
841 The colors and exception mode commands (%colors/%xmode) have been
838 synchronized to also take this into account, so users can get
842 synchronized to also take this into account, so users can get
839 verbose exceptions for their threaded code as well. I also added
843 verbose exceptions for their threaded code as well. I also added
840 support for activating pdb inside this exception handler as well,
844 support for activating pdb inside this exception handler as well,
841 so now GUI authors can use IPython's enhanced pdb at runtime.
845 so now GUI authors can use IPython's enhanced pdb at runtime.
842
846
843 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
847 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
844 true by default, and add it to the shipped ipythonrc file. Since
848 true by default, and add it to the shipped ipythonrc file. Since
845 this asks the user before proceeding, I think it's OK to make it
849 this asks the user before proceeding, I think it's OK to make it
846 true by default.
850 true by default.
847
851
848 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
852 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
849 of the previous special-casing of input in the eval loop. I think
853 of the previous special-casing of input in the eval loop. I think
850 this is cleaner, as they really are commands and shouldn't have
854 this is cleaner, as they really are commands and shouldn't have
851 a special role in the middle of the core code.
855 a special role in the middle of the core code.
852
856
853 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
857 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
854
858
855 * IPython/iplib.py (edit_syntax_error): added support for
859 * IPython/iplib.py (edit_syntax_error): added support for
856 automatically reopening the editor if the file had a syntax error
860 automatically reopening the editor if the file had a syntax error
857 in it. Thanks to scottt who provided the patch at:
861 in it. Thanks to scottt who provided the patch at:
858 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
862 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
859 version committed).
863 version committed).
860
864
861 * IPython/iplib.py (handle_normal): add suport for multi-line
865 * IPython/iplib.py (handle_normal): add suport for multi-line
862 input with emtpy lines. This fixes
866 input with emtpy lines. This fixes
863 http://www.scipy.net/roundup/ipython/issue43 and a similar
867 http://www.scipy.net/roundup/ipython/issue43 and a similar
864 discussion on the user list.
868 discussion on the user list.
865
869
866 WARNING: a behavior change is necessarily introduced to support
870 WARNING: a behavior change is necessarily introduced to support
867 blank lines: now a single blank line with whitespace does NOT
871 blank lines: now a single blank line with whitespace does NOT
868 break the input loop, which means that when autoindent is on, by
872 break the input loop, which means that when autoindent is on, by
869 default hitting return on the next (indented) line does NOT exit.
873 default hitting return on the next (indented) line does NOT exit.
870
874
871 Instead, to exit a multiline input you can either have:
875 Instead, to exit a multiline input you can either have:
872
876
873 - TWO whitespace lines (just hit return again), or
877 - TWO whitespace lines (just hit return again), or
874 - a single whitespace line of a different length than provided
878 - a single whitespace line of a different length than provided
875 by the autoindent (add or remove a space).
879 by the autoindent (add or remove a space).
876
880
877 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
881 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
878 module to better organize all readline-related functionality.
882 module to better organize all readline-related functionality.
879 I've deleted FlexCompleter and put all completion clases here.
883 I've deleted FlexCompleter and put all completion clases here.
880
884
881 * IPython/iplib.py (raw_input): improve indentation management.
885 * IPython/iplib.py (raw_input): improve indentation management.
882 It is now possible to paste indented code with autoindent on, and
886 It is now possible to paste indented code with autoindent on, and
883 the code is interpreted correctly (though it still looks bad on
887 the code is interpreted correctly (though it still looks bad on
884 screen, due to the line-oriented nature of ipython).
888 screen, due to the line-oriented nature of ipython).
885 (MagicCompleter.complete): change behavior so that a TAB key on an
889 (MagicCompleter.complete): change behavior so that a TAB key on an
886 otherwise empty line actually inserts a tab, instead of completing
890 otherwise empty line actually inserts a tab, instead of completing
887 on the entire global namespace. This makes it easier to use the
891 on the entire global namespace. This makes it easier to use the
888 TAB key for indentation. After a request by Hans Meine
892 TAB key for indentation. After a request by Hans Meine
889 <hans_meine-AT-gmx.net>
893 <hans_meine-AT-gmx.net>
890 (_prefilter): add support so that typing plain 'exit' or 'quit'
894 (_prefilter): add support so that typing plain 'exit' or 'quit'
891 does a sensible thing. Originally I tried to deviate as little as
895 does a sensible thing. Originally I tried to deviate as little as
892 possible from the default python behavior, but even that one may
896 possible from the default python behavior, but even that one may
893 change in this direction (thread on python-dev to that effect).
897 change in this direction (thread on python-dev to that effect).
894 Regardless, ipython should do the right thing even if CPython's
898 Regardless, ipython should do the right thing even if CPython's
895 '>>>' prompt doesn't.
899 '>>>' prompt doesn't.
896 (InteractiveShell): removed subclassing code.InteractiveConsole
900 (InteractiveShell): removed subclassing code.InteractiveConsole
897 class. By now we'd overridden just about all of its methods: I've
901 class. By now we'd overridden just about all of its methods: I've
898 copied the remaining two over, and now ipython is a standalone
902 copied the remaining two over, and now ipython is a standalone
899 class. This will provide a clearer picture for the chainsaw
903 class. This will provide a clearer picture for the chainsaw
900 branch refactoring.
904 branch refactoring.
901
905
902 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
906 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
903
907
904 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
908 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
905 failures for objects which break when dir() is called on them.
909 failures for objects which break when dir() is called on them.
906
910
907 * IPython/FlexCompleter.py (Completer.__init__): Added support for
911 * IPython/FlexCompleter.py (Completer.__init__): Added support for
908 distinct local and global namespaces in the completer API. This
912 distinct local and global namespaces in the completer API. This
909 change allows us top properly handle completion with distinct
913 change allows us top properly handle completion with distinct
910 scopes, including in embedded instances (this had never really
914 scopes, including in embedded instances (this had never really
911 worked correctly).
915 worked correctly).
912
916
913 Note: this introduces a change in the constructor for
917 Note: this introduces a change in the constructor for
914 MagicCompleter, as a new global_namespace parameter is now the
918 MagicCompleter, as a new global_namespace parameter is now the
915 second argument (the others were bumped one position).
919 second argument (the others were bumped one position).
916
920
917 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
921 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
918
922
919 * IPython/iplib.py (embed_mainloop): fix tab-completion in
923 * IPython/iplib.py (embed_mainloop): fix tab-completion in
920 embedded instances (which can be done now thanks to Vivian's
924 embedded instances (which can be done now thanks to Vivian's
921 frame-handling fixes for pdb).
925 frame-handling fixes for pdb).
922 (InteractiveShell.__init__): Fix namespace handling problem in
926 (InteractiveShell.__init__): Fix namespace handling problem in
923 embedded instances. We were overwriting __main__ unconditionally,
927 embedded instances. We were overwriting __main__ unconditionally,
924 and this should only be done for 'full' (non-embedded) IPython;
928 and this should only be done for 'full' (non-embedded) IPython;
925 embedded instances must respect the caller's __main__. Thanks to
929 embedded instances must respect the caller's __main__. Thanks to
926 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
930 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
927
931
928 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
932 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
929
933
930 * setup.py: added download_url to setup(). This registers the
934 * setup.py: added download_url to setup(). This registers the
931 download address at PyPI, which is not only useful to humans
935 download address at PyPI, which is not only useful to humans
932 browsing the site, but is also picked up by setuptools (the Eggs
936 browsing the site, but is also picked up by setuptools (the Eggs
933 machinery). Thanks to Ville and R. Kern for the info/discussion
937 machinery). Thanks to Ville and R. Kern for the info/discussion
934 on this.
938 on this.
935
939
936 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
940 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
937
941
938 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
942 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
939 This brings a lot of nice functionality to the pdb mode, which now
943 This brings a lot of nice functionality to the pdb mode, which now
940 has tab-completion, syntax highlighting, and better stack handling
944 has tab-completion, syntax highlighting, and better stack handling
941 than before. Many thanks to Vivian De Smedt
945 than before. Many thanks to Vivian De Smedt
942 <vivian-AT-vdesmedt.com> for the original patches.
946 <vivian-AT-vdesmedt.com> for the original patches.
943
947
944 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
948 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
945
949
946 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
950 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
947 sequence to consistently accept the banner argument. The
951 sequence to consistently accept the banner argument. The
948 inconsistency was tripping SAGE, thanks to Gary Zablackis
952 inconsistency was tripping SAGE, thanks to Gary Zablackis
949 <gzabl-AT-yahoo.com> for the report.
953 <gzabl-AT-yahoo.com> for the report.
950
954
951 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
955 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
952
956
953 * IPython/iplib.py (InteractiveShell.post_config_initialization):
957 * IPython/iplib.py (InteractiveShell.post_config_initialization):
954 Fix bug where a naked 'alias' call in the ipythonrc file would
958 Fix bug where a naked 'alias' call in the ipythonrc file would
955 cause a crash. Bug reported by Jorgen Stenarson.
959 cause a crash. Bug reported by Jorgen Stenarson.
956
960
957 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
961 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
958
962
959 * IPython/ipmaker.py (make_IPython): cleanups which should improve
963 * IPython/ipmaker.py (make_IPython): cleanups which should improve
960 startup time.
964 startup time.
961
965
962 * IPython/iplib.py (runcode): my globals 'fix' for embedded
966 * IPython/iplib.py (runcode): my globals 'fix' for embedded
963 instances had introduced a bug with globals in normal code. Now
967 instances had introduced a bug with globals in normal code. Now
964 it's working in all cases.
968 it's working in all cases.
965
969
966 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
970 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
967 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
971 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
968 has been introduced to set the default case sensitivity of the
972 has been introduced to set the default case sensitivity of the
969 searches. Users can still select either mode at runtime on a
973 searches. Users can still select either mode at runtime on a
970 per-search basis.
974 per-search basis.
971
975
972 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
976 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
973
977
974 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
978 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
975 attributes in wildcard searches for subclasses. Modified version
979 attributes in wildcard searches for subclasses. Modified version
976 of a patch by Jorgen.
980 of a patch by Jorgen.
977
981
978 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
982 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
979
983
980 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
984 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
981 embedded instances. I added a user_global_ns attribute to the
985 embedded instances. I added a user_global_ns attribute to the
982 InteractiveShell class to handle this.
986 InteractiveShell class to handle this.
983
987
984 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
988 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
985
989
986 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
990 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
987 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
991 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
988 (reported under win32, but may happen also in other platforms).
992 (reported under win32, but may happen also in other platforms).
989 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
993 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
990
994
991 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
995 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
992
996
993 * IPython/Magic.py (magic_psearch): new support for wildcard
997 * IPython/Magic.py (magic_psearch): new support for wildcard
994 patterns. Now, typing ?a*b will list all names which begin with a
998 patterns. Now, typing ?a*b will list all names which begin with a
995 and end in b, for example. The %psearch magic has full
999 and end in b, for example. The %psearch magic has full
996 docstrings. Many thanks to JΓΆrgen Stenarson
1000 docstrings. Many thanks to JΓΆrgen Stenarson
997 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1001 <jorgen.stenarson-AT-bostream.nu>, author of the patches
998 implementing this functionality.
1002 implementing this functionality.
999
1003
1000 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1004 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1001
1005
1002 * Manual: fixed long-standing annoyance of double-dashes (as in
1006 * Manual: fixed long-standing annoyance of double-dashes (as in
1003 --prefix=~, for example) being stripped in the HTML version. This
1007 --prefix=~, for example) being stripped in the HTML version. This
1004 is a latex2html bug, but a workaround was provided. Many thanks
1008 is a latex2html bug, but a workaround was provided. Many thanks
1005 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1009 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1006 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1010 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1007 rolling. This seemingly small issue had tripped a number of users
1011 rolling. This seemingly small issue had tripped a number of users
1008 when first installing, so I'm glad to see it gone.
1012 when first installing, so I'm glad to see it gone.
1009
1013
1010 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1014 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1011
1015
1012 * IPython/Extensions/numeric_formats.py: fix missing import,
1016 * IPython/Extensions/numeric_formats.py: fix missing import,
1013 reported by Stephen Walton.
1017 reported by Stephen Walton.
1014
1018
1015 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1019 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1016
1020
1017 * IPython/demo.py: finish demo module, fully documented now.
1021 * IPython/demo.py: finish demo module, fully documented now.
1018
1022
1019 * IPython/genutils.py (file_read): simple little utility to read a
1023 * IPython/genutils.py (file_read): simple little utility to read a
1020 file and ensure it's closed afterwards.
1024 file and ensure it's closed afterwards.
1021
1025
1022 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1026 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1023
1027
1024 * IPython/demo.py (Demo.__init__): added support for individually
1028 * IPython/demo.py (Demo.__init__): added support for individually
1025 tagging blocks for automatic execution.
1029 tagging blocks for automatic execution.
1026
1030
1027 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1031 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1028 syntax-highlighted python sources, requested by John.
1032 syntax-highlighted python sources, requested by John.
1029
1033
1030 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1034 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1031
1035
1032 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1036 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1033 finishing.
1037 finishing.
1034
1038
1035 * IPython/genutils.py (shlex_split): moved from Magic to here,
1039 * IPython/genutils.py (shlex_split): moved from Magic to here,
1036 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1040 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1037
1041
1038 * IPython/demo.py (Demo.__init__): added support for silent
1042 * IPython/demo.py (Demo.__init__): added support for silent
1039 blocks, improved marks as regexps, docstrings written.
1043 blocks, improved marks as regexps, docstrings written.
1040 (Demo.__init__): better docstring, added support for sys.argv.
1044 (Demo.__init__): better docstring, added support for sys.argv.
1041
1045
1042 * IPython/genutils.py (marquee): little utility used by the demo
1046 * IPython/genutils.py (marquee): little utility used by the demo
1043 code, handy in general.
1047 code, handy in general.
1044
1048
1045 * IPython/demo.py (Demo.__init__): new class for interactive
1049 * IPython/demo.py (Demo.__init__): new class for interactive
1046 demos. Not documented yet, I just wrote it in a hurry for
1050 demos. Not documented yet, I just wrote it in a hurry for
1047 scipy'05. Will docstring later.
1051 scipy'05. Will docstring later.
1048
1052
1049 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1053 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1050
1054
1051 * IPython/Shell.py (sigint_handler): Drastic simplification which
1055 * IPython/Shell.py (sigint_handler): Drastic simplification which
1052 also seems to make Ctrl-C work correctly across threads! This is
1056 also seems to make Ctrl-C work correctly across threads! This is
1053 so simple, that I can't beleive I'd missed it before. Needs more
1057 so simple, that I can't beleive I'd missed it before. Needs more
1054 testing, though.
1058 testing, though.
1055 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1059 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1056 like this before...
1060 like this before...
1057
1061
1058 * IPython/genutils.py (get_home_dir): add protection against
1062 * IPython/genutils.py (get_home_dir): add protection against
1059 non-dirs in win32 registry.
1063 non-dirs in win32 registry.
1060
1064
1061 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1065 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1062 bug where dict was mutated while iterating (pysh crash).
1066 bug where dict was mutated while iterating (pysh crash).
1063
1067
1064 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1068 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1065
1069
1066 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1070 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1067 spurious newlines added by this routine. After a report by
1071 spurious newlines added by this routine. After a report by
1068 F. Mantegazza.
1072 F. Mantegazza.
1069
1073
1070 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1074 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1071
1075
1072 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1076 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1073 calls. These were a leftover from the GTK 1.x days, and can cause
1077 calls. These were a leftover from the GTK 1.x days, and can cause
1074 problems in certain cases (after a report by John Hunter).
1078 problems in certain cases (after a report by John Hunter).
1075
1079
1076 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1080 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1077 os.getcwd() fails at init time. Thanks to patch from David Remahl
1081 os.getcwd() fails at init time. Thanks to patch from David Remahl
1078 <chmod007-AT-mac.com>.
1082 <chmod007-AT-mac.com>.
1079 (InteractiveShell.__init__): prevent certain special magics from
1083 (InteractiveShell.__init__): prevent certain special magics from
1080 being shadowed by aliases. Closes
1084 being shadowed by aliases. Closes
1081 http://www.scipy.net/roundup/ipython/issue41.
1085 http://www.scipy.net/roundup/ipython/issue41.
1082
1086
1083 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1087 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1084
1088
1085 * IPython/iplib.py (InteractiveShell.complete): Added new
1089 * IPython/iplib.py (InteractiveShell.complete): Added new
1086 top-level completion method to expose the completion mechanism
1090 top-level completion method to expose the completion mechanism
1087 beyond readline-based environments.
1091 beyond readline-based environments.
1088
1092
1089 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1093 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1090
1094
1091 * tools/ipsvnc (svnversion): fix svnversion capture.
1095 * tools/ipsvnc (svnversion): fix svnversion capture.
1092
1096
1093 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1097 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1094 attribute to self, which was missing. Before, it was set by a
1098 attribute to self, which was missing. Before, it was set by a
1095 routine which in certain cases wasn't being called, so the
1099 routine which in certain cases wasn't being called, so the
1096 instance could end up missing the attribute. This caused a crash.
1100 instance could end up missing the attribute. This caused a crash.
1097 Closes http://www.scipy.net/roundup/ipython/issue40.
1101 Closes http://www.scipy.net/roundup/ipython/issue40.
1098
1102
1099 2005-08-16 Fernando Perez <fperez@colorado.edu>
1103 2005-08-16 Fernando Perez <fperez@colorado.edu>
1100
1104
1101 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1105 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1102 contains non-string attribute. Closes
1106 contains non-string attribute. Closes
1103 http://www.scipy.net/roundup/ipython/issue38.
1107 http://www.scipy.net/roundup/ipython/issue38.
1104
1108
1105 2005-08-14 Fernando Perez <fperez@colorado.edu>
1109 2005-08-14 Fernando Perez <fperez@colorado.edu>
1106
1110
1107 * tools/ipsvnc: Minor improvements, to add changeset info.
1111 * tools/ipsvnc: Minor improvements, to add changeset info.
1108
1112
1109 2005-08-12 Fernando Perez <fperez@colorado.edu>
1113 2005-08-12 Fernando Perez <fperez@colorado.edu>
1110
1114
1111 * IPython/iplib.py (runsource): remove self.code_to_run_src
1115 * IPython/iplib.py (runsource): remove self.code_to_run_src
1112 attribute. I realized this is nothing more than
1116 attribute. I realized this is nothing more than
1113 '\n'.join(self.buffer), and having the same data in two different
1117 '\n'.join(self.buffer), and having the same data in two different
1114 places is just asking for synchronization bugs. This may impact
1118 places is just asking for synchronization bugs. This may impact
1115 people who have custom exception handlers, so I need to warn
1119 people who have custom exception handlers, so I need to warn
1116 ipython-dev about it (F. Mantegazza may use them).
1120 ipython-dev about it (F. Mantegazza may use them).
1117
1121
1118 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1122 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1119
1123
1120 * IPython/genutils.py: fix 2.2 compatibility (generators)
1124 * IPython/genutils.py: fix 2.2 compatibility (generators)
1121
1125
1122 2005-07-18 Fernando Perez <fperez@colorado.edu>
1126 2005-07-18 Fernando Perez <fperez@colorado.edu>
1123
1127
1124 * IPython/genutils.py (get_home_dir): fix to help users with
1128 * IPython/genutils.py (get_home_dir): fix to help users with
1125 invalid $HOME under win32.
1129 invalid $HOME under win32.
1126
1130
1127 2005-07-17 Fernando Perez <fperez@colorado.edu>
1131 2005-07-17 Fernando Perez <fperez@colorado.edu>
1128
1132
1129 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1133 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1130 some old hacks and clean up a bit other routines; code should be
1134 some old hacks and clean up a bit other routines; code should be
1131 simpler and a bit faster.
1135 simpler and a bit faster.
1132
1136
1133 * IPython/iplib.py (interact): removed some last-resort attempts
1137 * IPython/iplib.py (interact): removed some last-resort attempts
1134 to survive broken stdout/stderr. That code was only making it
1138 to survive broken stdout/stderr. That code was only making it
1135 harder to abstract out the i/o (necessary for gui integration),
1139 harder to abstract out the i/o (necessary for gui integration),
1136 and the crashes it could prevent were extremely rare in practice
1140 and the crashes it could prevent were extremely rare in practice
1137 (besides being fully user-induced in a pretty violent manner).
1141 (besides being fully user-induced in a pretty violent manner).
1138
1142
1139 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1143 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1140 Nothing major yet, but the code is simpler to read; this should
1144 Nothing major yet, but the code is simpler to read; this should
1141 make it easier to do more serious modifications in the future.
1145 make it easier to do more serious modifications in the future.
1142
1146
1143 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1147 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1144 which broke in .15 (thanks to a report by Ville).
1148 which broke in .15 (thanks to a report by Ville).
1145
1149
1146 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1150 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1147 be quite correct, I know next to nothing about unicode). This
1151 be quite correct, I know next to nothing about unicode). This
1148 will allow unicode strings to be used in prompts, amongst other
1152 will allow unicode strings to be used in prompts, amongst other
1149 cases. It also will prevent ipython from crashing when unicode
1153 cases. It also will prevent ipython from crashing when unicode
1150 shows up unexpectedly in many places. If ascii encoding fails, we
1154 shows up unexpectedly in many places. If ascii encoding fails, we
1151 assume utf_8. Currently the encoding is not a user-visible
1155 assume utf_8. Currently the encoding is not a user-visible
1152 setting, though it could be made so if there is demand for it.
1156 setting, though it could be made so if there is demand for it.
1153
1157
1154 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1158 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1155
1159
1156 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1160 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1157
1161
1158 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1162 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1159
1163
1160 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1164 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1161 code can work transparently for 2.2/2.3.
1165 code can work transparently for 2.2/2.3.
1162
1166
1163 2005-07-16 Fernando Perez <fperez@colorado.edu>
1167 2005-07-16 Fernando Perez <fperez@colorado.edu>
1164
1168
1165 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1169 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1166 out of the color scheme table used for coloring exception
1170 out of the color scheme table used for coloring exception
1167 tracebacks. This allows user code to add new schemes at runtime.
1171 tracebacks. This allows user code to add new schemes at runtime.
1168 This is a minimally modified version of the patch at
1172 This is a minimally modified version of the patch at
1169 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1173 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1170 for the contribution.
1174 for the contribution.
1171
1175
1172 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1176 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1173 slightly modified version of the patch in
1177 slightly modified version of the patch in
1174 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1178 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1175 to remove the previous try/except solution (which was costlier).
1179 to remove the previous try/except solution (which was costlier).
1176 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1180 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1177
1181
1178 2005-06-08 Fernando Perez <fperez@colorado.edu>
1182 2005-06-08 Fernando Perez <fperez@colorado.edu>
1179
1183
1180 * IPython/iplib.py (write/write_err): Add methods to abstract all
1184 * IPython/iplib.py (write/write_err): Add methods to abstract all
1181 I/O a bit more.
1185 I/O a bit more.
1182
1186
1183 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1187 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1184 warning, reported by Aric Hagberg, fix by JD Hunter.
1188 warning, reported by Aric Hagberg, fix by JD Hunter.
1185
1189
1186 2005-06-02 *** Released version 0.6.15
1190 2005-06-02 *** Released version 0.6.15
1187
1191
1188 2005-06-01 Fernando Perez <fperez@colorado.edu>
1192 2005-06-01 Fernando Perez <fperez@colorado.edu>
1189
1193
1190 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1194 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1191 tab-completion of filenames within open-quoted strings. Note that
1195 tab-completion of filenames within open-quoted strings. Note that
1192 this requires that in ~/.ipython/ipythonrc, users change the
1196 this requires that in ~/.ipython/ipythonrc, users change the
1193 readline delimiters configuration to read:
1197 readline delimiters configuration to read:
1194
1198
1195 readline_remove_delims -/~
1199 readline_remove_delims -/~
1196
1200
1197
1201
1198 2005-05-31 *** Released version 0.6.14
1202 2005-05-31 *** Released version 0.6.14
1199
1203
1200 2005-05-29 Fernando Perez <fperez@colorado.edu>
1204 2005-05-29 Fernando Perez <fperez@colorado.edu>
1201
1205
1202 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1206 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1203 with files not on the filesystem. Reported by Eliyahu Sandler
1207 with files not on the filesystem. Reported by Eliyahu Sandler
1204 <eli@gondolin.net>
1208 <eli@gondolin.net>
1205
1209
1206 2005-05-22 Fernando Perez <fperez@colorado.edu>
1210 2005-05-22 Fernando Perez <fperez@colorado.edu>
1207
1211
1208 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1212 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1209 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1213 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1210
1214
1211 2005-05-19 Fernando Perez <fperez@colorado.edu>
1215 2005-05-19 Fernando Perez <fperez@colorado.edu>
1212
1216
1213 * IPython/iplib.py (safe_execfile): close a file which could be
1217 * IPython/iplib.py (safe_execfile): close a file which could be
1214 left open (causing problems in win32, which locks open files).
1218 left open (causing problems in win32, which locks open files).
1215 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1219 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1216
1220
1217 2005-05-18 Fernando Perez <fperez@colorado.edu>
1221 2005-05-18 Fernando Perez <fperez@colorado.edu>
1218
1222
1219 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1223 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1220 keyword arguments correctly to safe_execfile().
1224 keyword arguments correctly to safe_execfile().
1221
1225
1222 2005-05-13 Fernando Perez <fperez@colorado.edu>
1226 2005-05-13 Fernando Perez <fperez@colorado.edu>
1223
1227
1224 * ipython.1: Added info about Qt to manpage, and threads warning
1228 * ipython.1: Added info about Qt to manpage, and threads warning
1225 to usage page (invoked with --help).
1229 to usage page (invoked with --help).
1226
1230
1227 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1231 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1228 new matcher (it goes at the end of the priority list) to do
1232 new matcher (it goes at the end of the priority list) to do
1229 tab-completion on named function arguments. Submitted by George
1233 tab-completion on named function arguments. Submitted by George
1230 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1234 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1231 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1235 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1232 for more details.
1236 for more details.
1233
1237
1234 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1238 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1235 SystemExit exceptions in the script being run. Thanks to a report
1239 SystemExit exceptions in the script being run. Thanks to a report
1236 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1240 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1237 producing very annoying behavior when running unit tests.
1241 producing very annoying behavior when running unit tests.
1238
1242
1239 2005-05-12 Fernando Perez <fperez@colorado.edu>
1243 2005-05-12 Fernando Perez <fperez@colorado.edu>
1240
1244
1241 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1245 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1242 which I'd broken (again) due to a changed regexp. In the process,
1246 which I'd broken (again) due to a changed regexp. In the process,
1243 added ';' as an escape to auto-quote the whole line without
1247 added ';' as an escape to auto-quote the whole line without
1244 splitting its arguments. Thanks to a report by Jerry McRae
1248 splitting its arguments. Thanks to a report by Jerry McRae
1245 <qrs0xyc02-AT-sneakemail.com>.
1249 <qrs0xyc02-AT-sneakemail.com>.
1246
1250
1247 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1251 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1248 possible crashes caused by a TokenError. Reported by Ed Schofield
1252 possible crashes caused by a TokenError. Reported by Ed Schofield
1249 <schofield-AT-ftw.at>.
1253 <schofield-AT-ftw.at>.
1250
1254
1251 2005-05-06 Fernando Perez <fperez@colorado.edu>
1255 2005-05-06 Fernando Perez <fperez@colorado.edu>
1252
1256
1253 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1257 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1254
1258
1255 2005-04-29 Fernando Perez <fperez@colorado.edu>
1259 2005-04-29 Fernando Perez <fperez@colorado.edu>
1256
1260
1257 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1261 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1258 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1262 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1259 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1263 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1260 which provides support for Qt interactive usage (similar to the
1264 which provides support for Qt interactive usage (similar to the
1261 existing one for WX and GTK). This had been often requested.
1265 existing one for WX and GTK). This had been often requested.
1262
1266
1263 2005-04-14 *** Released version 0.6.13
1267 2005-04-14 *** Released version 0.6.13
1264
1268
1265 2005-04-08 Fernando Perez <fperez@colorado.edu>
1269 2005-04-08 Fernando Perez <fperez@colorado.edu>
1266
1270
1267 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1271 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1268 from _ofind, which gets called on almost every input line. Now,
1272 from _ofind, which gets called on almost every input line. Now,
1269 we only try to get docstrings if they are actually going to be
1273 we only try to get docstrings if they are actually going to be
1270 used (the overhead of fetching unnecessary docstrings can be
1274 used (the overhead of fetching unnecessary docstrings can be
1271 noticeable for certain objects, such as Pyro proxies).
1275 noticeable for certain objects, such as Pyro proxies).
1272
1276
1273 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1277 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1274 for completers. For some reason I had been passing them the state
1278 for completers. For some reason I had been passing them the state
1275 variable, which completers never actually need, and was in
1279 variable, which completers never actually need, and was in
1276 conflict with the rlcompleter API. Custom completers ONLY need to
1280 conflict with the rlcompleter API. Custom completers ONLY need to
1277 take the text parameter.
1281 take the text parameter.
1278
1282
1279 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1283 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1280 work correctly in pysh. I've also moved all the logic which used
1284 work correctly in pysh. I've also moved all the logic which used
1281 to be in pysh.py here, which will prevent problems with future
1285 to be in pysh.py here, which will prevent problems with future
1282 upgrades. However, this time I must warn users to update their
1286 upgrades. However, this time I must warn users to update their
1283 pysh profile to include the line
1287 pysh profile to include the line
1284
1288
1285 import_all IPython.Extensions.InterpreterExec
1289 import_all IPython.Extensions.InterpreterExec
1286
1290
1287 because otherwise things won't work for them. They MUST also
1291 because otherwise things won't work for them. They MUST also
1288 delete pysh.py and the line
1292 delete pysh.py and the line
1289
1293
1290 execfile pysh.py
1294 execfile pysh.py
1291
1295
1292 from their ipythonrc-pysh.
1296 from their ipythonrc-pysh.
1293
1297
1294 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1298 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1295 robust in the face of objects whose dir() returns non-strings
1299 robust in the face of objects whose dir() returns non-strings
1296 (which it shouldn't, but some broken libs like ITK do). Thanks to
1300 (which it shouldn't, but some broken libs like ITK do). Thanks to
1297 a patch by John Hunter (implemented differently, though). Also
1301 a patch by John Hunter (implemented differently, though). Also
1298 minor improvements by using .extend instead of + on lists.
1302 minor improvements by using .extend instead of + on lists.
1299
1303
1300 * pysh.py:
1304 * pysh.py:
1301
1305
1302 2005-04-06 Fernando Perez <fperez@colorado.edu>
1306 2005-04-06 Fernando Perez <fperez@colorado.edu>
1303
1307
1304 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1308 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1305 by default, so that all users benefit from it. Those who don't
1309 by default, so that all users benefit from it. Those who don't
1306 want it can still turn it off.
1310 want it can still turn it off.
1307
1311
1308 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1312 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1309 config file, I'd forgotten about this, so users were getting it
1313 config file, I'd forgotten about this, so users were getting it
1310 off by default.
1314 off by default.
1311
1315
1312 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1316 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1313 consistency. Now magics can be called in multiline statements,
1317 consistency. Now magics can be called in multiline statements,
1314 and python variables can be expanded in magic calls via $var.
1318 and python variables can be expanded in magic calls via $var.
1315 This makes the magic system behave just like aliases or !system
1319 This makes the magic system behave just like aliases or !system
1316 calls.
1320 calls.
1317
1321
1318 2005-03-28 Fernando Perez <fperez@colorado.edu>
1322 2005-03-28 Fernando Perez <fperez@colorado.edu>
1319
1323
1320 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1324 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1321 expensive string additions for building command. Add support for
1325 expensive string additions for building command. Add support for
1322 trailing ';' when autocall is used.
1326 trailing ';' when autocall is used.
1323
1327
1324 2005-03-26 Fernando Perez <fperez@colorado.edu>
1328 2005-03-26 Fernando Perez <fperez@colorado.edu>
1325
1329
1326 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1330 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1327 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1331 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1328 ipython.el robust against prompts with any number of spaces
1332 ipython.el robust against prompts with any number of spaces
1329 (including 0) after the ':' character.
1333 (including 0) after the ':' character.
1330
1334
1331 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1335 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1332 continuation prompt, which misled users to think the line was
1336 continuation prompt, which misled users to think the line was
1333 already indented. Closes debian Bug#300847, reported to me by
1337 already indented. Closes debian Bug#300847, reported to me by
1334 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1338 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1335
1339
1336 2005-03-23 Fernando Perez <fperez@colorado.edu>
1340 2005-03-23 Fernando Perez <fperez@colorado.edu>
1337
1341
1338 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1342 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1339 properly aligned if they have embedded newlines.
1343 properly aligned if they have embedded newlines.
1340
1344
1341 * IPython/iplib.py (runlines): Add a public method to expose
1345 * IPython/iplib.py (runlines): Add a public method to expose
1342 IPython's code execution machinery, so that users can run strings
1346 IPython's code execution machinery, so that users can run strings
1343 as if they had been typed at the prompt interactively.
1347 as if they had been typed at the prompt interactively.
1344 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1348 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1345 methods which can call the system shell, but with python variable
1349 methods which can call the system shell, but with python variable
1346 expansion. The three such methods are: __IPYTHON__.system,
1350 expansion. The three such methods are: __IPYTHON__.system,
1347 .getoutput and .getoutputerror. These need to be documented in a
1351 .getoutput and .getoutputerror. These need to be documented in a
1348 'public API' section (to be written) of the manual.
1352 'public API' section (to be written) of the manual.
1349
1353
1350 2005-03-20 Fernando Perez <fperez@colorado.edu>
1354 2005-03-20 Fernando Perez <fperez@colorado.edu>
1351
1355
1352 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1356 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1353 for custom exception handling. This is quite powerful, and it
1357 for custom exception handling. This is quite powerful, and it
1354 allows for user-installable exception handlers which can trap
1358 allows for user-installable exception handlers which can trap
1355 custom exceptions at runtime and treat them separately from
1359 custom exceptions at runtime and treat them separately from
1356 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1360 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1357 Mantegazza <mantegazza-AT-ill.fr>.
1361 Mantegazza <mantegazza-AT-ill.fr>.
1358 (InteractiveShell.set_custom_completer): public API function to
1362 (InteractiveShell.set_custom_completer): public API function to
1359 add new completers at runtime.
1363 add new completers at runtime.
1360
1364
1361 2005-03-19 Fernando Perez <fperez@colorado.edu>
1365 2005-03-19 Fernando Perez <fperez@colorado.edu>
1362
1366
1363 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1367 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1364 allow objects which provide their docstrings via non-standard
1368 allow objects which provide their docstrings via non-standard
1365 mechanisms (like Pyro proxies) to still be inspected by ipython's
1369 mechanisms (like Pyro proxies) to still be inspected by ipython's
1366 ? system.
1370 ? system.
1367
1371
1368 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1372 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1369 automatic capture system. I tried quite hard to make it work
1373 automatic capture system. I tried quite hard to make it work
1370 reliably, and simply failed. I tried many combinations with the
1374 reliably, and simply failed. I tried many combinations with the
1371 subprocess module, but eventually nothing worked in all needed
1375 subprocess module, but eventually nothing worked in all needed
1372 cases (not blocking stdin for the child, duplicating stdout
1376 cases (not blocking stdin for the child, duplicating stdout
1373 without blocking, etc). The new %sc/%sx still do capture to these
1377 without blocking, etc). The new %sc/%sx still do capture to these
1374 magical list/string objects which make shell use much more
1378 magical list/string objects which make shell use much more
1375 conveninent, so not all is lost.
1379 conveninent, so not all is lost.
1376
1380
1377 XXX - FIX MANUAL for the change above!
1381 XXX - FIX MANUAL for the change above!
1378
1382
1379 (runsource): I copied code.py's runsource() into ipython to modify
1383 (runsource): I copied code.py's runsource() into ipython to modify
1380 it a bit. Now the code object and source to be executed are
1384 it a bit. Now the code object and source to be executed are
1381 stored in ipython. This makes this info accessible to third-party
1385 stored in ipython. This makes this info accessible to third-party
1382 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1386 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1383 Mantegazza <mantegazza-AT-ill.fr>.
1387 Mantegazza <mantegazza-AT-ill.fr>.
1384
1388
1385 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1389 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1386 history-search via readline (like C-p/C-n). I'd wanted this for a
1390 history-search via readline (like C-p/C-n). I'd wanted this for a
1387 long time, but only recently found out how to do it. For users
1391 long time, but only recently found out how to do it. For users
1388 who already have their ipythonrc files made and want this, just
1392 who already have their ipythonrc files made and want this, just
1389 add:
1393 add:
1390
1394
1391 readline_parse_and_bind "\e[A": history-search-backward
1395 readline_parse_and_bind "\e[A": history-search-backward
1392 readline_parse_and_bind "\e[B": history-search-forward
1396 readline_parse_and_bind "\e[B": history-search-forward
1393
1397
1394 2005-03-18 Fernando Perez <fperez@colorado.edu>
1398 2005-03-18 Fernando Perez <fperez@colorado.edu>
1395
1399
1396 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1400 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1397 LSString and SList classes which allow transparent conversions
1401 LSString and SList classes which allow transparent conversions
1398 between list mode and whitespace-separated string.
1402 between list mode and whitespace-separated string.
1399 (magic_r): Fix recursion problem in %r.
1403 (magic_r): Fix recursion problem in %r.
1400
1404
1401 * IPython/genutils.py (LSString): New class to be used for
1405 * IPython/genutils.py (LSString): New class to be used for
1402 automatic storage of the results of all alias/system calls in _o
1406 automatic storage of the results of all alias/system calls in _o
1403 and _e (stdout/err). These provide a .l/.list attribute which
1407 and _e (stdout/err). These provide a .l/.list attribute which
1404 does automatic splitting on newlines. This means that for most
1408 does automatic splitting on newlines. This means that for most
1405 uses, you'll never need to do capturing of output with %sc/%sx
1409 uses, you'll never need to do capturing of output with %sc/%sx
1406 anymore, since ipython keeps this always done for you. Note that
1410 anymore, since ipython keeps this always done for you. Note that
1407 only the LAST results are stored, the _o/e variables are
1411 only the LAST results are stored, the _o/e variables are
1408 overwritten on each call. If you need to save their contents
1412 overwritten on each call. If you need to save their contents
1409 further, simply bind them to any other name.
1413 further, simply bind them to any other name.
1410
1414
1411 2005-03-17 Fernando Perez <fperez@colorado.edu>
1415 2005-03-17 Fernando Perez <fperez@colorado.edu>
1412
1416
1413 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1417 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1414 prompt namespace handling.
1418 prompt namespace handling.
1415
1419
1416 2005-03-16 Fernando Perez <fperez@colorado.edu>
1420 2005-03-16 Fernando Perez <fperez@colorado.edu>
1417
1421
1418 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1422 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1419 classic prompts to be '>>> ' (final space was missing, and it
1423 classic prompts to be '>>> ' (final space was missing, and it
1420 trips the emacs python mode).
1424 trips the emacs python mode).
1421 (BasePrompt.__str__): Added safe support for dynamic prompt
1425 (BasePrompt.__str__): Added safe support for dynamic prompt
1422 strings. Now you can set your prompt string to be '$x', and the
1426 strings. Now you can set your prompt string to be '$x', and the
1423 value of x will be printed from your interactive namespace. The
1427 value of x will be printed from your interactive namespace. The
1424 interpolation syntax includes the full Itpl support, so
1428 interpolation syntax includes the full Itpl support, so
1425 ${foo()+x+bar()} is a valid prompt string now, and the function
1429 ${foo()+x+bar()} is a valid prompt string now, and the function
1426 calls will be made at runtime.
1430 calls will be made at runtime.
1427
1431
1428 2005-03-15 Fernando Perez <fperez@colorado.edu>
1432 2005-03-15 Fernando Perez <fperez@colorado.edu>
1429
1433
1430 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1434 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1431 avoid name clashes in pylab. %hist still works, it just forwards
1435 avoid name clashes in pylab. %hist still works, it just forwards
1432 the call to %history.
1436 the call to %history.
1433
1437
1434 2005-03-02 *** Released version 0.6.12
1438 2005-03-02 *** Released version 0.6.12
1435
1439
1436 2005-03-02 Fernando Perez <fperez@colorado.edu>
1440 2005-03-02 Fernando Perez <fperez@colorado.edu>
1437
1441
1438 * IPython/iplib.py (handle_magic): log magic calls properly as
1442 * IPython/iplib.py (handle_magic): log magic calls properly as
1439 ipmagic() function calls.
1443 ipmagic() function calls.
1440
1444
1441 * IPython/Magic.py (magic_time): Improved %time to support
1445 * IPython/Magic.py (magic_time): Improved %time to support
1442 statements and provide wall-clock as well as CPU time.
1446 statements and provide wall-clock as well as CPU time.
1443
1447
1444 2005-02-27 Fernando Perez <fperez@colorado.edu>
1448 2005-02-27 Fernando Perez <fperez@colorado.edu>
1445
1449
1446 * IPython/hooks.py: New hooks module, to expose user-modifiable
1450 * IPython/hooks.py: New hooks module, to expose user-modifiable
1447 IPython functionality in a clean manner. For now only the editor
1451 IPython functionality in a clean manner. For now only the editor
1448 hook is actually written, and other thigns which I intend to turn
1452 hook is actually written, and other thigns which I intend to turn
1449 into proper hooks aren't yet there. The display and prefilter
1453 into proper hooks aren't yet there. The display and prefilter
1450 stuff, for example, should be hooks. But at least now the
1454 stuff, for example, should be hooks. But at least now the
1451 framework is in place, and the rest can be moved here with more
1455 framework is in place, and the rest can be moved here with more
1452 time later. IPython had had a .hooks variable for a long time for
1456 time later. IPython had had a .hooks variable for a long time for
1453 this purpose, but I'd never actually used it for anything.
1457 this purpose, but I'd never actually used it for anything.
1454
1458
1455 2005-02-26 Fernando Perez <fperez@colorado.edu>
1459 2005-02-26 Fernando Perez <fperez@colorado.edu>
1456
1460
1457 * IPython/ipmaker.py (make_IPython): make the default ipython
1461 * IPython/ipmaker.py (make_IPython): make the default ipython
1458 directory be called _ipython under win32, to follow more the
1462 directory be called _ipython under win32, to follow more the
1459 naming peculiarities of that platform (where buggy software like
1463 naming peculiarities of that platform (where buggy software like
1460 Visual Sourcesafe breaks with .named directories). Reported by
1464 Visual Sourcesafe breaks with .named directories). Reported by
1461 Ville Vainio.
1465 Ville Vainio.
1462
1466
1463 2005-02-23 Fernando Perez <fperez@colorado.edu>
1467 2005-02-23 Fernando Perez <fperez@colorado.edu>
1464
1468
1465 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1469 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1466 auto_aliases for win32 which were causing problems. Users can
1470 auto_aliases for win32 which were causing problems. Users can
1467 define the ones they personally like.
1471 define the ones they personally like.
1468
1472
1469 2005-02-21 Fernando Perez <fperez@colorado.edu>
1473 2005-02-21 Fernando Perez <fperez@colorado.edu>
1470
1474
1471 * IPython/Magic.py (magic_time): new magic to time execution of
1475 * IPython/Magic.py (magic_time): new magic to time execution of
1472 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1476 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1473
1477
1474 2005-02-19 Fernando Perez <fperez@colorado.edu>
1478 2005-02-19 Fernando Perez <fperez@colorado.edu>
1475
1479
1476 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1480 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1477 into keys (for prompts, for example).
1481 into keys (for prompts, for example).
1478
1482
1479 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1483 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1480 prompts in case users want them. This introduces a small behavior
1484 prompts in case users want them. This introduces a small behavior
1481 change: ipython does not automatically add a space to all prompts
1485 change: ipython does not automatically add a space to all prompts
1482 anymore. To get the old prompts with a space, users should add it
1486 anymore. To get the old prompts with a space, users should add it
1483 manually to their ipythonrc file, so for example prompt_in1 should
1487 manually to their ipythonrc file, so for example prompt_in1 should
1484 now read 'In [\#]: ' instead of 'In [\#]:'.
1488 now read 'In [\#]: ' instead of 'In [\#]:'.
1485 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1489 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1486 file) to control left-padding of secondary prompts.
1490 file) to control left-padding of secondary prompts.
1487
1491
1488 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1492 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1489 the profiler can't be imported. Fix for Debian, which removed
1493 the profiler can't be imported. Fix for Debian, which removed
1490 profile.py because of License issues. I applied a slightly
1494 profile.py because of License issues. I applied a slightly
1491 modified version of the original Debian patch at
1495 modified version of the original Debian patch at
1492 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1496 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1493
1497
1494 2005-02-17 Fernando Perez <fperez@colorado.edu>
1498 2005-02-17 Fernando Perez <fperez@colorado.edu>
1495
1499
1496 * IPython/genutils.py (native_line_ends): Fix bug which would
1500 * IPython/genutils.py (native_line_ends): Fix bug which would
1497 cause improper line-ends under win32 b/c I was not opening files
1501 cause improper line-ends under win32 b/c I was not opening files
1498 in binary mode. Bug report and fix thanks to Ville.
1502 in binary mode. Bug report and fix thanks to Ville.
1499
1503
1500 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1504 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1501 trying to catch spurious foo[1] autocalls. My fix actually broke
1505 trying to catch spurious foo[1] autocalls. My fix actually broke
1502 ',/' autoquote/call with explicit escape (bad regexp).
1506 ',/' autoquote/call with explicit escape (bad regexp).
1503
1507
1504 2005-02-15 *** Released version 0.6.11
1508 2005-02-15 *** Released version 0.6.11
1505
1509
1506 2005-02-14 Fernando Perez <fperez@colorado.edu>
1510 2005-02-14 Fernando Perez <fperez@colorado.edu>
1507
1511
1508 * IPython/background_jobs.py: New background job management
1512 * IPython/background_jobs.py: New background job management
1509 subsystem. This is implemented via a new set of classes, and
1513 subsystem. This is implemented via a new set of classes, and
1510 IPython now provides a builtin 'jobs' object for background job
1514 IPython now provides a builtin 'jobs' object for background job
1511 execution. A convenience %bg magic serves as a lightweight
1515 execution. A convenience %bg magic serves as a lightweight
1512 frontend for starting the more common type of calls. This was
1516 frontend for starting the more common type of calls. This was
1513 inspired by discussions with B. Granger and the BackgroundCommand
1517 inspired by discussions with B. Granger and the BackgroundCommand
1514 class described in the book Python Scripting for Computational
1518 class described in the book Python Scripting for Computational
1515 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1519 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1516 (although ultimately no code from this text was used, as IPython's
1520 (although ultimately no code from this text was used, as IPython's
1517 system is a separate implementation).
1521 system is a separate implementation).
1518
1522
1519 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1523 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1520 to control the completion of single/double underscore names
1524 to control the completion of single/double underscore names
1521 separately. As documented in the example ipytonrc file, the
1525 separately. As documented in the example ipytonrc file, the
1522 readline_omit__names variable can now be set to 2, to omit even
1526 readline_omit__names variable can now be set to 2, to omit even
1523 single underscore names. Thanks to a patch by Brian Wong
1527 single underscore names. Thanks to a patch by Brian Wong
1524 <BrianWong-AT-AirgoNetworks.Com>.
1528 <BrianWong-AT-AirgoNetworks.Com>.
1525 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1529 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1526 be autocalled as foo([1]) if foo were callable. A problem for
1530 be autocalled as foo([1]) if foo were callable. A problem for
1527 things which are both callable and implement __getitem__.
1531 things which are both callable and implement __getitem__.
1528 (init_readline): Fix autoindentation for win32. Thanks to a patch
1532 (init_readline): Fix autoindentation for win32. Thanks to a patch
1529 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1533 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1530
1534
1531 2005-02-12 Fernando Perez <fperez@colorado.edu>
1535 2005-02-12 Fernando Perez <fperez@colorado.edu>
1532
1536
1533 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1537 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1534 which I had written long ago to sort out user error messages which
1538 which I had written long ago to sort out user error messages which
1535 may occur during startup. This seemed like a good idea initially,
1539 may occur during startup. This seemed like a good idea initially,
1536 but it has proven a disaster in retrospect. I don't want to
1540 but it has proven a disaster in retrospect. I don't want to
1537 change much code for now, so my fix is to set the internal 'debug'
1541 change much code for now, so my fix is to set the internal 'debug'
1538 flag to true everywhere, whose only job was precisely to control
1542 flag to true everywhere, whose only job was precisely to control
1539 this subsystem. This closes issue 28 (as well as avoiding all
1543 this subsystem. This closes issue 28 (as well as avoiding all
1540 sorts of strange hangups which occur from time to time).
1544 sorts of strange hangups which occur from time to time).
1541
1545
1542 2005-02-07 Fernando Perez <fperez@colorado.edu>
1546 2005-02-07 Fernando Perez <fperez@colorado.edu>
1543
1547
1544 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1548 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1545 previous call produced a syntax error.
1549 previous call produced a syntax error.
1546
1550
1547 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1551 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1548 classes without constructor.
1552 classes without constructor.
1549
1553
1550 2005-02-06 Fernando Perez <fperez@colorado.edu>
1554 2005-02-06 Fernando Perez <fperez@colorado.edu>
1551
1555
1552 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1556 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1553 completions with the results of each matcher, so we return results
1557 completions with the results of each matcher, so we return results
1554 to the user from all namespaces. This breaks with ipython
1558 to the user from all namespaces. This breaks with ipython
1555 tradition, but I think it's a nicer behavior. Now you get all
1559 tradition, but I think it's a nicer behavior. Now you get all
1556 possible completions listed, from all possible namespaces (python,
1560 possible completions listed, from all possible namespaces (python,
1557 filesystem, magics...) After a request by John Hunter
1561 filesystem, magics...) After a request by John Hunter
1558 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1562 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1559
1563
1560 2005-02-05 Fernando Perez <fperez@colorado.edu>
1564 2005-02-05 Fernando Perez <fperez@colorado.edu>
1561
1565
1562 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1566 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1563 the call had quote characters in it (the quotes were stripped).
1567 the call had quote characters in it (the quotes were stripped).
1564
1568
1565 2005-01-31 Fernando Perez <fperez@colorado.edu>
1569 2005-01-31 Fernando Perez <fperez@colorado.edu>
1566
1570
1567 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1571 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1568 Itpl.itpl() to make the code more robust against psyco
1572 Itpl.itpl() to make the code more robust against psyco
1569 optimizations.
1573 optimizations.
1570
1574
1571 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1575 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1572 of causing an exception. Quicker, cleaner.
1576 of causing an exception. Quicker, cleaner.
1573
1577
1574 2005-01-28 Fernando Perez <fperez@colorado.edu>
1578 2005-01-28 Fernando Perez <fperez@colorado.edu>
1575
1579
1576 * scripts/ipython_win_post_install.py (install): hardcode
1580 * scripts/ipython_win_post_install.py (install): hardcode
1577 sys.prefix+'python.exe' as the executable path. It turns out that
1581 sys.prefix+'python.exe' as the executable path. It turns out that
1578 during the post-installation run, sys.executable resolves to the
1582 during the post-installation run, sys.executable resolves to the
1579 name of the binary installer! I should report this as a distutils
1583 name of the binary installer! I should report this as a distutils
1580 bug, I think. I updated the .10 release with this tiny fix, to
1584 bug, I think. I updated the .10 release with this tiny fix, to
1581 avoid annoying the lists further.
1585 avoid annoying the lists further.
1582
1586
1583 2005-01-27 *** Released version 0.6.10
1587 2005-01-27 *** Released version 0.6.10
1584
1588
1585 2005-01-27 Fernando Perez <fperez@colorado.edu>
1589 2005-01-27 Fernando Perez <fperez@colorado.edu>
1586
1590
1587 * IPython/numutils.py (norm): Added 'inf' as optional name for
1591 * IPython/numutils.py (norm): Added 'inf' as optional name for
1588 L-infinity norm, included references to mathworld.com for vector
1592 L-infinity norm, included references to mathworld.com for vector
1589 norm definitions.
1593 norm definitions.
1590 (amin/amax): added amin/amax for array min/max. Similar to what
1594 (amin/amax): added amin/amax for array min/max. Similar to what
1591 pylab ships with after the recent reorganization of names.
1595 pylab ships with after the recent reorganization of names.
1592 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1596 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1593
1597
1594 * ipython.el: committed Alex's recent fixes and improvements.
1598 * ipython.el: committed Alex's recent fixes and improvements.
1595 Tested with python-mode from CVS, and it looks excellent. Since
1599 Tested with python-mode from CVS, and it looks excellent. Since
1596 python-mode hasn't released anything in a while, I'm temporarily
1600 python-mode hasn't released anything in a while, I'm temporarily
1597 putting a copy of today's CVS (v 4.70) of python-mode in:
1601 putting a copy of today's CVS (v 4.70) of python-mode in:
1598 http://ipython.scipy.org/tmp/python-mode.el
1602 http://ipython.scipy.org/tmp/python-mode.el
1599
1603
1600 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1604 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1601 sys.executable for the executable name, instead of assuming it's
1605 sys.executable for the executable name, instead of assuming it's
1602 called 'python.exe' (the post-installer would have produced broken
1606 called 'python.exe' (the post-installer would have produced broken
1603 setups on systems with a differently named python binary).
1607 setups on systems with a differently named python binary).
1604
1608
1605 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1609 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1606 references to os.linesep, to make the code more
1610 references to os.linesep, to make the code more
1607 platform-independent. This is also part of the win32 coloring
1611 platform-independent. This is also part of the win32 coloring
1608 fixes.
1612 fixes.
1609
1613
1610 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1614 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1611 lines, which actually cause coloring bugs because the length of
1615 lines, which actually cause coloring bugs because the length of
1612 the line is very difficult to correctly compute with embedded
1616 the line is very difficult to correctly compute with embedded
1613 escapes. This was the source of all the coloring problems under
1617 escapes. This was the source of all the coloring problems under
1614 Win32. I think that _finally_, Win32 users have a properly
1618 Win32. I think that _finally_, Win32 users have a properly
1615 working ipython in all respects. This would never have happened
1619 working ipython in all respects. This would never have happened
1616 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1620 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1617
1621
1618 2005-01-26 *** Released version 0.6.9
1622 2005-01-26 *** Released version 0.6.9
1619
1623
1620 2005-01-25 Fernando Perez <fperez@colorado.edu>
1624 2005-01-25 Fernando Perez <fperez@colorado.edu>
1621
1625
1622 * setup.py: finally, we have a true Windows installer, thanks to
1626 * setup.py: finally, we have a true Windows installer, thanks to
1623 the excellent work of Viktor Ransmayr
1627 the excellent work of Viktor Ransmayr
1624 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1628 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1625 Windows users. The setup routine is quite a bit cleaner thanks to
1629 Windows users. The setup routine is quite a bit cleaner thanks to
1626 this, and the post-install script uses the proper functions to
1630 this, and the post-install script uses the proper functions to
1627 allow a clean de-installation using the standard Windows Control
1631 allow a clean de-installation using the standard Windows Control
1628 Panel.
1632 Panel.
1629
1633
1630 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1634 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1631 environment variable under all OSes (including win32) if
1635 environment variable under all OSes (including win32) if
1632 available. This will give consistency to win32 users who have set
1636 available. This will give consistency to win32 users who have set
1633 this variable for any reason. If os.environ['HOME'] fails, the
1637 this variable for any reason. If os.environ['HOME'] fails, the
1634 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1638 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1635
1639
1636 2005-01-24 Fernando Perez <fperez@colorado.edu>
1640 2005-01-24 Fernando Perez <fperez@colorado.edu>
1637
1641
1638 * IPython/numutils.py (empty_like): add empty_like(), similar to
1642 * IPython/numutils.py (empty_like): add empty_like(), similar to
1639 zeros_like() but taking advantage of the new empty() Numeric routine.
1643 zeros_like() but taking advantage of the new empty() Numeric routine.
1640
1644
1641 2005-01-23 *** Released version 0.6.8
1645 2005-01-23 *** Released version 0.6.8
1642
1646
1643 2005-01-22 Fernando Perez <fperez@colorado.edu>
1647 2005-01-22 Fernando Perez <fperez@colorado.edu>
1644
1648
1645 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1649 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1646 automatic show() calls. After discussing things with JDH, it
1650 automatic show() calls. After discussing things with JDH, it
1647 turns out there are too many corner cases where this can go wrong.
1651 turns out there are too many corner cases where this can go wrong.
1648 It's best not to try to be 'too smart', and simply have ipython
1652 It's best not to try to be 'too smart', and simply have ipython
1649 reproduce as much as possible the default behavior of a normal
1653 reproduce as much as possible the default behavior of a normal
1650 python shell.
1654 python shell.
1651
1655
1652 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1656 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1653 line-splitting regexp and _prefilter() to avoid calling getattr()
1657 line-splitting regexp and _prefilter() to avoid calling getattr()
1654 on assignments. This closes
1658 on assignments. This closes
1655 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1659 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1656 readline uses getattr(), so a simple <TAB> keypress is still
1660 readline uses getattr(), so a simple <TAB> keypress is still
1657 enough to trigger getattr() calls on an object.
1661 enough to trigger getattr() calls on an object.
1658
1662
1659 2005-01-21 Fernando Perez <fperez@colorado.edu>
1663 2005-01-21 Fernando Perez <fperez@colorado.edu>
1660
1664
1661 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1665 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1662 docstring under pylab so it doesn't mask the original.
1666 docstring under pylab so it doesn't mask the original.
1663
1667
1664 2005-01-21 *** Released version 0.6.7
1668 2005-01-21 *** Released version 0.6.7
1665
1669
1666 2005-01-21 Fernando Perez <fperez@colorado.edu>
1670 2005-01-21 Fernando Perez <fperez@colorado.edu>
1667
1671
1668 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1672 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1669 signal handling for win32 users in multithreaded mode.
1673 signal handling for win32 users in multithreaded mode.
1670
1674
1671 2005-01-17 Fernando Perez <fperez@colorado.edu>
1675 2005-01-17 Fernando Perez <fperez@colorado.edu>
1672
1676
1673 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1677 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1674 instances with no __init__. After a crash report by Norbert Nemec
1678 instances with no __init__. After a crash report by Norbert Nemec
1675 <Norbert-AT-nemec-online.de>.
1679 <Norbert-AT-nemec-online.de>.
1676
1680
1677 2005-01-14 Fernando Perez <fperez@colorado.edu>
1681 2005-01-14 Fernando Perez <fperez@colorado.edu>
1678
1682
1679 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1683 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1680 names for verbose exceptions, when multiple dotted names and the
1684 names for verbose exceptions, when multiple dotted names and the
1681 'parent' object were present on the same line.
1685 'parent' object were present on the same line.
1682
1686
1683 2005-01-11 Fernando Perez <fperez@colorado.edu>
1687 2005-01-11 Fernando Perez <fperez@colorado.edu>
1684
1688
1685 * IPython/genutils.py (flag_calls): new utility to trap and flag
1689 * IPython/genutils.py (flag_calls): new utility to trap and flag
1686 calls in functions. I need it to clean up matplotlib support.
1690 calls in functions. I need it to clean up matplotlib support.
1687 Also removed some deprecated code in genutils.
1691 Also removed some deprecated code in genutils.
1688
1692
1689 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1693 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1690 that matplotlib scripts called with %run, which don't call show()
1694 that matplotlib scripts called with %run, which don't call show()
1691 themselves, still have their plotting windows open.
1695 themselves, still have their plotting windows open.
1692
1696
1693 2005-01-05 Fernando Perez <fperez@colorado.edu>
1697 2005-01-05 Fernando Perez <fperez@colorado.edu>
1694
1698
1695 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1699 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1696 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1700 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1697
1701
1698 2004-12-19 Fernando Perez <fperez@colorado.edu>
1702 2004-12-19 Fernando Perez <fperez@colorado.edu>
1699
1703
1700 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1704 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1701 parent_runcode, which was an eyesore. The same result can be
1705 parent_runcode, which was an eyesore. The same result can be
1702 obtained with Python's regular superclass mechanisms.
1706 obtained with Python's regular superclass mechanisms.
1703
1707
1704 2004-12-17 Fernando Perez <fperez@colorado.edu>
1708 2004-12-17 Fernando Perez <fperez@colorado.edu>
1705
1709
1706 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1710 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1707 reported by Prabhu.
1711 reported by Prabhu.
1708 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1712 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1709 sys.stderr) instead of explicitly calling sys.stderr. This helps
1713 sys.stderr) instead of explicitly calling sys.stderr. This helps
1710 maintain our I/O abstractions clean, for future GUI embeddings.
1714 maintain our I/O abstractions clean, for future GUI embeddings.
1711
1715
1712 * IPython/genutils.py (info): added new utility for sys.stderr
1716 * IPython/genutils.py (info): added new utility for sys.stderr
1713 unified info message handling (thin wrapper around warn()).
1717 unified info message handling (thin wrapper around warn()).
1714
1718
1715 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1719 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1716 composite (dotted) names on verbose exceptions.
1720 composite (dotted) names on verbose exceptions.
1717 (VerboseTB.nullrepr): harden against another kind of errors which
1721 (VerboseTB.nullrepr): harden against another kind of errors which
1718 Python's inspect module can trigger, and which were crashing
1722 Python's inspect module can trigger, and which were crashing
1719 IPython. Thanks to a report by Marco Lombardi
1723 IPython. Thanks to a report by Marco Lombardi
1720 <mlombard-AT-ma010192.hq.eso.org>.
1724 <mlombard-AT-ma010192.hq.eso.org>.
1721
1725
1722 2004-12-13 *** Released version 0.6.6
1726 2004-12-13 *** Released version 0.6.6
1723
1727
1724 2004-12-12 Fernando Perez <fperez@colorado.edu>
1728 2004-12-12 Fernando Perez <fperez@colorado.edu>
1725
1729
1726 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1730 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1727 generated by pygtk upon initialization if it was built without
1731 generated by pygtk upon initialization if it was built without
1728 threads (for matplotlib users). After a crash reported by
1732 threads (for matplotlib users). After a crash reported by
1729 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1733 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1730
1734
1731 * IPython/ipmaker.py (make_IPython): fix small bug in the
1735 * IPython/ipmaker.py (make_IPython): fix small bug in the
1732 import_some parameter for multiple imports.
1736 import_some parameter for multiple imports.
1733
1737
1734 * IPython/iplib.py (ipmagic): simplified the interface of
1738 * IPython/iplib.py (ipmagic): simplified the interface of
1735 ipmagic() to take a single string argument, just as it would be
1739 ipmagic() to take a single string argument, just as it would be
1736 typed at the IPython cmd line.
1740 typed at the IPython cmd line.
1737 (ipalias): Added new ipalias() with an interface identical to
1741 (ipalias): Added new ipalias() with an interface identical to
1738 ipmagic(). This completes exposing a pure python interface to the
1742 ipmagic(). This completes exposing a pure python interface to the
1739 alias and magic system, which can be used in loops or more complex
1743 alias and magic system, which can be used in loops or more complex
1740 code where IPython's automatic line mangling is not active.
1744 code where IPython's automatic line mangling is not active.
1741
1745
1742 * IPython/genutils.py (timing): changed interface of timing to
1746 * IPython/genutils.py (timing): changed interface of timing to
1743 simply run code once, which is the most common case. timings()
1747 simply run code once, which is the most common case. timings()
1744 remains unchanged, for the cases where you want multiple runs.
1748 remains unchanged, for the cases where you want multiple runs.
1745
1749
1746 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1750 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1747 bug where Python2.2 crashes with exec'ing code which does not end
1751 bug where Python2.2 crashes with exec'ing code which does not end
1748 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1752 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1749 before.
1753 before.
1750
1754
1751 2004-12-10 Fernando Perez <fperez@colorado.edu>
1755 2004-12-10 Fernando Perez <fperez@colorado.edu>
1752
1756
1753 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1757 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1754 -t to -T, to accomodate the new -t flag in %run (the %run and
1758 -t to -T, to accomodate the new -t flag in %run (the %run and
1755 %prun options are kind of intermixed, and it's not easy to change
1759 %prun options are kind of intermixed, and it's not easy to change
1756 this with the limitations of python's getopt).
1760 this with the limitations of python's getopt).
1757
1761
1758 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1762 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1759 the execution of scripts. It's not as fine-tuned as timeit.py,
1763 the execution of scripts. It's not as fine-tuned as timeit.py,
1760 but it works from inside ipython (and under 2.2, which lacks
1764 but it works from inside ipython (and under 2.2, which lacks
1761 timeit.py). Optionally a number of runs > 1 can be given for
1765 timeit.py). Optionally a number of runs > 1 can be given for
1762 timing very short-running code.
1766 timing very short-running code.
1763
1767
1764 * IPython/genutils.py (uniq_stable): new routine which returns a
1768 * IPython/genutils.py (uniq_stable): new routine which returns a
1765 list of unique elements in any iterable, but in stable order of
1769 list of unique elements in any iterable, but in stable order of
1766 appearance. I needed this for the ultraTB fixes, and it's a handy
1770 appearance. I needed this for the ultraTB fixes, and it's a handy
1767 utility.
1771 utility.
1768
1772
1769 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1773 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1770 dotted names in Verbose exceptions. This had been broken since
1774 dotted names in Verbose exceptions. This had been broken since
1771 the very start, now x.y will properly be printed in a Verbose
1775 the very start, now x.y will properly be printed in a Verbose
1772 traceback, instead of x being shown and y appearing always as an
1776 traceback, instead of x being shown and y appearing always as an
1773 'undefined global'. Getting this to work was a bit tricky,
1777 'undefined global'. Getting this to work was a bit tricky,
1774 because by default python tokenizers are stateless. Saved by
1778 because by default python tokenizers are stateless. Saved by
1775 python's ability to easily add a bit of state to an arbitrary
1779 python's ability to easily add a bit of state to an arbitrary
1776 function (without needing to build a full-blown callable object).
1780 function (without needing to build a full-blown callable object).
1777
1781
1778 Also big cleanup of this code, which had horrendous runtime
1782 Also big cleanup of this code, which had horrendous runtime
1779 lookups of zillions of attributes for colorization. Moved all
1783 lookups of zillions of attributes for colorization. Moved all
1780 this code into a few templates, which make it cleaner and quicker.
1784 this code into a few templates, which make it cleaner and quicker.
1781
1785
1782 Printout quality was also improved for Verbose exceptions: one
1786 Printout quality was also improved for Verbose exceptions: one
1783 variable per line, and memory addresses are printed (this can be
1787 variable per line, and memory addresses are printed (this can be
1784 quite handy in nasty debugging situations, which is what Verbose
1788 quite handy in nasty debugging situations, which is what Verbose
1785 is for).
1789 is for).
1786
1790
1787 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1791 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1788 the command line as scripts to be loaded by embedded instances.
1792 the command line as scripts to be loaded by embedded instances.
1789 Doing so has the potential for an infinite recursion if there are
1793 Doing so has the potential for an infinite recursion if there are
1790 exceptions thrown in the process. This fixes a strange crash
1794 exceptions thrown in the process. This fixes a strange crash
1791 reported by Philippe MULLER <muller-AT-irit.fr>.
1795 reported by Philippe MULLER <muller-AT-irit.fr>.
1792
1796
1793 2004-12-09 Fernando Perez <fperez@colorado.edu>
1797 2004-12-09 Fernando Perez <fperez@colorado.edu>
1794
1798
1795 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1799 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1796 to reflect new names in matplotlib, which now expose the
1800 to reflect new names in matplotlib, which now expose the
1797 matlab-compatible interface via a pylab module instead of the
1801 matlab-compatible interface via a pylab module instead of the
1798 'matlab' name. The new code is backwards compatible, so users of
1802 'matlab' name. The new code is backwards compatible, so users of
1799 all matplotlib versions are OK. Patch by J. Hunter.
1803 all matplotlib versions are OK. Patch by J. Hunter.
1800
1804
1801 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1805 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1802 of __init__ docstrings for instances (class docstrings are already
1806 of __init__ docstrings for instances (class docstrings are already
1803 automatically printed). Instances with customized docstrings
1807 automatically printed). Instances with customized docstrings
1804 (indep. of the class) are also recognized and all 3 separate
1808 (indep. of the class) are also recognized and all 3 separate
1805 docstrings are printed (instance, class, constructor). After some
1809 docstrings are printed (instance, class, constructor). After some
1806 comments/suggestions by J. Hunter.
1810 comments/suggestions by J. Hunter.
1807
1811
1808 2004-12-05 Fernando Perez <fperez@colorado.edu>
1812 2004-12-05 Fernando Perez <fperez@colorado.edu>
1809
1813
1810 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1814 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1811 warnings when tab-completion fails and triggers an exception.
1815 warnings when tab-completion fails and triggers an exception.
1812
1816
1813 2004-12-03 Fernando Perez <fperez@colorado.edu>
1817 2004-12-03 Fernando Perez <fperez@colorado.edu>
1814
1818
1815 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1819 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1816 be triggered when using 'run -p'. An incorrect option flag was
1820 be triggered when using 'run -p'. An incorrect option flag was
1817 being set ('d' instead of 'D').
1821 being set ('d' instead of 'D').
1818 (manpage): fix missing escaped \- sign.
1822 (manpage): fix missing escaped \- sign.
1819
1823
1820 2004-11-30 *** Released version 0.6.5
1824 2004-11-30 *** Released version 0.6.5
1821
1825
1822 2004-11-30 Fernando Perez <fperez@colorado.edu>
1826 2004-11-30 Fernando Perez <fperez@colorado.edu>
1823
1827
1824 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1828 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1825 setting with -d option.
1829 setting with -d option.
1826
1830
1827 * setup.py (docfiles): Fix problem where the doc glob I was using
1831 * setup.py (docfiles): Fix problem where the doc glob I was using
1828 was COMPLETELY BROKEN. It was giving the right files by pure
1832 was COMPLETELY BROKEN. It was giving the right files by pure
1829 accident, but failed once I tried to include ipython.el. Note:
1833 accident, but failed once I tried to include ipython.el. Note:
1830 glob() does NOT allow you to do exclusion on multiple endings!
1834 glob() does NOT allow you to do exclusion on multiple endings!
1831
1835
1832 2004-11-29 Fernando Perez <fperez@colorado.edu>
1836 2004-11-29 Fernando Perez <fperez@colorado.edu>
1833
1837
1834 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1838 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1835 the manpage as the source. Better formatting & consistency.
1839 the manpage as the source. Better formatting & consistency.
1836
1840
1837 * IPython/Magic.py (magic_run): Added new -d option, to run
1841 * IPython/Magic.py (magic_run): Added new -d option, to run
1838 scripts under the control of the python pdb debugger. Note that
1842 scripts under the control of the python pdb debugger. Note that
1839 this required changing the %prun option -d to -D, to avoid a clash
1843 this required changing the %prun option -d to -D, to avoid a clash
1840 (since %run must pass options to %prun, and getopt is too dumb to
1844 (since %run must pass options to %prun, and getopt is too dumb to
1841 handle options with string values with embedded spaces). Thanks
1845 handle options with string values with embedded spaces). Thanks
1842 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1846 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1843 (magic_who_ls): added type matching to %who and %whos, so that one
1847 (magic_who_ls): added type matching to %who and %whos, so that one
1844 can filter their output to only include variables of certain
1848 can filter their output to only include variables of certain
1845 types. Another suggestion by Matthew.
1849 types. Another suggestion by Matthew.
1846 (magic_whos): Added memory summaries in kb and Mb for arrays.
1850 (magic_whos): Added memory summaries in kb and Mb for arrays.
1847 (magic_who): Improve formatting (break lines every 9 vars).
1851 (magic_who): Improve formatting (break lines every 9 vars).
1848
1852
1849 2004-11-28 Fernando Perez <fperez@colorado.edu>
1853 2004-11-28 Fernando Perez <fperez@colorado.edu>
1850
1854
1851 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1855 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1852 cache when empty lines were present.
1856 cache when empty lines were present.
1853
1857
1854 2004-11-24 Fernando Perez <fperez@colorado.edu>
1858 2004-11-24 Fernando Perez <fperez@colorado.edu>
1855
1859
1856 * IPython/usage.py (__doc__): document the re-activated threading
1860 * IPython/usage.py (__doc__): document the re-activated threading
1857 options for WX and GTK.
1861 options for WX and GTK.
1858
1862
1859 2004-11-23 Fernando Perez <fperez@colorado.edu>
1863 2004-11-23 Fernando Perez <fperez@colorado.edu>
1860
1864
1861 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1865 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1862 the -wthread and -gthread options, along with a new -tk one to try
1866 the -wthread and -gthread options, along with a new -tk one to try
1863 and coordinate Tk threading with wx/gtk. The tk support is very
1867 and coordinate Tk threading with wx/gtk. The tk support is very
1864 platform dependent, since it seems to require Tcl and Tk to be
1868 platform dependent, since it seems to require Tcl and Tk to be
1865 built with threads (Fedora1/2 appears NOT to have it, but in
1869 built with threads (Fedora1/2 appears NOT to have it, but in
1866 Prabhu's Debian boxes it works OK). But even with some Tk
1870 Prabhu's Debian boxes it works OK). But even with some Tk
1867 limitations, this is a great improvement.
1871 limitations, this is a great improvement.
1868
1872
1869 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1873 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1870 info in user prompts. Patch by Prabhu.
1874 info in user prompts. Patch by Prabhu.
1871
1875
1872 2004-11-18 Fernando Perez <fperez@colorado.edu>
1876 2004-11-18 Fernando Perez <fperez@colorado.edu>
1873
1877
1874 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1878 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1875 EOFErrors and bail, to avoid infinite loops if a non-terminating
1879 EOFErrors and bail, to avoid infinite loops if a non-terminating
1876 file is fed into ipython. Patch submitted in issue 19 by user,
1880 file is fed into ipython. Patch submitted in issue 19 by user,
1877 many thanks.
1881 many thanks.
1878
1882
1879 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1883 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1880 autoquote/parens in continuation prompts, which can cause lots of
1884 autoquote/parens in continuation prompts, which can cause lots of
1881 problems. Closes roundup issue 20.
1885 problems. Closes roundup issue 20.
1882
1886
1883 2004-11-17 Fernando Perez <fperez@colorado.edu>
1887 2004-11-17 Fernando Perez <fperez@colorado.edu>
1884
1888
1885 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1889 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1886 reported as debian bug #280505. I'm not sure my local changelog
1890 reported as debian bug #280505. I'm not sure my local changelog
1887 entry has the proper debian format (Jack?).
1891 entry has the proper debian format (Jack?).
1888
1892
1889 2004-11-08 *** Released version 0.6.4
1893 2004-11-08 *** Released version 0.6.4
1890
1894
1891 2004-11-08 Fernando Perez <fperez@colorado.edu>
1895 2004-11-08 Fernando Perez <fperez@colorado.edu>
1892
1896
1893 * IPython/iplib.py (init_readline): Fix exit message for Windows
1897 * IPython/iplib.py (init_readline): Fix exit message for Windows
1894 when readline is active. Thanks to a report by Eric Jones
1898 when readline is active. Thanks to a report by Eric Jones
1895 <eric-AT-enthought.com>.
1899 <eric-AT-enthought.com>.
1896
1900
1897 2004-11-07 Fernando Perez <fperez@colorado.edu>
1901 2004-11-07 Fernando Perez <fperez@colorado.edu>
1898
1902
1899 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1903 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1900 sometimes seen by win2k/cygwin users.
1904 sometimes seen by win2k/cygwin users.
1901
1905
1902 2004-11-06 Fernando Perez <fperez@colorado.edu>
1906 2004-11-06 Fernando Perez <fperez@colorado.edu>
1903
1907
1904 * IPython/iplib.py (interact): Change the handling of %Exit from
1908 * IPython/iplib.py (interact): Change the handling of %Exit from
1905 trying to propagate a SystemExit to an internal ipython flag.
1909 trying to propagate a SystemExit to an internal ipython flag.
1906 This is less elegant than using Python's exception mechanism, but
1910 This is less elegant than using Python's exception mechanism, but
1907 I can't get that to work reliably with threads, so under -pylab
1911 I can't get that to work reliably with threads, so under -pylab
1908 %Exit was hanging IPython. Cross-thread exception handling is
1912 %Exit was hanging IPython. Cross-thread exception handling is
1909 really a bitch. Thaks to a bug report by Stephen Walton
1913 really a bitch. Thaks to a bug report by Stephen Walton
1910 <stephen.walton-AT-csun.edu>.
1914 <stephen.walton-AT-csun.edu>.
1911
1915
1912 2004-11-04 Fernando Perez <fperez@colorado.edu>
1916 2004-11-04 Fernando Perez <fperez@colorado.edu>
1913
1917
1914 * IPython/iplib.py (raw_input_original): store a pointer to the
1918 * IPython/iplib.py (raw_input_original): store a pointer to the
1915 true raw_input to harden against code which can modify it
1919 true raw_input to harden against code which can modify it
1916 (wx.py.PyShell does this and would otherwise crash ipython).
1920 (wx.py.PyShell does this and would otherwise crash ipython).
1917 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1921 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1918
1922
1919 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1923 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1920 Ctrl-C problem, which does not mess up the input line.
1924 Ctrl-C problem, which does not mess up the input line.
1921
1925
1922 2004-11-03 Fernando Perez <fperez@colorado.edu>
1926 2004-11-03 Fernando Perez <fperez@colorado.edu>
1923
1927
1924 * IPython/Release.py: Changed licensing to BSD, in all files.
1928 * IPython/Release.py: Changed licensing to BSD, in all files.
1925 (name): lowercase name for tarball/RPM release.
1929 (name): lowercase name for tarball/RPM release.
1926
1930
1927 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1931 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1928 use throughout ipython.
1932 use throughout ipython.
1929
1933
1930 * IPython/Magic.py (Magic._ofind): Switch to using the new
1934 * IPython/Magic.py (Magic._ofind): Switch to using the new
1931 OInspect.getdoc() function.
1935 OInspect.getdoc() function.
1932
1936
1933 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1937 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1934 of the line currently being canceled via Ctrl-C. It's extremely
1938 of the line currently being canceled via Ctrl-C. It's extremely
1935 ugly, but I don't know how to do it better (the problem is one of
1939 ugly, but I don't know how to do it better (the problem is one of
1936 handling cross-thread exceptions).
1940 handling cross-thread exceptions).
1937
1941
1938 2004-10-28 Fernando Perez <fperez@colorado.edu>
1942 2004-10-28 Fernando Perez <fperez@colorado.edu>
1939
1943
1940 * IPython/Shell.py (signal_handler): add signal handlers to trap
1944 * IPython/Shell.py (signal_handler): add signal handlers to trap
1941 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1945 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1942 report by Francesc Alted.
1946 report by Francesc Alted.
1943
1947
1944 2004-10-21 Fernando Perez <fperez@colorado.edu>
1948 2004-10-21 Fernando Perez <fperez@colorado.edu>
1945
1949
1946 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1950 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1947 to % for pysh syntax extensions.
1951 to % for pysh syntax extensions.
1948
1952
1949 2004-10-09 Fernando Perez <fperez@colorado.edu>
1953 2004-10-09 Fernando Perez <fperez@colorado.edu>
1950
1954
1951 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1955 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1952 arrays to print a more useful summary, without calling str(arr).
1956 arrays to print a more useful summary, without calling str(arr).
1953 This avoids the problem of extremely lengthy computations which
1957 This avoids the problem of extremely lengthy computations which
1954 occur if arr is large, and appear to the user as a system lockup
1958 occur if arr is large, and appear to the user as a system lockup
1955 with 100% cpu activity. After a suggestion by Kristian Sandberg
1959 with 100% cpu activity. After a suggestion by Kristian Sandberg
1956 <Kristian.Sandberg@colorado.edu>.
1960 <Kristian.Sandberg@colorado.edu>.
1957 (Magic.__init__): fix bug in global magic escapes not being
1961 (Magic.__init__): fix bug in global magic escapes not being
1958 correctly set.
1962 correctly set.
1959
1963
1960 2004-10-08 Fernando Perez <fperez@colorado.edu>
1964 2004-10-08 Fernando Perez <fperez@colorado.edu>
1961
1965
1962 * IPython/Magic.py (__license__): change to absolute imports of
1966 * IPython/Magic.py (__license__): change to absolute imports of
1963 ipython's own internal packages, to start adapting to the absolute
1967 ipython's own internal packages, to start adapting to the absolute
1964 import requirement of PEP-328.
1968 import requirement of PEP-328.
1965
1969
1966 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1970 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1967 files, and standardize author/license marks through the Release
1971 files, and standardize author/license marks through the Release
1968 module instead of having per/file stuff (except for files with
1972 module instead of having per/file stuff (except for files with
1969 particular licenses, like the MIT/PSF-licensed codes).
1973 particular licenses, like the MIT/PSF-licensed codes).
1970
1974
1971 * IPython/Debugger.py: remove dead code for python 2.1
1975 * IPython/Debugger.py: remove dead code for python 2.1
1972
1976
1973 2004-10-04 Fernando Perez <fperez@colorado.edu>
1977 2004-10-04 Fernando Perez <fperez@colorado.edu>
1974
1978
1975 * IPython/iplib.py (ipmagic): New function for accessing magics
1979 * IPython/iplib.py (ipmagic): New function for accessing magics
1976 via a normal python function call.
1980 via a normal python function call.
1977
1981
1978 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1982 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1979 from '@' to '%', to accomodate the new @decorator syntax of python
1983 from '@' to '%', to accomodate the new @decorator syntax of python
1980 2.4.
1984 2.4.
1981
1985
1982 2004-09-29 Fernando Perez <fperez@colorado.edu>
1986 2004-09-29 Fernando Perez <fperez@colorado.edu>
1983
1987
1984 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1988 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1985 matplotlib.use to prevent running scripts which try to switch
1989 matplotlib.use to prevent running scripts which try to switch
1986 interactive backends from within ipython. This will just crash
1990 interactive backends from within ipython. This will just crash
1987 the python interpreter, so we can't allow it (but a detailed error
1991 the python interpreter, so we can't allow it (but a detailed error
1988 is given to the user).
1992 is given to the user).
1989
1993
1990 2004-09-28 Fernando Perez <fperez@colorado.edu>
1994 2004-09-28 Fernando Perez <fperez@colorado.edu>
1991
1995
1992 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1996 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1993 matplotlib-related fixes so that using @run with non-matplotlib
1997 matplotlib-related fixes so that using @run with non-matplotlib
1994 scripts doesn't pop up spurious plot windows. This requires
1998 scripts doesn't pop up spurious plot windows. This requires
1995 matplotlib >= 0.63, where I had to make some changes as well.
1999 matplotlib >= 0.63, where I had to make some changes as well.
1996
2000
1997 * IPython/ipmaker.py (make_IPython): update version requirement to
2001 * IPython/ipmaker.py (make_IPython): update version requirement to
1998 python 2.2.
2002 python 2.2.
1999
2003
2000 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2004 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2001 banner arg for embedded customization.
2005 banner arg for embedded customization.
2002
2006
2003 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2007 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2004 explicit uses of __IP as the IPython's instance name. Now things
2008 explicit uses of __IP as the IPython's instance name. Now things
2005 are properly handled via the shell.name value. The actual code
2009 are properly handled via the shell.name value. The actual code
2006 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2010 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2007 is much better than before. I'll clean things completely when the
2011 is much better than before. I'll clean things completely when the
2008 magic stuff gets a real overhaul.
2012 magic stuff gets a real overhaul.
2009
2013
2010 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2014 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2011 minor changes to debian dir.
2015 minor changes to debian dir.
2012
2016
2013 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2017 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2014 pointer to the shell itself in the interactive namespace even when
2018 pointer to the shell itself in the interactive namespace even when
2015 a user-supplied dict is provided. This is needed for embedding
2019 a user-supplied dict is provided. This is needed for embedding
2016 purposes (found by tests with Michel Sanner).
2020 purposes (found by tests with Michel Sanner).
2017
2021
2018 2004-09-27 Fernando Perez <fperez@colorado.edu>
2022 2004-09-27 Fernando Perez <fperez@colorado.edu>
2019
2023
2020 * IPython/UserConfig/ipythonrc: remove []{} from
2024 * IPython/UserConfig/ipythonrc: remove []{} from
2021 readline_remove_delims, so that things like [modname.<TAB> do
2025 readline_remove_delims, so that things like [modname.<TAB> do
2022 proper completion. This disables [].TAB, but that's a less common
2026 proper completion. This disables [].TAB, but that's a less common
2023 case than module names in list comprehensions, for example.
2027 case than module names in list comprehensions, for example.
2024 Thanks to a report by Andrea Riciputi.
2028 Thanks to a report by Andrea Riciputi.
2025
2029
2026 2004-09-09 Fernando Perez <fperez@colorado.edu>
2030 2004-09-09 Fernando Perez <fperez@colorado.edu>
2027
2031
2028 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2032 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2029 blocking problems in win32 and osx. Fix by John.
2033 blocking problems in win32 and osx. Fix by John.
2030
2034
2031 2004-09-08 Fernando Perez <fperez@colorado.edu>
2035 2004-09-08 Fernando Perez <fperez@colorado.edu>
2032
2036
2033 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2037 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2034 for Win32 and OSX. Fix by John Hunter.
2038 for Win32 and OSX. Fix by John Hunter.
2035
2039
2036 2004-08-30 *** Released version 0.6.3
2040 2004-08-30 *** Released version 0.6.3
2037
2041
2038 2004-08-30 Fernando Perez <fperez@colorado.edu>
2042 2004-08-30 Fernando Perez <fperez@colorado.edu>
2039
2043
2040 * setup.py (isfile): Add manpages to list of dependent files to be
2044 * setup.py (isfile): Add manpages to list of dependent files to be
2041 updated.
2045 updated.
2042
2046
2043 2004-08-27 Fernando Perez <fperez@colorado.edu>
2047 2004-08-27 Fernando Perez <fperez@colorado.edu>
2044
2048
2045 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2049 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2046 for now. They don't really work with standalone WX/GTK code
2050 for now. They don't really work with standalone WX/GTK code
2047 (though matplotlib IS working fine with both of those backends).
2051 (though matplotlib IS working fine with both of those backends).
2048 This will neeed much more testing. I disabled most things with
2052 This will neeed much more testing. I disabled most things with
2049 comments, so turning it back on later should be pretty easy.
2053 comments, so turning it back on later should be pretty easy.
2050
2054
2051 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2055 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2052 autocalling of expressions like r'foo', by modifying the line
2056 autocalling of expressions like r'foo', by modifying the line
2053 split regexp. Closes
2057 split regexp. Closes
2054 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2058 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2055 Riley <ipythonbugs-AT-sabi.net>.
2059 Riley <ipythonbugs-AT-sabi.net>.
2056 (InteractiveShell.mainloop): honor --nobanner with banner
2060 (InteractiveShell.mainloop): honor --nobanner with banner
2057 extensions.
2061 extensions.
2058
2062
2059 * IPython/Shell.py: Significant refactoring of all classes, so
2063 * IPython/Shell.py: Significant refactoring of all classes, so
2060 that we can really support ALL matplotlib backends and threading
2064 that we can really support ALL matplotlib backends and threading
2061 models (John spotted a bug with Tk which required this). Now we
2065 models (John spotted a bug with Tk which required this). Now we
2062 should support single-threaded, WX-threads and GTK-threads, both
2066 should support single-threaded, WX-threads and GTK-threads, both
2063 for generic code and for matplotlib.
2067 for generic code and for matplotlib.
2064
2068
2065 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2069 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2066 -pylab, to simplify things for users. Will also remove the pylab
2070 -pylab, to simplify things for users. Will also remove the pylab
2067 profile, since now all of matplotlib configuration is directly
2071 profile, since now all of matplotlib configuration is directly
2068 handled here. This also reduces startup time.
2072 handled here. This also reduces startup time.
2069
2073
2070 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2074 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2071 shell wasn't being correctly called. Also in IPShellWX.
2075 shell wasn't being correctly called. Also in IPShellWX.
2072
2076
2073 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2077 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2074 fine-tune banner.
2078 fine-tune banner.
2075
2079
2076 * IPython/numutils.py (spike): Deprecate these spike functions,
2080 * IPython/numutils.py (spike): Deprecate these spike functions,
2077 delete (long deprecated) gnuplot_exec handler.
2081 delete (long deprecated) gnuplot_exec handler.
2078
2082
2079 2004-08-26 Fernando Perez <fperez@colorado.edu>
2083 2004-08-26 Fernando Perez <fperez@colorado.edu>
2080
2084
2081 * ipython.1: Update for threading options, plus some others which
2085 * ipython.1: Update for threading options, plus some others which
2082 were missing.
2086 were missing.
2083
2087
2084 * IPython/ipmaker.py (__call__): Added -wthread option for
2088 * IPython/ipmaker.py (__call__): Added -wthread option for
2085 wxpython thread handling. Make sure threading options are only
2089 wxpython thread handling. Make sure threading options are only
2086 valid at the command line.
2090 valid at the command line.
2087
2091
2088 * scripts/ipython: moved shell selection into a factory function
2092 * scripts/ipython: moved shell selection into a factory function
2089 in Shell.py, to keep the starter script to a minimum.
2093 in Shell.py, to keep the starter script to a minimum.
2090
2094
2091 2004-08-25 Fernando Perez <fperez@colorado.edu>
2095 2004-08-25 Fernando Perez <fperez@colorado.edu>
2092
2096
2093 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2097 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2094 John. Along with some recent changes he made to matplotlib, the
2098 John. Along with some recent changes he made to matplotlib, the
2095 next versions of both systems should work very well together.
2099 next versions of both systems should work very well together.
2096
2100
2097 2004-08-24 Fernando Perez <fperez@colorado.edu>
2101 2004-08-24 Fernando Perez <fperez@colorado.edu>
2098
2102
2099 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2103 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2100 tried to switch the profiling to using hotshot, but I'm getting
2104 tried to switch the profiling to using hotshot, but I'm getting
2101 strange errors from prof.runctx() there. I may be misreading the
2105 strange errors from prof.runctx() there. I may be misreading the
2102 docs, but it looks weird. For now the profiling code will
2106 docs, but it looks weird. For now the profiling code will
2103 continue to use the standard profiler.
2107 continue to use the standard profiler.
2104
2108
2105 2004-08-23 Fernando Perez <fperez@colorado.edu>
2109 2004-08-23 Fernando Perez <fperez@colorado.edu>
2106
2110
2107 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2111 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2108 threaded shell, by John Hunter. It's not quite ready yet, but
2112 threaded shell, by John Hunter. It's not quite ready yet, but
2109 close.
2113 close.
2110
2114
2111 2004-08-22 Fernando Perez <fperez@colorado.edu>
2115 2004-08-22 Fernando Perez <fperez@colorado.edu>
2112
2116
2113 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2117 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2114 in Magic and ultraTB.
2118 in Magic and ultraTB.
2115
2119
2116 * ipython.1: document threading options in manpage.
2120 * ipython.1: document threading options in manpage.
2117
2121
2118 * scripts/ipython: Changed name of -thread option to -gthread,
2122 * scripts/ipython: Changed name of -thread option to -gthread,
2119 since this is GTK specific. I want to leave the door open for a
2123 since this is GTK specific. I want to leave the door open for a
2120 -wthread option for WX, which will most likely be necessary. This
2124 -wthread option for WX, which will most likely be necessary. This
2121 change affects usage and ipmaker as well.
2125 change affects usage and ipmaker as well.
2122
2126
2123 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2127 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2124 handle the matplotlib shell issues. Code by John Hunter
2128 handle the matplotlib shell issues. Code by John Hunter
2125 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2129 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2126 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2130 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2127 broken (and disabled for end users) for now, but it puts the
2131 broken (and disabled for end users) for now, but it puts the
2128 infrastructure in place.
2132 infrastructure in place.
2129
2133
2130 2004-08-21 Fernando Perez <fperez@colorado.edu>
2134 2004-08-21 Fernando Perez <fperez@colorado.edu>
2131
2135
2132 * ipythonrc-pylab: Add matplotlib support.
2136 * ipythonrc-pylab: Add matplotlib support.
2133
2137
2134 * matplotlib_config.py: new files for matplotlib support, part of
2138 * matplotlib_config.py: new files for matplotlib support, part of
2135 the pylab profile.
2139 the pylab profile.
2136
2140
2137 * IPython/usage.py (__doc__): documented the threading options.
2141 * IPython/usage.py (__doc__): documented the threading options.
2138
2142
2139 2004-08-20 Fernando Perez <fperez@colorado.edu>
2143 2004-08-20 Fernando Perez <fperez@colorado.edu>
2140
2144
2141 * ipython: Modified the main calling routine to handle the -thread
2145 * ipython: Modified the main calling routine to handle the -thread
2142 and -mpthread options. This needs to be done as a top-level hack,
2146 and -mpthread options. This needs to be done as a top-level hack,
2143 because it determines which class to instantiate for IPython
2147 because it determines which class to instantiate for IPython
2144 itself.
2148 itself.
2145
2149
2146 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2150 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2147 classes to support multithreaded GTK operation without blocking,
2151 classes to support multithreaded GTK operation without blocking,
2148 and matplotlib with all backends. This is a lot of still very
2152 and matplotlib with all backends. This is a lot of still very
2149 experimental code, and threads are tricky. So it may still have a
2153 experimental code, and threads are tricky. So it may still have a
2150 few rough edges... This code owes a lot to
2154 few rough edges... This code owes a lot to
2151 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2155 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2152 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2156 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2153 to John Hunter for all the matplotlib work.
2157 to John Hunter for all the matplotlib work.
2154
2158
2155 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2159 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2156 options for gtk thread and matplotlib support.
2160 options for gtk thread and matplotlib support.
2157
2161
2158 2004-08-16 Fernando Perez <fperez@colorado.edu>
2162 2004-08-16 Fernando Perez <fperez@colorado.edu>
2159
2163
2160 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2164 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2161 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2165 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2162 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2166 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2163
2167
2164 2004-08-11 Fernando Perez <fperez@colorado.edu>
2168 2004-08-11 Fernando Perez <fperez@colorado.edu>
2165
2169
2166 * setup.py (isfile): Fix build so documentation gets updated for
2170 * setup.py (isfile): Fix build so documentation gets updated for
2167 rpms (it was only done for .tgz builds).
2171 rpms (it was only done for .tgz builds).
2168
2172
2169 2004-08-10 Fernando Perez <fperez@colorado.edu>
2173 2004-08-10 Fernando Perez <fperez@colorado.edu>
2170
2174
2171 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2175 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2172
2176
2173 * iplib.py : Silence syntax error exceptions in tab-completion.
2177 * iplib.py : Silence syntax error exceptions in tab-completion.
2174
2178
2175 2004-08-05 Fernando Perez <fperez@colorado.edu>
2179 2004-08-05 Fernando Perez <fperez@colorado.edu>
2176
2180
2177 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2181 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2178 'color off' mark for continuation prompts. This was causing long
2182 'color off' mark for continuation prompts. This was causing long
2179 continuation lines to mis-wrap.
2183 continuation lines to mis-wrap.
2180
2184
2181 2004-08-01 Fernando Perez <fperez@colorado.edu>
2185 2004-08-01 Fernando Perez <fperez@colorado.edu>
2182
2186
2183 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2187 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2184 for building ipython to be a parameter. All this is necessary
2188 for building ipython to be a parameter. All this is necessary
2185 right now to have a multithreaded version, but this insane
2189 right now to have a multithreaded version, but this insane
2186 non-design will be cleaned up soon. For now, it's a hack that
2190 non-design will be cleaned up soon. For now, it's a hack that
2187 works.
2191 works.
2188
2192
2189 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2193 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2190 args in various places. No bugs so far, but it's a dangerous
2194 args in various places. No bugs so far, but it's a dangerous
2191 practice.
2195 practice.
2192
2196
2193 2004-07-31 Fernando Perez <fperez@colorado.edu>
2197 2004-07-31 Fernando Perez <fperez@colorado.edu>
2194
2198
2195 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2199 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2196 fix completion of files with dots in their names under most
2200 fix completion of files with dots in their names under most
2197 profiles (pysh was OK because the completion order is different).
2201 profiles (pysh was OK because the completion order is different).
2198
2202
2199 2004-07-27 Fernando Perez <fperez@colorado.edu>
2203 2004-07-27 Fernando Perez <fperez@colorado.edu>
2200
2204
2201 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2205 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2202 keywords manually, b/c the one in keyword.py was removed in python
2206 keywords manually, b/c the one in keyword.py was removed in python
2203 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2207 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2204 This is NOT a bug under python 2.3 and earlier.
2208 This is NOT a bug under python 2.3 and earlier.
2205
2209
2206 2004-07-26 Fernando Perez <fperez@colorado.edu>
2210 2004-07-26 Fernando Perez <fperez@colorado.edu>
2207
2211
2208 * IPython/ultraTB.py (VerboseTB.text): Add another
2212 * IPython/ultraTB.py (VerboseTB.text): Add another
2209 linecache.checkcache() call to try to prevent inspect.py from
2213 linecache.checkcache() call to try to prevent inspect.py from
2210 crashing under python 2.3. I think this fixes
2214 crashing under python 2.3. I think this fixes
2211 http://www.scipy.net/roundup/ipython/issue17.
2215 http://www.scipy.net/roundup/ipython/issue17.
2212
2216
2213 2004-07-26 *** Released version 0.6.2
2217 2004-07-26 *** Released version 0.6.2
2214
2218
2215 2004-07-26 Fernando Perez <fperez@colorado.edu>
2219 2004-07-26 Fernando Perez <fperez@colorado.edu>
2216
2220
2217 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2221 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2218 fail for any number.
2222 fail for any number.
2219 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2223 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2220 empty bookmarks.
2224 empty bookmarks.
2221
2225
2222 2004-07-26 *** Released version 0.6.1
2226 2004-07-26 *** Released version 0.6.1
2223
2227
2224 2004-07-26 Fernando Perez <fperez@colorado.edu>
2228 2004-07-26 Fernando Perez <fperez@colorado.edu>
2225
2229
2226 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2230 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2227
2231
2228 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2232 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2229 escaping '()[]{}' in filenames.
2233 escaping '()[]{}' in filenames.
2230
2234
2231 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2235 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2232 Python 2.2 users who lack a proper shlex.split.
2236 Python 2.2 users who lack a proper shlex.split.
2233
2237
2234 2004-07-19 Fernando Perez <fperez@colorado.edu>
2238 2004-07-19 Fernando Perez <fperez@colorado.edu>
2235
2239
2236 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2240 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2237 for reading readline's init file. I follow the normal chain:
2241 for reading readline's init file. I follow the normal chain:
2238 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2242 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2239 report by Mike Heeter. This closes
2243 report by Mike Heeter. This closes
2240 http://www.scipy.net/roundup/ipython/issue16.
2244 http://www.scipy.net/roundup/ipython/issue16.
2241
2245
2242 2004-07-18 Fernando Perez <fperez@colorado.edu>
2246 2004-07-18 Fernando Perez <fperez@colorado.edu>
2243
2247
2244 * IPython/iplib.py (__init__): Add better handling of '\' under
2248 * IPython/iplib.py (__init__): Add better handling of '\' under
2245 Win32 for filenames. After a patch by Ville.
2249 Win32 for filenames. After a patch by Ville.
2246
2250
2247 2004-07-17 Fernando Perez <fperez@colorado.edu>
2251 2004-07-17 Fernando Perez <fperez@colorado.edu>
2248
2252
2249 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2253 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2250 autocalling would be triggered for 'foo is bar' if foo is
2254 autocalling would be triggered for 'foo is bar' if foo is
2251 callable. I also cleaned up the autocall detection code to use a
2255 callable. I also cleaned up the autocall detection code to use a
2252 regexp, which is faster. Bug reported by Alexander Schmolck.
2256 regexp, which is faster. Bug reported by Alexander Schmolck.
2253
2257
2254 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2258 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2255 '?' in them would confuse the help system. Reported by Alex
2259 '?' in them would confuse the help system. Reported by Alex
2256 Schmolck.
2260 Schmolck.
2257
2261
2258 2004-07-16 Fernando Perez <fperez@colorado.edu>
2262 2004-07-16 Fernando Perez <fperez@colorado.edu>
2259
2263
2260 * IPython/GnuplotInteractive.py (__all__): added plot2.
2264 * IPython/GnuplotInteractive.py (__all__): added plot2.
2261
2265
2262 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2266 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2263 plotting dictionaries, lists or tuples of 1d arrays.
2267 plotting dictionaries, lists or tuples of 1d arrays.
2264
2268
2265 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2269 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2266 optimizations.
2270 optimizations.
2267
2271
2268 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2272 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2269 the information which was there from Janko's original IPP code:
2273 the information which was there from Janko's original IPP code:
2270
2274
2271 03.05.99 20:53 porto.ifm.uni-kiel.de
2275 03.05.99 20:53 porto.ifm.uni-kiel.de
2272 --Started changelog.
2276 --Started changelog.
2273 --make clear do what it say it does
2277 --make clear do what it say it does
2274 --added pretty output of lines from inputcache
2278 --added pretty output of lines from inputcache
2275 --Made Logger a mixin class, simplifies handling of switches
2279 --Made Logger a mixin class, simplifies handling of switches
2276 --Added own completer class. .string<TAB> expands to last history
2280 --Added own completer class. .string<TAB> expands to last history
2277 line which starts with string. The new expansion is also present
2281 line which starts with string. The new expansion is also present
2278 with Ctrl-r from the readline library. But this shows, who this
2282 with Ctrl-r from the readline library. But this shows, who this
2279 can be done for other cases.
2283 can be done for other cases.
2280 --Added convention that all shell functions should accept a
2284 --Added convention that all shell functions should accept a
2281 parameter_string This opens the door for different behaviour for
2285 parameter_string This opens the door for different behaviour for
2282 each function. @cd is a good example of this.
2286 each function. @cd is a good example of this.
2283
2287
2284 04.05.99 12:12 porto.ifm.uni-kiel.de
2288 04.05.99 12:12 porto.ifm.uni-kiel.de
2285 --added logfile rotation
2289 --added logfile rotation
2286 --added new mainloop method which freezes first the namespace
2290 --added new mainloop method which freezes first the namespace
2287
2291
2288 07.05.99 21:24 porto.ifm.uni-kiel.de
2292 07.05.99 21:24 porto.ifm.uni-kiel.de
2289 --added the docreader classes. Now there is a help system.
2293 --added the docreader classes. Now there is a help system.
2290 -This is only a first try. Currently it's not easy to put new
2294 -This is only a first try. Currently it's not easy to put new
2291 stuff in the indices. But this is the way to go. Info would be
2295 stuff in the indices. But this is the way to go. Info would be
2292 better, but HTML is every where and not everybody has an info
2296 better, but HTML is every where and not everybody has an info
2293 system installed and it's not so easy to change html-docs to info.
2297 system installed and it's not so easy to change html-docs to info.
2294 --added global logfile option
2298 --added global logfile option
2295 --there is now a hook for object inspection method pinfo needs to
2299 --there is now a hook for object inspection method pinfo needs to
2296 be provided for this. Can be reached by two '??'.
2300 be provided for this. Can be reached by two '??'.
2297
2301
2298 08.05.99 20:51 porto.ifm.uni-kiel.de
2302 08.05.99 20:51 porto.ifm.uni-kiel.de
2299 --added a README
2303 --added a README
2300 --bug in rc file. Something has changed so functions in the rc
2304 --bug in rc file. Something has changed so functions in the rc
2301 file need to reference the shell and not self. Not clear if it's a
2305 file need to reference the shell and not self. Not clear if it's a
2302 bug or feature.
2306 bug or feature.
2303 --changed rc file for new behavior
2307 --changed rc file for new behavior
2304
2308
2305 2004-07-15 Fernando Perez <fperez@colorado.edu>
2309 2004-07-15 Fernando Perez <fperez@colorado.edu>
2306
2310
2307 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2311 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2308 cache was falling out of sync in bizarre manners when multi-line
2312 cache was falling out of sync in bizarre manners when multi-line
2309 input was present. Minor optimizations and cleanup.
2313 input was present. Minor optimizations and cleanup.
2310
2314
2311 (Logger): Remove old Changelog info for cleanup. This is the
2315 (Logger): Remove old Changelog info for cleanup. This is the
2312 information which was there from Janko's original code:
2316 information which was there from Janko's original code:
2313
2317
2314 Changes to Logger: - made the default log filename a parameter
2318 Changes to Logger: - made the default log filename a parameter
2315
2319
2316 - put a check for lines beginning with !@? in log(). Needed
2320 - put a check for lines beginning with !@? in log(). Needed
2317 (even if the handlers properly log their lines) for mid-session
2321 (even if the handlers properly log their lines) for mid-session
2318 logging activation to work properly. Without this, lines logged
2322 logging activation to work properly. Without this, lines logged
2319 in mid session, which get read from the cache, would end up
2323 in mid session, which get read from the cache, would end up
2320 'bare' (with !@? in the open) in the log. Now they are caught
2324 'bare' (with !@? in the open) in the log. Now they are caught
2321 and prepended with a #.
2325 and prepended with a #.
2322
2326
2323 * IPython/iplib.py (InteractiveShell.init_readline): added check
2327 * IPython/iplib.py (InteractiveShell.init_readline): added check
2324 in case MagicCompleter fails to be defined, so we don't crash.
2328 in case MagicCompleter fails to be defined, so we don't crash.
2325
2329
2326 2004-07-13 Fernando Perez <fperez@colorado.edu>
2330 2004-07-13 Fernando Perez <fperez@colorado.edu>
2327
2331
2328 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2332 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2329 of EPS if the requested filename ends in '.eps'.
2333 of EPS if the requested filename ends in '.eps'.
2330
2334
2331 2004-07-04 Fernando Perez <fperez@colorado.edu>
2335 2004-07-04 Fernando Perez <fperez@colorado.edu>
2332
2336
2333 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2337 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2334 escaping of quotes when calling the shell.
2338 escaping of quotes when calling the shell.
2335
2339
2336 2004-07-02 Fernando Perez <fperez@colorado.edu>
2340 2004-07-02 Fernando Perez <fperez@colorado.edu>
2337
2341
2338 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2342 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2339 gettext not working because we were clobbering '_'. Fixes
2343 gettext not working because we were clobbering '_'. Fixes
2340 http://www.scipy.net/roundup/ipython/issue6.
2344 http://www.scipy.net/roundup/ipython/issue6.
2341
2345
2342 2004-07-01 Fernando Perez <fperez@colorado.edu>
2346 2004-07-01 Fernando Perez <fperez@colorado.edu>
2343
2347
2344 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2348 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2345 into @cd. Patch by Ville.
2349 into @cd. Patch by Ville.
2346
2350
2347 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2351 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2348 new function to store things after ipmaker runs. Patch by Ville.
2352 new function to store things after ipmaker runs. Patch by Ville.
2349 Eventually this will go away once ipmaker is removed and the class
2353 Eventually this will go away once ipmaker is removed and the class
2350 gets cleaned up, but for now it's ok. Key functionality here is
2354 gets cleaned up, but for now it's ok. Key functionality here is
2351 the addition of the persistent storage mechanism, a dict for
2355 the addition of the persistent storage mechanism, a dict for
2352 keeping data across sessions (for now just bookmarks, but more can
2356 keeping data across sessions (for now just bookmarks, but more can
2353 be implemented later).
2357 be implemented later).
2354
2358
2355 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2359 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2356 persistent across sections. Patch by Ville, I modified it
2360 persistent across sections. Patch by Ville, I modified it
2357 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2361 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2358 added a '-l' option to list all bookmarks.
2362 added a '-l' option to list all bookmarks.
2359
2363
2360 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2364 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2361 center for cleanup. Registered with atexit.register(). I moved
2365 center for cleanup. Registered with atexit.register(). I moved
2362 here the old exit_cleanup(). After a patch by Ville.
2366 here the old exit_cleanup(). After a patch by Ville.
2363
2367
2364 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2368 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2365 characters in the hacked shlex_split for python 2.2.
2369 characters in the hacked shlex_split for python 2.2.
2366
2370
2367 * IPython/iplib.py (file_matches): more fixes to filenames with
2371 * IPython/iplib.py (file_matches): more fixes to filenames with
2368 whitespace in them. It's not perfect, but limitations in python's
2372 whitespace in them. It's not perfect, but limitations in python's
2369 readline make it impossible to go further.
2373 readline make it impossible to go further.
2370
2374
2371 2004-06-29 Fernando Perez <fperez@colorado.edu>
2375 2004-06-29 Fernando Perez <fperez@colorado.edu>
2372
2376
2373 * IPython/iplib.py (file_matches): escape whitespace correctly in
2377 * IPython/iplib.py (file_matches): escape whitespace correctly in
2374 filename completions. Bug reported by Ville.
2378 filename completions. Bug reported by Ville.
2375
2379
2376 2004-06-28 Fernando Perez <fperez@colorado.edu>
2380 2004-06-28 Fernando Perez <fperez@colorado.edu>
2377
2381
2378 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2382 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2379 the history file will be called 'history-PROFNAME' (or just
2383 the history file will be called 'history-PROFNAME' (or just
2380 'history' if no profile is loaded). I was getting annoyed at
2384 'history' if no profile is loaded). I was getting annoyed at
2381 getting my Numerical work history clobbered by pysh sessions.
2385 getting my Numerical work history clobbered by pysh sessions.
2382
2386
2383 * IPython/iplib.py (InteractiveShell.__init__): Internal
2387 * IPython/iplib.py (InteractiveShell.__init__): Internal
2384 getoutputerror() function so that we can honor the system_verbose
2388 getoutputerror() function so that we can honor the system_verbose
2385 flag for _all_ system calls. I also added escaping of #
2389 flag for _all_ system calls. I also added escaping of #
2386 characters here to avoid confusing Itpl.
2390 characters here to avoid confusing Itpl.
2387
2391
2388 * IPython/Magic.py (shlex_split): removed call to shell in
2392 * IPython/Magic.py (shlex_split): removed call to shell in
2389 parse_options and replaced it with shlex.split(). The annoying
2393 parse_options and replaced it with shlex.split(). The annoying
2390 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2394 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2391 to backport it from 2.3, with several frail hacks (the shlex
2395 to backport it from 2.3, with several frail hacks (the shlex
2392 module is rather limited in 2.2). Thanks to a suggestion by Ville
2396 module is rather limited in 2.2). Thanks to a suggestion by Ville
2393 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2397 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2394 problem.
2398 problem.
2395
2399
2396 (Magic.magic_system_verbose): new toggle to print the actual
2400 (Magic.magic_system_verbose): new toggle to print the actual
2397 system calls made by ipython. Mainly for debugging purposes.
2401 system calls made by ipython. Mainly for debugging purposes.
2398
2402
2399 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2403 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2400 doesn't support persistence. Reported (and fix suggested) by
2404 doesn't support persistence. Reported (and fix suggested) by
2401 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2405 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2402
2406
2403 2004-06-26 Fernando Perez <fperez@colorado.edu>
2407 2004-06-26 Fernando Perez <fperez@colorado.edu>
2404
2408
2405 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2409 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2406 continue prompts.
2410 continue prompts.
2407
2411
2408 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2412 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2409 function (basically a big docstring) and a few more things here to
2413 function (basically a big docstring) and a few more things here to
2410 speedup startup. pysh.py is now very lightweight. We want because
2414 speedup startup. pysh.py is now very lightweight. We want because
2411 it gets execfile'd, while InterpreterExec gets imported, so
2415 it gets execfile'd, while InterpreterExec gets imported, so
2412 byte-compilation saves time.
2416 byte-compilation saves time.
2413
2417
2414 2004-06-25 Fernando Perez <fperez@colorado.edu>
2418 2004-06-25 Fernando Perez <fperez@colorado.edu>
2415
2419
2416 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2420 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2417 -NUM', which was recently broken.
2421 -NUM', which was recently broken.
2418
2422
2419 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2423 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2420 in multi-line input (but not !!, which doesn't make sense there).
2424 in multi-line input (but not !!, which doesn't make sense there).
2421
2425
2422 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2426 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2423 It's just too useful, and people can turn it off in the less
2427 It's just too useful, and people can turn it off in the less
2424 common cases where it's a problem.
2428 common cases where it's a problem.
2425
2429
2426 2004-06-24 Fernando Perez <fperez@colorado.edu>
2430 2004-06-24 Fernando Perez <fperez@colorado.edu>
2427
2431
2428 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2432 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2429 special syntaxes (like alias calling) is now allied in multi-line
2433 special syntaxes (like alias calling) is now allied in multi-line
2430 input. This is still _very_ experimental, but it's necessary for
2434 input. This is still _very_ experimental, but it's necessary for
2431 efficient shell usage combining python looping syntax with system
2435 efficient shell usage combining python looping syntax with system
2432 calls. For now it's restricted to aliases, I don't think it
2436 calls. For now it's restricted to aliases, I don't think it
2433 really even makes sense to have this for magics.
2437 really even makes sense to have this for magics.
2434
2438
2435 2004-06-23 Fernando Perez <fperez@colorado.edu>
2439 2004-06-23 Fernando Perez <fperez@colorado.edu>
2436
2440
2437 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2441 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2438 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2442 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2439
2443
2440 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2444 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2441 extensions under Windows (after code sent by Gary Bishop). The
2445 extensions under Windows (after code sent by Gary Bishop). The
2442 extensions considered 'executable' are stored in IPython's rc
2446 extensions considered 'executable' are stored in IPython's rc
2443 structure as win_exec_ext.
2447 structure as win_exec_ext.
2444
2448
2445 * IPython/genutils.py (shell): new function, like system() but
2449 * IPython/genutils.py (shell): new function, like system() but
2446 without return value. Very useful for interactive shell work.
2450 without return value. Very useful for interactive shell work.
2447
2451
2448 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2452 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2449 delete aliases.
2453 delete aliases.
2450
2454
2451 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2455 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2452 sure that the alias table doesn't contain python keywords.
2456 sure that the alias table doesn't contain python keywords.
2453
2457
2454 2004-06-21 Fernando Perez <fperez@colorado.edu>
2458 2004-06-21 Fernando Perez <fperez@colorado.edu>
2455
2459
2456 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2460 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2457 non-existent items are found in $PATH. Reported by Thorsten.
2461 non-existent items are found in $PATH. Reported by Thorsten.
2458
2462
2459 2004-06-20 Fernando Perez <fperez@colorado.edu>
2463 2004-06-20 Fernando Perez <fperez@colorado.edu>
2460
2464
2461 * IPython/iplib.py (complete): modified the completer so that the
2465 * IPython/iplib.py (complete): modified the completer so that the
2462 order of priorities can be easily changed at runtime.
2466 order of priorities can be easily changed at runtime.
2463
2467
2464 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2468 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2465 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2469 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2466
2470
2467 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2471 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2468 expand Python variables prepended with $ in all system calls. The
2472 expand Python variables prepended with $ in all system calls. The
2469 same was done to InteractiveShell.handle_shell_escape. Now all
2473 same was done to InteractiveShell.handle_shell_escape. Now all
2470 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2474 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2471 expansion of python variables and expressions according to the
2475 expansion of python variables and expressions according to the
2472 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2476 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2473
2477
2474 Though PEP-215 has been rejected, a similar (but simpler) one
2478 Though PEP-215 has been rejected, a similar (but simpler) one
2475 seems like it will go into Python 2.4, PEP-292 -
2479 seems like it will go into Python 2.4, PEP-292 -
2476 http://www.python.org/peps/pep-0292.html.
2480 http://www.python.org/peps/pep-0292.html.
2477
2481
2478 I'll keep the full syntax of PEP-215, since IPython has since the
2482 I'll keep the full syntax of PEP-215, since IPython has since the
2479 start used Ka-Ping Yee's reference implementation discussed there
2483 start used Ka-Ping Yee's reference implementation discussed there
2480 (Itpl), and I actually like the powerful semantics it offers.
2484 (Itpl), and I actually like the powerful semantics it offers.
2481
2485
2482 In order to access normal shell variables, the $ has to be escaped
2486 In order to access normal shell variables, the $ has to be escaped
2483 via an extra $. For example:
2487 via an extra $. For example:
2484
2488
2485 In [7]: PATH='a python variable'
2489 In [7]: PATH='a python variable'
2486
2490
2487 In [8]: !echo $PATH
2491 In [8]: !echo $PATH
2488 a python variable
2492 a python variable
2489
2493
2490 In [9]: !echo $$PATH
2494 In [9]: !echo $$PATH
2491 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2495 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2492
2496
2493 (Magic.parse_options): escape $ so the shell doesn't evaluate
2497 (Magic.parse_options): escape $ so the shell doesn't evaluate
2494 things prematurely.
2498 things prematurely.
2495
2499
2496 * IPython/iplib.py (InteractiveShell.call_alias): added the
2500 * IPython/iplib.py (InteractiveShell.call_alias): added the
2497 ability for aliases to expand python variables via $.
2501 ability for aliases to expand python variables via $.
2498
2502
2499 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2503 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2500 system, now there's a @rehash/@rehashx pair of magics. These work
2504 system, now there's a @rehash/@rehashx pair of magics. These work
2501 like the csh rehash command, and can be invoked at any time. They
2505 like the csh rehash command, and can be invoked at any time. They
2502 build a table of aliases to everything in the user's $PATH
2506 build a table of aliases to everything in the user's $PATH
2503 (@rehash uses everything, @rehashx is slower but only adds
2507 (@rehash uses everything, @rehashx is slower but only adds
2504 executable files). With this, the pysh.py-based shell profile can
2508 executable files). With this, the pysh.py-based shell profile can
2505 now simply call rehash upon startup, and full access to all
2509 now simply call rehash upon startup, and full access to all
2506 programs in the user's path is obtained.
2510 programs in the user's path is obtained.
2507
2511
2508 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2512 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2509 functionality is now fully in place. I removed the old dynamic
2513 functionality is now fully in place. I removed the old dynamic
2510 code generation based approach, in favor of a much lighter one
2514 code generation based approach, in favor of a much lighter one
2511 based on a simple dict. The advantage is that this allows me to
2515 based on a simple dict. The advantage is that this allows me to
2512 now have thousands of aliases with negligible cost (unthinkable
2516 now have thousands of aliases with negligible cost (unthinkable
2513 with the old system).
2517 with the old system).
2514
2518
2515 2004-06-19 Fernando Perez <fperez@colorado.edu>
2519 2004-06-19 Fernando Perez <fperez@colorado.edu>
2516
2520
2517 * IPython/iplib.py (__init__): extended MagicCompleter class to
2521 * IPython/iplib.py (__init__): extended MagicCompleter class to
2518 also complete (last in priority) on user aliases.
2522 also complete (last in priority) on user aliases.
2519
2523
2520 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2524 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2521 call to eval.
2525 call to eval.
2522 (ItplNS.__init__): Added a new class which functions like Itpl,
2526 (ItplNS.__init__): Added a new class which functions like Itpl,
2523 but allows configuring the namespace for the evaluation to occur
2527 but allows configuring the namespace for the evaluation to occur
2524 in.
2528 in.
2525
2529
2526 2004-06-18 Fernando Perez <fperez@colorado.edu>
2530 2004-06-18 Fernando Perez <fperez@colorado.edu>
2527
2531
2528 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2532 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2529 better message when 'exit' or 'quit' are typed (a common newbie
2533 better message when 'exit' or 'quit' are typed (a common newbie
2530 confusion).
2534 confusion).
2531
2535
2532 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2536 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2533 check for Windows users.
2537 check for Windows users.
2534
2538
2535 * IPython/iplib.py (InteractiveShell.user_setup): removed
2539 * IPython/iplib.py (InteractiveShell.user_setup): removed
2536 disabling of colors for Windows. I'll test at runtime and issue a
2540 disabling of colors for Windows. I'll test at runtime and issue a
2537 warning if Gary's readline isn't found, as to nudge users to
2541 warning if Gary's readline isn't found, as to nudge users to
2538 download it.
2542 download it.
2539
2543
2540 2004-06-16 Fernando Perez <fperez@colorado.edu>
2544 2004-06-16 Fernando Perez <fperez@colorado.edu>
2541
2545
2542 * IPython/genutils.py (Stream.__init__): changed to print errors
2546 * IPython/genutils.py (Stream.__init__): changed to print errors
2543 to sys.stderr. I had a circular dependency here. Now it's
2547 to sys.stderr. I had a circular dependency here. Now it's
2544 possible to run ipython as IDLE's shell (consider this pre-alpha,
2548 possible to run ipython as IDLE's shell (consider this pre-alpha,
2545 since true stdout things end up in the starting terminal instead
2549 since true stdout things end up in the starting terminal instead
2546 of IDLE's out).
2550 of IDLE's out).
2547
2551
2548 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2552 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2549 users who haven't # updated their prompt_in2 definitions. Remove
2553 users who haven't # updated their prompt_in2 definitions. Remove
2550 eventually.
2554 eventually.
2551 (multiple_replace): added credit to original ASPN recipe.
2555 (multiple_replace): added credit to original ASPN recipe.
2552
2556
2553 2004-06-15 Fernando Perez <fperez@colorado.edu>
2557 2004-06-15 Fernando Perez <fperez@colorado.edu>
2554
2558
2555 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2559 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2556 list of auto-defined aliases.
2560 list of auto-defined aliases.
2557
2561
2558 2004-06-13 Fernando Perez <fperez@colorado.edu>
2562 2004-06-13 Fernando Perez <fperez@colorado.edu>
2559
2563
2560 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2564 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2561 install was really requested (so setup.py can be used for other
2565 install was really requested (so setup.py can be used for other
2562 things under Windows).
2566 things under Windows).
2563
2567
2564 2004-06-10 Fernando Perez <fperez@colorado.edu>
2568 2004-06-10 Fernando Perez <fperez@colorado.edu>
2565
2569
2566 * IPython/Logger.py (Logger.create_log): Manually remove any old
2570 * IPython/Logger.py (Logger.create_log): Manually remove any old
2567 backup, since os.remove may fail under Windows. Fixes bug
2571 backup, since os.remove may fail under Windows. Fixes bug
2568 reported by Thorsten.
2572 reported by Thorsten.
2569
2573
2570 2004-06-09 Fernando Perez <fperez@colorado.edu>
2574 2004-06-09 Fernando Perez <fperez@colorado.edu>
2571
2575
2572 * examples/example-embed.py: fixed all references to %n (replaced
2576 * examples/example-embed.py: fixed all references to %n (replaced
2573 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2577 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2574 for all examples and the manual as well.
2578 for all examples and the manual as well.
2575
2579
2576 2004-06-08 Fernando Perez <fperez@colorado.edu>
2580 2004-06-08 Fernando Perez <fperez@colorado.edu>
2577
2581
2578 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2582 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2579 alignment and color management. All 3 prompt subsystems now
2583 alignment and color management. All 3 prompt subsystems now
2580 inherit from BasePrompt.
2584 inherit from BasePrompt.
2581
2585
2582 * tools/release: updates for windows installer build and tag rpms
2586 * tools/release: updates for windows installer build and tag rpms
2583 with python version (since paths are fixed).
2587 with python version (since paths are fixed).
2584
2588
2585 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2589 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2586 which will become eventually obsolete. Also fixed the default
2590 which will become eventually obsolete. Also fixed the default
2587 prompt_in2 to use \D, so at least new users start with the correct
2591 prompt_in2 to use \D, so at least new users start with the correct
2588 defaults.
2592 defaults.
2589 WARNING: Users with existing ipythonrc files will need to apply
2593 WARNING: Users with existing ipythonrc files will need to apply
2590 this fix manually!
2594 this fix manually!
2591
2595
2592 * setup.py: make windows installer (.exe). This is finally the
2596 * setup.py: make windows installer (.exe). This is finally the
2593 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2597 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2594 which I hadn't included because it required Python 2.3 (or recent
2598 which I hadn't included because it required Python 2.3 (or recent
2595 distutils).
2599 distutils).
2596
2600
2597 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2601 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2598 usage of new '\D' escape.
2602 usage of new '\D' escape.
2599
2603
2600 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2604 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2601 lacks os.getuid())
2605 lacks os.getuid())
2602 (CachedOutput.set_colors): Added the ability to turn coloring
2606 (CachedOutput.set_colors): Added the ability to turn coloring
2603 on/off with @colors even for manually defined prompt colors. It
2607 on/off with @colors even for manually defined prompt colors. It
2604 uses a nasty global, but it works safely and via the generic color
2608 uses a nasty global, but it works safely and via the generic color
2605 handling mechanism.
2609 handling mechanism.
2606 (Prompt2.__init__): Introduced new escape '\D' for continuation
2610 (Prompt2.__init__): Introduced new escape '\D' for continuation
2607 prompts. It represents the counter ('\#') as dots.
2611 prompts. It represents the counter ('\#') as dots.
2608 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2612 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2609 need to update their ipythonrc files and replace '%n' with '\D' in
2613 need to update their ipythonrc files and replace '%n' with '\D' in
2610 their prompt_in2 settings everywhere. Sorry, but there's
2614 their prompt_in2 settings everywhere. Sorry, but there's
2611 otherwise no clean way to get all prompts to properly align. The
2615 otherwise no clean way to get all prompts to properly align. The
2612 ipythonrc shipped with IPython has been updated.
2616 ipythonrc shipped with IPython has been updated.
2613
2617
2614 2004-06-07 Fernando Perez <fperez@colorado.edu>
2618 2004-06-07 Fernando Perez <fperez@colorado.edu>
2615
2619
2616 * setup.py (isfile): Pass local_icons option to latex2html, so the
2620 * setup.py (isfile): Pass local_icons option to latex2html, so the
2617 resulting HTML file is self-contained. Thanks to
2621 resulting HTML file is self-contained. Thanks to
2618 dryice-AT-liu.com.cn for the tip.
2622 dryice-AT-liu.com.cn for the tip.
2619
2623
2620 * pysh.py: I created a new profile 'shell', which implements a
2624 * pysh.py: I created a new profile 'shell', which implements a
2621 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2625 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2622 system shell, nor will it become one anytime soon. It's mainly
2626 system shell, nor will it become one anytime soon. It's mainly
2623 meant to illustrate the use of the new flexible bash-like prompts.
2627 meant to illustrate the use of the new flexible bash-like prompts.
2624 I guess it could be used by hardy souls for true shell management,
2628 I guess it could be used by hardy souls for true shell management,
2625 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2629 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2626 profile. This uses the InterpreterExec extension provided by
2630 profile. This uses the InterpreterExec extension provided by
2627 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2631 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2628
2632
2629 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2633 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2630 auto-align itself with the length of the previous input prompt
2634 auto-align itself with the length of the previous input prompt
2631 (taking into account the invisible color escapes).
2635 (taking into account the invisible color escapes).
2632 (CachedOutput.__init__): Large restructuring of this class. Now
2636 (CachedOutput.__init__): Large restructuring of this class. Now
2633 all three prompts (primary1, primary2, output) are proper objects,
2637 all three prompts (primary1, primary2, output) are proper objects,
2634 managed by the 'parent' CachedOutput class. The code is still a
2638 managed by the 'parent' CachedOutput class. The code is still a
2635 bit hackish (all prompts share state via a pointer to the cache),
2639 bit hackish (all prompts share state via a pointer to the cache),
2636 but it's overall far cleaner than before.
2640 but it's overall far cleaner than before.
2637
2641
2638 * IPython/genutils.py (getoutputerror): modified to add verbose,
2642 * IPython/genutils.py (getoutputerror): modified to add verbose,
2639 debug and header options. This makes the interface of all getout*
2643 debug and header options. This makes the interface of all getout*
2640 functions uniform.
2644 functions uniform.
2641 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2645 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2642
2646
2643 * IPython/Magic.py (Magic.default_option): added a function to
2647 * IPython/Magic.py (Magic.default_option): added a function to
2644 allow registering default options for any magic command. This
2648 allow registering default options for any magic command. This
2645 makes it easy to have profiles which customize the magics globally
2649 makes it easy to have profiles which customize the magics globally
2646 for a certain use. The values set through this function are
2650 for a certain use. The values set through this function are
2647 picked up by the parse_options() method, which all magics should
2651 picked up by the parse_options() method, which all magics should
2648 use to parse their options.
2652 use to parse their options.
2649
2653
2650 * IPython/genutils.py (warn): modified the warnings framework to
2654 * IPython/genutils.py (warn): modified the warnings framework to
2651 use the Term I/O class. I'm trying to slowly unify all of
2655 use the Term I/O class. I'm trying to slowly unify all of
2652 IPython's I/O operations to pass through Term.
2656 IPython's I/O operations to pass through Term.
2653
2657
2654 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2658 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2655 the secondary prompt to correctly match the length of the primary
2659 the secondary prompt to correctly match the length of the primary
2656 one for any prompt. Now multi-line code will properly line up
2660 one for any prompt. Now multi-line code will properly line up
2657 even for path dependent prompts, such as the new ones available
2661 even for path dependent prompts, such as the new ones available
2658 via the prompt_specials.
2662 via the prompt_specials.
2659
2663
2660 2004-06-06 Fernando Perez <fperez@colorado.edu>
2664 2004-06-06 Fernando Perez <fperez@colorado.edu>
2661
2665
2662 * IPython/Prompts.py (prompt_specials): Added the ability to have
2666 * IPython/Prompts.py (prompt_specials): Added the ability to have
2663 bash-like special sequences in the prompts, which get
2667 bash-like special sequences in the prompts, which get
2664 automatically expanded. Things like hostname, current working
2668 automatically expanded. Things like hostname, current working
2665 directory and username are implemented already, but it's easy to
2669 directory and username are implemented already, but it's easy to
2666 add more in the future. Thanks to a patch by W.J. van der Laan
2670 add more in the future. Thanks to a patch by W.J. van der Laan
2667 <gnufnork-AT-hetdigitalegat.nl>
2671 <gnufnork-AT-hetdigitalegat.nl>
2668 (prompt_specials): Added color support for prompt strings, so
2672 (prompt_specials): Added color support for prompt strings, so
2669 users can define arbitrary color setups for their prompts.
2673 users can define arbitrary color setups for their prompts.
2670
2674
2671 2004-06-05 Fernando Perez <fperez@colorado.edu>
2675 2004-06-05 Fernando Perez <fperez@colorado.edu>
2672
2676
2673 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2677 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2674 code to load Gary Bishop's readline and configure it
2678 code to load Gary Bishop's readline and configure it
2675 automatically. Thanks to Gary for help on this.
2679 automatically. Thanks to Gary for help on this.
2676
2680
2677 2004-06-01 Fernando Perez <fperez@colorado.edu>
2681 2004-06-01 Fernando Perez <fperez@colorado.edu>
2678
2682
2679 * IPython/Logger.py (Logger.create_log): fix bug for logging
2683 * IPython/Logger.py (Logger.create_log): fix bug for logging
2680 with no filename (previous fix was incomplete).
2684 with no filename (previous fix was incomplete).
2681
2685
2682 2004-05-25 Fernando Perez <fperez@colorado.edu>
2686 2004-05-25 Fernando Perez <fperez@colorado.edu>
2683
2687
2684 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2688 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2685 parens would get passed to the shell.
2689 parens would get passed to the shell.
2686
2690
2687 2004-05-20 Fernando Perez <fperez@colorado.edu>
2691 2004-05-20 Fernando Perez <fperez@colorado.edu>
2688
2692
2689 * IPython/Magic.py (Magic.magic_prun): changed default profile
2693 * IPython/Magic.py (Magic.magic_prun): changed default profile
2690 sort order to 'time' (the more common profiling need).
2694 sort order to 'time' (the more common profiling need).
2691
2695
2692 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2696 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2693 so that source code shown is guaranteed in sync with the file on
2697 so that source code shown is guaranteed in sync with the file on
2694 disk (also changed in psource). Similar fix to the one for
2698 disk (also changed in psource). Similar fix to the one for
2695 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2699 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2696 <yann.ledu-AT-noos.fr>.
2700 <yann.ledu-AT-noos.fr>.
2697
2701
2698 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2702 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2699 with a single option would not be correctly parsed. Closes
2703 with a single option would not be correctly parsed. Closes
2700 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2704 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2701 introduced in 0.6.0 (on 2004-05-06).
2705 introduced in 0.6.0 (on 2004-05-06).
2702
2706
2703 2004-05-13 *** Released version 0.6.0
2707 2004-05-13 *** Released version 0.6.0
2704
2708
2705 2004-05-13 Fernando Perez <fperez@colorado.edu>
2709 2004-05-13 Fernando Perez <fperez@colorado.edu>
2706
2710
2707 * debian/: Added debian/ directory to CVS, so that debian support
2711 * debian/: Added debian/ directory to CVS, so that debian support
2708 is publicly accessible. The debian package is maintained by Jack
2712 is publicly accessible. The debian package is maintained by Jack
2709 Moffit <jack-AT-xiph.org>.
2713 Moffit <jack-AT-xiph.org>.
2710
2714
2711 * Documentation: included the notes about an ipython-based system
2715 * Documentation: included the notes about an ipython-based system
2712 shell (the hypothetical 'pysh') into the new_design.pdf document,
2716 shell (the hypothetical 'pysh') into the new_design.pdf document,
2713 so that these ideas get distributed to users along with the
2717 so that these ideas get distributed to users along with the
2714 official documentation.
2718 official documentation.
2715
2719
2716 2004-05-10 Fernando Perez <fperez@colorado.edu>
2720 2004-05-10 Fernando Perez <fperez@colorado.edu>
2717
2721
2718 * IPython/Logger.py (Logger.create_log): fix recently introduced
2722 * IPython/Logger.py (Logger.create_log): fix recently introduced
2719 bug (misindented line) where logstart would fail when not given an
2723 bug (misindented line) where logstart would fail when not given an
2720 explicit filename.
2724 explicit filename.
2721
2725
2722 2004-05-09 Fernando Perez <fperez@colorado.edu>
2726 2004-05-09 Fernando Perez <fperez@colorado.edu>
2723
2727
2724 * IPython/Magic.py (Magic.parse_options): skip system call when
2728 * IPython/Magic.py (Magic.parse_options): skip system call when
2725 there are no options to look for. Faster, cleaner for the common
2729 there are no options to look for. Faster, cleaner for the common
2726 case.
2730 case.
2727
2731
2728 * Documentation: many updates to the manual: describing Windows
2732 * Documentation: many updates to the manual: describing Windows
2729 support better, Gnuplot updates, credits, misc small stuff. Also
2733 support better, Gnuplot updates, credits, misc small stuff. Also
2730 updated the new_design doc a bit.
2734 updated the new_design doc a bit.
2731
2735
2732 2004-05-06 *** Released version 0.6.0.rc1
2736 2004-05-06 *** Released version 0.6.0.rc1
2733
2737
2734 2004-05-06 Fernando Perez <fperez@colorado.edu>
2738 2004-05-06 Fernando Perez <fperez@colorado.edu>
2735
2739
2736 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2740 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2737 operations to use the vastly more efficient list/''.join() method.
2741 operations to use the vastly more efficient list/''.join() method.
2738 (FormattedTB.text): Fix
2742 (FormattedTB.text): Fix
2739 http://www.scipy.net/roundup/ipython/issue12 - exception source
2743 http://www.scipy.net/roundup/ipython/issue12 - exception source
2740 extract not updated after reload. Thanks to Mike Salib
2744 extract not updated after reload. Thanks to Mike Salib
2741 <msalib-AT-mit.edu> for pinning the source of the problem.
2745 <msalib-AT-mit.edu> for pinning the source of the problem.
2742 Fortunately, the solution works inside ipython and doesn't require
2746 Fortunately, the solution works inside ipython and doesn't require
2743 any changes to python proper.
2747 any changes to python proper.
2744
2748
2745 * IPython/Magic.py (Magic.parse_options): Improved to process the
2749 * IPython/Magic.py (Magic.parse_options): Improved to process the
2746 argument list as a true shell would (by actually using the
2750 argument list as a true shell would (by actually using the
2747 underlying system shell). This way, all @magics automatically get
2751 underlying system shell). This way, all @magics automatically get
2748 shell expansion for variables. Thanks to a comment by Alex
2752 shell expansion for variables. Thanks to a comment by Alex
2749 Schmolck.
2753 Schmolck.
2750
2754
2751 2004-04-04 Fernando Perez <fperez@colorado.edu>
2755 2004-04-04 Fernando Perez <fperez@colorado.edu>
2752
2756
2753 * IPython/iplib.py (InteractiveShell.interact): Added a special
2757 * IPython/iplib.py (InteractiveShell.interact): Added a special
2754 trap for a debugger quit exception, which is basically impossible
2758 trap for a debugger quit exception, which is basically impossible
2755 to handle by normal mechanisms, given what pdb does to the stack.
2759 to handle by normal mechanisms, given what pdb does to the stack.
2756 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2760 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2757
2761
2758 2004-04-03 Fernando Perez <fperez@colorado.edu>
2762 2004-04-03 Fernando Perez <fperez@colorado.edu>
2759
2763
2760 * IPython/genutils.py (Term): Standardized the names of the Term
2764 * IPython/genutils.py (Term): Standardized the names of the Term
2761 class streams to cin/cout/cerr, following C++ naming conventions
2765 class streams to cin/cout/cerr, following C++ naming conventions
2762 (I can't use in/out/err because 'in' is not a valid attribute
2766 (I can't use in/out/err because 'in' is not a valid attribute
2763 name).
2767 name).
2764
2768
2765 * IPython/iplib.py (InteractiveShell.interact): don't increment
2769 * IPython/iplib.py (InteractiveShell.interact): don't increment
2766 the prompt if there's no user input. By Daniel 'Dang' Griffith
2770 the prompt if there's no user input. By Daniel 'Dang' Griffith
2767 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2771 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2768 Francois Pinard.
2772 Francois Pinard.
2769
2773
2770 2004-04-02 Fernando Perez <fperez@colorado.edu>
2774 2004-04-02 Fernando Perez <fperez@colorado.edu>
2771
2775
2772 * IPython/genutils.py (Stream.__init__): Modified to survive at
2776 * IPython/genutils.py (Stream.__init__): Modified to survive at
2773 least importing in contexts where stdin/out/err aren't true file
2777 least importing in contexts where stdin/out/err aren't true file
2774 objects, such as PyCrust (they lack fileno() and mode). However,
2778 objects, such as PyCrust (they lack fileno() and mode). However,
2775 the recovery facilities which rely on these things existing will
2779 the recovery facilities which rely on these things existing will
2776 not work.
2780 not work.
2777
2781
2778 2004-04-01 Fernando Perez <fperez@colorado.edu>
2782 2004-04-01 Fernando Perez <fperez@colorado.edu>
2779
2783
2780 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2784 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2781 use the new getoutputerror() function, so it properly
2785 use the new getoutputerror() function, so it properly
2782 distinguishes stdout/err.
2786 distinguishes stdout/err.
2783
2787
2784 * IPython/genutils.py (getoutputerror): added a function to
2788 * IPython/genutils.py (getoutputerror): added a function to
2785 capture separately the standard output and error of a command.
2789 capture separately the standard output and error of a command.
2786 After a comment from dang on the mailing lists. This code is
2790 After a comment from dang on the mailing lists. This code is
2787 basically a modified version of commands.getstatusoutput(), from
2791 basically a modified version of commands.getstatusoutput(), from
2788 the standard library.
2792 the standard library.
2789
2793
2790 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2794 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2791 '!!' as a special syntax (shorthand) to access @sx.
2795 '!!' as a special syntax (shorthand) to access @sx.
2792
2796
2793 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2797 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2794 command and return its output as a list split on '\n'.
2798 command and return its output as a list split on '\n'.
2795
2799
2796 2004-03-31 Fernando Perez <fperez@colorado.edu>
2800 2004-03-31 Fernando Perez <fperez@colorado.edu>
2797
2801
2798 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2802 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2799 method to dictionaries used as FakeModule instances if they lack
2803 method to dictionaries used as FakeModule instances if they lack
2800 it. At least pydoc in python2.3 breaks for runtime-defined
2804 it. At least pydoc in python2.3 breaks for runtime-defined
2801 functions without this hack. At some point I need to _really_
2805 functions without this hack. At some point I need to _really_
2802 understand what FakeModule is doing, because it's a gross hack.
2806 understand what FakeModule is doing, because it's a gross hack.
2803 But it solves Arnd's problem for now...
2807 But it solves Arnd's problem for now...
2804
2808
2805 2004-02-27 Fernando Perez <fperez@colorado.edu>
2809 2004-02-27 Fernando Perez <fperez@colorado.edu>
2806
2810
2807 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2811 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2808 mode would behave erratically. Also increased the number of
2812 mode would behave erratically. Also increased the number of
2809 possible logs in rotate mod to 999. Thanks to Rod Holland
2813 possible logs in rotate mod to 999. Thanks to Rod Holland
2810 <rhh@StructureLABS.com> for the report and fixes.
2814 <rhh@StructureLABS.com> for the report and fixes.
2811
2815
2812 2004-02-26 Fernando Perez <fperez@colorado.edu>
2816 2004-02-26 Fernando Perez <fperez@colorado.edu>
2813
2817
2814 * IPython/genutils.py (page): Check that the curses module really
2818 * IPython/genutils.py (page): Check that the curses module really
2815 has the initscr attribute before trying to use it. For some
2819 has the initscr attribute before trying to use it. For some
2816 reason, the Solaris curses module is missing this. I think this
2820 reason, the Solaris curses module is missing this. I think this
2817 should be considered a Solaris python bug, but I'm not sure.
2821 should be considered a Solaris python bug, but I'm not sure.
2818
2822
2819 2004-01-17 Fernando Perez <fperez@colorado.edu>
2823 2004-01-17 Fernando Perez <fperez@colorado.edu>
2820
2824
2821 * IPython/genutils.py (Stream.__init__): Changes to try to make
2825 * IPython/genutils.py (Stream.__init__): Changes to try to make
2822 ipython robust against stdin/out/err being closed by the user.
2826 ipython robust against stdin/out/err being closed by the user.
2823 This is 'user error' (and blocks a normal python session, at least
2827 This is 'user error' (and blocks a normal python session, at least
2824 the stdout case). However, Ipython should be able to survive such
2828 the stdout case). However, Ipython should be able to survive such
2825 instances of abuse as gracefully as possible. To simplify the
2829 instances of abuse as gracefully as possible. To simplify the
2826 coding and maintain compatibility with Gary Bishop's Term
2830 coding and maintain compatibility with Gary Bishop's Term
2827 contributions, I've made use of classmethods for this. I think
2831 contributions, I've made use of classmethods for this. I think
2828 this introduces a dependency on python 2.2.
2832 this introduces a dependency on python 2.2.
2829
2833
2830 2004-01-13 Fernando Perez <fperez@colorado.edu>
2834 2004-01-13 Fernando Perez <fperez@colorado.edu>
2831
2835
2832 * IPython/numutils.py (exp_safe): simplified the code a bit and
2836 * IPython/numutils.py (exp_safe): simplified the code a bit and
2833 removed the need for importing the kinds module altogether.
2837 removed the need for importing the kinds module altogether.
2834
2838
2835 2004-01-06 Fernando Perez <fperez@colorado.edu>
2839 2004-01-06 Fernando Perez <fperez@colorado.edu>
2836
2840
2837 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2841 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2838 a magic function instead, after some community feedback. No
2842 a magic function instead, after some community feedback. No
2839 special syntax will exist for it, but its name is deliberately
2843 special syntax will exist for it, but its name is deliberately
2840 very short.
2844 very short.
2841
2845
2842 2003-12-20 Fernando Perez <fperez@colorado.edu>
2846 2003-12-20 Fernando Perez <fperez@colorado.edu>
2843
2847
2844 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2848 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2845 new functionality, to automagically assign the result of a shell
2849 new functionality, to automagically assign the result of a shell
2846 command to a variable. I'll solicit some community feedback on
2850 command to a variable. I'll solicit some community feedback on
2847 this before making it permanent.
2851 this before making it permanent.
2848
2852
2849 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2853 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2850 requested about callables for which inspect couldn't obtain a
2854 requested about callables for which inspect couldn't obtain a
2851 proper argspec. Thanks to a crash report sent by Etienne
2855 proper argspec. Thanks to a crash report sent by Etienne
2852 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2856 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2853
2857
2854 2003-12-09 Fernando Perez <fperez@colorado.edu>
2858 2003-12-09 Fernando Perez <fperez@colorado.edu>
2855
2859
2856 * IPython/genutils.py (page): patch for the pager to work across
2860 * IPython/genutils.py (page): patch for the pager to work across
2857 various versions of Windows. By Gary Bishop.
2861 various versions of Windows. By Gary Bishop.
2858
2862
2859 2003-12-04 Fernando Perez <fperez@colorado.edu>
2863 2003-12-04 Fernando Perez <fperez@colorado.edu>
2860
2864
2861 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2865 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2862 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2866 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2863 While I tested this and it looks ok, there may still be corner
2867 While I tested this and it looks ok, there may still be corner
2864 cases I've missed.
2868 cases I've missed.
2865
2869
2866 2003-12-01 Fernando Perez <fperez@colorado.edu>
2870 2003-12-01 Fernando Perez <fperez@colorado.edu>
2867
2871
2868 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2872 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2869 where a line like 'p,q=1,2' would fail because the automagic
2873 where a line like 'p,q=1,2' would fail because the automagic
2870 system would be triggered for @p.
2874 system would be triggered for @p.
2871
2875
2872 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2876 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2873 cleanups, code unmodified.
2877 cleanups, code unmodified.
2874
2878
2875 * IPython/genutils.py (Term): added a class for IPython to handle
2879 * IPython/genutils.py (Term): added a class for IPython to handle
2876 output. In most cases it will just be a proxy for stdout/err, but
2880 output. In most cases it will just be a proxy for stdout/err, but
2877 having this allows modifications to be made for some platforms,
2881 having this allows modifications to be made for some platforms,
2878 such as handling color escapes under Windows. All of this code
2882 such as handling color escapes under Windows. All of this code
2879 was contributed by Gary Bishop, with minor modifications by me.
2883 was contributed by Gary Bishop, with minor modifications by me.
2880 The actual changes affect many files.
2884 The actual changes affect many files.
2881
2885
2882 2003-11-30 Fernando Perez <fperez@colorado.edu>
2886 2003-11-30 Fernando Perez <fperez@colorado.edu>
2883
2887
2884 * IPython/iplib.py (file_matches): new completion code, courtesy
2888 * IPython/iplib.py (file_matches): new completion code, courtesy
2885 of Jeff Collins. This enables filename completion again under
2889 of Jeff Collins. This enables filename completion again under
2886 python 2.3, which disabled it at the C level.
2890 python 2.3, which disabled it at the C level.
2887
2891
2888 2003-11-11 Fernando Perez <fperez@colorado.edu>
2892 2003-11-11 Fernando Perez <fperez@colorado.edu>
2889
2893
2890 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2894 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2891 for Numeric.array(map(...)), but often convenient.
2895 for Numeric.array(map(...)), but often convenient.
2892
2896
2893 2003-11-05 Fernando Perez <fperez@colorado.edu>
2897 2003-11-05 Fernando Perez <fperez@colorado.edu>
2894
2898
2895 * IPython/numutils.py (frange): Changed a call from int() to
2899 * IPython/numutils.py (frange): Changed a call from int() to
2896 int(round()) to prevent a problem reported with arange() in the
2900 int(round()) to prevent a problem reported with arange() in the
2897 numpy list.
2901 numpy list.
2898
2902
2899 2003-10-06 Fernando Perez <fperez@colorado.edu>
2903 2003-10-06 Fernando Perez <fperez@colorado.edu>
2900
2904
2901 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2905 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2902 prevent crashes if sys lacks an argv attribute (it happens with
2906 prevent crashes if sys lacks an argv attribute (it happens with
2903 embedded interpreters which build a bare-bones sys module).
2907 embedded interpreters which build a bare-bones sys module).
2904 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2908 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2905
2909
2906 2003-09-24 Fernando Perez <fperez@colorado.edu>
2910 2003-09-24 Fernando Perez <fperez@colorado.edu>
2907
2911
2908 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2912 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2909 to protect against poorly written user objects where __getattr__
2913 to protect against poorly written user objects where __getattr__
2910 raises exceptions other than AttributeError. Thanks to a bug
2914 raises exceptions other than AttributeError. Thanks to a bug
2911 report by Oliver Sander <osander-AT-gmx.de>.
2915 report by Oliver Sander <osander-AT-gmx.de>.
2912
2916
2913 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2917 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2914 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2918 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2915
2919
2916 2003-09-09 Fernando Perez <fperez@colorado.edu>
2920 2003-09-09 Fernando Perez <fperez@colorado.edu>
2917
2921
2918 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2922 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2919 unpacking a list whith a callable as first element would
2923 unpacking a list whith a callable as first element would
2920 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2924 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2921 Collins.
2925 Collins.
2922
2926
2923 2003-08-25 *** Released version 0.5.0
2927 2003-08-25 *** Released version 0.5.0
2924
2928
2925 2003-08-22 Fernando Perez <fperez@colorado.edu>
2929 2003-08-22 Fernando Perez <fperez@colorado.edu>
2926
2930
2927 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2931 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2928 improperly defined user exceptions. Thanks to feedback from Mark
2932 improperly defined user exceptions. Thanks to feedback from Mark
2929 Russell <mrussell-AT-verio.net>.
2933 Russell <mrussell-AT-verio.net>.
2930
2934
2931 2003-08-20 Fernando Perez <fperez@colorado.edu>
2935 2003-08-20 Fernando Perez <fperez@colorado.edu>
2932
2936
2933 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2937 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2934 printing so that it would print multi-line string forms starting
2938 printing so that it would print multi-line string forms starting
2935 with a new line. This way the formatting is better respected for
2939 with a new line. This way the formatting is better respected for
2936 objects which work hard to make nice string forms.
2940 objects which work hard to make nice string forms.
2937
2941
2938 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2942 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2939 autocall would overtake data access for objects with both
2943 autocall would overtake data access for objects with both
2940 __getitem__ and __call__.
2944 __getitem__ and __call__.
2941
2945
2942 2003-08-19 *** Released version 0.5.0-rc1
2946 2003-08-19 *** Released version 0.5.0-rc1
2943
2947
2944 2003-08-19 Fernando Perez <fperez@colorado.edu>
2948 2003-08-19 Fernando Perez <fperez@colorado.edu>
2945
2949
2946 * IPython/deep_reload.py (load_tail): single tiny change here
2950 * IPython/deep_reload.py (load_tail): single tiny change here
2947 seems to fix the long-standing bug of dreload() failing to work
2951 seems to fix the long-standing bug of dreload() failing to work
2948 for dotted names. But this module is pretty tricky, so I may have
2952 for dotted names. But this module is pretty tricky, so I may have
2949 missed some subtlety. Needs more testing!.
2953 missed some subtlety. Needs more testing!.
2950
2954
2951 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2955 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2952 exceptions which have badly implemented __str__ methods.
2956 exceptions which have badly implemented __str__ methods.
2953 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2957 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2954 which I've been getting reports about from Python 2.3 users. I
2958 which I've been getting reports about from Python 2.3 users. I
2955 wish I had a simple test case to reproduce the problem, so I could
2959 wish I had a simple test case to reproduce the problem, so I could
2956 either write a cleaner workaround or file a bug report if
2960 either write a cleaner workaround or file a bug report if
2957 necessary.
2961 necessary.
2958
2962
2959 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2963 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2960 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2964 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2961 a bug report by Tjabo Kloppenburg.
2965 a bug report by Tjabo Kloppenburg.
2962
2966
2963 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2967 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2964 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2968 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2965 seems rather unstable. Thanks to a bug report by Tjabo
2969 seems rather unstable. Thanks to a bug report by Tjabo
2966 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2970 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2967
2971
2968 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2972 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2969 this out soon because of the critical fixes in the inner loop for
2973 this out soon because of the critical fixes in the inner loop for
2970 generators.
2974 generators.
2971
2975
2972 * IPython/Magic.py (Magic.getargspec): removed. This (and
2976 * IPython/Magic.py (Magic.getargspec): removed. This (and
2973 _get_def) have been obsoleted by OInspect for a long time, I
2977 _get_def) have been obsoleted by OInspect for a long time, I
2974 hadn't noticed that they were dead code.
2978 hadn't noticed that they were dead code.
2975 (Magic._ofind): restored _ofind functionality for a few literals
2979 (Magic._ofind): restored _ofind functionality for a few literals
2976 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2980 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2977 for things like "hello".capitalize?, since that would require a
2981 for things like "hello".capitalize?, since that would require a
2978 potentially dangerous eval() again.
2982 potentially dangerous eval() again.
2979
2983
2980 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2984 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2981 logic a bit more to clean up the escapes handling and minimize the
2985 logic a bit more to clean up the escapes handling and minimize the
2982 use of _ofind to only necessary cases. The interactive 'feel' of
2986 use of _ofind to only necessary cases. The interactive 'feel' of
2983 IPython should have improved quite a bit with the changes in
2987 IPython should have improved quite a bit with the changes in
2984 _prefilter and _ofind (besides being far safer than before).
2988 _prefilter and _ofind (besides being far safer than before).
2985
2989
2986 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2990 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2987 obscure, never reported). Edit would fail to find the object to
2991 obscure, never reported). Edit would fail to find the object to
2988 edit under some circumstances.
2992 edit under some circumstances.
2989 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2993 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2990 which were causing double-calling of generators. Those eval calls
2994 which were causing double-calling of generators. Those eval calls
2991 were _very_ dangerous, since code with side effects could be
2995 were _very_ dangerous, since code with side effects could be
2992 triggered. As they say, 'eval is evil'... These were the
2996 triggered. As they say, 'eval is evil'... These were the
2993 nastiest evals in IPython. Besides, _ofind is now far simpler,
2997 nastiest evals in IPython. Besides, _ofind is now far simpler,
2994 and it should also be quite a bit faster. Its use of inspect is
2998 and it should also be quite a bit faster. Its use of inspect is
2995 also safer, so perhaps some of the inspect-related crashes I've
2999 also safer, so perhaps some of the inspect-related crashes I've
2996 seen lately with Python 2.3 might be taken care of. That will
3000 seen lately with Python 2.3 might be taken care of. That will
2997 need more testing.
3001 need more testing.
2998
3002
2999 2003-08-17 Fernando Perez <fperez@colorado.edu>
3003 2003-08-17 Fernando Perez <fperez@colorado.edu>
3000
3004
3001 * IPython/iplib.py (InteractiveShell._prefilter): significant
3005 * IPython/iplib.py (InteractiveShell._prefilter): significant
3002 simplifications to the logic for handling user escapes. Faster
3006 simplifications to the logic for handling user escapes. Faster
3003 and simpler code.
3007 and simpler code.
3004
3008
3005 2003-08-14 Fernando Perez <fperez@colorado.edu>
3009 2003-08-14 Fernando Perez <fperez@colorado.edu>
3006
3010
3007 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3011 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3008 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3012 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3009 but it should be quite a bit faster. And the recursive version
3013 but it should be quite a bit faster. And the recursive version
3010 generated O(log N) intermediate storage for all rank>1 arrays,
3014 generated O(log N) intermediate storage for all rank>1 arrays,
3011 even if they were contiguous.
3015 even if they were contiguous.
3012 (l1norm): Added this function.
3016 (l1norm): Added this function.
3013 (norm): Added this function for arbitrary norms (including
3017 (norm): Added this function for arbitrary norms (including
3014 l-infinity). l1 and l2 are still special cases for convenience
3018 l-infinity). l1 and l2 are still special cases for convenience
3015 and speed.
3019 and speed.
3016
3020
3017 2003-08-03 Fernando Perez <fperez@colorado.edu>
3021 2003-08-03 Fernando Perez <fperez@colorado.edu>
3018
3022
3019 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3023 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3020 exceptions, which now raise PendingDeprecationWarnings in Python
3024 exceptions, which now raise PendingDeprecationWarnings in Python
3021 2.3. There were some in Magic and some in Gnuplot2.
3025 2.3. There were some in Magic and some in Gnuplot2.
3022
3026
3023 2003-06-30 Fernando Perez <fperez@colorado.edu>
3027 2003-06-30 Fernando Perez <fperez@colorado.edu>
3024
3028
3025 * IPython/genutils.py (page): modified to call curses only for
3029 * IPython/genutils.py (page): modified to call curses only for
3026 terminals where TERM=='xterm'. After problems under many other
3030 terminals where TERM=='xterm'. After problems under many other
3027 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3031 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3028
3032
3029 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3033 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3030 would be triggered when readline was absent. This was just an old
3034 would be triggered when readline was absent. This was just an old
3031 debugging statement I'd forgotten to take out.
3035 debugging statement I'd forgotten to take out.
3032
3036
3033 2003-06-20 Fernando Perez <fperez@colorado.edu>
3037 2003-06-20 Fernando Perez <fperez@colorado.edu>
3034
3038
3035 * IPython/genutils.py (clock): modified to return only user time
3039 * IPython/genutils.py (clock): modified to return only user time
3036 (not counting system time), after a discussion on scipy. While
3040 (not counting system time), after a discussion on scipy. While
3037 system time may be a useful quantity occasionally, it may much
3041 system time may be a useful quantity occasionally, it may much
3038 more easily be skewed by occasional swapping or other similar
3042 more easily be skewed by occasional swapping or other similar
3039 activity.
3043 activity.
3040
3044
3041 2003-06-05 Fernando Perez <fperez@colorado.edu>
3045 2003-06-05 Fernando Perez <fperez@colorado.edu>
3042
3046
3043 * IPython/numutils.py (identity): new function, for building
3047 * IPython/numutils.py (identity): new function, for building
3044 arbitrary rank Kronecker deltas (mostly backwards compatible with
3048 arbitrary rank Kronecker deltas (mostly backwards compatible with
3045 Numeric.identity)
3049 Numeric.identity)
3046
3050
3047 2003-06-03 Fernando Perez <fperez@colorado.edu>
3051 2003-06-03 Fernando Perez <fperez@colorado.edu>
3048
3052
3049 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3053 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3050 arguments passed to magics with spaces, to allow trailing '\' to
3054 arguments passed to magics with spaces, to allow trailing '\' to
3051 work normally (mainly for Windows users).
3055 work normally (mainly for Windows users).
3052
3056
3053 2003-05-29 Fernando Perez <fperez@colorado.edu>
3057 2003-05-29 Fernando Perez <fperez@colorado.edu>
3054
3058
3055 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3059 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3056 instead of pydoc.help. This fixes a bizarre behavior where
3060 instead of pydoc.help. This fixes a bizarre behavior where
3057 printing '%s' % locals() would trigger the help system. Now
3061 printing '%s' % locals() would trigger the help system. Now
3058 ipython behaves like normal python does.
3062 ipython behaves like normal python does.
3059
3063
3060 Note that if one does 'from pydoc import help', the bizarre
3064 Note that if one does 'from pydoc import help', the bizarre
3061 behavior returns, but this will also happen in normal python, so
3065 behavior returns, but this will also happen in normal python, so
3062 it's not an ipython bug anymore (it has to do with how pydoc.help
3066 it's not an ipython bug anymore (it has to do with how pydoc.help
3063 is implemented).
3067 is implemented).
3064
3068
3065 2003-05-22 Fernando Perez <fperez@colorado.edu>
3069 2003-05-22 Fernando Perez <fperez@colorado.edu>
3066
3070
3067 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3071 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3068 return [] instead of None when nothing matches, also match to end
3072 return [] instead of None when nothing matches, also match to end
3069 of line. Patch by Gary Bishop.
3073 of line. Patch by Gary Bishop.
3070
3074
3071 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3075 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3072 protection as before, for files passed on the command line. This
3076 protection as before, for files passed on the command line. This
3073 prevents the CrashHandler from kicking in if user files call into
3077 prevents the CrashHandler from kicking in if user files call into
3074 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3078 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3075 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3079 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3076
3080
3077 2003-05-20 *** Released version 0.4.0
3081 2003-05-20 *** Released version 0.4.0
3078
3082
3079 2003-05-20 Fernando Perez <fperez@colorado.edu>
3083 2003-05-20 Fernando Perez <fperez@colorado.edu>
3080
3084
3081 * setup.py: added support for manpages. It's a bit hackish b/c of
3085 * setup.py: added support for manpages. It's a bit hackish b/c of
3082 a bug in the way the bdist_rpm distutils target handles gzipped
3086 a bug in the way the bdist_rpm distutils target handles gzipped
3083 manpages, but it works. After a patch by Jack.
3087 manpages, but it works. After a patch by Jack.
3084
3088
3085 2003-05-19 Fernando Perez <fperez@colorado.edu>
3089 2003-05-19 Fernando Perez <fperez@colorado.edu>
3086
3090
3087 * IPython/numutils.py: added a mockup of the kinds module, since
3091 * IPython/numutils.py: added a mockup of the kinds module, since
3088 it was recently removed from Numeric. This way, numutils will
3092 it was recently removed from Numeric. This way, numutils will
3089 work for all users even if they are missing kinds.
3093 work for all users even if they are missing kinds.
3090
3094
3091 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3095 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3092 failure, which can occur with SWIG-wrapped extensions. After a
3096 failure, which can occur with SWIG-wrapped extensions. After a
3093 crash report from Prabhu.
3097 crash report from Prabhu.
3094
3098
3095 2003-05-16 Fernando Perez <fperez@colorado.edu>
3099 2003-05-16 Fernando Perez <fperez@colorado.edu>
3096
3100
3097 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3101 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3098 protect ipython from user code which may call directly
3102 protect ipython from user code which may call directly
3099 sys.excepthook (this looks like an ipython crash to the user, even
3103 sys.excepthook (this looks like an ipython crash to the user, even
3100 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3104 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3101 This is especially important to help users of WxWindows, but may
3105 This is especially important to help users of WxWindows, but may
3102 also be useful in other cases.
3106 also be useful in other cases.
3103
3107
3104 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3108 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3105 an optional tb_offset to be specified, and to preserve exception
3109 an optional tb_offset to be specified, and to preserve exception
3106 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3110 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3107
3111
3108 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3112 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3109
3113
3110 2003-05-15 Fernando Perez <fperez@colorado.edu>
3114 2003-05-15 Fernando Perez <fperez@colorado.edu>
3111
3115
3112 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3116 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3113 installing for a new user under Windows.
3117 installing for a new user under Windows.
3114
3118
3115 2003-05-12 Fernando Perez <fperez@colorado.edu>
3119 2003-05-12 Fernando Perez <fperez@colorado.edu>
3116
3120
3117 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3121 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3118 handler for Emacs comint-based lines. Currently it doesn't do
3122 handler for Emacs comint-based lines. Currently it doesn't do
3119 much (but importantly, it doesn't update the history cache). In
3123 much (but importantly, it doesn't update the history cache). In
3120 the future it may be expanded if Alex needs more functionality
3124 the future it may be expanded if Alex needs more functionality
3121 there.
3125 there.
3122
3126
3123 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3127 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3124 info to crash reports.
3128 info to crash reports.
3125
3129
3126 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3130 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3127 just like Python's -c. Also fixed crash with invalid -color
3131 just like Python's -c. Also fixed crash with invalid -color
3128 option value at startup. Thanks to Will French
3132 option value at startup. Thanks to Will French
3129 <wfrench-AT-bestweb.net> for the bug report.
3133 <wfrench-AT-bestweb.net> for the bug report.
3130
3134
3131 2003-05-09 Fernando Perez <fperez@colorado.edu>
3135 2003-05-09 Fernando Perez <fperez@colorado.edu>
3132
3136
3133 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3137 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3134 to EvalDict (it's a mapping, after all) and simplified its code
3138 to EvalDict (it's a mapping, after all) and simplified its code
3135 quite a bit, after a nice discussion on c.l.py where Gustavo
3139 quite a bit, after a nice discussion on c.l.py where Gustavo
3136 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3140 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3137
3141
3138 2003-04-30 Fernando Perez <fperez@colorado.edu>
3142 2003-04-30 Fernando Perez <fperez@colorado.edu>
3139
3143
3140 * IPython/genutils.py (timings_out): modified it to reduce its
3144 * IPython/genutils.py (timings_out): modified it to reduce its
3141 overhead in the common reps==1 case.
3145 overhead in the common reps==1 case.
3142
3146
3143 2003-04-29 Fernando Perez <fperez@colorado.edu>
3147 2003-04-29 Fernando Perez <fperez@colorado.edu>
3144
3148
3145 * IPython/genutils.py (timings_out): Modified to use the resource
3149 * IPython/genutils.py (timings_out): Modified to use the resource
3146 module, which avoids the wraparound problems of time.clock().
3150 module, which avoids the wraparound problems of time.clock().
3147
3151
3148 2003-04-17 *** Released version 0.2.15pre4
3152 2003-04-17 *** Released version 0.2.15pre4
3149
3153
3150 2003-04-17 Fernando Perez <fperez@colorado.edu>
3154 2003-04-17 Fernando Perez <fperez@colorado.edu>
3151
3155
3152 * setup.py (scriptfiles): Split windows-specific stuff over to a
3156 * setup.py (scriptfiles): Split windows-specific stuff over to a
3153 separate file, in an attempt to have a Windows GUI installer.
3157 separate file, in an attempt to have a Windows GUI installer.
3154 That didn't work, but part of the groundwork is done.
3158 That didn't work, but part of the groundwork is done.
3155
3159
3156 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3160 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3157 indent/unindent with 4 spaces. Particularly useful in combination
3161 indent/unindent with 4 spaces. Particularly useful in combination
3158 with the new auto-indent option.
3162 with the new auto-indent option.
3159
3163
3160 2003-04-16 Fernando Perez <fperez@colorado.edu>
3164 2003-04-16 Fernando Perez <fperez@colorado.edu>
3161
3165
3162 * IPython/Magic.py: various replacements of self.rc for
3166 * IPython/Magic.py: various replacements of self.rc for
3163 self.shell.rc. A lot more remains to be done to fully disentangle
3167 self.shell.rc. A lot more remains to be done to fully disentangle
3164 this class from the main Shell class.
3168 this class from the main Shell class.
3165
3169
3166 * IPython/GnuplotRuntime.py: added checks for mouse support so
3170 * IPython/GnuplotRuntime.py: added checks for mouse support so
3167 that we don't try to enable it if the current gnuplot doesn't
3171 that we don't try to enable it if the current gnuplot doesn't
3168 really support it. Also added checks so that we don't try to
3172 really support it. Also added checks so that we don't try to
3169 enable persist under Windows (where Gnuplot doesn't recognize the
3173 enable persist under Windows (where Gnuplot doesn't recognize the
3170 option).
3174 option).
3171
3175
3172 * IPython/iplib.py (InteractiveShell.interact): Added optional
3176 * IPython/iplib.py (InteractiveShell.interact): Added optional
3173 auto-indenting code, after a patch by King C. Shu
3177 auto-indenting code, after a patch by King C. Shu
3174 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3178 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3175 get along well with pasting indented code. If I ever figure out
3179 get along well with pasting indented code. If I ever figure out
3176 how to make that part go well, it will become on by default.
3180 how to make that part go well, it will become on by default.
3177
3181
3178 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3182 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3179 crash ipython if there was an unmatched '%' in the user's prompt
3183 crash ipython if there was an unmatched '%' in the user's prompt
3180 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3184 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3181
3185
3182 * IPython/iplib.py (InteractiveShell.interact): removed the
3186 * IPython/iplib.py (InteractiveShell.interact): removed the
3183 ability to ask the user whether he wants to crash or not at the
3187 ability to ask the user whether he wants to crash or not at the
3184 'last line' exception handler. Calling functions at that point
3188 'last line' exception handler. Calling functions at that point
3185 changes the stack, and the error reports would have incorrect
3189 changes the stack, and the error reports would have incorrect
3186 tracebacks.
3190 tracebacks.
3187
3191
3188 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3192 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3189 pass through a peger a pretty-printed form of any object. After a
3193 pass through a peger a pretty-printed form of any object. After a
3190 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3194 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3191
3195
3192 2003-04-14 Fernando Perez <fperez@colorado.edu>
3196 2003-04-14 Fernando Perez <fperez@colorado.edu>
3193
3197
3194 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3198 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3195 all files in ~ would be modified at first install (instead of
3199 all files in ~ would be modified at first install (instead of
3196 ~/.ipython). This could be potentially disastrous, as the
3200 ~/.ipython). This could be potentially disastrous, as the
3197 modification (make line-endings native) could damage binary files.
3201 modification (make line-endings native) could damage binary files.
3198
3202
3199 2003-04-10 Fernando Perez <fperez@colorado.edu>
3203 2003-04-10 Fernando Perez <fperez@colorado.edu>
3200
3204
3201 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3205 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3202 handle only lines which are invalid python. This now means that
3206 handle only lines which are invalid python. This now means that
3203 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3207 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3204 for the bug report.
3208 for the bug report.
3205
3209
3206 2003-04-01 Fernando Perez <fperez@colorado.edu>
3210 2003-04-01 Fernando Perez <fperez@colorado.edu>
3207
3211
3208 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3212 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3209 where failing to set sys.last_traceback would crash pdb.pm().
3213 where failing to set sys.last_traceback would crash pdb.pm().
3210 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3214 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3211 report.
3215 report.
3212
3216
3213 2003-03-25 Fernando Perez <fperez@colorado.edu>
3217 2003-03-25 Fernando Perez <fperez@colorado.edu>
3214
3218
3215 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3219 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3216 before printing it (it had a lot of spurious blank lines at the
3220 before printing it (it had a lot of spurious blank lines at the
3217 end).
3221 end).
3218
3222
3219 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3223 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3220 output would be sent 21 times! Obviously people don't use this
3224 output would be sent 21 times! Obviously people don't use this
3221 too often, or I would have heard about it.
3225 too often, or I would have heard about it.
3222
3226
3223 2003-03-24 Fernando Perez <fperez@colorado.edu>
3227 2003-03-24 Fernando Perez <fperez@colorado.edu>
3224
3228
3225 * setup.py (scriptfiles): renamed the data_files parameter from
3229 * setup.py (scriptfiles): renamed the data_files parameter from
3226 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3230 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3227 for the patch.
3231 for the patch.
3228
3232
3229 2003-03-20 Fernando Perez <fperez@colorado.edu>
3233 2003-03-20 Fernando Perez <fperez@colorado.edu>
3230
3234
3231 * IPython/genutils.py (error): added error() and fatal()
3235 * IPython/genutils.py (error): added error() and fatal()
3232 functions.
3236 functions.
3233
3237
3234 2003-03-18 *** Released version 0.2.15pre3
3238 2003-03-18 *** Released version 0.2.15pre3
3235
3239
3236 2003-03-18 Fernando Perez <fperez@colorado.edu>
3240 2003-03-18 Fernando Perez <fperez@colorado.edu>
3237
3241
3238 * setupext/install_data_ext.py
3242 * setupext/install_data_ext.py
3239 (install_data_ext.initialize_options): Class contributed by Jack
3243 (install_data_ext.initialize_options): Class contributed by Jack
3240 Moffit for fixing the old distutils hack. He is sending this to
3244 Moffit for fixing the old distutils hack. He is sending this to
3241 the distutils folks so in the future we may not need it as a
3245 the distutils folks so in the future we may not need it as a
3242 private fix.
3246 private fix.
3243
3247
3244 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3248 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3245 changes for Debian packaging. See his patch for full details.
3249 changes for Debian packaging. See his patch for full details.
3246 The old distutils hack of making the ipythonrc* files carry a
3250 The old distutils hack of making the ipythonrc* files carry a
3247 bogus .py extension is gone, at last. Examples were moved to a
3251 bogus .py extension is gone, at last. Examples were moved to a
3248 separate subdir under doc/, and the separate executable scripts
3252 separate subdir under doc/, and the separate executable scripts
3249 now live in their own directory. Overall a great cleanup. The
3253 now live in their own directory. Overall a great cleanup. The
3250 manual was updated to use the new files, and setup.py has been
3254 manual was updated to use the new files, and setup.py has been
3251 fixed for this setup.
3255 fixed for this setup.
3252
3256
3253 * IPython/PyColorize.py (Parser.usage): made non-executable and
3257 * IPython/PyColorize.py (Parser.usage): made non-executable and
3254 created a pycolor wrapper around it to be included as a script.
3258 created a pycolor wrapper around it to be included as a script.
3255
3259
3256 2003-03-12 *** Released version 0.2.15pre2
3260 2003-03-12 *** Released version 0.2.15pre2
3257
3261
3258 2003-03-12 Fernando Perez <fperez@colorado.edu>
3262 2003-03-12 Fernando Perez <fperez@colorado.edu>
3259
3263
3260 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3264 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3261 long-standing problem with garbage characters in some terminals.
3265 long-standing problem with garbage characters in some terminals.
3262 The issue was really that the \001 and \002 escapes must _only_ be
3266 The issue was really that the \001 and \002 escapes must _only_ be
3263 passed to input prompts (which call readline), but _never_ to
3267 passed to input prompts (which call readline), but _never_ to
3264 normal text to be printed on screen. I changed ColorANSI to have
3268 normal text to be printed on screen. I changed ColorANSI to have
3265 two classes: TermColors and InputTermColors, each with the
3269 two classes: TermColors and InputTermColors, each with the
3266 appropriate escapes for input prompts or normal text. The code in
3270 appropriate escapes for input prompts or normal text. The code in
3267 Prompts.py got slightly more complicated, but this very old and
3271 Prompts.py got slightly more complicated, but this very old and
3268 annoying bug is finally fixed.
3272 annoying bug is finally fixed.
3269
3273
3270 All the credit for nailing down the real origin of this problem
3274 All the credit for nailing down the real origin of this problem
3271 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3275 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3272 *Many* thanks to him for spending quite a bit of effort on this.
3276 *Many* thanks to him for spending quite a bit of effort on this.
3273
3277
3274 2003-03-05 *** Released version 0.2.15pre1
3278 2003-03-05 *** Released version 0.2.15pre1
3275
3279
3276 2003-03-03 Fernando Perez <fperez@colorado.edu>
3280 2003-03-03 Fernando Perez <fperez@colorado.edu>
3277
3281
3278 * IPython/FakeModule.py: Moved the former _FakeModule to a
3282 * IPython/FakeModule.py: Moved the former _FakeModule to a
3279 separate file, because it's also needed by Magic (to fix a similar
3283 separate file, because it's also needed by Magic (to fix a similar
3280 pickle-related issue in @run).
3284 pickle-related issue in @run).
3281
3285
3282 2003-03-02 Fernando Perez <fperez@colorado.edu>
3286 2003-03-02 Fernando Perez <fperez@colorado.edu>
3283
3287
3284 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3288 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3285 the autocall option at runtime.
3289 the autocall option at runtime.
3286 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3290 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3287 across Magic.py to start separating Magic from InteractiveShell.
3291 across Magic.py to start separating Magic from InteractiveShell.
3288 (Magic._ofind): Fixed to return proper namespace for dotted
3292 (Magic._ofind): Fixed to return proper namespace for dotted
3289 names. Before, a dotted name would always return 'not currently
3293 names. Before, a dotted name would always return 'not currently
3290 defined', because it would find the 'parent'. s.x would be found,
3294 defined', because it would find the 'parent'. s.x would be found,
3291 but since 'x' isn't defined by itself, it would get confused.
3295 but since 'x' isn't defined by itself, it would get confused.
3292 (Magic.magic_run): Fixed pickling problems reported by Ralf
3296 (Magic.magic_run): Fixed pickling problems reported by Ralf
3293 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3297 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3294 that I'd used when Mike Heeter reported similar issues at the
3298 that I'd used when Mike Heeter reported similar issues at the
3295 top-level, but now for @run. It boils down to injecting the
3299 top-level, but now for @run. It boils down to injecting the
3296 namespace where code is being executed with something that looks
3300 namespace where code is being executed with something that looks
3297 enough like a module to fool pickle.dump(). Since a pickle stores
3301 enough like a module to fool pickle.dump(). Since a pickle stores
3298 a named reference to the importing module, we need this for
3302 a named reference to the importing module, we need this for
3299 pickles to save something sensible.
3303 pickles to save something sensible.
3300
3304
3301 * IPython/ipmaker.py (make_IPython): added an autocall option.
3305 * IPython/ipmaker.py (make_IPython): added an autocall option.
3302
3306
3303 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3307 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3304 the auto-eval code. Now autocalling is an option, and the code is
3308 the auto-eval code. Now autocalling is an option, and the code is
3305 also vastly safer. There is no more eval() involved at all.
3309 also vastly safer. There is no more eval() involved at all.
3306
3310
3307 2003-03-01 Fernando Perez <fperez@colorado.edu>
3311 2003-03-01 Fernando Perez <fperez@colorado.edu>
3308
3312
3309 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3313 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3310 dict with named keys instead of a tuple.
3314 dict with named keys instead of a tuple.
3311
3315
3312 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3316 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3313
3317
3314 * setup.py (make_shortcut): Fixed message about directories
3318 * setup.py (make_shortcut): Fixed message about directories
3315 created during Windows installation (the directories were ok, just
3319 created during Windows installation (the directories were ok, just
3316 the printed message was misleading). Thanks to Chris Liechti
3320 the printed message was misleading). Thanks to Chris Liechti
3317 <cliechti-AT-gmx.net> for the heads up.
3321 <cliechti-AT-gmx.net> for the heads up.
3318
3322
3319 2003-02-21 Fernando Perez <fperez@colorado.edu>
3323 2003-02-21 Fernando Perez <fperez@colorado.edu>
3320
3324
3321 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3325 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3322 of ValueError exception when checking for auto-execution. This
3326 of ValueError exception when checking for auto-execution. This
3323 one is raised by things like Numeric arrays arr.flat when the
3327 one is raised by things like Numeric arrays arr.flat when the
3324 array is non-contiguous.
3328 array is non-contiguous.
3325
3329
3326 2003-01-31 Fernando Perez <fperez@colorado.edu>
3330 2003-01-31 Fernando Perez <fperez@colorado.edu>
3327
3331
3328 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3332 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3329 not return any value at all (even though the command would get
3333 not return any value at all (even though the command would get
3330 executed).
3334 executed).
3331 (xsys): Flush stdout right after printing the command to ensure
3335 (xsys): Flush stdout right after printing the command to ensure
3332 proper ordering of commands and command output in the total
3336 proper ordering of commands and command output in the total
3333 output.
3337 output.
3334 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3338 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3335 system/getoutput as defaults. The old ones are kept for
3339 system/getoutput as defaults. The old ones are kept for
3336 compatibility reasons, so no code which uses this library needs
3340 compatibility reasons, so no code which uses this library needs
3337 changing.
3341 changing.
3338
3342
3339 2003-01-27 *** Released version 0.2.14
3343 2003-01-27 *** Released version 0.2.14
3340
3344
3341 2003-01-25 Fernando Perez <fperez@colorado.edu>
3345 2003-01-25 Fernando Perez <fperez@colorado.edu>
3342
3346
3343 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3347 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3344 functions defined in previous edit sessions could not be re-edited
3348 functions defined in previous edit sessions could not be re-edited
3345 (because the temp files were immediately removed). Now temp files
3349 (because the temp files were immediately removed). Now temp files
3346 are removed only at IPython's exit.
3350 are removed only at IPython's exit.
3347 (Magic.magic_run): Improved @run to perform shell-like expansions
3351 (Magic.magic_run): Improved @run to perform shell-like expansions
3348 on its arguments (~users and $VARS). With this, @run becomes more
3352 on its arguments (~users and $VARS). With this, @run becomes more
3349 like a normal command-line.
3353 like a normal command-line.
3350
3354
3351 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3355 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3352 bugs related to embedding and cleaned up that code. A fairly
3356 bugs related to embedding and cleaned up that code. A fairly
3353 important one was the impossibility to access the global namespace
3357 important one was the impossibility to access the global namespace
3354 through the embedded IPython (only local variables were visible).
3358 through the embedded IPython (only local variables were visible).
3355
3359
3356 2003-01-14 Fernando Perez <fperez@colorado.edu>
3360 2003-01-14 Fernando Perez <fperez@colorado.edu>
3357
3361
3358 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3362 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3359 auto-calling to be a bit more conservative. Now it doesn't get
3363 auto-calling to be a bit more conservative. Now it doesn't get
3360 triggered if any of '!=()<>' are in the rest of the input line, to
3364 triggered if any of '!=()<>' are in the rest of the input line, to
3361 allow comparing callables. Thanks to Alex for the heads up.
3365 allow comparing callables. Thanks to Alex for the heads up.
3362
3366
3363 2003-01-07 Fernando Perez <fperez@colorado.edu>
3367 2003-01-07 Fernando Perez <fperez@colorado.edu>
3364
3368
3365 * IPython/genutils.py (page): fixed estimation of the number of
3369 * IPython/genutils.py (page): fixed estimation of the number of
3366 lines in a string to be paged to simply count newlines. This
3370 lines in a string to be paged to simply count newlines. This
3367 prevents over-guessing due to embedded escape sequences. A better
3371 prevents over-guessing due to embedded escape sequences. A better
3368 long-term solution would involve stripping out the control chars
3372 long-term solution would involve stripping out the control chars
3369 for the count, but it's potentially so expensive I just don't
3373 for the count, but it's potentially so expensive I just don't
3370 think it's worth doing.
3374 think it's worth doing.
3371
3375
3372 2002-12-19 *** Released version 0.2.14pre50
3376 2002-12-19 *** Released version 0.2.14pre50
3373
3377
3374 2002-12-19 Fernando Perez <fperez@colorado.edu>
3378 2002-12-19 Fernando Perez <fperez@colorado.edu>
3375
3379
3376 * tools/release (version): Changed release scripts to inform
3380 * tools/release (version): Changed release scripts to inform
3377 Andrea and build a NEWS file with a list of recent changes.
3381 Andrea and build a NEWS file with a list of recent changes.
3378
3382
3379 * IPython/ColorANSI.py (__all__): changed terminal detection
3383 * IPython/ColorANSI.py (__all__): changed terminal detection
3380 code. Seems to work better for xterms without breaking
3384 code. Seems to work better for xterms without breaking
3381 konsole. Will need more testing to determine if WinXP and Mac OSX
3385 konsole. Will need more testing to determine if WinXP and Mac OSX
3382 also work ok.
3386 also work ok.
3383
3387
3384 2002-12-18 *** Released version 0.2.14pre49
3388 2002-12-18 *** Released version 0.2.14pre49
3385
3389
3386 2002-12-18 Fernando Perez <fperez@colorado.edu>
3390 2002-12-18 Fernando Perez <fperez@colorado.edu>
3387
3391
3388 * Docs: added new info about Mac OSX, from Andrea.
3392 * Docs: added new info about Mac OSX, from Andrea.
3389
3393
3390 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3394 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3391 allow direct plotting of python strings whose format is the same
3395 allow direct plotting of python strings whose format is the same
3392 of gnuplot data files.
3396 of gnuplot data files.
3393
3397
3394 2002-12-16 Fernando Perez <fperez@colorado.edu>
3398 2002-12-16 Fernando Perez <fperez@colorado.edu>
3395
3399
3396 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3400 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3397 value of exit question to be acknowledged.
3401 value of exit question to be acknowledged.
3398
3402
3399 2002-12-03 Fernando Perez <fperez@colorado.edu>
3403 2002-12-03 Fernando Perez <fperez@colorado.edu>
3400
3404
3401 * IPython/ipmaker.py: removed generators, which had been added
3405 * IPython/ipmaker.py: removed generators, which had been added
3402 by mistake in an earlier debugging run. This was causing trouble
3406 by mistake in an earlier debugging run. This was causing trouble
3403 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3407 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3404 for pointing this out.
3408 for pointing this out.
3405
3409
3406 2002-11-17 Fernando Perez <fperez@colorado.edu>
3410 2002-11-17 Fernando Perez <fperez@colorado.edu>
3407
3411
3408 * Manual: updated the Gnuplot section.
3412 * Manual: updated the Gnuplot section.
3409
3413
3410 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3414 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3411 a much better split of what goes in Runtime and what goes in
3415 a much better split of what goes in Runtime and what goes in
3412 Interactive.
3416 Interactive.
3413
3417
3414 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3418 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3415 being imported from iplib.
3419 being imported from iplib.
3416
3420
3417 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3421 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3418 for command-passing. Now the global Gnuplot instance is called
3422 for command-passing. Now the global Gnuplot instance is called
3419 'gp' instead of 'g', which was really a far too fragile and
3423 'gp' instead of 'g', which was really a far too fragile and
3420 common name.
3424 common name.
3421
3425
3422 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3426 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3423 bounding boxes generated by Gnuplot for square plots.
3427 bounding boxes generated by Gnuplot for square plots.
3424
3428
3425 * IPython/genutils.py (popkey): new function added. I should
3429 * IPython/genutils.py (popkey): new function added. I should
3426 suggest this on c.l.py as a dict method, it seems useful.
3430 suggest this on c.l.py as a dict method, it seems useful.
3427
3431
3428 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3432 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3429 to transparently handle PostScript generation. MUCH better than
3433 to transparently handle PostScript generation. MUCH better than
3430 the previous plot_eps/replot_eps (which I removed now). The code
3434 the previous plot_eps/replot_eps (which I removed now). The code
3431 is also fairly clean and well documented now (including
3435 is also fairly clean and well documented now (including
3432 docstrings).
3436 docstrings).
3433
3437
3434 2002-11-13 Fernando Perez <fperez@colorado.edu>
3438 2002-11-13 Fernando Perez <fperez@colorado.edu>
3435
3439
3436 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3440 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3437 (inconsistent with options).
3441 (inconsistent with options).
3438
3442
3439 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3443 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3440 manually disabled, I don't know why. Fixed it.
3444 manually disabled, I don't know why. Fixed it.
3441 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3445 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3442 eps output.
3446 eps output.
3443
3447
3444 2002-11-12 Fernando Perez <fperez@colorado.edu>
3448 2002-11-12 Fernando Perez <fperez@colorado.edu>
3445
3449
3446 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3450 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3447 don't propagate up to caller. Fixes crash reported by François
3451 don't propagate up to caller. Fixes crash reported by François
3448 Pinard.
3452 Pinard.
3449
3453
3450 2002-11-09 Fernando Perez <fperez@colorado.edu>
3454 2002-11-09 Fernando Perez <fperez@colorado.edu>
3451
3455
3452 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3456 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3453 history file for new users.
3457 history file for new users.
3454 (make_IPython): fixed bug where initial install would leave the
3458 (make_IPython): fixed bug where initial install would leave the
3455 user running in the .ipython dir.
3459 user running in the .ipython dir.
3456 (make_IPython): fixed bug where config dir .ipython would be
3460 (make_IPython): fixed bug where config dir .ipython would be
3457 created regardless of the given -ipythondir option. Thanks to Cory
3461 created regardless of the given -ipythondir option. Thanks to Cory
3458 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3462 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3459
3463
3460 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3464 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3461 type confirmations. Will need to use it in all of IPython's code
3465 type confirmations. Will need to use it in all of IPython's code
3462 consistently.
3466 consistently.
3463
3467
3464 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3468 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3465 context to print 31 lines instead of the default 5. This will make
3469 context to print 31 lines instead of the default 5. This will make
3466 the crash reports extremely detailed in case the problem is in
3470 the crash reports extremely detailed in case the problem is in
3467 libraries I don't have access to.
3471 libraries I don't have access to.
3468
3472
3469 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3473 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3470 line of defense' code to still crash, but giving users fair
3474 line of defense' code to still crash, but giving users fair
3471 warning. I don't want internal errors to go unreported: if there's
3475 warning. I don't want internal errors to go unreported: if there's
3472 an internal problem, IPython should crash and generate a full
3476 an internal problem, IPython should crash and generate a full
3473 report.
3477 report.
3474
3478
3475 2002-11-08 Fernando Perez <fperez@colorado.edu>
3479 2002-11-08 Fernando Perez <fperez@colorado.edu>
3476
3480
3477 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3481 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3478 otherwise uncaught exceptions which can appear if people set
3482 otherwise uncaught exceptions which can appear if people set
3479 sys.stdout to something badly broken. Thanks to a crash report
3483 sys.stdout to something badly broken. Thanks to a crash report
3480 from henni-AT-mail.brainbot.com.
3484 from henni-AT-mail.brainbot.com.
3481
3485
3482 2002-11-04 Fernando Perez <fperez@colorado.edu>
3486 2002-11-04 Fernando Perez <fperez@colorado.edu>
3483
3487
3484 * IPython/iplib.py (InteractiveShell.interact): added
3488 * IPython/iplib.py (InteractiveShell.interact): added
3485 __IPYTHON__active to the builtins. It's a flag which goes on when
3489 __IPYTHON__active to the builtins. It's a flag which goes on when
3486 the interaction starts and goes off again when it stops. This
3490 the interaction starts and goes off again when it stops. This
3487 allows embedding code to detect being inside IPython. Before this
3491 allows embedding code to detect being inside IPython. Before this
3488 was done via __IPYTHON__, but that only shows that an IPython
3492 was done via __IPYTHON__, but that only shows that an IPython
3489 instance has been created.
3493 instance has been created.
3490
3494
3491 * IPython/Magic.py (Magic.magic_env): I realized that in a
3495 * IPython/Magic.py (Magic.magic_env): I realized that in a
3492 UserDict, instance.data holds the data as a normal dict. So I
3496 UserDict, instance.data holds the data as a normal dict. So I
3493 modified @env to return os.environ.data instead of rebuilding a
3497 modified @env to return os.environ.data instead of rebuilding a
3494 dict by hand.
3498 dict by hand.
3495
3499
3496 2002-11-02 Fernando Perez <fperez@colorado.edu>
3500 2002-11-02 Fernando Perez <fperez@colorado.edu>
3497
3501
3498 * IPython/genutils.py (warn): changed so that level 1 prints no
3502 * IPython/genutils.py (warn): changed so that level 1 prints no
3499 header. Level 2 is now the default (with 'WARNING' header, as
3503 header. Level 2 is now the default (with 'WARNING' header, as
3500 before). I think I tracked all places where changes were needed in
3504 before). I think I tracked all places where changes were needed in
3501 IPython, but outside code using the old level numbering may have
3505 IPython, but outside code using the old level numbering may have
3502 broken.
3506 broken.
3503
3507
3504 * IPython/iplib.py (InteractiveShell.runcode): added this to
3508 * IPython/iplib.py (InteractiveShell.runcode): added this to
3505 handle the tracebacks in SystemExit traps correctly. The previous
3509 handle the tracebacks in SystemExit traps correctly. The previous
3506 code (through interact) was printing more of the stack than
3510 code (through interact) was printing more of the stack than
3507 necessary, showing IPython internal code to the user.
3511 necessary, showing IPython internal code to the user.
3508
3512
3509 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3513 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3510 default. Now that the default at the confirmation prompt is yes,
3514 default. Now that the default at the confirmation prompt is yes,
3511 it's not so intrusive. François' argument that ipython sessions
3515 it's not so intrusive. François' argument that ipython sessions
3512 tend to be complex enough not to lose them from an accidental C-d,
3516 tend to be complex enough not to lose them from an accidental C-d,
3513 is a valid one.
3517 is a valid one.
3514
3518
3515 * IPython/iplib.py (InteractiveShell.interact): added a
3519 * IPython/iplib.py (InteractiveShell.interact): added a
3516 showtraceback() call to the SystemExit trap, and modified the exit
3520 showtraceback() call to the SystemExit trap, and modified the exit
3517 confirmation to have yes as the default.
3521 confirmation to have yes as the default.
3518
3522
3519 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3523 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3520 this file. It's been gone from the code for a long time, this was
3524 this file. It's been gone from the code for a long time, this was
3521 simply leftover junk.
3525 simply leftover junk.
3522
3526
3523 2002-11-01 Fernando Perez <fperez@colorado.edu>
3527 2002-11-01 Fernando Perez <fperez@colorado.edu>
3524
3528
3525 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3529 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3526 added. If set, IPython now traps EOF and asks for
3530 added. If set, IPython now traps EOF and asks for
3527 confirmation. After a request by François Pinard.
3531 confirmation. After a request by François Pinard.
3528
3532
3529 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3533 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3530 of @abort, and with a new (better) mechanism for handling the
3534 of @abort, and with a new (better) mechanism for handling the
3531 exceptions.
3535 exceptions.
3532
3536
3533 2002-10-27 Fernando Perez <fperez@colorado.edu>
3537 2002-10-27 Fernando Perez <fperez@colorado.edu>
3534
3538
3535 * IPython/usage.py (__doc__): updated the --help information and
3539 * IPython/usage.py (__doc__): updated the --help information and
3536 the ipythonrc file to indicate that -log generates
3540 the ipythonrc file to indicate that -log generates
3537 ./ipython.log. Also fixed the corresponding info in @logstart.
3541 ./ipython.log. Also fixed the corresponding info in @logstart.
3538 This and several other fixes in the manuals thanks to reports by
3542 This and several other fixes in the manuals thanks to reports by
3539 François Pinard <pinard-AT-iro.umontreal.ca>.
3543 François Pinard <pinard-AT-iro.umontreal.ca>.
3540
3544
3541 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3545 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3542 refer to @logstart (instead of @log, which doesn't exist).
3546 refer to @logstart (instead of @log, which doesn't exist).
3543
3547
3544 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3548 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3545 AttributeError crash. Thanks to Christopher Armstrong
3549 AttributeError crash. Thanks to Christopher Armstrong
3546 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3550 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3547 introduced recently (in 0.2.14pre37) with the fix to the eval
3551 introduced recently (in 0.2.14pre37) with the fix to the eval
3548 problem mentioned below.
3552 problem mentioned below.
3549
3553
3550 2002-10-17 Fernando Perez <fperez@colorado.edu>
3554 2002-10-17 Fernando Perez <fperez@colorado.edu>
3551
3555
3552 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3556 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3553 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3557 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3554
3558
3555 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3559 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3556 this function to fix a problem reported by Alex Schmolck. He saw
3560 this function to fix a problem reported by Alex Schmolck. He saw
3557 it with list comprehensions and generators, which were getting
3561 it with list comprehensions and generators, which were getting
3558 called twice. The real problem was an 'eval' call in testing for
3562 called twice. The real problem was an 'eval' call in testing for
3559 automagic which was evaluating the input line silently.
3563 automagic which was evaluating the input line silently.
3560
3564
3561 This is a potentially very nasty bug, if the input has side
3565 This is a potentially very nasty bug, if the input has side
3562 effects which must not be repeated. The code is much cleaner now,
3566 effects which must not be repeated. The code is much cleaner now,
3563 without any blanket 'except' left and with a regexp test for
3567 without any blanket 'except' left and with a regexp test for
3564 actual function names.
3568 actual function names.
3565
3569
3566 But an eval remains, which I'm not fully comfortable with. I just
3570 But an eval remains, which I'm not fully comfortable with. I just
3567 don't know how to find out if an expression could be a callable in
3571 don't know how to find out if an expression could be a callable in
3568 the user's namespace without doing an eval on the string. However
3572 the user's namespace without doing an eval on the string. However
3569 that string is now much more strictly checked so that no code
3573 that string is now much more strictly checked so that no code
3570 slips by, so the eval should only happen for things that can
3574 slips by, so the eval should only happen for things that can
3571 really be only function/method names.
3575 really be only function/method names.
3572
3576
3573 2002-10-15 Fernando Perez <fperez@colorado.edu>
3577 2002-10-15 Fernando Perez <fperez@colorado.edu>
3574
3578
3575 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3579 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3576 OSX information to main manual, removed README_Mac_OSX file from
3580 OSX information to main manual, removed README_Mac_OSX file from
3577 distribution. Also updated credits for recent additions.
3581 distribution. Also updated credits for recent additions.
3578
3582
3579 2002-10-10 Fernando Perez <fperez@colorado.edu>
3583 2002-10-10 Fernando Perez <fperez@colorado.edu>
3580
3584
3581 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3585 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3582 terminal-related issues. Many thanks to Andrea Riciputi
3586 terminal-related issues. Many thanks to Andrea Riciputi
3583 <andrea.riciputi-AT-libero.it> for writing it.
3587 <andrea.riciputi-AT-libero.it> for writing it.
3584
3588
3585 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3589 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3586 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3590 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3587
3591
3588 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3592 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3589 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3593 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3590 <syver-en-AT-online.no> who both submitted patches for this problem.
3594 <syver-en-AT-online.no> who both submitted patches for this problem.
3591
3595
3592 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3596 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3593 global embedding to make sure that things don't overwrite user
3597 global embedding to make sure that things don't overwrite user
3594 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3598 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3595
3599
3596 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3600 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3597 compatibility. Thanks to Hayden Callow
3601 compatibility. Thanks to Hayden Callow
3598 <h.callow-AT-elec.canterbury.ac.nz>
3602 <h.callow-AT-elec.canterbury.ac.nz>
3599
3603
3600 2002-10-04 Fernando Perez <fperez@colorado.edu>
3604 2002-10-04 Fernando Perez <fperez@colorado.edu>
3601
3605
3602 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3606 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3603 Gnuplot.File objects.
3607 Gnuplot.File objects.
3604
3608
3605 2002-07-23 Fernando Perez <fperez@colorado.edu>
3609 2002-07-23 Fernando Perez <fperez@colorado.edu>
3606
3610
3607 * IPython/genutils.py (timing): Added timings() and timing() for
3611 * IPython/genutils.py (timing): Added timings() and timing() for
3608 quick access to the most commonly needed data, the execution
3612 quick access to the most commonly needed data, the execution
3609 times. Old timing() renamed to timings_out().
3613 times. Old timing() renamed to timings_out().
3610
3614
3611 2002-07-18 Fernando Perez <fperez@colorado.edu>
3615 2002-07-18 Fernando Perez <fperez@colorado.edu>
3612
3616
3613 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3617 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3614 bug with nested instances disrupting the parent's tab completion.
3618 bug with nested instances disrupting the parent's tab completion.
3615
3619
3616 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3620 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3617 all_completions code to begin the emacs integration.
3621 all_completions code to begin the emacs integration.
3618
3622
3619 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3623 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3620 argument to allow titling individual arrays when plotting.
3624 argument to allow titling individual arrays when plotting.
3621
3625
3622 2002-07-15 Fernando Perez <fperez@colorado.edu>
3626 2002-07-15 Fernando Perez <fperez@colorado.edu>
3623
3627
3624 * setup.py (make_shortcut): changed to retrieve the value of
3628 * setup.py (make_shortcut): changed to retrieve the value of
3625 'Program Files' directory from the registry (this value changes in
3629 'Program Files' directory from the registry (this value changes in
3626 non-english versions of Windows). Thanks to Thomas Fanslau
3630 non-english versions of Windows). Thanks to Thomas Fanslau
3627 <tfanslau-AT-gmx.de> for the report.
3631 <tfanslau-AT-gmx.de> for the report.
3628
3632
3629 2002-07-10 Fernando Perez <fperez@colorado.edu>
3633 2002-07-10 Fernando Perez <fperez@colorado.edu>
3630
3634
3631 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3635 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3632 a bug in pdb, which crashes if a line with only whitespace is
3636 a bug in pdb, which crashes if a line with only whitespace is
3633 entered. Bug report submitted to sourceforge.
3637 entered. Bug report submitted to sourceforge.
3634
3638
3635 2002-07-09 Fernando Perez <fperez@colorado.edu>
3639 2002-07-09 Fernando Perez <fperez@colorado.edu>
3636
3640
3637 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3641 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3638 reporting exceptions (it's a bug in inspect.py, I just set a
3642 reporting exceptions (it's a bug in inspect.py, I just set a
3639 workaround).
3643 workaround).
3640
3644
3641 2002-07-08 Fernando Perez <fperez@colorado.edu>
3645 2002-07-08 Fernando Perez <fperez@colorado.edu>
3642
3646
3643 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3647 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3644 __IPYTHON__ in __builtins__ to show up in user_ns.
3648 __IPYTHON__ in __builtins__ to show up in user_ns.
3645
3649
3646 2002-07-03 Fernando Perez <fperez@colorado.edu>
3650 2002-07-03 Fernando Perez <fperez@colorado.edu>
3647
3651
3648 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3652 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3649 name from @gp_set_instance to @gp_set_default.
3653 name from @gp_set_instance to @gp_set_default.
3650
3654
3651 * IPython/ipmaker.py (make_IPython): default editor value set to
3655 * IPython/ipmaker.py (make_IPython): default editor value set to
3652 '0' (a string), to match the rc file. Otherwise will crash when
3656 '0' (a string), to match the rc file. Otherwise will crash when
3653 .strip() is called on it.
3657 .strip() is called on it.
3654
3658
3655
3659
3656 2002-06-28 Fernando Perez <fperez@colorado.edu>
3660 2002-06-28 Fernando Perez <fperez@colorado.edu>
3657
3661
3658 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3662 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3659 of files in current directory when a file is executed via
3663 of files in current directory when a file is executed via
3660 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3664 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3661
3665
3662 * setup.py (manfiles): fix for rpm builds, submitted by RA
3666 * setup.py (manfiles): fix for rpm builds, submitted by RA
3663 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3667 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3664
3668
3665 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3669 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3666 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3670 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3667 string!). A. Schmolck caught this one.
3671 string!). A. Schmolck caught this one.
3668
3672
3669 2002-06-27 Fernando Perez <fperez@colorado.edu>
3673 2002-06-27 Fernando Perez <fperez@colorado.edu>
3670
3674
3671 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3675 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3672 defined files at the cmd line. __name__ wasn't being set to
3676 defined files at the cmd line. __name__ wasn't being set to
3673 __main__.
3677 __main__.
3674
3678
3675 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3679 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3676 regular lists and tuples besides Numeric arrays.
3680 regular lists and tuples besides Numeric arrays.
3677
3681
3678 * IPython/Prompts.py (CachedOutput.__call__): Added output
3682 * IPython/Prompts.py (CachedOutput.__call__): Added output
3679 supression for input ending with ';'. Similar to Mathematica and
3683 supression for input ending with ';'. Similar to Mathematica and
3680 Matlab. The _* vars and Out[] list are still updated, just like
3684 Matlab. The _* vars and Out[] list are still updated, just like
3681 Mathematica behaves.
3685 Mathematica behaves.
3682
3686
3683 2002-06-25 Fernando Perez <fperez@colorado.edu>
3687 2002-06-25 Fernando Perez <fperez@colorado.edu>
3684
3688
3685 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3689 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3686 .ini extensions for profiels under Windows.
3690 .ini extensions for profiels under Windows.
3687
3691
3688 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3692 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3689 string form. Fix contributed by Alexander Schmolck
3693 string form. Fix contributed by Alexander Schmolck
3690 <a.schmolck-AT-gmx.net>
3694 <a.schmolck-AT-gmx.net>
3691
3695
3692 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3696 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3693 pre-configured Gnuplot instance.
3697 pre-configured Gnuplot instance.
3694
3698
3695 2002-06-21 Fernando Perez <fperez@colorado.edu>
3699 2002-06-21 Fernando Perez <fperez@colorado.edu>
3696
3700
3697 * IPython/numutils.py (exp_safe): new function, works around the
3701 * IPython/numutils.py (exp_safe): new function, works around the
3698 underflow problems in Numeric.
3702 underflow problems in Numeric.
3699 (log2): New fn. Safe log in base 2: returns exact integer answer
3703 (log2): New fn. Safe log in base 2: returns exact integer answer
3700 for exact integer powers of 2.
3704 for exact integer powers of 2.
3701
3705
3702 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3706 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3703 properly.
3707 properly.
3704
3708
3705 2002-06-20 Fernando Perez <fperez@colorado.edu>
3709 2002-06-20 Fernando Perez <fperez@colorado.edu>
3706
3710
3707 * IPython/genutils.py (timing): new function like
3711 * IPython/genutils.py (timing): new function like
3708 Mathematica's. Similar to time_test, but returns more info.
3712 Mathematica's. Similar to time_test, but returns more info.
3709
3713
3710 2002-06-18 Fernando Perez <fperez@colorado.edu>
3714 2002-06-18 Fernando Perez <fperez@colorado.edu>
3711
3715
3712 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3716 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3713 according to Mike Heeter's suggestions.
3717 according to Mike Heeter's suggestions.
3714
3718
3715 2002-06-16 Fernando Perez <fperez@colorado.edu>
3719 2002-06-16 Fernando Perez <fperez@colorado.edu>
3716
3720
3717 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3721 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3718 system. GnuplotMagic is gone as a user-directory option. New files
3722 system. GnuplotMagic is gone as a user-directory option. New files
3719 make it easier to use all the gnuplot stuff both from external
3723 make it easier to use all the gnuplot stuff both from external
3720 programs as well as from IPython. Had to rewrite part of
3724 programs as well as from IPython. Had to rewrite part of
3721 hardcopy() b/c of a strange bug: often the ps files simply don't
3725 hardcopy() b/c of a strange bug: often the ps files simply don't
3722 get created, and require a repeat of the command (often several
3726 get created, and require a repeat of the command (often several
3723 times).
3727 times).
3724
3728
3725 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3729 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3726 resolve output channel at call time, so that if sys.stderr has
3730 resolve output channel at call time, so that if sys.stderr has
3727 been redirected by user this gets honored.
3731 been redirected by user this gets honored.
3728
3732
3729 2002-06-13 Fernando Perez <fperez@colorado.edu>
3733 2002-06-13 Fernando Perez <fperez@colorado.edu>
3730
3734
3731 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3735 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3732 IPShell. Kept a copy with the old names to avoid breaking people's
3736 IPShell. Kept a copy with the old names to avoid breaking people's
3733 embedded code.
3737 embedded code.
3734
3738
3735 * IPython/ipython: simplified it to the bare minimum after
3739 * IPython/ipython: simplified it to the bare minimum after
3736 Holger's suggestions. Added info about how to use it in
3740 Holger's suggestions. Added info about how to use it in
3737 PYTHONSTARTUP.
3741 PYTHONSTARTUP.
3738
3742
3739 * IPython/Shell.py (IPythonShell): changed the options passing
3743 * IPython/Shell.py (IPythonShell): changed the options passing
3740 from a string with funky %s replacements to a straight list. Maybe
3744 from a string with funky %s replacements to a straight list. Maybe
3741 a bit more typing, but it follows sys.argv conventions, so there's
3745 a bit more typing, but it follows sys.argv conventions, so there's
3742 less special-casing to remember.
3746 less special-casing to remember.
3743
3747
3744 2002-06-12 Fernando Perez <fperez@colorado.edu>
3748 2002-06-12 Fernando Perez <fperez@colorado.edu>
3745
3749
3746 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3750 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3747 command. Thanks to a suggestion by Mike Heeter.
3751 command. Thanks to a suggestion by Mike Heeter.
3748 (Magic.magic_pfile): added behavior to look at filenames if given
3752 (Magic.magic_pfile): added behavior to look at filenames if given
3749 arg is not a defined object.
3753 arg is not a defined object.
3750 (Magic.magic_save): New @save function to save code snippets. Also
3754 (Magic.magic_save): New @save function to save code snippets. Also
3751 a Mike Heeter idea.
3755 a Mike Heeter idea.
3752
3756
3753 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3757 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3754 plot() and replot(). Much more convenient now, especially for
3758 plot() and replot(). Much more convenient now, especially for
3755 interactive use.
3759 interactive use.
3756
3760
3757 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3761 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3758 filenames.
3762 filenames.
3759
3763
3760 2002-06-02 Fernando Perez <fperez@colorado.edu>
3764 2002-06-02 Fernando Perez <fperez@colorado.edu>
3761
3765
3762 * IPython/Struct.py (Struct.__init__): modified to admit
3766 * IPython/Struct.py (Struct.__init__): modified to admit
3763 initialization via another struct.
3767 initialization via another struct.
3764
3768
3765 * IPython/genutils.py (SystemExec.__init__): New stateful
3769 * IPython/genutils.py (SystemExec.__init__): New stateful
3766 interface to xsys and bq. Useful for writing system scripts.
3770 interface to xsys and bq. Useful for writing system scripts.
3767
3771
3768 2002-05-30 Fernando Perez <fperez@colorado.edu>
3772 2002-05-30 Fernando Perez <fperez@colorado.edu>
3769
3773
3770 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3774 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3771 documents. This will make the user download smaller (it's getting
3775 documents. This will make the user download smaller (it's getting
3772 too big).
3776 too big).
3773
3777
3774 2002-05-29 Fernando Perez <fperez@colorado.edu>
3778 2002-05-29 Fernando Perez <fperez@colorado.edu>
3775
3779
3776 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3780 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3777 fix problems with shelve and pickle. Seems to work, but I don't
3781 fix problems with shelve and pickle. Seems to work, but I don't
3778 know if corner cases break it. Thanks to Mike Heeter
3782 know if corner cases break it. Thanks to Mike Heeter
3779 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3783 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3780
3784
3781 2002-05-24 Fernando Perez <fperez@colorado.edu>
3785 2002-05-24 Fernando Perez <fperez@colorado.edu>
3782
3786
3783 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3787 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3784 macros having broken.
3788 macros having broken.
3785
3789
3786 2002-05-21 Fernando Perez <fperez@colorado.edu>
3790 2002-05-21 Fernando Perez <fperez@colorado.edu>
3787
3791
3788 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3792 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3789 introduced logging bug: all history before logging started was
3793 introduced logging bug: all history before logging started was
3790 being written one character per line! This came from the redesign
3794 being written one character per line! This came from the redesign
3791 of the input history as a special list which slices to strings,
3795 of the input history as a special list which slices to strings,
3792 not to lists.
3796 not to lists.
3793
3797
3794 2002-05-20 Fernando Perez <fperez@colorado.edu>
3798 2002-05-20 Fernando Perez <fperez@colorado.edu>
3795
3799
3796 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3800 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3797 be an attribute of all classes in this module. The design of these
3801 be an attribute of all classes in this module. The design of these
3798 classes needs some serious overhauling.
3802 classes needs some serious overhauling.
3799
3803
3800 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3804 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3801 which was ignoring '_' in option names.
3805 which was ignoring '_' in option names.
3802
3806
3803 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3807 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3804 'Verbose_novars' to 'Context' and made it the new default. It's a
3808 'Verbose_novars' to 'Context' and made it the new default. It's a
3805 bit more readable and also safer than verbose.
3809 bit more readable and also safer than verbose.
3806
3810
3807 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3811 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3808 triple-quoted strings.
3812 triple-quoted strings.
3809
3813
3810 * IPython/OInspect.py (__all__): new module exposing the object
3814 * IPython/OInspect.py (__all__): new module exposing the object
3811 introspection facilities. Now the corresponding magics are dummy
3815 introspection facilities. Now the corresponding magics are dummy
3812 wrappers around this. Having this module will make it much easier
3816 wrappers around this. Having this module will make it much easier
3813 to put these functions into our modified pdb.
3817 to put these functions into our modified pdb.
3814 This new object inspector system uses the new colorizing module,
3818 This new object inspector system uses the new colorizing module,
3815 so source code and other things are nicely syntax highlighted.
3819 so source code and other things are nicely syntax highlighted.
3816
3820
3817 2002-05-18 Fernando Perez <fperez@colorado.edu>
3821 2002-05-18 Fernando Perez <fperez@colorado.edu>
3818
3822
3819 * IPython/ColorANSI.py: Split the coloring tools into a separate
3823 * IPython/ColorANSI.py: Split the coloring tools into a separate
3820 module so I can use them in other code easier (they were part of
3824 module so I can use them in other code easier (they were part of
3821 ultraTB).
3825 ultraTB).
3822
3826
3823 2002-05-17 Fernando Perez <fperez@colorado.edu>
3827 2002-05-17 Fernando Perez <fperez@colorado.edu>
3824
3828
3825 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3829 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3826 fixed it to set the global 'g' also to the called instance, as
3830 fixed it to set the global 'g' also to the called instance, as
3827 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3831 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3828 user's 'g' variables).
3832 user's 'g' variables).
3829
3833
3830 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3834 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3831 global variables (aliases to _ih,_oh) so that users which expect
3835 global variables (aliases to _ih,_oh) so that users which expect
3832 In[5] or Out[7] to work aren't unpleasantly surprised.
3836 In[5] or Out[7] to work aren't unpleasantly surprised.
3833 (InputList.__getslice__): new class to allow executing slices of
3837 (InputList.__getslice__): new class to allow executing slices of
3834 input history directly. Very simple class, complements the use of
3838 input history directly. Very simple class, complements the use of
3835 macros.
3839 macros.
3836
3840
3837 2002-05-16 Fernando Perez <fperez@colorado.edu>
3841 2002-05-16 Fernando Perez <fperez@colorado.edu>
3838
3842
3839 * setup.py (docdirbase): make doc directory be just doc/IPython
3843 * setup.py (docdirbase): make doc directory be just doc/IPython
3840 without version numbers, it will reduce clutter for users.
3844 without version numbers, it will reduce clutter for users.
3841
3845
3842 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3846 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3843 execfile call to prevent possible memory leak. See for details:
3847 execfile call to prevent possible memory leak. See for details:
3844 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3848 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3845
3849
3846 2002-05-15 Fernando Perez <fperez@colorado.edu>
3850 2002-05-15 Fernando Perez <fperez@colorado.edu>
3847
3851
3848 * IPython/Magic.py (Magic.magic_psource): made the object
3852 * IPython/Magic.py (Magic.magic_psource): made the object
3849 introspection names be more standard: pdoc, pdef, pfile and
3853 introspection names be more standard: pdoc, pdef, pfile and
3850 psource. They all print/page their output, and it makes
3854 psource. They all print/page their output, and it makes
3851 remembering them easier. Kept old names for compatibility as
3855 remembering them easier. Kept old names for compatibility as
3852 aliases.
3856 aliases.
3853
3857
3854 2002-05-14 Fernando Perez <fperez@colorado.edu>
3858 2002-05-14 Fernando Perez <fperez@colorado.edu>
3855
3859
3856 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3860 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3857 what the mouse problem was. The trick is to use gnuplot with temp
3861 what the mouse problem was. The trick is to use gnuplot with temp
3858 files and NOT with pipes (for data communication), because having
3862 files and NOT with pipes (for data communication), because having
3859 both pipes and the mouse on is bad news.
3863 both pipes and the mouse on is bad news.
3860
3864
3861 2002-05-13 Fernando Perez <fperez@colorado.edu>
3865 2002-05-13 Fernando Perez <fperez@colorado.edu>
3862
3866
3863 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3867 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3864 bug. Information would be reported about builtins even when
3868 bug. Information would be reported about builtins even when
3865 user-defined functions overrode them.
3869 user-defined functions overrode them.
3866
3870
3867 2002-05-11 Fernando Perez <fperez@colorado.edu>
3871 2002-05-11 Fernando Perez <fperez@colorado.edu>
3868
3872
3869 * IPython/__init__.py (__all__): removed FlexCompleter from
3873 * IPython/__init__.py (__all__): removed FlexCompleter from
3870 __all__ so that things don't fail in platforms without readline.
3874 __all__ so that things don't fail in platforms without readline.
3871
3875
3872 2002-05-10 Fernando Perez <fperez@colorado.edu>
3876 2002-05-10 Fernando Perez <fperez@colorado.edu>
3873
3877
3874 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3878 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3875 it requires Numeric, effectively making Numeric a dependency for
3879 it requires Numeric, effectively making Numeric a dependency for
3876 IPython.
3880 IPython.
3877
3881
3878 * Released 0.2.13
3882 * Released 0.2.13
3879
3883
3880 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3884 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3881 profiler interface. Now all the major options from the profiler
3885 profiler interface. Now all the major options from the profiler
3882 module are directly supported in IPython, both for single
3886 module are directly supported in IPython, both for single
3883 expressions (@prun) and for full programs (@run -p).
3887 expressions (@prun) and for full programs (@run -p).
3884
3888
3885 2002-05-09 Fernando Perez <fperez@colorado.edu>
3889 2002-05-09 Fernando Perez <fperez@colorado.edu>
3886
3890
3887 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3891 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3888 magic properly formatted for screen.
3892 magic properly formatted for screen.
3889
3893
3890 * setup.py (make_shortcut): Changed things to put pdf version in
3894 * setup.py (make_shortcut): Changed things to put pdf version in
3891 doc/ instead of doc/manual (had to change lyxport a bit).
3895 doc/ instead of doc/manual (had to change lyxport a bit).
3892
3896
3893 * IPython/Magic.py (Profile.string_stats): made profile runs go
3897 * IPython/Magic.py (Profile.string_stats): made profile runs go
3894 through pager (they are long and a pager allows searching, saving,
3898 through pager (they are long and a pager allows searching, saving,
3895 etc.)
3899 etc.)
3896
3900
3897 2002-05-08 Fernando Perez <fperez@colorado.edu>
3901 2002-05-08 Fernando Perez <fperez@colorado.edu>
3898
3902
3899 * Released 0.2.12
3903 * Released 0.2.12
3900
3904
3901 2002-05-06 Fernando Perez <fperez@colorado.edu>
3905 2002-05-06 Fernando Perez <fperez@colorado.edu>
3902
3906
3903 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3907 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3904 introduced); 'hist n1 n2' was broken.
3908 introduced); 'hist n1 n2' was broken.
3905 (Magic.magic_pdb): added optional on/off arguments to @pdb
3909 (Magic.magic_pdb): added optional on/off arguments to @pdb
3906 (Magic.magic_run): added option -i to @run, which executes code in
3910 (Magic.magic_run): added option -i to @run, which executes code in
3907 the IPython namespace instead of a clean one. Also added @irun as
3911 the IPython namespace instead of a clean one. Also added @irun as
3908 an alias to @run -i.
3912 an alias to @run -i.
3909
3913
3910 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3914 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3911 fixed (it didn't really do anything, the namespaces were wrong).
3915 fixed (it didn't really do anything, the namespaces were wrong).
3912
3916
3913 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3917 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3914
3918
3915 * IPython/__init__.py (__all__): Fixed package namespace, now
3919 * IPython/__init__.py (__all__): Fixed package namespace, now
3916 'import IPython' does give access to IPython.<all> as
3920 'import IPython' does give access to IPython.<all> as
3917 expected. Also renamed __release__ to Release.
3921 expected. Also renamed __release__ to Release.
3918
3922
3919 * IPython/Debugger.py (__license__): created new Pdb class which
3923 * IPython/Debugger.py (__license__): created new Pdb class which
3920 functions like a drop-in for the normal pdb.Pdb but does NOT
3924 functions like a drop-in for the normal pdb.Pdb but does NOT
3921 import readline by default. This way it doesn't muck up IPython's
3925 import readline by default. This way it doesn't muck up IPython's
3922 readline handling, and now tab-completion finally works in the
3926 readline handling, and now tab-completion finally works in the
3923 debugger -- sort of. It completes things globally visible, but the
3927 debugger -- sort of. It completes things globally visible, but the
3924 completer doesn't track the stack as pdb walks it. That's a bit
3928 completer doesn't track the stack as pdb walks it. That's a bit
3925 tricky, and I'll have to implement it later.
3929 tricky, and I'll have to implement it later.
3926
3930
3927 2002-05-05 Fernando Perez <fperez@colorado.edu>
3931 2002-05-05 Fernando Perez <fperez@colorado.edu>
3928
3932
3929 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3933 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3930 magic docstrings when printed via ? (explicit \'s were being
3934 magic docstrings when printed via ? (explicit \'s were being
3931 printed).
3935 printed).
3932
3936
3933 * IPython/ipmaker.py (make_IPython): fixed namespace
3937 * IPython/ipmaker.py (make_IPython): fixed namespace
3934 identification bug. Now variables loaded via logs or command-line
3938 identification bug. Now variables loaded via logs or command-line
3935 files are recognized in the interactive namespace by @who.
3939 files are recognized in the interactive namespace by @who.
3936
3940
3937 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3941 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3938 log replay system stemming from the string form of Structs.
3942 log replay system stemming from the string form of Structs.
3939
3943
3940 * IPython/Magic.py (Macro.__init__): improved macros to properly
3944 * IPython/Magic.py (Macro.__init__): improved macros to properly
3941 handle magic commands in them.
3945 handle magic commands in them.
3942 (Magic.magic_logstart): usernames are now expanded so 'logstart
3946 (Magic.magic_logstart): usernames are now expanded so 'logstart
3943 ~/mylog' now works.
3947 ~/mylog' now works.
3944
3948
3945 * IPython/iplib.py (complete): fixed bug where paths starting with
3949 * IPython/iplib.py (complete): fixed bug where paths starting with
3946 '/' would be completed as magic names.
3950 '/' would be completed as magic names.
3947
3951
3948 2002-05-04 Fernando Perez <fperez@colorado.edu>
3952 2002-05-04 Fernando Perez <fperez@colorado.edu>
3949
3953
3950 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3954 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3951 allow running full programs under the profiler's control.
3955 allow running full programs under the profiler's control.
3952
3956
3953 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3957 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3954 mode to report exceptions verbosely but without formatting
3958 mode to report exceptions verbosely but without formatting
3955 variables. This addresses the issue of ipython 'freezing' (it's
3959 variables. This addresses the issue of ipython 'freezing' (it's
3956 not frozen, but caught in an expensive formatting loop) when huge
3960 not frozen, but caught in an expensive formatting loop) when huge
3957 variables are in the context of an exception.
3961 variables are in the context of an exception.
3958 (VerboseTB.text): Added '--->' markers at line where exception was
3962 (VerboseTB.text): Added '--->' markers at line where exception was
3959 triggered. Much clearer to read, especially in NoColor modes.
3963 triggered. Much clearer to read, especially in NoColor modes.
3960
3964
3961 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3965 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3962 implemented in reverse when changing to the new parse_options().
3966 implemented in reverse when changing to the new parse_options().
3963
3967
3964 2002-05-03 Fernando Perez <fperez@colorado.edu>
3968 2002-05-03 Fernando Perez <fperez@colorado.edu>
3965
3969
3966 * IPython/Magic.py (Magic.parse_options): new function so that
3970 * IPython/Magic.py (Magic.parse_options): new function so that
3967 magics can parse options easier.
3971 magics can parse options easier.
3968 (Magic.magic_prun): new function similar to profile.run(),
3972 (Magic.magic_prun): new function similar to profile.run(),
3969 suggested by Chris Hart.
3973 suggested by Chris Hart.
3970 (Magic.magic_cd): fixed behavior so that it only changes if
3974 (Magic.magic_cd): fixed behavior so that it only changes if
3971 directory actually is in history.
3975 directory actually is in history.
3972
3976
3973 * IPython/usage.py (__doc__): added information about potential
3977 * IPython/usage.py (__doc__): added information about potential
3974 slowness of Verbose exception mode when there are huge data
3978 slowness of Verbose exception mode when there are huge data
3975 structures to be formatted (thanks to Archie Paulson).
3979 structures to be formatted (thanks to Archie Paulson).
3976
3980
3977 * IPython/ipmaker.py (make_IPython): Changed default logging
3981 * IPython/ipmaker.py (make_IPython): Changed default logging
3978 (when simply called with -log) to use curr_dir/ipython.log in
3982 (when simply called with -log) to use curr_dir/ipython.log in
3979 rotate mode. Fixed crash which was occuring with -log before
3983 rotate mode. Fixed crash which was occuring with -log before
3980 (thanks to Jim Boyle).
3984 (thanks to Jim Boyle).
3981
3985
3982 2002-05-01 Fernando Perez <fperez@colorado.edu>
3986 2002-05-01 Fernando Perez <fperez@colorado.edu>
3983
3987
3984 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3988 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3985 was nasty -- though somewhat of a corner case).
3989 was nasty -- though somewhat of a corner case).
3986
3990
3987 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3991 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3988 text (was a bug).
3992 text (was a bug).
3989
3993
3990 2002-04-30 Fernando Perez <fperez@colorado.edu>
3994 2002-04-30 Fernando Perez <fperez@colorado.edu>
3991
3995
3992 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3996 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3993 a print after ^D or ^C from the user so that the In[] prompt
3997 a print after ^D or ^C from the user so that the In[] prompt
3994 doesn't over-run the gnuplot one.
3998 doesn't over-run the gnuplot one.
3995
3999
3996 2002-04-29 Fernando Perez <fperez@colorado.edu>
4000 2002-04-29 Fernando Perez <fperez@colorado.edu>
3997
4001
3998 * Released 0.2.10
4002 * Released 0.2.10
3999
4003
4000 * IPython/__release__.py (version): get date dynamically.
4004 * IPython/__release__.py (version): get date dynamically.
4001
4005
4002 * Misc. documentation updates thanks to Arnd's comments. Also ran
4006 * Misc. documentation updates thanks to Arnd's comments. Also ran
4003 a full spellcheck on the manual (hadn't been done in a while).
4007 a full spellcheck on the manual (hadn't been done in a while).
4004
4008
4005 2002-04-27 Fernando Perez <fperez@colorado.edu>
4009 2002-04-27 Fernando Perez <fperez@colorado.edu>
4006
4010
4007 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4011 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4008 starting a log in mid-session would reset the input history list.
4012 starting a log in mid-session would reset the input history list.
4009
4013
4010 2002-04-26 Fernando Perez <fperez@colorado.edu>
4014 2002-04-26 Fernando Perez <fperez@colorado.edu>
4011
4015
4012 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4016 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4013 all files were being included in an update. Now anything in
4017 all files were being included in an update. Now anything in
4014 UserConfig that matches [A-Za-z]*.py will go (this excludes
4018 UserConfig that matches [A-Za-z]*.py will go (this excludes
4015 __init__.py)
4019 __init__.py)
4016
4020
4017 2002-04-25 Fernando Perez <fperez@colorado.edu>
4021 2002-04-25 Fernando Perez <fperez@colorado.edu>
4018
4022
4019 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4023 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4020 to __builtins__ so that any form of embedded or imported code can
4024 to __builtins__ so that any form of embedded or imported code can
4021 test for being inside IPython.
4025 test for being inside IPython.
4022
4026
4023 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4027 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4024 changed to GnuplotMagic because it's now an importable module,
4028 changed to GnuplotMagic because it's now an importable module,
4025 this makes the name follow that of the standard Gnuplot module.
4029 this makes the name follow that of the standard Gnuplot module.
4026 GnuplotMagic can now be loaded at any time in mid-session.
4030 GnuplotMagic can now be loaded at any time in mid-session.
4027
4031
4028 2002-04-24 Fernando Perez <fperez@colorado.edu>
4032 2002-04-24 Fernando Perez <fperez@colorado.edu>
4029
4033
4030 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4034 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4031 the globals (IPython has its own namespace) and the
4035 the globals (IPython has its own namespace) and the
4032 PhysicalQuantity stuff is much better anyway.
4036 PhysicalQuantity stuff is much better anyway.
4033
4037
4034 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4038 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4035 embedding example to standard user directory for
4039 embedding example to standard user directory for
4036 distribution. Also put it in the manual.
4040 distribution. Also put it in the manual.
4037
4041
4038 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4042 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4039 instance as first argument (so it doesn't rely on some obscure
4043 instance as first argument (so it doesn't rely on some obscure
4040 hidden global).
4044 hidden global).
4041
4045
4042 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4046 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4043 delimiters. While it prevents ().TAB from working, it allows
4047 delimiters. While it prevents ().TAB from working, it allows
4044 completions in open (... expressions. This is by far a more common
4048 completions in open (... expressions. This is by far a more common
4045 case.
4049 case.
4046
4050
4047 2002-04-23 Fernando Perez <fperez@colorado.edu>
4051 2002-04-23 Fernando Perez <fperez@colorado.edu>
4048
4052
4049 * IPython/Extensions/InterpreterPasteInput.py: new
4053 * IPython/Extensions/InterpreterPasteInput.py: new
4050 syntax-processing module for pasting lines with >>> or ... at the
4054 syntax-processing module for pasting lines with >>> or ... at the
4051 start.
4055 start.
4052
4056
4053 * IPython/Extensions/PhysicalQ_Interactive.py
4057 * IPython/Extensions/PhysicalQ_Interactive.py
4054 (PhysicalQuantityInteractive.__int__): fixed to work with either
4058 (PhysicalQuantityInteractive.__int__): fixed to work with either
4055 Numeric or math.
4059 Numeric or math.
4056
4060
4057 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4061 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4058 provided profiles. Now we have:
4062 provided profiles. Now we have:
4059 -math -> math module as * and cmath with its own namespace.
4063 -math -> math module as * and cmath with its own namespace.
4060 -numeric -> Numeric as *, plus gnuplot & grace
4064 -numeric -> Numeric as *, plus gnuplot & grace
4061 -physics -> same as before
4065 -physics -> same as before
4062
4066
4063 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4067 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4064 user-defined magics wouldn't be found by @magic if they were
4068 user-defined magics wouldn't be found by @magic if they were
4065 defined as class methods. Also cleaned up the namespace search
4069 defined as class methods. Also cleaned up the namespace search
4066 logic and the string building (to use %s instead of many repeated
4070 logic and the string building (to use %s instead of many repeated
4067 string adds).
4071 string adds).
4068
4072
4069 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4073 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4070 of user-defined magics to operate with class methods (cleaner, in
4074 of user-defined magics to operate with class methods (cleaner, in
4071 line with the gnuplot code).
4075 line with the gnuplot code).
4072
4076
4073 2002-04-22 Fernando Perez <fperez@colorado.edu>
4077 2002-04-22 Fernando Perez <fperez@colorado.edu>
4074
4078
4075 * setup.py: updated dependency list so that manual is updated when
4079 * setup.py: updated dependency list so that manual is updated when
4076 all included files change.
4080 all included files change.
4077
4081
4078 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4082 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4079 the delimiter removal option (the fix is ugly right now).
4083 the delimiter removal option (the fix is ugly right now).
4080
4084
4081 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4085 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4082 all of the math profile (quicker loading, no conflict between
4086 all of the math profile (quicker loading, no conflict between
4083 g-9.8 and g-gnuplot).
4087 g-9.8 and g-gnuplot).
4084
4088
4085 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4089 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4086 name of post-mortem files to IPython_crash_report.txt.
4090 name of post-mortem files to IPython_crash_report.txt.
4087
4091
4088 * Cleanup/update of the docs. Added all the new readline info and
4092 * Cleanup/update of the docs. Added all the new readline info and
4089 formatted all lists as 'real lists'.
4093 formatted all lists as 'real lists'.
4090
4094
4091 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4095 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4092 tab-completion options, since the full readline parse_and_bind is
4096 tab-completion options, since the full readline parse_and_bind is
4093 now accessible.
4097 now accessible.
4094
4098
4095 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4099 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4096 handling of readline options. Now users can specify any string to
4100 handling of readline options. Now users can specify any string to
4097 be passed to parse_and_bind(), as well as the delimiters to be
4101 be passed to parse_and_bind(), as well as the delimiters to be
4098 removed.
4102 removed.
4099 (InteractiveShell.__init__): Added __name__ to the global
4103 (InteractiveShell.__init__): Added __name__ to the global
4100 namespace so that things like Itpl which rely on its existence
4104 namespace so that things like Itpl which rely on its existence
4101 don't crash.
4105 don't crash.
4102 (InteractiveShell._prefilter): Defined the default with a _ so
4106 (InteractiveShell._prefilter): Defined the default with a _ so
4103 that prefilter() is easier to override, while the default one
4107 that prefilter() is easier to override, while the default one
4104 remains available.
4108 remains available.
4105
4109
4106 2002-04-18 Fernando Perez <fperez@colorado.edu>
4110 2002-04-18 Fernando Perez <fperez@colorado.edu>
4107
4111
4108 * Added information about pdb in the docs.
4112 * Added information about pdb in the docs.
4109
4113
4110 2002-04-17 Fernando Perez <fperez@colorado.edu>
4114 2002-04-17 Fernando Perez <fperez@colorado.edu>
4111
4115
4112 * IPython/ipmaker.py (make_IPython): added rc_override option to
4116 * IPython/ipmaker.py (make_IPython): added rc_override option to
4113 allow passing config options at creation time which may override
4117 allow passing config options at creation time which may override
4114 anything set in the config files or command line. This is
4118 anything set in the config files or command line. This is
4115 particularly useful for configuring embedded instances.
4119 particularly useful for configuring embedded instances.
4116
4120
4117 2002-04-15 Fernando Perez <fperez@colorado.edu>
4121 2002-04-15 Fernando Perez <fperez@colorado.edu>
4118
4122
4119 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4123 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4120 crash embedded instances because of the input cache falling out of
4124 crash embedded instances because of the input cache falling out of
4121 sync with the output counter.
4125 sync with the output counter.
4122
4126
4123 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4127 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4124 mode which calls pdb after an uncaught exception in IPython itself.
4128 mode which calls pdb after an uncaught exception in IPython itself.
4125
4129
4126 2002-04-14 Fernando Perez <fperez@colorado.edu>
4130 2002-04-14 Fernando Perez <fperez@colorado.edu>
4127
4131
4128 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4132 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4129 readline, fix it back after each call.
4133 readline, fix it back after each call.
4130
4134
4131 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4135 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4132 method to force all access via __call__(), which guarantees that
4136 method to force all access via __call__(), which guarantees that
4133 traceback references are properly deleted.
4137 traceback references are properly deleted.
4134
4138
4135 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4139 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4136 improve printing when pprint is in use.
4140 improve printing when pprint is in use.
4137
4141
4138 2002-04-13 Fernando Perez <fperez@colorado.edu>
4142 2002-04-13 Fernando Perez <fperez@colorado.edu>
4139
4143
4140 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4144 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4141 exceptions aren't caught anymore. If the user triggers one, he
4145 exceptions aren't caught anymore. If the user triggers one, he
4142 should know why he's doing it and it should go all the way up,
4146 should know why he's doing it and it should go all the way up,
4143 just like any other exception. So now @abort will fully kill the
4147 just like any other exception. So now @abort will fully kill the
4144 embedded interpreter and the embedding code (unless that happens
4148 embedded interpreter and the embedding code (unless that happens
4145 to catch SystemExit).
4149 to catch SystemExit).
4146
4150
4147 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4151 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4148 and a debugger() method to invoke the interactive pdb debugger
4152 and a debugger() method to invoke the interactive pdb debugger
4149 after printing exception information. Also added the corresponding
4153 after printing exception information. Also added the corresponding
4150 -pdb option and @pdb magic to control this feature, and updated
4154 -pdb option and @pdb magic to control this feature, and updated
4151 the docs. After a suggestion from Christopher Hart
4155 the docs. After a suggestion from Christopher Hart
4152 (hart-AT-caltech.edu).
4156 (hart-AT-caltech.edu).
4153
4157
4154 2002-04-12 Fernando Perez <fperez@colorado.edu>
4158 2002-04-12 Fernando Perez <fperez@colorado.edu>
4155
4159
4156 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4160 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4157 the exception handlers defined by the user (not the CrashHandler)
4161 the exception handlers defined by the user (not the CrashHandler)
4158 so that user exceptions don't trigger an ipython bug report.
4162 so that user exceptions don't trigger an ipython bug report.
4159
4163
4160 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4164 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4161 configurable (it should have always been so).
4165 configurable (it should have always been so).
4162
4166
4163 2002-03-26 Fernando Perez <fperez@colorado.edu>
4167 2002-03-26 Fernando Perez <fperez@colorado.edu>
4164
4168
4165 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4169 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4166 and there to fix embedding namespace issues. This should all be
4170 and there to fix embedding namespace issues. This should all be
4167 done in a more elegant way.
4171 done in a more elegant way.
4168
4172
4169 2002-03-25 Fernando Perez <fperez@colorado.edu>
4173 2002-03-25 Fernando Perez <fperez@colorado.edu>
4170
4174
4171 * IPython/genutils.py (get_home_dir): Try to make it work under
4175 * IPython/genutils.py (get_home_dir): Try to make it work under
4172 win9x also.
4176 win9x also.
4173
4177
4174 2002-03-20 Fernando Perez <fperez@colorado.edu>
4178 2002-03-20 Fernando Perez <fperez@colorado.edu>
4175
4179
4176 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4180 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4177 sys.displayhook untouched upon __init__.
4181 sys.displayhook untouched upon __init__.
4178
4182
4179 2002-03-19 Fernando Perez <fperez@colorado.edu>
4183 2002-03-19 Fernando Perez <fperez@colorado.edu>
4180
4184
4181 * Released 0.2.9 (for embedding bug, basically).
4185 * Released 0.2.9 (for embedding bug, basically).
4182
4186
4183 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4187 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4184 exceptions so that enclosing shell's state can be restored.
4188 exceptions so that enclosing shell's state can be restored.
4185
4189
4186 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4190 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4187 naming conventions in the .ipython/ dir.
4191 naming conventions in the .ipython/ dir.
4188
4192
4189 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4193 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4190 from delimiters list so filenames with - in them get expanded.
4194 from delimiters list so filenames with - in them get expanded.
4191
4195
4192 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4196 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4193 sys.displayhook not being properly restored after an embedded call.
4197 sys.displayhook not being properly restored after an embedded call.
4194
4198
4195 2002-03-18 Fernando Perez <fperez@colorado.edu>
4199 2002-03-18 Fernando Perez <fperez@colorado.edu>
4196
4200
4197 * Released 0.2.8
4201 * Released 0.2.8
4198
4202
4199 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4203 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4200 some files weren't being included in a -upgrade.
4204 some files weren't being included in a -upgrade.
4201 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4205 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4202 on' so that the first tab completes.
4206 on' so that the first tab completes.
4203 (InteractiveShell.handle_magic): fixed bug with spaces around
4207 (InteractiveShell.handle_magic): fixed bug with spaces around
4204 quotes breaking many magic commands.
4208 quotes breaking many magic commands.
4205
4209
4206 * setup.py: added note about ignoring the syntax error messages at
4210 * setup.py: added note about ignoring the syntax error messages at
4207 installation.
4211 installation.
4208
4212
4209 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4213 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4210 streamlining the gnuplot interface, now there's only one magic @gp.
4214 streamlining the gnuplot interface, now there's only one magic @gp.
4211
4215
4212 2002-03-17 Fernando Perez <fperez@colorado.edu>
4216 2002-03-17 Fernando Perez <fperez@colorado.edu>
4213
4217
4214 * IPython/UserConfig/magic_gnuplot.py: new name for the
4218 * IPython/UserConfig/magic_gnuplot.py: new name for the
4215 example-magic_pm.py file. Much enhanced system, now with a shell
4219 example-magic_pm.py file. Much enhanced system, now with a shell
4216 for communicating directly with gnuplot, one command at a time.
4220 for communicating directly with gnuplot, one command at a time.
4217
4221
4218 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4222 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4219 setting __name__=='__main__'.
4223 setting __name__=='__main__'.
4220
4224
4221 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4225 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4222 mini-shell for accessing gnuplot from inside ipython. Should
4226 mini-shell for accessing gnuplot from inside ipython. Should
4223 extend it later for grace access too. Inspired by Arnd's
4227 extend it later for grace access too. Inspired by Arnd's
4224 suggestion.
4228 suggestion.
4225
4229
4226 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4230 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4227 calling magic functions with () in their arguments. Thanks to Arnd
4231 calling magic functions with () in their arguments. Thanks to Arnd
4228 Baecker for pointing this to me.
4232 Baecker for pointing this to me.
4229
4233
4230 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4234 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4231 infinitely for integer or complex arrays (only worked with floats).
4235 infinitely for integer or complex arrays (only worked with floats).
4232
4236
4233 2002-03-16 Fernando Perez <fperez@colorado.edu>
4237 2002-03-16 Fernando Perez <fperez@colorado.edu>
4234
4238
4235 * setup.py: Merged setup and setup_windows into a single script
4239 * setup.py: Merged setup and setup_windows into a single script
4236 which properly handles things for windows users.
4240 which properly handles things for windows users.
4237
4241
4238 2002-03-15 Fernando Perez <fperez@colorado.edu>
4242 2002-03-15 Fernando Perez <fperez@colorado.edu>
4239
4243
4240 * Big change to the manual: now the magics are all automatically
4244 * Big change to the manual: now the magics are all automatically
4241 documented. This information is generated from their docstrings
4245 documented. This information is generated from their docstrings
4242 and put in a latex file included by the manual lyx file. This way
4246 and put in a latex file included by the manual lyx file. This way
4243 we get always up to date information for the magics. The manual
4247 we get always up to date information for the magics. The manual
4244 now also has proper version information, also auto-synced.
4248 now also has proper version information, also auto-synced.
4245
4249
4246 For this to work, an undocumented --magic_docstrings option was added.
4250 For this to work, an undocumented --magic_docstrings option was added.
4247
4251
4248 2002-03-13 Fernando Perez <fperez@colorado.edu>
4252 2002-03-13 Fernando Perez <fperez@colorado.edu>
4249
4253
4250 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4254 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4251 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4255 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4252
4256
4253 2002-03-12 Fernando Perez <fperez@colorado.edu>
4257 2002-03-12 Fernando Perez <fperez@colorado.edu>
4254
4258
4255 * IPython/ultraTB.py (TermColors): changed color escapes again to
4259 * IPython/ultraTB.py (TermColors): changed color escapes again to
4256 fix the (old, reintroduced) line-wrapping bug. Basically, if
4260 fix the (old, reintroduced) line-wrapping bug. Basically, if
4257 \001..\002 aren't given in the color escapes, lines get wrapped
4261 \001..\002 aren't given in the color escapes, lines get wrapped
4258 weirdly. But giving those screws up old xterms and emacs terms. So
4262 weirdly. But giving those screws up old xterms and emacs terms. So
4259 I added some logic for emacs terms to be ok, but I can't identify old
4263 I added some logic for emacs terms to be ok, but I can't identify old
4260 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4264 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4261
4265
4262 2002-03-10 Fernando Perez <fperez@colorado.edu>
4266 2002-03-10 Fernando Perez <fperez@colorado.edu>
4263
4267
4264 * IPython/usage.py (__doc__): Various documentation cleanups and
4268 * IPython/usage.py (__doc__): Various documentation cleanups and
4265 updates, both in usage docstrings and in the manual.
4269 updates, both in usage docstrings and in the manual.
4266
4270
4267 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4271 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4268 handling of caching. Set minimum acceptabe value for having a
4272 handling of caching. Set minimum acceptabe value for having a
4269 cache at 20 values.
4273 cache at 20 values.
4270
4274
4271 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4275 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4272 install_first_time function to a method, renamed it and added an
4276 install_first_time function to a method, renamed it and added an
4273 'upgrade' mode. Now people can update their config directory with
4277 'upgrade' mode. Now people can update their config directory with
4274 a simple command line switch (-upgrade, also new).
4278 a simple command line switch (-upgrade, also new).
4275
4279
4276 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4280 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4277 @file (convenient for automagic users under Python >= 2.2).
4281 @file (convenient for automagic users under Python >= 2.2).
4278 Removed @files (it seemed more like a plural than an abbrev. of
4282 Removed @files (it seemed more like a plural than an abbrev. of
4279 'file show').
4283 'file show').
4280
4284
4281 * IPython/iplib.py (install_first_time): Fixed crash if there were
4285 * IPython/iplib.py (install_first_time): Fixed crash if there were
4282 backup files ('~') in .ipython/ install directory.
4286 backup files ('~') in .ipython/ install directory.
4283
4287
4284 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4288 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4285 system. Things look fine, but these changes are fairly
4289 system. Things look fine, but these changes are fairly
4286 intrusive. Test them for a few days.
4290 intrusive. Test them for a few days.
4287
4291
4288 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4292 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4289 the prompts system. Now all in/out prompt strings are user
4293 the prompts system. Now all in/out prompt strings are user
4290 controllable. This is particularly useful for embedding, as one
4294 controllable. This is particularly useful for embedding, as one
4291 can tag embedded instances with particular prompts.
4295 can tag embedded instances with particular prompts.
4292
4296
4293 Also removed global use of sys.ps1/2, which now allows nested
4297 Also removed global use of sys.ps1/2, which now allows nested
4294 embeddings without any problems. Added command-line options for
4298 embeddings without any problems. Added command-line options for
4295 the prompt strings.
4299 the prompt strings.
4296
4300
4297 2002-03-08 Fernando Perez <fperez@colorado.edu>
4301 2002-03-08 Fernando Perez <fperez@colorado.edu>
4298
4302
4299 * IPython/UserConfig/example-embed-short.py (ipshell): added
4303 * IPython/UserConfig/example-embed-short.py (ipshell): added
4300 example file with the bare minimum code for embedding.
4304 example file with the bare minimum code for embedding.
4301
4305
4302 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4306 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4303 functionality for the embeddable shell to be activated/deactivated
4307 functionality for the embeddable shell to be activated/deactivated
4304 either globally or at each call.
4308 either globally or at each call.
4305
4309
4306 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4310 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4307 rewriting the prompt with '--->' for auto-inputs with proper
4311 rewriting the prompt with '--->' for auto-inputs with proper
4308 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4312 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4309 this is handled by the prompts class itself, as it should.
4313 this is handled by the prompts class itself, as it should.
4310
4314
4311 2002-03-05 Fernando Perez <fperez@colorado.edu>
4315 2002-03-05 Fernando Perez <fperez@colorado.edu>
4312
4316
4313 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4317 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4314 @logstart to avoid name clashes with the math log function.
4318 @logstart to avoid name clashes with the math log function.
4315
4319
4316 * Big updates to X/Emacs section of the manual.
4320 * Big updates to X/Emacs section of the manual.
4317
4321
4318 * Removed ipython_emacs. Milan explained to me how to pass
4322 * Removed ipython_emacs. Milan explained to me how to pass
4319 arguments to ipython through Emacs. Some day I'm going to end up
4323 arguments to ipython through Emacs. Some day I'm going to end up
4320 learning some lisp...
4324 learning some lisp...
4321
4325
4322 2002-03-04 Fernando Perez <fperez@colorado.edu>
4326 2002-03-04 Fernando Perez <fperez@colorado.edu>
4323
4327
4324 * IPython/ipython_emacs: Created script to be used as the
4328 * IPython/ipython_emacs: Created script to be used as the
4325 py-python-command Emacs variable so we can pass IPython
4329 py-python-command Emacs variable so we can pass IPython
4326 parameters. I can't figure out how to tell Emacs directly to pass
4330 parameters. I can't figure out how to tell Emacs directly to pass
4327 parameters to IPython, so a dummy shell script will do it.
4331 parameters to IPython, so a dummy shell script will do it.
4328
4332
4329 Other enhancements made for things to work better under Emacs'
4333 Other enhancements made for things to work better under Emacs'
4330 various types of terminals. Many thanks to Milan Zamazal
4334 various types of terminals. Many thanks to Milan Zamazal
4331 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4335 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4332
4336
4333 2002-03-01 Fernando Perez <fperez@colorado.edu>
4337 2002-03-01 Fernando Perez <fperez@colorado.edu>
4334
4338
4335 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4339 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4336 that loading of readline is now optional. This gives better
4340 that loading of readline is now optional. This gives better
4337 control to emacs users.
4341 control to emacs users.
4338
4342
4339 * IPython/ultraTB.py (__date__): Modified color escape sequences
4343 * IPython/ultraTB.py (__date__): Modified color escape sequences
4340 and now things work fine under xterm and in Emacs' term buffers
4344 and now things work fine under xterm and in Emacs' term buffers
4341 (though not shell ones). Well, in emacs you get colors, but all
4345 (though not shell ones). Well, in emacs you get colors, but all
4342 seem to be 'light' colors (no difference between dark and light
4346 seem to be 'light' colors (no difference between dark and light
4343 ones). But the garbage chars are gone, and also in xterms. It
4347 ones). But the garbage chars are gone, and also in xterms. It
4344 seems that now I'm using 'cleaner' ansi sequences.
4348 seems that now I'm using 'cleaner' ansi sequences.
4345
4349
4346 2002-02-21 Fernando Perez <fperez@colorado.edu>
4350 2002-02-21 Fernando Perez <fperez@colorado.edu>
4347
4351
4348 * Released 0.2.7 (mainly to publish the scoping fix).
4352 * Released 0.2.7 (mainly to publish the scoping fix).
4349
4353
4350 * IPython/Logger.py (Logger.logstate): added. A corresponding
4354 * IPython/Logger.py (Logger.logstate): added. A corresponding
4351 @logstate magic was created.
4355 @logstate magic was created.
4352
4356
4353 * IPython/Magic.py: fixed nested scoping problem under Python
4357 * IPython/Magic.py: fixed nested scoping problem under Python
4354 2.1.x (automagic wasn't working).
4358 2.1.x (automagic wasn't working).
4355
4359
4356 2002-02-20 Fernando Perez <fperez@colorado.edu>
4360 2002-02-20 Fernando Perez <fperez@colorado.edu>
4357
4361
4358 * Released 0.2.6.
4362 * Released 0.2.6.
4359
4363
4360 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4364 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4361 option so that logs can come out without any headers at all.
4365 option so that logs can come out without any headers at all.
4362
4366
4363 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4367 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4364 SciPy.
4368 SciPy.
4365
4369
4366 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4370 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4367 that embedded IPython calls don't require vars() to be explicitly
4371 that embedded IPython calls don't require vars() to be explicitly
4368 passed. Now they are extracted from the caller's frame (code
4372 passed. Now they are extracted from the caller's frame (code
4369 snatched from Eric Jones' weave). Added better documentation to
4373 snatched from Eric Jones' weave). Added better documentation to
4370 the section on embedding and the example file.
4374 the section on embedding and the example file.
4371
4375
4372 * IPython/genutils.py (page): Changed so that under emacs, it just
4376 * IPython/genutils.py (page): Changed so that under emacs, it just
4373 prints the string. You can then page up and down in the emacs
4377 prints the string. You can then page up and down in the emacs
4374 buffer itself. This is how the builtin help() works.
4378 buffer itself. This is how the builtin help() works.
4375
4379
4376 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4380 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4377 macro scoping: macros need to be executed in the user's namespace
4381 macro scoping: macros need to be executed in the user's namespace
4378 to work as if they had been typed by the user.
4382 to work as if they had been typed by the user.
4379
4383
4380 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4384 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4381 execute automatically (no need to type 'exec...'). They then
4385 execute automatically (no need to type 'exec...'). They then
4382 behave like 'true macros'. The printing system was also modified
4386 behave like 'true macros'. The printing system was also modified
4383 for this to work.
4387 for this to work.
4384
4388
4385 2002-02-19 Fernando Perez <fperez@colorado.edu>
4389 2002-02-19 Fernando Perez <fperez@colorado.edu>
4386
4390
4387 * IPython/genutils.py (page_file): new function for paging files
4391 * IPython/genutils.py (page_file): new function for paging files
4388 in an OS-independent way. Also necessary for file viewing to work
4392 in an OS-independent way. Also necessary for file viewing to work
4389 well inside Emacs buffers.
4393 well inside Emacs buffers.
4390 (page): Added checks for being in an emacs buffer.
4394 (page): Added checks for being in an emacs buffer.
4391 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4395 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4392 same bug in iplib.
4396 same bug in iplib.
4393
4397
4394 2002-02-18 Fernando Perez <fperez@colorado.edu>
4398 2002-02-18 Fernando Perez <fperez@colorado.edu>
4395
4399
4396 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4400 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4397 of readline so that IPython can work inside an Emacs buffer.
4401 of readline so that IPython can work inside an Emacs buffer.
4398
4402
4399 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4403 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4400 method signatures (they weren't really bugs, but it looks cleaner
4404 method signatures (they weren't really bugs, but it looks cleaner
4401 and keeps PyChecker happy).
4405 and keeps PyChecker happy).
4402
4406
4403 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4407 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4404 for implementing various user-defined hooks. Currently only
4408 for implementing various user-defined hooks. Currently only
4405 display is done.
4409 display is done.
4406
4410
4407 * IPython/Prompts.py (CachedOutput._display): changed display
4411 * IPython/Prompts.py (CachedOutput._display): changed display
4408 functions so that they can be dynamically changed by users easily.
4412 functions so that they can be dynamically changed by users easily.
4409
4413
4410 * IPython/Extensions/numeric_formats.py (num_display): added an
4414 * IPython/Extensions/numeric_formats.py (num_display): added an
4411 extension for printing NumPy arrays in flexible manners. It
4415 extension for printing NumPy arrays in flexible manners. It
4412 doesn't do anything yet, but all the structure is in
4416 doesn't do anything yet, but all the structure is in
4413 place. Ultimately the plan is to implement output format control
4417 place. Ultimately the plan is to implement output format control
4414 like in Octave.
4418 like in Octave.
4415
4419
4416 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4420 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4417 methods are found at run-time by all the automatic machinery.
4421 methods are found at run-time by all the automatic machinery.
4418
4422
4419 2002-02-17 Fernando Perez <fperez@colorado.edu>
4423 2002-02-17 Fernando Perez <fperez@colorado.edu>
4420
4424
4421 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4425 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4422 whole file a little.
4426 whole file a little.
4423
4427
4424 * ToDo: closed this document. Now there's a new_design.lyx
4428 * ToDo: closed this document. Now there's a new_design.lyx
4425 document for all new ideas. Added making a pdf of it for the
4429 document for all new ideas. Added making a pdf of it for the
4426 end-user distro.
4430 end-user distro.
4427
4431
4428 * IPython/Logger.py (Logger.switch_log): Created this to replace
4432 * IPython/Logger.py (Logger.switch_log): Created this to replace
4429 logon() and logoff(). It also fixes a nasty crash reported by
4433 logon() and logoff(). It also fixes a nasty crash reported by
4430 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4434 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4431
4435
4432 * IPython/iplib.py (complete): got auto-completion to work with
4436 * IPython/iplib.py (complete): got auto-completion to work with
4433 automagic (I had wanted this for a long time).
4437 automagic (I had wanted this for a long time).
4434
4438
4435 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4439 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4436 to @file, since file() is now a builtin and clashes with automagic
4440 to @file, since file() is now a builtin and clashes with automagic
4437 for @file.
4441 for @file.
4438
4442
4439 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4443 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4440 of this was previously in iplib, which had grown to more than 2000
4444 of this was previously in iplib, which had grown to more than 2000
4441 lines, way too long. No new functionality, but it makes managing
4445 lines, way too long. No new functionality, but it makes managing
4442 the code a bit easier.
4446 the code a bit easier.
4443
4447
4444 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4448 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4445 information to crash reports.
4449 information to crash reports.
4446
4450
4447 2002-02-12 Fernando Perez <fperez@colorado.edu>
4451 2002-02-12 Fernando Perez <fperez@colorado.edu>
4448
4452
4449 * Released 0.2.5.
4453 * Released 0.2.5.
4450
4454
4451 2002-02-11 Fernando Perez <fperez@colorado.edu>
4455 2002-02-11 Fernando Perez <fperez@colorado.edu>
4452
4456
4453 * Wrote a relatively complete Windows installer. It puts
4457 * Wrote a relatively complete Windows installer. It puts
4454 everything in place, creates Start Menu entries and fixes the
4458 everything in place, creates Start Menu entries and fixes the
4455 color issues. Nothing fancy, but it works.
4459 color issues. Nothing fancy, but it works.
4456
4460
4457 2002-02-10 Fernando Perez <fperez@colorado.edu>
4461 2002-02-10 Fernando Perez <fperez@colorado.edu>
4458
4462
4459 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4463 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4460 os.path.expanduser() call so that we can type @run ~/myfile.py and
4464 os.path.expanduser() call so that we can type @run ~/myfile.py and
4461 have thigs work as expected.
4465 have thigs work as expected.
4462
4466
4463 * IPython/genutils.py (page): fixed exception handling so things
4467 * IPython/genutils.py (page): fixed exception handling so things
4464 work both in Unix and Windows correctly. Quitting a pager triggers
4468 work both in Unix and Windows correctly. Quitting a pager triggers
4465 an IOError/broken pipe in Unix, and in windows not finding a pager
4469 an IOError/broken pipe in Unix, and in windows not finding a pager
4466 is also an IOError, so I had to actually look at the return value
4470 is also an IOError, so I had to actually look at the return value
4467 of the exception, not just the exception itself. Should be ok now.
4471 of the exception, not just the exception itself. Should be ok now.
4468
4472
4469 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4473 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4470 modified to allow case-insensitive color scheme changes.
4474 modified to allow case-insensitive color scheme changes.
4471
4475
4472 2002-02-09 Fernando Perez <fperez@colorado.edu>
4476 2002-02-09 Fernando Perez <fperez@colorado.edu>
4473
4477
4474 * IPython/genutils.py (native_line_ends): new function to leave
4478 * IPython/genutils.py (native_line_ends): new function to leave
4475 user config files with os-native line-endings.
4479 user config files with os-native line-endings.
4476
4480
4477 * README and manual updates.
4481 * README and manual updates.
4478
4482
4479 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4483 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4480 instead of StringType to catch Unicode strings.
4484 instead of StringType to catch Unicode strings.
4481
4485
4482 * IPython/genutils.py (filefind): fixed bug for paths with
4486 * IPython/genutils.py (filefind): fixed bug for paths with
4483 embedded spaces (very common in Windows).
4487 embedded spaces (very common in Windows).
4484
4488
4485 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4489 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4486 files under Windows, so that they get automatically associated
4490 files under Windows, so that they get automatically associated
4487 with a text editor. Windows makes it a pain to handle
4491 with a text editor. Windows makes it a pain to handle
4488 extension-less files.
4492 extension-less files.
4489
4493
4490 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4494 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4491 warning about readline only occur for Posix. In Windows there's no
4495 warning about readline only occur for Posix. In Windows there's no
4492 way to get readline, so why bother with the warning.
4496 way to get readline, so why bother with the warning.
4493
4497
4494 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4498 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4495 for __str__ instead of dir(self), since dir() changed in 2.2.
4499 for __str__ instead of dir(self), since dir() changed in 2.2.
4496
4500
4497 * Ported to Windows! Tested on XP, I suspect it should work fine
4501 * Ported to Windows! Tested on XP, I suspect it should work fine
4498 on NT/2000, but I don't think it will work on 98 et al. That
4502 on NT/2000, but I don't think it will work on 98 et al. That
4499 series of Windows is such a piece of junk anyway that I won't try
4503 series of Windows is such a piece of junk anyway that I won't try
4500 porting it there. The XP port was straightforward, showed a few
4504 porting it there. The XP port was straightforward, showed a few
4501 bugs here and there (fixed all), in particular some string
4505 bugs here and there (fixed all), in particular some string
4502 handling stuff which required considering Unicode strings (which
4506 handling stuff which required considering Unicode strings (which
4503 Windows uses). This is good, but hasn't been too tested :) No
4507 Windows uses). This is good, but hasn't been too tested :) No
4504 fancy installer yet, I'll put a note in the manual so people at
4508 fancy installer yet, I'll put a note in the manual so people at
4505 least make manually a shortcut.
4509 least make manually a shortcut.
4506
4510
4507 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4511 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4508 into a single one, "colors". This now controls both prompt and
4512 into a single one, "colors". This now controls both prompt and
4509 exception color schemes, and can be changed both at startup
4513 exception color schemes, and can be changed both at startup
4510 (either via command-line switches or via ipythonrc files) and at
4514 (either via command-line switches or via ipythonrc files) and at
4511 runtime, with @colors.
4515 runtime, with @colors.
4512 (Magic.magic_run): renamed @prun to @run and removed the old
4516 (Magic.magic_run): renamed @prun to @run and removed the old
4513 @run. The two were too similar to warrant keeping both.
4517 @run. The two were too similar to warrant keeping both.
4514
4518
4515 2002-02-03 Fernando Perez <fperez@colorado.edu>
4519 2002-02-03 Fernando Perez <fperez@colorado.edu>
4516
4520
4517 * IPython/iplib.py (install_first_time): Added comment on how to
4521 * IPython/iplib.py (install_first_time): Added comment on how to
4518 configure the color options for first-time users. Put a <return>
4522 configure the color options for first-time users. Put a <return>
4519 request at the end so that small-terminal users get a chance to
4523 request at the end so that small-terminal users get a chance to
4520 read the startup info.
4524 read the startup info.
4521
4525
4522 2002-01-23 Fernando Perez <fperez@colorado.edu>
4526 2002-01-23 Fernando Perez <fperez@colorado.edu>
4523
4527
4524 * IPython/iplib.py (CachedOutput.update): Changed output memory
4528 * IPython/iplib.py (CachedOutput.update): Changed output memory
4525 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4529 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4526 input history we still use _i. Did this b/c these variable are
4530 input history we still use _i. Did this b/c these variable are
4527 very commonly used in interactive work, so the less we need to
4531 very commonly used in interactive work, so the less we need to
4528 type the better off we are.
4532 type the better off we are.
4529 (Magic.magic_prun): updated @prun to better handle the namespaces
4533 (Magic.magic_prun): updated @prun to better handle the namespaces
4530 the file will run in, including a fix for __name__ not being set
4534 the file will run in, including a fix for __name__ not being set
4531 before.
4535 before.
4532
4536
4533 2002-01-20 Fernando Perez <fperez@colorado.edu>
4537 2002-01-20 Fernando Perez <fperez@colorado.edu>
4534
4538
4535 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4539 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4536 extra garbage for Python 2.2. Need to look more carefully into
4540 extra garbage for Python 2.2. Need to look more carefully into
4537 this later.
4541 this later.
4538
4542
4539 2002-01-19 Fernando Perez <fperez@colorado.edu>
4543 2002-01-19 Fernando Perez <fperez@colorado.edu>
4540
4544
4541 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4545 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4542 display SyntaxError exceptions properly formatted when they occur
4546 display SyntaxError exceptions properly formatted when they occur
4543 (they can be triggered by imported code).
4547 (they can be triggered by imported code).
4544
4548
4545 2002-01-18 Fernando Perez <fperez@colorado.edu>
4549 2002-01-18 Fernando Perez <fperez@colorado.edu>
4546
4550
4547 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4551 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4548 SyntaxError exceptions are reported nicely formatted, instead of
4552 SyntaxError exceptions are reported nicely formatted, instead of
4549 spitting out only offset information as before.
4553 spitting out only offset information as before.
4550 (Magic.magic_prun): Added the @prun function for executing
4554 (Magic.magic_prun): Added the @prun function for executing
4551 programs with command line args inside IPython.
4555 programs with command line args inside IPython.
4552
4556
4553 2002-01-16 Fernando Perez <fperez@colorado.edu>
4557 2002-01-16 Fernando Perez <fperez@colorado.edu>
4554
4558
4555 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4559 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4556 to *not* include the last item given in a range. This brings their
4560 to *not* include the last item given in a range. This brings their
4557 behavior in line with Python's slicing:
4561 behavior in line with Python's slicing:
4558 a[n1:n2] -> a[n1]...a[n2-1]
4562 a[n1:n2] -> a[n1]...a[n2-1]
4559 It may be a bit less convenient, but I prefer to stick to Python's
4563 It may be a bit less convenient, but I prefer to stick to Python's
4560 conventions *everywhere*, so users never have to wonder.
4564 conventions *everywhere*, so users never have to wonder.
4561 (Magic.magic_macro): Added @macro function to ease the creation of
4565 (Magic.magic_macro): Added @macro function to ease the creation of
4562 macros.
4566 macros.
4563
4567
4564 2002-01-05 Fernando Perez <fperez@colorado.edu>
4568 2002-01-05 Fernando Perez <fperez@colorado.edu>
4565
4569
4566 * Released 0.2.4.
4570 * Released 0.2.4.
4567
4571
4568 * IPython/iplib.py (Magic.magic_pdef):
4572 * IPython/iplib.py (Magic.magic_pdef):
4569 (InteractiveShell.safe_execfile): report magic lines and error
4573 (InteractiveShell.safe_execfile): report magic lines and error
4570 lines without line numbers so one can easily copy/paste them for
4574 lines without line numbers so one can easily copy/paste them for
4571 re-execution.
4575 re-execution.
4572
4576
4573 * Updated manual with recent changes.
4577 * Updated manual with recent changes.
4574
4578
4575 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4579 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4576 docstring printing when class? is called. Very handy for knowing
4580 docstring printing when class? is called. Very handy for knowing
4577 how to create class instances (as long as __init__ is well
4581 how to create class instances (as long as __init__ is well
4578 documented, of course :)
4582 documented, of course :)
4579 (Magic.magic_doc): print both class and constructor docstrings.
4583 (Magic.magic_doc): print both class and constructor docstrings.
4580 (Magic.magic_pdef): give constructor info if passed a class and
4584 (Magic.magic_pdef): give constructor info if passed a class and
4581 __call__ info for callable object instances.
4585 __call__ info for callable object instances.
4582
4586
4583 2002-01-04 Fernando Perez <fperez@colorado.edu>
4587 2002-01-04 Fernando Perez <fperez@colorado.edu>
4584
4588
4585 * Made deep_reload() off by default. It doesn't always work
4589 * Made deep_reload() off by default. It doesn't always work
4586 exactly as intended, so it's probably safer to have it off. It's
4590 exactly as intended, so it's probably safer to have it off. It's
4587 still available as dreload() anyway, so nothing is lost.
4591 still available as dreload() anyway, so nothing is lost.
4588
4592
4589 2002-01-02 Fernando Perez <fperez@colorado.edu>
4593 2002-01-02 Fernando Perez <fperez@colorado.edu>
4590
4594
4591 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4595 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4592 so I wanted an updated release).
4596 so I wanted an updated release).
4593
4597
4594 2001-12-27 Fernando Perez <fperez@colorado.edu>
4598 2001-12-27 Fernando Perez <fperez@colorado.edu>
4595
4599
4596 * IPython/iplib.py (InteractiveShell.interact): Added the original
4600 * IPython/iplib.py (InteractiveShell.interact): Added the original
4597 code from 'code.py' for this module in order to change the
4601 code from 'code.py' for this module in order to change the
4598 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4602 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4599 the history cache would break when the user hit Ctrl-C, and
4603 the history cache would break when the user hit Ctrl-C, and
4600 interact() offers no way to add any hooks to it.
4604 interact() offers no way to add any hooks to it.
4601
4605
4602 2001-12-23 Fernando Perez <fperez@colorado.edu>
4606 2001-12-23 Fernando Perez <fperez@colorado.edu>
4603
4607
4604 * setup.py: added check for 'MANIFEST' before trying to remove
4608 * setup.py: added check for 'MANIFEST' before trying to remove
4605 it. Thanks to Sean Reifschneider.
4609 it. Thanks to Sean Reifschneider.
4606
4610
4607 2001-12-22 Fernando Perez <fperez@colorado.edu>
4611 2001-12-22 Fernando Perez <fperez@colorado.edu>
4608
4612
4609 * Released 0.2.2.
4613 * Released 0.2.2.
4610
4614
4611 * Finished (reasonably) writing the manual. Later will add the
4615 * Finished (reasonably) writing the manual. Later will add the
4612 python-standard navigation stylesheets, but for the time being
4616 python-standard navigation stylesheets, but for the time being
4613 it's fairly complete. Distribution will include html and pdf
4617 it's fairly complete. Distribution will include html and pdf
4614 versions.
4618 versions.
4615
4619
4616 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4620 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4617 (MayaVi author).
4621 (MayaVi author).
4618
4622
4619 2001-12-21 Fernando Perez <fperez@colorado.edu>
4623 2001-12-21 Fernando Perez <fperez@colorado.edu>
4620
4624
4621 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4625 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4622 good public release, I think (with the manual and the distutils
4626 good public release, I think (with the manual and the distutils
4623 installer). The manual can use some work, but that can go
4627 installer). The manual can use some work, but that can go
4624 slowly. Otherwise I think it's quite nice for end users. Next
4628 slowly. Otherwise I think it's quite nice for end users. Next
4625 summer, rewrite the guts of it...
4629 summer, rewrite the guts of it...
4626
4630
4627 * Changed format of ipythonrc files to use whitespace as the
4631 * Changed format of ipythonrc files to use whitespace as the
4628 separator instead of an explicit '='. Cleaner.
4632 separator instead of an explicit '='. Cleaner.
4629
4633
4630 2001-12-20 Fernando Perez <fperez@colorado.edu>
4634 2001-12-20 Fernando Perez <fperez@colorado.edu>
4631
4635
4632 * Started a manual in LyX. For now it's just a quick merge of the
4636 * Started a manual in LyX. For now it's just a quick merge of the
4633 various internal docstrings and READMEs. Later it may grow into a
4637 various internal docstrings and READMEs. Later it may grow into a
4634 nice, full-blown manual.
4638 nice, full-blown manual.
4635
4639
4636 * Set up a distutils based installer. Installation should now be
4640 * Set up a distutils based installer. Installation should now be
4637 trivially simple for end-users.
4641 trivially simple for end-users.
4638
4642
4639 2001-12-11 Fernando Perez <fperez@colorado.edu>
4643 2001-12-11 Fernando Perez <fperez@colorado.edu>
4640
4644
4641 * Released 0.2.0. First public release, announced it at
4645 * Released 0.2.0. First public release, announced it at
4642 comp.lang.python. From now on, just bugfixes...
4646 comp.lang.python. From now on, just bugfixes...
4643
4647
4644 * Went through all the files, set copyright/license notices and
4648 * Went through all the files, set copyright/license notices and
4645 cleaned up things. Ready for release.
4649 cleaned up things. Ready for release.
4646
4650
4647 2001-12-10 Fernando Perez <fperez@colorado.edu>
4651 2001-12-10 Fernando Perez <fperez@colorado.edu>
4648
4652
4649 * Changed the first-time installer not to use tarfiles. It's more
4653 * Changed the first-time installer not to use tarfiles. It's more
4650 robust now and less unix-dependent. Also makes it easier for
4654 robust now and less unix-dependent. Also makes it easier for
4651 people to later upgrade versions.
4655 people to later upgrade versions.
4652
4656
4653 * Changed @exit to @abort to reflect the fact that it's pretty
4657 * Changed @exit to @abort to reflect the fact that it's pretty
4654 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4658 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4655 becomes significant only when IPyhton is embedded: in that case,
4659 becomes significant only when IPyhton is embedded: in that case,
4656 C-D closes IPython only, but @abort kills the enclosing program
4660 C-D closes IPython only, but @abort kills the enclosing program
4657 too (unless it had called IPython inside a try catching
4661 too (unless it had called IPython inside a try catching
4658 SystemExit).
4662 SystemExit).
4659
4663
4660 * Created Shell module which exposes the actuall IPython Shell
4664 * Created Shell module which exposes the actuall IPython Shell
4661 classes, currently the normal and the embeddable one. This at
4665 classes, currently the normal and the embeddable one. This at
4662 least offers a stable interface we won't need to change when
4666 least offers a stable interface we won't need to change when
4663 (later) the internals are rewritten. That rewrite will be confined
4667 (later) the internals are rewritten. That rewrite will be confined
4664 to iplib and ipmaker, but the Shell interface should remain as is.
4668 to iplib and ipmaker, but the Shell interface should remain as is.
4665
4669
4666 * Added embed module which offers an embeddable IPShell object,
4670 * Added embed module which offers an embeddable IPShell object,
4667 useful to fire up IPython *inside* a running program. Great for
4671 useful to fire up IPython *inside* a running program. Great for
4668 debugging or dynamical data analysis.
4672 debugging or dynamical data analysis.
4669
4673
4670 2001-12-08 Fernando Perez <fperez@colorado.edu>
4674 2001-12-08 Fernando Perez <fperez@colorado.edu>
4671
4675
4672 * Fixed small bug preventing seeing info from methods of defined
4676 * Fixed small bug preventing seeing info from methods of defined
4673 objects (incorrect namespace in _ofind()).
4677 objects (incorrect namespace in _ofind()).
4674
4678
4675 * Documentation cleanup. Moved the main usage docstrings to a
4679 * Documentation cleanup. Moved the main usage docstrings to a
4676 separate file, usage.py (cleaner to maintain, and hopefully in the
4680 separate file, usage.py (cleaner to maintain, and hopefully in the
4677 future some perlpod-like way of producing interactive, man and
4681 future some perlpod-like way of producing interactive, man and
4678 html docs out of it will be found).
4682 html docs out of it will be found).
4679
4683
4680 * Added @profile to see your profile at any time.
4684 * Added @profile to see your profile at any time.
4681
4685
4682 * Added @p as an alias for 'print'. It's especially convenient if
4686 * Added @p as an alias for 'print'. It's especially convenient if
4683 using automagic ('p x' prints x).
4687 using automagic ('p x' prints x).
4684
4688
4685 * Small cleanups and fixes after a pychecker run.
4689 * Small cleanups and fixes after a pychecker run.
4686
4690
4687 * Changed the @cd command to handle @cd - and @cd -<n> for
4691 * Changed the @cd command to handle @cd - and @cd -<n> for
4688 visiting any directory in _dh.
4692 visiting any directory in _dh.
4689
4693
4690 * Introduced _dh, a history of visited directories. @dhist prints
4694 * Introduced _dh, a history of visited directories. @dhist prints
4691 it out with numbers.
4695 it out with numbers.
4692
4696
4693 2001-12-07 Fernando Perez <fperez@colorado.edu>
4697 2001-12-07 Fernando Perez <fperez@colorado.edu>
4694
4698
4695 * Released 0.1.22
4699 * Released 0.1.22
4696
4700
4697 * Made initialization a bit more robust against invalid color
4701 * Made initialization a bit more robust against invalid color
4698 options in user input (exit, not traceback-crash).
4702 options in user input (exit, not traceback-crash).
4699
4703
4700 * Changed the bug crash reporter to write the report only in the
4704 * Changed the bug crash reporter to write the report only in the
4701 user's .ipython directory. That way IPython won't litter people's
4705 user's .ipython directory. That way IPython won't litter people's
4702 hard disks with crash files all over the place. Also print on
4706 hard disks with crash files all over the place. Also print on
4703 screen the necessary mail command.
4707 screen the necessary mail command.
4704
4708
4705 * With the new ultraTB, implemented LightBG color scheme for light
4709 * With the new ultraTB, implemented LightBG color scheme for light
4706 background terminals. A lot of people like white backgrounds, so I
4710 background terminals. A lot of people like white backgrounds, so I
4707 guess we should at least give them something readable.
4711 guess we should at least give them something readable.
4708
4712
4709 2001-12-06 Fernando Perez <fperez@colorado.edu>
4713 2001-12-06 Fernando Perez <fperez@colorado.edu>
4710
4714
4711 * Modified the structure of ultraTB. Now there's a proper class
4715 * Modified the structure of ultraTB. Now there's a proper class
4712 for tables of color schemes which allow adding schemes easily and
4716 for tables of color schemes which allow adding schemes easily and
4713 switching the active scheme without creating a new instance every
4717 switching the active scheme without creating a new instance every
4714 time (which was ridiculous). The syntax for creating new schemes
4718 time (which was ridiculous). The syntax for creating new schemes
4715 is also cleaner. I think ultraTB is finally done, with a clean
4719 is also cleaner. I think ultraTB is finally done, with a clean
4716 class structure. Names are also much cleaner (now there's proper
4720 class structure. Names are also much cleaner (now there's proper
4717 color tables, no need for every variable to also have 'color' in
4721 color tables, no need for every variable to also have 'color' in
4718 its name).
4722 its name).
4719
4723
4720 * Broke down genutils into separate files. Now genutils only
4724 * Broke down genutils into separate files. Now genutils only
4721 contains utility functions, and classes have been moved to their
4725 contains utility functions, and classes have been moved to their
4722 own files (they had enough independent functionality to warrant
4726 own files (they had enough independent functionality to warrant
4723 it): ConfigLoader, OutputTrap, Struct.
4727 it): ConfigLoader, OutputTrap, Struct.
4724
4728
4725 2001-12-05 Fernando Perez <fperez@colorado.edu>
4729 2001-12-05 Fernando Perez <fperez@colorado.edu>
4726
4730
4727 * IPython turns 21! Released version 0.1.21, as a candidate for
4731 * IPython turns 21! Released version 0.1.21, as a candidate for
4728 public consumption. If all goes well, release in a few days.
4732 public consumption. If all goes well, release in a few days.
4729
4733
4730 * Fixed path bug (files in Extensions/ directory wouldn't be found
4734 * Fixed path bug (files in Extensions/ directory wouldn't be found
4731 unless IPython/ was explicitly in sys.path).
4735 unless IPython/ was explicitly in sys.path).
4732
4736
4733 * Extended the FlexCompleter class as MagicCompleter to allow
4737 * Extended the FlexCompleter class as MagicCompleter to allow
4734 completion of @-starting lines.
4738 completion of @-starting lines.
4735
4739
4736 * Created __release__.py file as a central repository for release
4740 * Created __release__.py file as a central repository for release
4737 info that other files can read from.
4741 info that other files can read from.
4738
4742
4739 * Fixed small bug in logging: when logging was turned on in
4743 * Fixed small bug in logging: when logging was turned on in
4740 mid-session, old lines with special meanings (!@?) were being
4744 mid-session, old lines with special meanings (!@?) were being
4741 logged without the prepended comment, which is necessary since
4745 logged without the prepended comment, which is necessary since
4742 they are not truly valid python syntax. This should make session
4746 they are not truly valid python syntax. This should make session
4743 restores produce less errors.
4747 restores produce less errors.
4744
4748
4745 * The namespace cleanup forced me to make a FlexCompleter class
4749 * The namespace cleanup forced me to make a FlexCompleter class
4746 which is nothing but a ripoff of rlcompleter, but with selectable
4750 which is nothing but a ripoff of rlcompleter, but with selectable
4747 namespace (rlcompleter only works in __main__.__dict__). I'll try
4751 namespace (rlcompleter only works in __main__.__dict__). I'll try
4748 to submit a note to the authors to see if this change can be
4752 to submit a note to the authors to see if this change can be
4749 incorporated in future rlcompleter releases (Dec.6: done)
4753 incorporated in future rlcompleter releases (Dec.6: done)
4750
4754
4751 * More fixes to namespace handling. It was a mess! Now all
4755 * More fixes to namespace handling. It was a mess! Now all
4752 explicit references to __main__.__dict__ are gone (except when
4756 explicit references to __main__.__dict__ are gone (except when
4753 really needed) and everything is handled through the namespace
4757 really needed) and everything is handled through the namespace
4754 dicts in the IPython instance. We seem to be getting somewhere
4758 dicts in the IPython instance. We seem to be getting somewhere
4755 with this, finally...
4759 with this, finally...
4756
4760
4757 * Small documentation updates.
4761 * Small documentation updates.
4758
4762
4759 * Created the Extensions directory under IPython (with an
4763 * Created the Extensions directory under IPython (with an
4760 __init__.py). Put the PhysicalQ stuff there. This directory should
4764 __init__.py). Put the PhysicalQ stuff there. This directory should
4761 be used for all special-purpose extensions.
4765 be used for all special-purpose extensions.
4762
4766
4763 * File renaming:
4767 * File renaming:
4764 ipythonlib --> ipmaker
4768 ipythonlib --> ipmaker
4765 ipplib --> iplib
4769 ipplib --> iplib
4766 This makes a bit more sense in terms of what these files actually do.
4770 This makes a bit more sense in terms of what these files actually do.
4767
4771
4768 * Moved all the classes and functions in ipythonlib to ipplib, so
4772 * Moved all the classes and functions in ipythonlib to ipplib, so
4769 now ipythonlib only has make_IPython(). This will ease up its
4773 now ipythonlib only has make_IPython(). This will ease up its
4770 splitting in smaller functional chunks later.
4774 splitting in smaller functional chunks later.
4771
4775
4772 * Cleaned up (done, I think) output of @whos. Better column
4776 * Cleaned up (done, I think) output of @whos. Better column
4773 formatting, and now shows str(var) for as much as it can, which is
4777 formatting, and now shows str(var) for as much as it can, which is
4774 typically what one gets with a 'print var'.
4778 typically what one gets with a 'print var'.
4775
4779
4776 2001-12-04 Fernando Perez <fperez@colorado.edu>
4780 2001-12-04 Fernando Perez <fperez@colorado.edu>
4777
4781
4778 * Fixed namespace problems. Now builtin/IPyhton/user names get
4782 * Fixed namespace problems. Now builtin/IPyhton/user names get
4779 properly reported in their namespace. Internal namespace handling
4783 properly reported in their namespace. Internal namespace handling
4780 is finally getting decent (not perfect yet, but much better than
4784 is finally getting decent (not perfect yet, but much better than
4781 the ad-hoc mess we had).
4785 the ad-hoc mess we had).
4782
4786
4783 * Removed -exit option. If people just want to run a python
4787 * Removed -exit option. If people just want to run a python
4784 script, that's what the normal interpreter is for. Less
4788 script, that's what the normal interpreter is for. Less
4785 unnecessary options, less chances for bugs.
4789 unnecessary options, less chances for bugs.
4786
4790
4787 * Added a crash handler which generates a complete post-mortem if
4791 * Added a crash handler which generates a complete post-mortem if
4788 IPython crashes. This will help a lot in tracking bugs down the
4792 IPython crashes. This will help a lot in tracking bugs down the
4789 road.
4793 road.
4790
4794
4791 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4795 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4792 which were boud to functions being reassigned would bypass the
4796 which were boud to functions being reassigned would bypass the
4793 logger, breaking the sync of _il with the prompt counter. This
4797 logger, breaking the sync of _il with the prompt counter. This
4794 would then crash IPython later when a new line was logged.
4798 would then crash IPython later when a new line was logged.
4795
4799
4796 2001-12-02 Fernando Perez <fperez@colorado.edu>
4800 2001-12-02 Fernando Perez <fperez@colorado.edu>
4797
4801
4798 * Made IPython a package. This means people don't have to clutter
4802 * Made IPython a package. This means people don't have to clutter
4799 their sys.path with yet another directory. Changed the INSTALL
4803 their sys.path with yet another directory. Changed the INSTALL
4800 file accordingly.
4804 file accordingly.
4801
4805
4802 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4806 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4803 sorts its output (so @who shows it sorted) and @whos formats the
4807 sorts its output (so @who shows it sorted) and @whos formats the
4804 table according to the width of the first column. Nicer, easier to
4808 table according to the width of the first column. Nicer, easier to
4805 read. Todo: write a generic table_format() which takes a list of
4809 read. Todo: write a generic table_format() which takes a list of
4806 lists and prints it nicely formatted, with optional row/column
4810 lists and prints it nicely formatted, with optional row/column
4807 separators and proper padding and justification.
4811 separators and proper padding and justification.
4808
4812
4809 * Released 0.1.20
4813 * Released 0.1.20
4810
4814
4811 * Fixed bug in @log which would reverse the inputcache list (a
4815 * Fixed bug in @log which would reverse the inputcache list (a
4812 copy operation was missing).
4816 copy operation was missing).
4813
4817
4814 * Code cleanup. @config was changed to use page(). Better, since
4818 * Code cleanup. @config was changed to use page(). Better, since
4815 its output is always quite long.
4819 its output is always quite long.
4816
4820
4817 * Itpl is back as a dependency. I was having too many problems
4821 * Itpl is back as a dependency. I was having too many problems
4818 getting the parametric aliases to work reliably, and it's just
4822 getting the parametric aliases to work reliably, and it's just
4819 easier to code weird string operations with it than playing %()s
4823 easier to code weird string operations with it than playing %()s
4820 games. It's only ~6k, so I don't think it's too big a deal.
4824 games. It's only ~6k, so I don't think it's too big a deal.
4821
4825
4822 * Found (and fixed) a very nasty bug with history. !lines weren't
4826 * Found (and fixed) a very nasty bug with history. !lines weren't
4823 getting cached, and the out of sync caches would crash
4827 getting cached, and the out of sync caches would crash
4824 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4828 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4825 division of labor a bit better. Bug fixed, cleaner structure.
4829 division of labor a bit better. Bug fixed, cleaner structure.
4826
4830
4827 2001-12-01 Fernando Perez <fperez@colorado.edu>
4831 2001-12-01 Fernando Perez <fperez@colorado.edu>
4828
4832
4829 * Released 0.1.19
4833 * Released 0.1.19
4830
4834
4831 * Added option -n to @hist to prevent line number printing. Much
4835 * Added option -n to @hist to prevent line number printing. Much
4832 easier to copy/paste code this way.
4836 easier to copy/paste code this way.
4833
4837
4834 * Created global _il to hold the input list. Allows easy
4838 * Created global _il to hold the input list. Allows easy
4835 re-execution of blocks of code by slicing it (inspired by Janko's
4839 re-execution of blocks of code by slicing it (inspired by Janko's
4836 comment on 'macros').
4840 comment on 'macros').
4837
4841
4838 * Small fixes and doc updates.
4842 * Small fixes and doc updates.
4839
4843
4840 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4844 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4841 much too fragile with automagic. Handles properly multi-line
4845 much too fragile with automagic. Handles properly multi-line
4842 statements and takes parameters.
4846 statements and takes parameters.
4843
4847
4844 2001-11-30 Fernando Perez <fperez@colorado.edu>
4848 2001-11-30 Fernando Perez <fperez@colorado.edu>
4845
4849
4846 * Version 0.1.18 released.
4850 * Version 0.1.18 released.
4847
4851
4848 * Fixed nasty namespace bug in initial module imports.
4852 * Fixed nasty namespace bug in initial module imports.
4849
4853
4850 * Added copyright/license notes to all code files (except
4854 * Added copyright/license notes to all code files (except
4851 DPyGetOpt). For the time being, LGPL. That could change.
4855 DPyGetOpt). For the time being, LGPL. That could change.
4852
4856
4853 * Rewrote a much nicer README, updated INSTALL, cleaned up
4857 * Rewrote a much nicer README, updated INSTALL, cleaned up
4854 ipythonrc-* samples.
4858 ipythonrc-* samples.
4855
4859
4856 * Overall code/documentation cleanup. Basically ready for
4860 * Overall code/documentation cleanup. Basically ready for
4857 release. Only remaining thing: licence decision (LGPL?).
4861 release. Only remaining thing: licence decision (LGPL?).
4858
4862
4859 * Converted load_config to a class, ConfigLoader. Now recursion
4863 * Converted load_config to a class, ConfigLoader. Now recursion
4860 control is better organized. Doesn't include the same file twice.
4864 control is better organized. Doesn't include the same file twice.
4861
4865
4862 2001-11-29 Fernando Perez <fperez@colorado.edu>
4866 2001-11-29 Fernando Perez <fperez@colorado.edu>
4863
4867
4864 * Got input history working. Changed output history variables from
4868 * Got input history working. Changed output history variables from
4865 _p to _o so that _i is for input and _o for output. Just cleaner
4869 _p to _o so that _i is for input and _o for output. Just cleaner
4866 convention.
4870 convention.
4867
4871
4868 * Implemented parametric aliases. This pretty much allows the
4872 * Implemented parametric aliases. This pretty much allows the
4869 alias system to offer full-blown shell convenience, I think.
4873 alias system to offer full-blown shell convenience, I think.
4870
4874
4871 * Version 0.1.17 released, 0.1.18 opened.
4875 * Version 0.1.17 released, 0.1.18 opened.
4872
4876
4873 * dot_ipython/ipythonrc (alias): added documentation.
4877 * dot_ipython/ipythonrc (alias): added documentation.
4874 (xcolor): Fixed small bug (xcolors -> xcolor)
4878 (xcolor): Fixed small bug (xcolors -> xcolor)
4875
4879
4876 * Changed the alias system. Now alias is a magic command to define
4880 * Changed the alias system. Now alias is a magic command to define
4877 aliases just like the shell. Rationale: the builtin magics should
4881 aliases just like the shell. Rationale: the builtin magics should
4878 be there for things deeply connected to IPython's
4882 be there for things deeply connected to IPython's
4879 architecture. And this is a much lighter system for what I think
4883 architecture. And this is a much lighter system for what I think
4880 is the really important feature: allowing users to define quickly
4884 is the really important feature: allowing users to define quickly
4881 magics that will do shell things for them, so they can customize
4885 magics that will do shell things for them, so they can customize
4882 IPython easily to match their work habits. If someone is really
4886 IPython easily to match their work habits. If someone is really
4883 desperate to have another name for a builtin alias, they can
4887 desperate to have another name for a builtin alias, they can
4884 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4888 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4885 works.
4889 works.
4886
4890
4887 2001-11-28 Fernando Perez <fperez@colorado.edu>
4891 2001-11-28 Fernando Perez <fperez@colorado.edu>
4888
4892
4889 * Changed @file so that it opens the source file at the proper
4893 * Changed @file so that it opens the source file at the proper
4890 line. Since it uses less, if your EDITOR environment is
4894 line. Since it uses less, if your EDITOR environment is
4891 configured, typing v will immediately open your editor of choice
4895 configured, typing v will immediately open your editor of choice
4892 right at the line where the object is defined. Not as quick as
4896 right at the line where the object is defined. Not as quick as
4893 having a direct @edit command, but for all intents and purposes it
4897 having a direct @edit command, but for all intents and purposes it
4894 works. And I don't have to worry about writing @edit to deal with
4898 works. And I don't have to worry about writing @edit to deal with
4895 all the editors, less does that.
4899 all the editors, less does that.
4896
4900
4897 * Version 0.1.16 released, 0.1.17 opened.
4901 * Version 0.1.16 released, 0.1.17 opened.
4898
4902
4899 * Fixed some nasty bugs in the page/page_dumb combo that could
4903 * Fixed some nasty bugs in the page/page_dumb combo that could
4900 crash IPython.
4904 crash IPython.
4901
4905
4902 2001-11-27 Fernando Perez <fperez@colorado.edu>
4906 2001-11-27 Fernando Perez <fperez@colorado.edu>
4903
4907
4904 * Version 0.1.15 released, 0.1.16 opened.
4908 * Version 0.1.15 released, 0.1.16 opened.
4905
4909
4906 * Finally got ? and ?? to work for undefined things: now it's
4910 * Finally got ? and ?? to work for undefined things: now it's
4907 possible to type {}.get? and get information about the get method
4911 possible to type {}.get? and get information about the get method
4908 of dicts, or os.path? even if only os is defined (so technically
4912 of dicts, or os.path? even if only os is defined (so technically
4909 os.path isn't). Works at any level. For example, after import os,
4913 os.path isn't). Works at any level. For example, after import os,
4910 os?, os.path?, os.path.abspath? all work. This is great, took some
4914 os?, os.path?, os.path.abspath? all work. This is great, took some
4911 work in _ofind.
4915 work in _ofind.
4912
4916
4913 * Fixed more bugs with logging. The sanest way to do it was to add
4917 * Fixed more bugs with logging. The sanest way to do it was to add
4914 to @log a 'mode' parameter. Killed two in one shot (this mode
4918 to @log a 'mode' parameter. Killed two in one shot (this mode
4915 option was a request of Janko's). I think it's finally clean
4919 option was a request of Janko's). I think it's finally clean
4916 (famous last words).
4920 (famous last words).
4917
4921
4918 * Added a page_dumb() pager which does a decent job of paging on
4922 * Added a page_dumb() pager which does a decent job of paging on
4919 screen, if better things (like less) aren't available. One less
4923 screen, if better things (like less) aren't available. One less
4920 unix dependency (someday maybe somebody will port this to
4924 unix dependency (someday maybe somebody will port this to
4921 windows).
4925 windows).
4922
4926
4923 * Fixed problem in magic_log: would lock of logging out if log
4927 * Fixed problem in magic_log: would lock of logging out if log
4924 creation failed (because it would still think it had succeeded).
4928 creation failed (because it would still think it had succeeded).
4925
4929
4926 * Improved the page() function using curses to auto-detect screen
4930 * Improved the page() function using curses to auto-detect screen
4927 size. Now it can make a much better decision on whether to print
4931 size. Now it can make a much better decision on whether to print
4928 or page a string. Option screen_length was modified: a value 0
4932 or page a string. Option screen_length was modified: a value 0
4929 means auto-detect, and that's the default now.
4933 means auto-detect, and that's the default now.
4930
4934
4931 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4935 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4932 go out. I'll test it for a few days, then talk to Janko about
4936 go out. I'll test it for a few days, then talk to Janko about
4933 licences and announce it.
4937 licences and announce it.
4934
4938
4935 * Fixed the length of the auto-generated ---> prompt which appears
4939 * Fixed the length of the auto-generated ---> prompt which appears
4936 for auto-parens and auto-quotes. Getting this right isn't trivial,
4940 for auto-parens and auto-quotes. Getting this right isn't trivial,
4937 with all the color escapes, different prompt types and optional
4941 with all the color escapes, different prompt types and optional
4938 separators. But it seems to be working in all the combinations.
4942 separators. But it seems to be working in all the combinations.
4939
4943
4940 2001-11-26 Fernando Perez <fperez@colorado.edu>
4944 2001-11-26 Fernando Perez <fperez@colorado.edu>
4941
4945
4942 * Wrote a regexp filter to get option types from the option names
4946 * Wrote a regexp filter to get option types from the option names
4943 string. This eliminates the need to manually keep two duplicate
4947 string. This eliminates the need to manually keep two duplicate
4944 lists.
4948 lists.
4945
4949
4946 * Removed the unneeded check_option_names. Now options are handled
4950 * Removed the unneeded check_option_names. Now options are handled
4947 in a much saner manner and it's easy to visually check that things
4951 in a much saner manner and it's easy to visually check that things
4948 are ok.
4952 are ok.
4949
4953
4950 * Updated version numbers on all files I modified to carry a
4954 * Updated version numbers on all files I modified to carry a
4951 notice so Janko and Nathan have clear version markers.
4955 notice so Janko and Nathan have clear version markers.
4952
4956
4953 * Updated docstring for ultraTB with my changes. I should send
4957 * Updated docstring for ultraTB with my changes. I should send
4954 this to Nathan.
4958 this to Nathan.
4955
4959
4956 * Lots of small fixes. Ran everything through pychecker again.
4960 * Lots of small fixes. Ran everything through pychecker again.
4957
4961
4958 * Made loading of deep_reload an cmd line option. If it's not too
4962 * Made loading of deep_reload an cmd line option. If it's not too
4959 kosher, now people can just disable it. With -nodeep_reload it's
4963 kosher, now people can just disable it. With -nodeep_reload it's
4960 still available as dreload(), it just won't overwrite reload().
4964 still available as dreload(), it just won't overwrite reload().
4961
4965
4962 * Moved many options to the no| form (-opt and -noopt
4966 * Moved many options to the no| form (-opt and -noopt
4963 accepted). Cleaner.
4967 accepted). Cleaner.
4964
4968
4965 * Changed magic_log so that if called with no parameters, it uses
4969 * Changed magic_log so that if called with no parameters, it uses
4966 'rotate' mode. That way auto-generated logs aren't automatically
4970 'rotate' mode. That way auto-generated logs aren't automatically
4967 over-written. For normal logs, now a backup is made if it exists
4971 over-written. For normal logs, now a backup is made if it exists
4968 (only 1 level of backups). A new 'backup' mode was added to the
4972 (only 1 level of backups). A new 'backup' mode was added to the
4969 Logger class to support this. This was a request by Janko.
4973 Logger class to support this. This was a request by Janko.
4970
4974
4971 * Added @logoff/@logon to stop/restart an active log.
4975 * Added @logoff/@logon to stop/restart an active log.
4972
4976
4973 * Fixed a lot of bugs in log saving/replay. It was pretty
4977 * Fixed a lot of bugs in log saving/replay. It was pretty
4974 broken. Now special lines (!@,/) appear properly in the command
4978 broken. Now special lines (!@,/) appear properly in the command
4975 history after a log replay.
4979 history after a log replay.
4976
4980
4977 * Tried and failed to implement full session saving via pickle. My
4981 * Tried and failed to implement full session saving via pickle. My
4978 idea was to pickle __main__.__dict__, but modules can't be
4982 idea was to pickle __main__.__dict__, but modules can't be
4979 pickled. This would be a better alternative to replaying logs, but
4983 pickled. This would be a better alternative to replaying logs, but
4980 seems quite tricky to get to work. Changed -session to be called
4984 seems quite tricky to get to work. Changed -session to be called
4981 -logplay, which more accurately reflects what it does. And if we
4985 -logplay, which more accurately reflects what it does. And if we
4982 ever get real session saving working, -session is now available.
4986 ever get real session saving working, -session is now available.
4983
4987
4984 * Implemented color schemes for prompts also. As for tracebacks,
4988 * Implemented color schemes for prompts also. As for tracebacks,
4985 currently only NoColor and Linux are supported. But now the
4989 currently only NoColor and Linux are supported. But now the
4986 infrastructure is in place, based on a generic ColorScheme
4990 infrastructure is in place, based on a generic ColorScheme
4987 class. So writing and activating new schemes both for the prompts
4991 class. So writing and activating new schemes both for the prompts
4988 and the tracebacks should be straightforward.
4992 and the tracebacks should be straightforward.
4989
4993
4990 * Version 0.1.13 released, 0.1.14 opened.
4994 * Version 0.1.13 released, 0.1.14 opened.
4991
4995
4992 * Changed handling of options for output cache. Now counter is
4996 * Changed handling of options for output cache. Now counter is
4993 hardwired starting at 1 and one specifies the maximum number of
4997 hardwired starting at 1 and one specifies the maximum number of
4994 entries *in the outcache* (not the max prompt counter). This is
4998 entries *in the outcache* (not the max prompt counter). This is
4995 much better, since many statements won't increase the cache
4999 much better, since many statements won't increase the cache
4996 count. It also eliminated some confusing options, now there's only
5000 count. It also eliminated some confusing options, now there's only
4997 one: cache_size.
5001 one: cache_size.
4998
5002
4999 * Added 'alias' magic function and magic_alias option in the
5003 * Added 'alias' magic function and magic_alias option in the
5000 ipythonrc file. Now the user can easily define whatever names he
5004 ipythonrc file. Now the user can easily define whatever names he
5001 wants for the magic functions without having to play weird
5005 wants for the magic functions without having to play weird
5002 namespace games. This gives IPython a real shell-like feel.
5006 namespace games. This gives IPython a real shell-like feel.
5003
5007
5004 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5008 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5005 @ or not).
5009 @ or not).
5006
5010
5007 This was one of the last remaining 'visible' bugs (that I know
5011 This was one of the last remaining 'visible' bugs (that I know
5008 of). I think if I can clean up the session loading so it works
5012 of). I think if I can clean up the session loading so it works
5009 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5013 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5010 about licensing).
5014 about licensing).
5011
5015
5012 2001-11-25 Fernando Perez <fperez@colorado.edu>
5016 2001-11-25 Fernando Perez <fperez@colorado.edu>
5013
5017
5014 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5018 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5015 there's a cleaner distinction between what ? and ?? show.
5019 there's a cleaner distinction between what ? and ?? show.
5016
5020
5017 * Added screen_length option. Now the user can define his own
5021 * Added screen_length option. Now the user can define his own
5018 screen size for page() operations.
5022 screen size for page() operations.
5019
5023
5020 * Implemented magic shell-like functions with automatic code
5024 * Implemented magic shell-like functions with automatic code
5021 generation. Now adding another function is just a matter of adding
5025 generation. Now adding another function is just a matter of adding
5022 an entry to a dict, and the function is dynamically generated at
5026 an entry to a dict, and the function is dynamically generated at
5023 run-time. Python has some really cool features!
5027 run-time. Python has some really cool features!
5024
5028
5025 * Renamed many options to cleanup conventions a little. Now all
5029 * Renamed many options to cleanup conventions a little. Now all
5026 are lowercase, and only underscores where needed. Also in the code
5030 are lowercase, and only underscores where needed. Also in the code
5027 option name tables are clearer.
5031 option name tables are clearer.
5028
5032
5029 * Changed prompts a little. Now input is 'In [n]:' instead of
5033 * Changed prompts a little. Now input is 'In [n]:' instead of
5030 'In[n]:='. This allows it the numbers to be aligned with the
5034 'In[n]:='. This allows it the numbers to be aligned with the
5031 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5035 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5032 Python (it was a Mathematica thing). The '...' continuation prompt
5036 Python (it was a Mathematica thing). The '...' continuation prompt
5033 was also changed a little to align better.
5037 was also changed a little to align better.
5034
5038
5035 * Fixed bug when flushing output cache. Not all _p<n> variables
5039 * Fixed bug when flushing output cache. Not all _p<n> variables
5036 exist, so their deletion needs to be wrapped in a try:
5040 exist, so their deletion needs to be wrapped in a try:
5037
5041
5038 * Figured out how to properly use inspect.formatargspec() (it
5042 * Figured out how to properly use inspect.formatargspec() (it
5039 requires the args preceded by *). So I removed all the code from
5043 requires the args preceded by *). So I removed all the code from
5040 _get_pdef in Magic, which was just replicating that.
5044 _get_pdef in Magic, which was just replicating that.
5041
5045
5042 * Added test to prefilter to allow redefining magic function names
5046 * Added test to prefilter to allow redefining magic function names
5043 as variables. This is ok, since the @ form is always available,
5047 as variables. This is ok, since the @ form is always available,
5044 but whe should allow the user to define a variable called 'ls' if
5048 but whe should allow the user to define a variable called 'ls' if
5045 he needs it.
5049 he needs it.
5046
5050
5047 * Moved the ToDo information from README into a separate ToDo.
5051 * Moved the ToDo information from README into a separate ToDo.
5048
5052
5049 * General code cleanup and small bugfixes. I think it's close to a
5053 * General code cleanup and small bugfixes. I think it's close to a
5050 state where it can be released, obviously with a big 'beta'
5054 state where it can be released, obviously with a big 'beta'
5051 warning on it.
5055 warning on it.
5052
5056
5053 * Got the magic function split to work. Now all magics are defined
5057 * Got the magic function split to work. Now all magics are defined
5054 in a separate class. It just organizes things a bit, and now
5058 in a separate class. It just organizes things a bit, and now
5055 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5059 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5056 was too long).
5060 was too long).
5057
5061
5058 * Changed @clear to @reset to avoid potential confusions with
5062 * Changed @clear to @reset to avoid potential confusions with
5059 the shell command clear. Also renamed @cl to @clear, which does
5063 the shell command clear. Also renamed @cl to @clear, which does
5060 exactly what people expect it to from their shell experience.
5064 exactly what people expect it to from their shell experience.
5061
5065
5062 Added a check to the @reset command (since it's so
5066 Added a check to the @reset command (since it's so
5063 destructive, it's probably a good idea to ask for confirmation).
5067 destructive, it's probably a good idea to ask for confirmation).
5064 But now reset only works for full namespace resetting. Since the
5068 But now reset only works for full namespace resetting. Since the
5065 del keyword is already there for deleting a few specific
5069 del keyword is already there for deleting a few specific
5066 variables, I don't see the point of having a redundant magic
5070 variables, I don't see the point of having a redundant magic
5067 function for the same task.
5071 function for the same task.
5068
5072
5069 2001-11-24 Fernando Perez <fperez@colorado.edu>
5073 2001-11-24 Fernando Perez <fperez@colorado.edu>
5070
5074
5071 * Updated the builtin docs (esp. the ? ones).
5075 * Updated the builtin docs (esp. the ? ones).
5072
5076
5073 * Ran all the code through pychecker. Not terribly impressed with
5077 * Ran all the code through pychecker. Not terribly impressed with
5074 it: lots of spurious warnings and didn't really find anything of
5078 it: lots of spurious warnings and didn't really find anything of
5075 substance (just a few modules being imported and not used).
5079 substance (just a few modules being imported and not used).
5076
5080
5077 * Implemented the new ultraTB functionality into IPython. New
5081 * Implemented the new ultraTB functionality into IPython. New
5078 option: xcolors. This chooses color scheme. xmode now only selects
5082 option: xcolors. This chooses color scheme. xmode now only selects
5079 between Plain and Verbose. Better orthogonality.
5083 between Plain and Verbose. Better orthogonality.
5080
5084
5081 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5085 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5082 mode and color scheme for the exception handlers. Now it's
5086 mode and color scheme for the exception handlers. Now it's
5083 possible to have the verbose traceback with no coloring.
5087 possible to have the verbose traceback with no coloring.
5084
5088
5085 2001-11-23 Fernando Perez <fperez@colorado.edu>
5089 2001-11-23 Fernando Perez <fperez@colorado.edu>
5086
5090
5087 * Version 0.1.12 released, 0.1.13 opened.
5091 * Version 0.1.12 released, 0.1.13 opened.
5088
5092
5089 * Removed option to set auto-quote and auto-paren escapes by
5093 * Removed option to set auto-quote and auto-paren escapes by
5090 user. The chances of breaking valid syntax are just too high. If
5094 user. The chances of breaking valid syntax are just too high. If
5091 someone *really* wants, they can always dig into the code.
5095 someone *really* wants, they can always dig into the code.
5092
5096
5093 * Made prompt separators configurable.
5097 * Made prompt separators configurable.
5094
5098
5095 2001-11-22 Fernando Perez <fperez@colorado.edu>
5099 2001-11-22 Fernando Perez <fperez@colorado.edu>
5096
5100
5097 * Small bugfixes in many places.
5101 * Small bugfixes in many places.
5098
5102
5099 * Removed the MyCompleter class from ipplib. It seemed redundant
5103 * Removed the MyCompleter class from ipplib. It seemed redundant
5100 with the C-p,C-n history search functionality. Less code to
5104 with the C-p,C-n history search functionality. Less code to
5101 maintain.
5105 maintain.
5102
5106
5103 * Moved all the original ipython.py code into ipythonlib.py. Right
5107 * Moved all the original ipython.py code into ipythonlib.py. Right
5104 now it's just one big dump into a function called make_IPython, so
5108 now it's just one big dump into a function called make_IPython, so
5105 no real modularity has been gained. But at least it makes the
5109 no real modularity has been gained. But at least it makes the
5106 wrapper script tiny, and since ipythonlib is a module, it gets
5110 wrapper script tiny, and since ipythonlib is a module, it gets
5107 compiled and startup is much faster.
5111 compiled and startup is much faster.
5108
5112
5109 This is a reasobably 'deep' change, so we should test it for a
5113 This is a reasobably 'deep' change, so we should test it for a
5110 while without messing too much more with the code.
5114 while without messing too much more with the code.
5111
5115
5112 2001-11-21 Fernando Perez <fperez@colorado.edu>
5116 2001-11-21 Fernando Perez <fperez@colorado.edu>
5113
5117
5114 * Version 0.1.11 released, 0.1.12 opened for further work.
5118 * Version 0.1.11 released, 0.1.12 opened for further work.
5115
5119
5116 * Removed dependency on Itpl. It was only needed in one place. It
5120 * Removed dependency on Itpl. It was only needed in one place. It
5117 would be nice if this became part of python, though. It makes life
5121 would be nice if this became part of python, though. It makes life
5118 *a lot* easier in some cases.
5122 *a lot* easier in some cases.
5119
5123
5120 * Simplified the prefilter code a bit. Now all handlers are
5124 * Simplified the prefilter code a bit. Now all handlers are
5121 expected to explicitly return a value (at least a blank string).
5125 expected to explicitly return a value (at least a blank string).
5122
5126
5123 * Heavy edits in ipplib. Removed the help system altogether. Now
5127 * Heavy edits in ipplib. Removed the help system altogether. Now
5124 obj?/?? is used for inspecting objects, a magic @doc prints
5128 obj?/?? is used for inspecting objects, a magic @doc prints
5125 docstrings, and full-blown Python help is accessed via the 'help'
5129 docstrings, and full-blown Python help is accessed via the 'help'
5126 keyword. This cleans up a lot of code (less to maintain) and does
5130 keyword. This cleans up a lot of code (less to maintain) and does
5127 the job. Since 'help' is now a standard Python component, might as
5131 the job. Since 'help' is now a standard Python component, might as
5128 well use it and remove duplicate functionality.
5132 well use it and remove duplicate functionality.
5129
5133
5130 Also removed the option to use ipplib as a standalone program. By
5134 Also removed the option to use ipplib as a standalone program. By
5131 now it's too dependent on other parts of IPython to function alone.
5135 now it's too dependent on other parts of IPython to function alone.
5132
5136
5133 * Fixed bug in genutils.pager. It would crash if the pager was
5137 * Fixed bug in genutils.pager. It would crash if the pager was
5134 exited immediately after opening (broken pipe).
5138 exited immediately after opening (broken pipe).
5135
5139
5136 * Trimmed down the VerboseTB reporting a little. The header is
5140 * Trimmed down the VerboseTB reporting a little. The header is
5137 much shorter now and the repeated exception arguments at the end
5141 much shorter now and the repeated exception arguments at the end
5138 have been removed. For interactive use the old header seemed a bit
5142 have been removed. For interactive use the old header seemed a bit
5139 excessive.
5143 excessive.
5140
5144
5141 * Fixed small bug in output of @whos for variables with multi-word
5145 * Fixed small bug in output of @whos for variables with multi-word
5142 types (only first word was displayed).
5146 types (only first word was displayed).
5143
5147
5144 2001-11-17 Fernando Perez <fperez@colorado.edu>
5148 2001-11-17 Fernando Perez <fperez@colorado.edu>
5145
5149
5146 * Version 0.1.10 released, 0.1.11 opened for further work.
5150 * Version 0.1.10 released, 0.1.11 opened for further work.
5147
5151
5148 * Modified dirs and friends. dirs now *returns* the stack (not
5152 * Modified dirs and friends. dirs now *returns* the stack (not
5149 prints), so one can manipulate it as a variable. Convenient to
5153 prints), so one can manipulate it as a variable. Convenient to
5150 travel along many directories.
5154 travel along many directories.
5151
5155
5152 * Fixed bug in magic_pdef: would only work with functions with
5156 * Fixed bug in magic_pdef: would only work with functions with
5153 arguments with default values.
5157 arguments with default values.
5154
5158
5155 2001-11-14 Fernando Perez <fperez@colorado.edu>
5159 2001-11-14 Fernando Perez <fperez@colorado.edu>
5156
5160
5157 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5161 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5158 example with IPython. Various other minor fixes and cleanups.
5162 example with IPython. Various other minor fixes and cleanups.
5159
5163
5160 * Version 0.1.9 released, 0.1.10 opened for further work.
5164 * Version 0.1.9 released, 0.1.10 opened for further work.
5161
5165
5162 * Added sys.path to the list of directories searched in the
5166 * Added sys.path to the list of directories searched in the
5163 execfile= option. It used to be the current directory and the
5167 execfile= option. It used to be the current directory and the
5164 user's IPYTHONDIR only.
5168 user's IPYTHONDIR only.
5165
5169
5166 2001-11-13 Fernando Perez <fperez@colorado.edu>
5170 2001-11-13 Fernando Perez <fperez@colorado.edu>
5167
5171
5168 * Reinstated the raw_input/prefilter separation that Janko had
5172 * Reinstated the raw_input/prefilter separation that Janko had
5169 initially. This gives a more convenient setup for extending the
5173 initially. This gives a more convenient setup for extending the
5170 pre-processor from the outside: raw_input always gets a string,
5174 pre-processor from the outside: raw_input always gets a string,
5171 and prefilter has to process it. We can then redefine prefilter
5175 and prefilter has to process it. We can then redefine prefilter
5172 from the outside and implement extensions for special
5176 from the outside and implement extensions for special
5173 purposes.
5177 purposes.
5174
5178
5175 Today I got one for inputting PhysicalQuantity objects
5179 Today I got one for inputting PhysicalQuantity objects
5176 (from Scientific) without needing any function calls at
5180 (from Scientific) without needing any function calls at
5177 all. Extremely convenient, and it's all done as a user-level
5181 all. Extremely convenient, and it's all done as a user-level
5178 extension (no IPython code was touched). Now instead of:
5182 extension (no IPython code was touched). Now instead of:
5179 a = PhysicalQuantity(4.2,'m/s**2')
5183 a = PhysicalQuantity(4.2,'m/s**2')
5180 one can simply say
5184 one can simply say
5181 a = 4.2 m/s**2
5185 a = 4.2 m/s**2
5182 or even
5186 or even
5183 a = 4.2 m/s^2
5187 a = 4.2 m/s^2
5184
5188
5185 I use this, but it's also a proof of concept: IPython really is
5189 I use this, but it's also a proof of concept: IPython really is
5186 fully user-extensible, even at the level of the parsing of the
5190 fully user-extensible, even at the level of the parsing of the
5187 command line. It's not trivial, but it's perfectly doable.
5191 command line. It's not trivial, but it's perfectly doable.
5188
5192
5189 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5193 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5190 the problem of modules being loaded in the inverse order in which
5194 the problem of modules being loaded in the inverse order in which
5191 they were defined in
5195 they were defined in
5192
5196
5193 * Version 0.1.8 released, 0.1.9 opened for further work.
5197 * Version 0.1.8 released, 0.1.9 opened for further work.
5194
5198
5195 * Added magics pdef, source and file. They respectively show the
5199 * Added magics pdef, source and file. They respectively show the
5196 definition line ('prototype' in C), source code and full python
5200 definition line ('prototype' in C), source code and full python
5197 file for any callable object. The object inspector oinfo uses
5201 file for any callable object. The object inspector oinfo uses
5198 these to show the same information.
5202 these to show the same information.
5199
5203
5200 * Version 0.1.7 released, 0.1.8 opened for further work.
5204 * Version 0.1.7 released, 0.1.8 opened for further work.
5201
5205
5202 * Separated all the magic functions into a class called Magic. The
5206 * Separated all the magic functions into a class called Magic. The
5203 InteractiveShell class was becoming too big for Xemacs to handle
5207 InteractiveShell class was becoming too big for Xemacs to handle
5204 (de-indenting a line would lock it up for 10 seconds while it
5208 (de-indenting a line would lock it up for 10 seconds while it
5205 backtracked on the whole class!)
5209 backtracked on the whole class!)
5206
5210
5207 FIXME: didn't work. It can be done, but right now namespaces are
5211 FIXME: didn't work. It can be done, but right now namespaces are
5208 all messed up. Do it later (reverted it for now, so at least
5212 all messed up. Do it later (reverted it for now, so at least
5209 everything works as before).
5213 everything works as before).
5210
5214
5211 * Got the object introspection system (magic_oinfo) working! I
5215 * Got the object introspection system (magic_oinfo) working! I
5212 think this is pretty much ready for release to Janko, so he can
5216 think this is pretty much ready for release to Janko, so he can
5213 test it for a while and then announce it. Pretty much 100% of what
5217 test it for a while and then announce it. Pretty much 100% of what
5214 I wanted for the 'phase 1' release is ready. Happy, tired.
5218 I wanted for the 'phase 1' release is ready. Happy, tired.
5215
5219
5216 2001-11-12 Fernando Perez <fperez@colorado.edu>
5220 2001-11-12 Fernando Perez <fperez@colorado.edu>
5217
5221
5218 * Version 0.1.6 released, 0.1.7 opened for further work.
5222 * Version 0.1.6 released, 0.1.7 opened for further work.
5219
5223
5220 * Fixed bug in printing: it used to test for truth before
5224 * Fixed bug in printing: it used to test for truth before
5221 printing, so 0 wouldn't print. Now checks for None.
5225 printing, so 0 wouldn't print. Now checks for None.
5222
5226
5223 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5227 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5224 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5228 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5225 reaches by hand into the outputcache. Think of a better way to do
5229 reaches by hand into the outputcache. Think of a better way to do
5226 this later.
5230 this later.
5227
5231
5228 * Various small fixes thanks to Nathan's comments.
5232 * Various small fixes thanks to Nathan's comments.
5229
5233
5230 * Changed magic_pprint to magic_Pprint. This way it doesn't
5234 * Changed magic_pprint to magic_Pprint. This way it doesn't
5231 collide with pprint() and the name is consistent with the command
5235 collide with pprint() and the name is consistent with the command
5232 line option.
5236 line option.
5233
5237
5234 * Changed prompt counter behavior to be fully like
5238 * Changed prompt counter behavior to be fully like
5235 Mathematica's. That is, even input that doesn't return a result
5239 Mathematica's. That is, even input that doesn't return a result
5236 raises the prompt counter. The old behavior was kind of confusing
5240 raises the prompt counter. The old behavior was kind of confusing
5237 (getting the same prompt number several times if the operation
5241 (getting the same prompt number several times if the operation
5238 didn't return a result).
5242 didn't return a result).
5239
5243
5240 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5244 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5241
5245
5242 * Fixed -Classic mode (wasn't working anymore).
5246 * Fixed -Classic mode (wasn't working anymore).
5243
5247
5244 * Added colored prompts using Nathan's new code. Colors are
5248 * Added colored prompts using Nathan's new code. Colors are
5245 currently hardwired, they can be user-configurable. For
5249 currently hardwired, they can be user-configurable. For
5246 developers, they can be chosen in file ipythonlib.py, at the
5250 developers, they can be chosen in file ipythonlib.py, at the
5247 beginning of the CachedOutput class def.
5251 beginning of the CachedOutput class def.
5248
5252
5249 2001-11-11 Fernando Perez <fperez@colorado.edu>
5253 2001-11-11 Fernando Perez <fperez@colorado.edu>
5250
5254
5251 * Version 0.1.5 released, 0.1.6 opened for further work.
5255 * Version 0.1.5 released, 0.1.6 opened for further work.
5252
5256
5253 * Changed magic_env to *return* the environment as a dict (not to
5257 * Changed magic_env to *return* the environment as a dict (not to
5254 print it). This way it prints, but it can also be processed.
5258 print it). This way it prints, but it can also be processed.
5255
5259
5256 * Added Verbose exception reporting to interactive
5260 * Added Verbose exception reporting to interactive
5257 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5261 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5258 traceback. Had to make some changes to the ultraTB file. This is
5262 traceback. Had to make some changes to the ultraTB file. This is
5259 probably the last 'big' thing in my mental todo list. This ties
5263 probably the last 'big' thing in my mental todo list. This ties
5260 in with the next entry:
5264 in with the next entry:
5261
5265
5262 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5266 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5263 has to specify is Plain, Color or Verbose for all exception
5267 has to specify is Plain, Color or Verbose for all exception
5264 handling.
5268 handling.
5265
5269
5266 * Removed ShellServices option. All this can really be done via
5270 * Removed ShellServices option. All this can really be done via
5267 the magic system. It's easier to extend, cleaner and has automatic
5271 the magic system. It's easier to extend, cleaner and has automatic
5268 namespace protection and documentation.
5272 namespace protection and documentation.
5269
5273
5270 2001-11-09 Fernando Perez <fperez@colorado.edu>
5274 2001-11-09 Fernando Perez <fperez@colorado.edu>
5271
5275
5272 * Fixed bug in output cache flushing (missing parameter to
5276 * Fixed bug in output cache flushing (missing parameter to
5273 __init__). Other small bugs fixed (found using pychecker).
5277 __init__). Other small bugs fixed (found using pychecker).
5274
5278
5275 * Version 0.1.4 opened for bugfixing.
5279 * Version 0.1.4 opened for bugfixing.
5276
5280
5277 2001-11-07 Fernando Perez <fperez@colorado.edu>
5281 2001-11-07 Fernando Perez <fperez@colorado.edu>
5278
5282
5279 * Version 0.1.3 released, mainly because of the raw_input bug.
5283 * Version 0.1.3 released, mainly because of the raw_input bug.
5280
5284
5281 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5285 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5282 and when testing for whether things were callable, a call could
5286 and when testing for whether things were callable, a call could
5283 actually be made to certain functions. They would get called again
5287 actually be made to certain functions. They would get called again
5284 once 'really' executed, with a resulting double call. A disaster
5288 once 'really' executed, with a resulting double call. A disaster
5285 in many cases (list.reverse() would never work!).
5289 in many cases (list.reverse() would never work!).
5286
5290
5287 * Removed prefilter() function, moved its code to raw_input (which
5291 * Removed prefilter() function, moved its code to raw_input (which
5288 after all was just a near-empty caller for prefilter). This saves
5292 after all was just a near-empty caller for prefilter). This saves
5289 a function call on every prompt, and simplifies the class a tiny bit.
5293 a function call on every prompt, and simplifies the class a tiny bit.
5290
5294
5291 * Fix _ip to __ip name in magic example file.
5295 * Fix _ip to __ip name in magic example file.
5292
5296
5293 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5297 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5294 work with non-gnu versions of tar.
5298 work with non-gnu versions of tar.
5295
5299
5296 2001-11-06 Fernando Perez <fperez@colorado.edu>
5300 2001-11-06 Fernando Perez <fperez@colorado.edu>
5297
5301
5298 * Version 0.1.2. Just to keep track of the recent changes.
5302 * Version 0.1.2. Just to keep track of the recent changes.
5299
5303
5300 * Fixed nasty bug in output prompt routine. It used to check 'if
5304 * Fixed nasty bug in output prompt routine. It used to check 'if
5301 arg != None...'. Problem is, this fails if arg implements a
5305 arg != None...'. Problem is, this fails if arg implements a
5302 special comparison (__cmp__) which disallows comparing to
5306 special comparison (__cmp__) which disallows comparing to
5303 None. Found it when trying to use the PhysicalQuantity module from
5307 None. Found it when trying to use the PhysicalQuantity module from
5304 ScientificPython.
5308 ScientificPython.
5305
5309
5306 2001-11-05 Fernando Perez <fperez@colorado.edu>
5310 2001-11-05 Fernando Perez <fperez@colorado.edu>
5307
5311
5308 * Also added dirs. Now the pushd/popd/dirs family functions
5312 * Also added dirs. Now the pushd/popd/dirs family functions
5309 basically like the shell, with the added convenience of going home
5313 basically like the shell, with the added convenience of going home
5310 when called with no args.
5314 when called with no args.
5311
5315
5312 * pushd/popd slightly modified to mimic shell behavior more
5316 * pushd/popd slightly modified to mimic shell behavior more
5313 closely.
5317 closely.
5314
5318
5315 * Added env,pushd,popd from ShellServices as magic functions. I
5319 * Added env,pushd,popd from ShellServices as magic functions. I
5316 think the cleanest will be to port all desired functions from
5320 think the cleanest will be to port all desired functions from
5317 ShellServices as magics and remove ShellServices altogether. This
5321 ShellServices as magics and remove ShellServices altogether. This
5318 will provide a single, clean way of adding functionality
5322 will provide a single, clean way of adding functionality
5319 (shell-type or otherwise) to IP.
5323 (shell-type or otherwise) to IP.
5320
5324
5321 2001-11-04 Fernando Perez <fperez@colorado.edu>
5325 2001-11-04 Fernando Perez <fperez@colorado.edu>
5322
5326
5323 * Added .ipython/ directory to sys.path. This way users can keep
5327 * Added .ipython/ directory to sys.path. This way users can keep
5324 customizations there and access them via import.
5328 customizations there and access them via import.
5325
5329
5326 2001-11-03 Fernando Perez <fperez@colorado.edu>
5330 2001-11-03 Fernando Perez <fperez@colorado.edu>
5327
5331
5328 * Opened version 0.1.1 for new changes.
5332 * Opened version 0.1.1 for new changes.
5329
5333
5330 * Changed version number to 0.1.0: first 'public' release, sent to
5334 * Changed version number to 0.1.0: first 'public' release, sent to
5331 Nathan and Janko.
5335 Nathan and Janko.
5332
5336
5333 * Lots of small fixes and tweaks.
5337 * Lots of small fixes and tweaks.
5334
5338
5335 * Minor changes to whos format. Now strings are shown, snipped if
5339 * Minor changes to whos format. Now strings are shown, snipped if
5336 too long.
5340 too long.
5337
5341
5338 * Changed ShellServices to work on __main__ so they show up in @who
5342 * Changed ShellServices to work on __main__ so they show up in @who
5339
5343
5340 * Help also works with ? at the end of a line:
5344 * Help also works with ? at the end of a line:
5341 ?sin and sin?
5345 ?sin and sin?
5342 both produce the same effect. This is nice, as often I use the
5346 both produce the same effect. This is nice, as often I use the
5343 tab-complete to find the name of a method, but I used to then have
5347 tab-complete to find the name of a method, but I used to then have
5344 to go to the beginning of the line to put a ? if I wanted more
5348 to go to the beginning of the line to put a ? if I wanted more
5345 info. Now I can just add the ? and hit return. Convenient.
5349 info. Now I can just add the ? and hit return. Convenient.
5346
5350
5347 2001-11-02 Fernando Perez <fperez@colorado.edu>
5351 2001-11-02 Fernando Perez <fperez@colorado.edu>
5348
5352
5349 * Python version check (>=2.1) added.
5353 * Python version check (>=2.1) added.
5350
5354
5351 * Added LazyPython documentation. At this point the docs are quite
5355 * Added LazyPython documentation. At this point the docs are quite
5352 a mess. A cleanup is in order.
5356 a mess. A cleanup is in order.
5353
5357
5354 * Auto-installer created. For some bizarre reason, the zipfiles
5358 * Auto-installer created. For some bizarre reason, the zipfiles
5355 module isn't working on my system. So I made a tar version
5359 module isn't working on my system. So I made a tar version
5356 (hopefully the command line options in various systems won't kill
5360 (hopefully the command line options in various systems won't kill
5357 me).
5361 me).
5358
5362
5359 * Fixes to Struct in genutils. Now all dictionary-like methods are
5363 * Fixes to Struct in genutils. Now all dictionary-like methods are
5360 protected (reasonably).
5364 protected (reasonably).
5361
5365
5362 * Added pager function to genutils and changed ? to print usage
5366 * Added pager function to genutils and changed ? to print usage
5363 note through it (it was too long).
5367 note through it (it was too long).
5364
5368
5365 * Added the LazyPython functionality. Works great! I changed the
5369 * Added the LazyPython functionality. Works great! I changed the
5366 auto-quote escape to ';', it's on home row and next to '. But
5370 auto-quote escape to ';', it's on home row and next to '. But
5367 both auto-quote and auto-paren (still /) escapes are command-line
5371 both auto-quote and auto-paren (still /) escapes are command-line
5368 parameters.
5372 parameters.
5369
5373
5370
5374
5371 2001-11-01 Fernando Perez <fperez@colorado.edu>
5375 2001-11-01 Fernando Perez <fperez@colorado.edu>
5372
5376
5373 * Version changed to 0.0.7. Fairly large change: configuration now
5377 * Version changed to 0.0.7. Fairly large change: configuration now
5374 is all stored in a directory, by default .ipython. There, all
5378 is all stored in a directory, by default .ipython. There, all
5375 config files have normal looking names (not .names)
5379 config files have normal looking names (not .names)
5376
5380
5377 * Version 0.0.6 Released first to Lucas and Archie as a test
5381 * Version 0.0.6 Released first to Lucas and Archie as a test
5378 run. Since it's the first 'semi-public' release, change version to
5382 run. Since it's the first 'semi-public' release, change version to
5379 > 0.0.6 for any changes now.
5383 > 0.0.6 for any changes now.
5380
5384
5381 * Stuff I had put in the ipplib.py changelog:
5385 * Stuff I had put in the ipplib.py changelog:
5382
5386
5383 Changes to InteractiveShell:
5387 Changes to InteractiveShell:
5384
5388
5385 - Made the usage message a parameter.
5389 - Made the usage message a parameter.
5386
5390
5387 - Require the name of the shell variable to be given. It's a bit
5391 - Require the name of the shell variable to be given. It's a bit
5388 of a hack, but allows the name 'shell' not to be hardwire in the
5392 of a hack, but allows the name 'shell' not to be hardwire in the
5389 magic (@) handler, which is problematic b/c it requires
5393 magic (@) handler, which is problematic b/c it requires
5390 polluting the global namespace with 'shell'. This in turn is
5394 polluting the global namespace with 'shell'. This in turn is
5391 fragile: if a user redefines a variable called shell, things
5395 fragile: if a user redefines a variable called shell, things
5392 break.
5396 break.
5393
5397
5394 - magic @: all functions available through @ need to be defined
5398 - magic @: all functions available through @ need to be defined
5395 as magic_<name>, even though they can be called simply as
5399 as magic_<name>, even though they can be called simply as
5396 @<name>. This allows the special command @magic to gather
5400 @<name>. This allows the special command @magic to gather
5397 information automatically about all existing magic functions,
5401 information automatically about all existing magic functions,
5398 even if they are run-time user extensions, by parsing the shell
5402 even if they are run-time user extensions, by parsing the shell
5399 instance __dict__ looking for special magic_ names.
5403 instance __dict__ looking for special magic_ names.
5400
5404
5401 - mainloop: added *two* local namespace parameters. This allows
5405 - mainloop: added *two* local namespace parameters. This allows
5402 the class to differentiate between parameters which were there
5406 the class to differentiate between parameters which were there
5403 before and after command line initialization was processed. This
5407 before and after command line initialization was processed. This
5404 way, later @who can show things loaded at startup by the
5408 way, later @who can show things loaded at startup by the
5405 user. This trick was necessary to make session saving/reloading
5409 user. This trick was necessary to make session saving/reloading
5406 really work: ideally after saving/exiting/reloading a session,
5410 really work: ideally after saving/exiting/reloading a session,
5407 *everythin* should look the same, including the output of @who. I
5411 *everythin* should look the same, including the output of @who. I
5408 was only able to make this work with this double namespace
5412 was only able to make this work with this double namespace
5409 trick.
5413 trick.
5410
5414
5411 - added a header to the logfile which allows (almost) full
5415 - added a header to the logfile which allows (almost) full
5412 session restoring.
5416 session restoring.
5413
5417
5414 - prepend lines beginning with @ or !, with a and log
5418 - prepend lines beginning with @ or !, with a and log
5415 them. Why? !lines: may be useful to know what you did @lines:
5419 them. Why? !lines: may be useful to know what you did @lines:
5416 they may affect session state. So when restoring a session, at
5420 they may affect session state. So when restoring a session, at
5417 least inform the user of their presence. I couldn't quite get
5421 least inform the user of their presence. I couldn't quite get
5418 them to properly re-execute, but at least the user is warned.
5422 them to properly re-execute, but at least the user is warned.
5419
5423
5420 * Started ChangeLog.
5424 * Started ChangeLog.
@@ -1,408 +1,485 b''
1 ;;; ipython.el --- Adds support for IPython to python-mode.el
1 ;;; ipython.el --- Adds support for IPython to python-mode.el
2
2
3 ;; Copyright (C) 2002, 2003, 2004, 2005 Alexander Schmolck
3 ;; Copyright (C) 2002, 2003, 2004, 2005 Alexander Schmolck
4 ;; Author: Alexander Schmolck
4 ;; Author: Alexander Schmolck
5 ;; Keywords: ipython python languages oop
5 ;; Keywords: ipython python languages oop
6 ;; URL: http://ipython.scipy.org
6 ;; URL: http://ipython.scipy.org
7 ;; Compatibility: Emacs21, XEmacs21
7 ;; Compatibility: Emacs21, XEmacs21
8 ;; FIXME: #$@! INPUT RING
8 ;; FIXME: #$@! INPUT RING
9 (defconst ipython-version "$Revision: 1324 $"
9 (defconst ipython-version "$Revision: 1325 $"
10 "VC version number.")
10 "VC version number.")
11
11
12 ;;; Commentary
12 ;;; Commentary
13 ;; This library makes all the functionality python-mode has when running with
13 ;; This library makes all the functionality python-mode has when running with
14 ;; the normal python-interpreter available for ipython, too. It also enables a
14 ;; the normal python-interpreter available for ipython, too. It also enables a
15 ;; persistent py-shell command history accross sessions (if you exit python
15 ;; persistent py-shell command history accross sessions (if you exit python
16 ;; with C-d in py-shell) and defines the command `ipython-to-doctest', which
16 ;; with C-d in py-shell) and defines the command `ipython-to-doctest', which
17 ;; can be used to convert bits of a ipython session into something that can be
17 ;; can be used to convert bits of a ipython session into something that can be
18 ;; used for doctests. To install, put this file somewhere in your emacs
18 ;; used for doctests. To install, put this file somewhere in your emacs
19 ;; `load-path' [1] and add the following line to your ~/.emacs file (the first
19 ;; `load-path' [1] and add the following line to your ~/.emacs file (the first
20 ;; line only needed if the default (``"ipython"``) is wrong)::
20 ;; line only needed if the default (``"ipython"``) is wrong)::
21 ;;
21 ;;
22 ;; (setq ipython-command "/SOME-PATH/ipython")
22 ;; (setq ipython-command "/SOME-PATH/ipython")
23 ;; (require 'ipython)
23 ;; (require 'ipython)
24 ;;
24 ;;
25 ;; Ipython will be set as the default python shell, but only if the ipython
25 ;; Ipython will be set as the default python shell, but only if the ipython
26 ;; executable is in the path. For ipython sessions autocompletion with <tab>
26 ;; executable is in the path. For ipython sessions autocompletion with <tab>
27 ;; is also enabled (experimental feature!). Please also note that all the
27 ;; is also enabled (experimental feature!). Please also note that all the
28 ;; terminal functions in py-shell are handled by emacs's comint, **not** by
28 ;; terminal functions in py-shell are handled by emacs's comint, **not** by
29 ;; (i)python, so importing readline etc. will have 0 effect.
29 ;; (i)python, so importing readline etc. will have 0 effect.
30 ;;
30 ;;
31 ;; To start an interactive ipython session run `py-shell' with ``M-x py-shell``
31 ;; To start an interactive ipython session run `py-shell' with ``M-x py-shell``
32 ;; (or the default keybinding ``C-c C-!``).
32 ;; (or the default keybinding ``C-c C-!``).
33 ;;
33 ;;
34 ;; NOTE: This mode is currently somewhat alpha and although I hope that it
34 ;; NOTE: This mode is currently somewhat alpha and although I hope that it
35 ;; will work fine for most cases, doing certain things (like the
35 ;; will work fine for most cases, doing certain things (like the
36 ;; autocompletion and a decent scheme to switch between python interpreters)
36 ;; autocompletion and a decent scheme to switch between python interpreters)
37 ;; properly will also require changes to ipython that will likely have to wait
37 ;; properly will also require changes to ipython that will likely have to wait
38 ;; for a larger rewrite scheduled some time in the future.
38 ;; for a larger rewrite scheduled some time in the future.
39 ;;
39 ;;
40 ;; Also note that you currently NEED THE CVS VERSION OF PYTHON.EL.
40 ;; Also note that you currently NEED THE CVS VERSION OF PYTHON.EL.
41 ;;
41 ;;
42 ;; Further note that I don't know whether this runs under windows or not and
42 ;; Further note that I don't know whether this runs under windows or not and
43 ;; that if it doesn't I can't really help much, not being afflicted myself.
43 ;; that if it doesn't I can't really help much, not being afflicted myself.
44 ;;
44 ;;
45 ;;
45 ;;
46 ;; Hints for effective usage
46 ;; Hints for effective usage
47 ;; -------------------------
47 ;; -------------------------
48 ;;
48 ;;
49 ;; - IMO the best feature by far of the ipython/emacs combo is how much easier it
49 ;; - IMO the best feature by far of the ipython/emacs combo is how much easier it
50 ;; makes it to find and fix bugs thanks to the ``%pdb on``/ pdbtrack combo. Try
50 ;; makes it to find and fix bugs thanks to the ``%pdb on``/ pdbtrack combo. Try
51 ;; it: first in the ipython to shell do ``%pdb on`` then do something that will
51 ;; it: first in the ipython to shell do ``%pdb on`` then do something that will
52 ;; raise an exception (FIXME nice example) -- and be amazed how easy it is to
52 ;; raise an exception (FIXME nice example) -- and be amazed how easy it is to
53 ;; inspect the live objects in each stack frames and to jump to the
53 ;; inspect the live objects in each stack frames and to jump to the
54 ;; corresponding sourcecode locations as you walk up and down the stack trace
54 ;; corresponding sourcecode locations as you walk up and down the stack trace
55 ;; (even without ``%pdb on`` you can always use ``C-c -`` (`py-up-exception')
55 ;; (even without ``%pdb on`` you can always use ``C-c -`` (`py-up-exception')
56 ;; to jump to the corresponding source code locations).
56 ;; to jump to the corresponding source code locations).
57 ;;
57 ;;
58 ;; - emacs gives you much more powerful commandline editing and output searching
58 ;; - emacs gives you much more powerful commandline editing and output searching
59 ;; capabilities than ipython-standalone -- isearch is your friend if you
59 ;; capabilities than ipython-standalone -- isearch is your friend if you
60 ;; quickly want to print 'DEBUG ...' to stdout out etc.
60 ;; quickly want to print 'DEBUG ...' to stdout out etc.
61 ;;
61 ;;
62 ;; - This is not really specific to ipython, but for more convenient history
62 ;; - This is not really specific to ipython, but for more convenient history
63 ;; access you might want to add something like the following to *the beggining*
63 ;; access you might want to add something like the following to *the beggining*
64 ;; of your ``.emacs`` (if you want behavior that's more similar to stand-alone
64 ;; of your ``.emacs`` (if you want behavior that's more similar to stand-alone
65 ;; ipython, you can change ``meta p`` etc. for ``control p``)::
65 ;; ipython, you can change ``meta p`` etc. for ``control p``)::
66 ;;
66 ;;
67 ;; (require 'comint)
67 ;; (require 'comint)
68 ;; (define-key comint-mode-map [(meta p)]
68 ;; (define-key comint-mode-map [(meta p)]
69 ;; 'comint-previous-matching-input-from-input)
69 ;; 'comint-previous-matching-input-from-input)
70 ;; (define-key comint-mode-map [(meta n)]
70 ;; (define-key comint-mode-map [(meta n)]
71 ;; 'comint-next-matching-input-from-input)
71 ;; 'comint-next-matching-input-from-input)
72 ;; (define-key comint-mode-map [(control meta n)]
72 ;; (define-key comint-mode-map [(control meta n)]
73 ;; 'comint-next-input)
73 ;; 'comint-next-input)
74 ;; (define-key comint-mode-map [(control meta p)]
74 ;; (define-key comint-mode-map [(control meta p)]
75 ;; 'comint-previous-input)
75 ;; 'comint-previous-input)
76 ;;
76 ;;
77 ;; - Be aware that if you customize py-python-command previously, this value
77 ;; - Be aware that if you customize py-python-command previously, this value
78 ;; will override what ipython.el does (because loading the customization
78 ;; will override what ipython.el does (because loading the customization
79 ;; variables comes later).
79 ;; variables comes later).
80 ;;
80 ;;
81 ;; Please send comments and feedback to the ipython-list
81 ;; Please send comments and feedback to the ipython-list
82 ;; (<ipython-user@scipy.net>) where I (a.s.) or someone else will try to
82 ;; (<ipython-user@scipy.net>) where I (a.s.) or someone else will try to
83 ;; answer them (it helps if you specify your emacs version, OS etc;
83 ;; answer them (it helps if you specify your emacs version, OS etc;
84 ;; familiarity with <http://www.catb.org/~esr/faqs/smart-questions.html> might
84 ;; familiarity with <http://www.catb.org/~esr/faqs/smart-questions.html> might
85 ;; speed up things further).
85 ;; speed up things further).
86 ;;
86 ;;
87 ;; Footnotes:
87 ;; Footnotes:
88 ;;
88 ;;
89 ;; [1] If you don't know what `load-path' is, C-h v load-path will tell
89 ;; [1] If you don't know what `load-path' is, C-h v load-path will tell
90 ;; you; if required you can also add a new directory. So assuming that
90 ;; you; if required you can also add a new directory. So assuming that
91 ;; ipython.el resides in ~/el/, put this in your emacs:
91 ;; ipython.el resides in ~/el/, put this in your emacs:
92 ;;
92 ;;
93 ;;
93 ;;
94 ;; (add-to-list 'load-path "~/el")
94 ;; (add-to-list 'load-path "~/el")
95 ;; (setq ipython-command "/some-path/ipython")
95 ;; (setq ipython-command "/some-path/ipython")
96 ;; (require 'ipython)
96 ;; (require 'ipython)
97 ;;
97 ;;
98 ;;
98 ;;
99 ;;
99 ;;
100 ;;
100 ;;
101 ;; TODO:
101 ;; TODO:
102 ;; - do autocompletion properly
102 ;; - do autocompletion properly
103 ;; - implement a proper switching between python interpreters
103 ;; - implement a proper switching between python interpreters
104 ;;
104 ;;
105 ;; BUGS:
105 ;; BUGS:
106 ;; - neither::
106 ;; - neither::
107 ;;
107 ;;
108 ;; (py-shell "-c print 'FOOBAR'")
108 ;; (py-shell "-c print 'FOOBAR'")
109 ;;
109 ;;
110 ;; nor::
110 ;; nor::
111 ;;
111 ;;
112 ;; (let ((py-python-command-args (append py-python-command-args
112 ;; (let ((py-python-command-args (append py-python-command-args
113 ;; '("-c" "print 'FOOBAR'"))))
113 ;; '("-c" "print 'FOOBAR'"))))
114 ;; (py-shell))
114 ;; (py-shell))
115 ;;
115 ;;
116 ;; seem to print anything as they should
116 ;; seem to print anything as they should
117 ;;
117 ;;
118 ;; - look into init priority issues with `py-python-command' (if it's set
118 ;; - look into init priority issues with `py-python-command' (if it's set
119 ;; via custom)
119 ;; via custom)
120
120
121
121
122 ;;; Code
122 ;;; Code
123 (require 'cl)
123 (require 'cl)
124 (require 'shell)
124 (require 'shell)
125 (require 'executable)
125 (require 'executable)
126 (require 'ansi-color)
126 (require 'ansi-color)
127
127
128 (defcustom ipython-command "ipython"
128 (defcustom ipython-command "ipython"
129 "*Shell command used to start ipython."
129 "*Shell command used to start ipython."
130 :type 'string
130 :type 'string
131 :group 'python)
131 :group 'python)
132
132
133 ;; Users can set this to nil
133 ;; Users can set this to nil
134 (defvar py-shell-initial-switch-buffers t
134 (defvar py-shell-initial-switch-buffers t
135 "If nil, don't switch to the *Python* buffer on the first call to
135 "If nil, don't switch to the *Python* buffer on the first call to
136 `py-shell'.")
136 `py-shell'.")
137
137
138 (defvar ipython-backup-of-py-python-command nil
138 (defvar ipython-backup-of-py-python-command nil
139 "HACK")
139 "HACK")
140
140
141
141
142 (defvar ipython-de-input-prompt-regexp "\\(?:
142 (defvar ipython-de-input-prompt-regexp "\\(?:
143 In \\[[0-9]+\\]: *.*
143 In \\[[0-9]+\\]: *.*
144 ----+> \\(.*
144 ----+> \\(.*
145 \\)[\n]?\\)\\|\\(?:
145 \\)[\n]?\\)\\|\\(?:
146 In \\[[0-9]+\\]: *\\(.*
146 In \\[[0-9]+\\]: *\\(.*
147 \\)\\)\\|^[ ]\\{3\\}[.]\\{3,\\}: *\\(.*
147 \\)\\)\\|^[ ]\\{3\\}[.]\\{3,\\}: *\\(.*
148 \\)"
148 \\)"
149 "A regular expression to match the IPython input prompt and the python
149 "A regular expression to match the IPython input prompt and the python
150 command after it. The first match group is for a command that is rewritten,
150 command after it. The first match group is for a command that is rewritten,
151 the second for a 'normal' command, and the third for a multiline command.")
151 the second for a 'normal' command, and the third for a multiline command.")
152 (defvar ipython-de-output-prompt-regexp "^Out\\[[0-9]+\\]: "
152 (defvar ipython-de-output-prompt-regexp "^Out\\[[0-9]+\\]: "
153 "A regular expression to match the output prompt of IPython.")
153 "A regular expression to match the output prompt of IPython.")
154
154
155
155
156 (if (not (executable-find ipython-command))
156 (if (not (executable-find ipython-command))
157 (message (format "Can't find executable %s - ipython.el *NOT* activated!!!"
157 (message (format "Can't find executable %s - ipython.el *NOT* activated!!!"
158 ipython-command))
158 ipython-command))
159 ;; XXX load python-mode, so that we can screw around with its variables
159 ;; XXX load python-mode, so that we can screw around with its variables
160 ;; this has the disadvantage that python-mode is loaded even if no
160 ;; this has the disadvantage that python-mode is loaded even if no
161 ;; python-file is ever edited etc. but it means that `py-shell' works
161 ;; python-file is ever edited etc. but it means that `py-shell' works
162 ;; without loading a python-file first. Obviously screwing around with
162 ;; without loading a python-file first. Obviously screwing around with
163 ;; python-mode's variables like this is a mess, but well.
163 ;; python-mode's variables like this is a mess, but well.
164 (require 'python-mode)
164 (require 'python-mode)
165 ;; turn on ansi colors for ipython and activate completion
165 ;; turn on ansi colors for ipython and activate completion
166 (defun ipython-shell-hook ()
166 (defun ipython-shell-hook ()
167 ;; the following is to synchronize dir-changes
167 ;; the following is to synchronize dir-changes
168 (make-local-variable 'shell-dirstack)
168 (make-local-variable 'shell-dirstack)
169 (setq shell-dirstack nil)
169 (setq shell-dirstack nil)
170 (make-local-variable 'shell-last-dir)
170 (make-local-variable 'shell-last-dir)
171 (setq shell-last-dir nil)
171 (setq shell-last-dir nil)
172 (make-local-variable 'shell-dirtrackp)
172 (make-local-variable 'shell-dirtrackp)
173 (setq shell-dirtrackp t)
173 (setq shell-dirtrackp t)
174 (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t)
174 (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t)
175
175
176 (ansi-color-for-comint-mode-on)
176 (ansi-color-for-comint-mode-on)
177 (define-key py-shell-map [tab] 'ipython-complete)
177 (define-key py-shell-map [tab] 'ipython-complete)
178 ;;XXX this is really just a cheap hack, it only completes symbols in the
178 ;;XXX this is really just a cheap hack, it only completes symbols in the
179 ;;interactive session -- useful nonetheless.
179 ;;interactive session -- useful nonetheless.
180 (define-key py-mode-map [(meta tab)] 'ipython-complete)
180 (define-key py-mode-map [(meta tab)] 'ipython-complete)
181
181
182 )
182 )
183 (add-hook 'py-shell-hook 'ipython-shell-hook)
183 (add-hook 'py-shell-hook 'ipython-shell-hook)
184 ;; Regular expression that describes tracebacks for IPython in context and
184 ;; Regular expression that describes tracebacks for IPython in context and
185 ;; verbose mode.
185 ;; verbose mode.
186
186
187 ;;Adapt python-mode settings for ipython.
187 ;;Adapt python-mode settings for ipython.
188 ;; (this works for %xmode 'verbose' or 'context')
188 ;; (this works for %xmode 'verbose' or 'context')
189
189
190 ;; XXX putative regexps for syntax errors; unfortunately the
190 ;; XXX putative regexps for syntax errors; unfortunately the
191 ;; current python-mode traceback-line-re scheme is too primitive,
191 ;; current python-mode traceback-line-re scheme is too primitive,
192 ;; so it's either matching syntax errors, *or* everything else
192 ;; so it's either matching syntax errors, *or* everything else
193 ;; (XXX: should ask Fernando for a change)
193 ;; (XXX: should ask Fernando for a change)
194 ;;"^ File \"\\(.*?\\)\", line \\([0-9]+\\).*\n.*\n.*\nSyntaxError:"
194 ;;"^ File \"\\(.*?\\)\", line \\([0-9]+\\).*\n.*\n.*\nSyntaxError:"
195 ;;^ File \"\\(.*?\\)\", line \\([0-9]+\\)"
195 ;;^ File \"\\(.*?\\)\", line \\([0-9]+\\)"
196
196
197 (setq py-traceback-line-re
197 (setq py-traceback-line-re
198 "\\(^[^\t ].+?\\.py\\).*\n +[0-9]+[^\00]*?\n-+> \\([0-9]+\\) +")
198 "\\(^[^\t ].+?\\.py\\).*\n +[0-9]+[^\00]*?\n-+> \\([0-9]+\\) +")
199
199
200 ;; Recognize the ipython pdb, whose prompt is 'ipdb>' instead of '(Pdb)'
200 ;; Recognize the ipython pdb, whose prompt is 'ipdb>' instead of '(Pdb)'
201 (setq py-pdbtrack-input-prompt "\n[(<]*[Ii]?[Pp]db[>)]+ ")
201 (setq py-pdbtrack-input-prompt "\n[(<]*[Ii]?[Pp]db[>)]+ ")
202
202
203 (setq py-shell-input-prompt-1-regexp "^In \\[[0-9]+\\]: *"
203 (setq py-shell-input-prompt-1-regexp "^In \\[[0-9]+\\]: *"
204 py-shell-input-prompt-2-regexp "^ [.][.][.]+: *" )
204 py-shell-input-prompt-2-regexp "^ [.][.][.]+: *" )
205 ;; select a suitable color-scheme
205 ;; select a suitable color-scheme
206 (unless (member "-colors" py-python-command-args)
206 (unless (member "-colors" py-python-command-args)
207 (setq py-python-command-args
207 (setq py-python-command-args
208 (nconc py-python-command-args
208 (nconc py-python-command-args
209 (list "-colors"
209 (list "-colors"
210 (cond
210 (cond
211 ((eq frame-background-mode 'dark)
211 ((eq frame-background-mode 'dark)
212 "DarkBG")
212 "DarkBG")
213 ((eq frame-background-mode 'light)
213 ((eq frame-background-mode 'light)
214 "LightBG")
214 "LightBG")
215 (t ; default (backg-mode isn't always set by XEmacs)
215 (t ; default (backg-mode isn't always set by XEmacs)
216 "LightBG"))))))
216 "LightBG"))))))
217 (unless (equal ipython-backup-of-py-python-command py-python-command)
217 (unless (equal ipython-backup-of-py-python-command py-python-command)
218 (setq ipython-backup-of-py-python-command py-python-command))
218 (setq ipython-backup-of-py-python-command py-python-command))
219 (setq py-python-command ipython-command))
219 (setq py-python-command ipython-command))
220
220
221
221
222 ;; MODIFY py-shell so that it loads the editing history
222 ;; MODIFY py-shell so that it loads the editing history
223 (defadvice py-shell (around py-shell-with-history)
223 (defadvice py-shell (around py-shell-with-history)
224 "Add persistent command-history support (in
224 "Add persistent command-history support (in
225 $PYTHONHISTORY (or \"~/.ipython/history\", if we use IPython)). Also, if
225 $PYTHONHISTORY (or \"~/.ipython/history\", if we use IPython)). Also, if
226 `py-shell-initial-switch-buffers' is nil, it only switches to *Python* if that
226 `py-shell-initial-switch-buffers' is nil, it only switches to *Python* if that
227 buffer already exists."
227 buffer already exists."
228 (if (comint-check-proc "*Python*")
228 (if (comint-check-proc "*Python*")
229 ad-do-it
229 ad-do-it
230 (setq comint-input-ring-file-name
230 (setq comint-input-ring-file-name
231 (if (string-equal py-python-command ipython-command)
231 (if (string-equal py-python-command ipython-command)
232 (concat (or (getenv "IPYTHONDIR") "~/.ipython") "/history")
232 (concat (or (getenv "IPYTHONDIR") "~/.ipython") "/history")
233 (or (getenv "PYTHONHISTORY") "~/.python-history.py")))
233 (or (getenv "PYTHONHISTORY") "~/.python-history.py")))
234 (comint-read-input-ring t)
234 (comint-read-input-ring t)
235 (let ((buf (current-buffer)))
235 (let ((buf (current-buffer)))
236 ad-do-it
236 ad-do-it
237 (unless py-shell-initial-switch-buffers
237 (unless py-shell-initial-switch-buffers
238 (switch-to-buffer-other-window buf)))))
238 (switch-to-buffer-other-window buf)))))
239 (ad-activate 'py-shell)
239 (ad-activate 'py-shell)
240 ;; (defadvice py-execute-region (before py-execute-buffer-ensure-process)
240 ;; (defadvice py-execute-region (before py-execute-buffer-ensure-process)
241 ;; "HACK: test that ipython is already running before executing something.
241 ;; "HACK: test that ipython is already running before executing something.
242 ;; Doing this properly seems not worth the bother (unless people actually
242 ;; Doing this properly seems not worth the bother (unless people actually
243 ;; request it)."
243 ;; request it)."
244 ;; (unless (comint-check-proc "*Python*")
244 ;; (unless (comint-check-proc "*Python*")
245 ;; (error "Sorry you have to first do M-x py-shell to send something to ipython.")))
245 ;; (error "Sorry you have to first do M-x py-shell to send something to ipython.")))
246 ;; (ad-activate 'py-execute-region)
246 ;; (ad-activate 'py-execute-region)
247
247
248 (defadvice py-execute-region (around py-execute-buffer-ensure-process)
248 (defadvice py-execute-region (around py-execute-buffer-ensure-process)
249 "HACK: if `py-shell' is not active or ASYNC is explicitly desired, fall back
249 "HACK: if `py-shell' is not active or ASYNC is explicitly desired, fall back
250 to python instead of ipython."
250 to python instead of ipython."
251 (let ((py-python-command (if (and (comint-check-proc "*Python*") (not async))
251 (let ((py-python-command (if (and (comint-check-proc "*Python*") (not async))
252 py-python-command
252 py-python-command
253 ipython-backup-of-py-python-command)))
253 ipython-backup-of-py-python-command)))
254 ad-do-it))
254 ad-do-it))
255 (ad-activate 'py-execute-region)
255 (ad-activate 'py-execute-region)
256
256
257 (defun ipython-to-doctest (start end)
257 (defun ipython-to-doctest (start end)
258 "Transform a cut-and-pasted bit from an IPython session into something that
258 "Transform a cut-and-pasted bit from an IPython session into something that
259 looks like it came from a normal interactive python session, so that it can
259 looks like it came from a normal interactive python session, so that it can
260 be used in doctests. Example:
260 be used in doctests. Example:
261
261
262
262
263 In [1]: import sys
263 In [1]: import sys
264
264
265 In [2]: sys.stdout.write 'Hi!\n'
265 In [2]: sys.stdout.write 'Hi!\n'
266 ------> sys.stdout.write ('Hi!\n')
266 ------> sys.stdout.write ('Hi!\n')
267 Hi!
267 Hi!
268
268
269 In [3]: 3 + 4
269 In [3]: 3 + 4
270 Out[3]: 7
270 Out[3]: 7
271
271
272 gets converted to:
272 gets converted to:
273
273
274 >>> import sys
274 >>> import sys
275 >>> sys.stdout.write ('Hi!\n')
275 >>> sys.stdout.write ('Hi!\n')
276 Hi!
276 Hi!
277 >>> 3 + 4
277 >>> 3 + 4
278 7
278 7
279
279
280 "
280 "
281 (interactive "*r\n")
281 (interactive "*r\n")
282 ;(message (format "###DEBUG s:%de:%d" start end))
282 ;(message (format "###DEBUG s:%de:%d" start end))
283 (save-excursion
283 (save-excursion
284 (save-match-data
284 (save-match-data
285 ;; replace ``In [3]: bla`` with ``>>> bla`` and
285 ;; replace ``In [3]: bla`` with ``>>> bla`` and
286 ;; ``... : bla`` with ``... bla``
286 ;; ``... : bla`` with ``... bla``
287 (goto-char start)
287 (goto-char start)
288 (while (re-search-forward ipython-de-input-prompt-regexp end t)
288 (while (re-search-forward ipython-de-input-prompt-regexp end t)
289 ;(message "finding 1")
289 ;(message "finding 1")
290 (cond ((match-string 3) ;continued
290 (cond ((match-string 3) ;continued
291 (replace-match "... \\3" t nil))
291 (replace-match "... \\3" t nil))
292 (t
292 (t
293 (replace-match ">>> \\1\\2" t nil))))
293 (replace-match ">>> \\1\\2" t nil))))
294 ;; replace ``
294 ;; replace ``
295 (goto-char start)
295 (goto-char start)
296 (while (re-search-forward ipython-de-output-prompt-regexp end t)
296 (while (re-search-forward ipython-de-output-prompt-regexp end t)
297 (replace-match "" t nil)))))
297 (replace-match "" t nil)))))
298
298
299 (defvar ipython-completion-command-string
299 (defvar ipython-completion-command-string
300 "print ';'.join(__IP.Completer.all_completions('%s')) #PYTHON-MODE SILENT\n"
300 "print ';'.join(__IP.Completer.all_completions('%s')) #PYTHON-MODE SILENT\n"
301 "The string send to ipython to query for all possible completions")
301 "The string send to ipython to query for all possible completions")
302
302
303
303
304 ;; xemacs doesn't have `comint-preoutput-filter-functions' so we'll try the
304 ;; xemacs doesn't have `comint-preoutput-filter-functions' so we'll try the
305 ;; following wonderful hack to work around this case
305 ;; following wonderful hack to work around this case
306 (if (featurep 'xemacs)
306 (if (featurep 'xemacs)
307 ;;xemacs
307 ;;xemacs
308 (defun ipython-complete ()
308 (defun ipython-complete ()
309 "Try to complete the python symbol before point. Only knows about the stuff
309 "Try to complete the python symbol before point. Only knows about the stuff
310 in the current *Python* session."
310 in the current *Python* session."
311 (interactive)
311 (interactive)
312 (let* ((ugly-return nil)
312 (let* ((ugly-return nil)
313 (sep ";")
313 (sep ";")
314 (python-process (or (get-buffer-process (current-buffer))
314 (python-process (or (get-buffer-process (current-buffer))
315 ;XXX hack for .py buffers
315 ;XXX hack for .py buffers
316 (get-process py-which-bufname)))
316 (get-process py-which-bufname)))
317 ;; XXX currently we go backwards to find the beginning of an
317 ;; XXX currently we go backwards to find the beginning of an
318 ;; expression part; a more powerful approach in the future might be
318 ;; expression part; a more powerful approach in the future might be
319 ;; to let ipython have the complete line, so that context can be used
319 ;; to let ipython have the complete line, so that context can be used
320 ;; to do things like filename completion etc.
320 ;; to do things like filename completion etc.
321 (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol))
321 (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol))
322 (point)))
322 (point)))
323 (end (point))
323 (end (point))
324 (pattern (buffer-substring-no-properties beg end))
324 (pattern (buffer-substring-no-properties beg end))
325 (completions nil)
325 (completions nil)
326 (completion-table nil)
326 (completion-table nil)
327 completion
327 completion
328 (comint-output-filter-functions
328 (comint-output-filter-functions
329 (append comint-output-filter-functions
329 (append comint-output-filter-functions
330 '(ansi-color-filter-apply
330 '(ansi-color-filter-apply
331 (lambda (string)
331 (lambda (string)
332 ;(message (format "DEBUG filtering: %s" string))
332 ;(message (format "DEBUG filtering: %s" string))
333 (setq ugly-return (concat ugly-return string))
333 (setq ugly-return (concat ugly-return string))
334 (delete-region comint-last-output-start
334 (delete-region comint-last-output-start
335 (process-mark (get-buffer-process (current-buffer)))))))))
335 (process-mark (get-buffer-process (current-buffer)))))))))
336 ;(message (format "#DEBUG pattern: '%s'" pattern))
336 ;(message (format "#DEBUG pattern: '%s'" pattern))
337 (process-send-string python-process
337 (process-send-string python-process
338 (format ipython-completion-command-string pattern))
338 (format ipython-completion-command-string pattern))
339 (accept-process-output python-process)
339 (accept-process-output python-process)
340 ;(message (format "DEBUG return: %s" ugly-return))
340 ;(message (format "DEBUG return: %s" ugly-return))
341 (setq completions
341 (setq completions
342 (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep))
342 (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep))
343 (setq completion-table (loop for str in completions
343 (setq completion-table (loop for str in completions
344 collect (list str nil)))
344 collect (list str nil)))
345 (setq completion (try-completion pattern completion-table))
345 (setq completion (try-completion pattern completion-table))
346 (cond ((eq completion t))
346 (cond ((eq completion t))
347 ((null completion)
347 ((null completion)
348 (message "Can't find completion for \"%s\"" pattern)
348 (message "Can't find completion for \"%s\"" pattern)
349 (ding))
349 (ding))
350 ((not (string= pattern completion))
350 ((not (string= pattern completion))
351 (delete-region beg end)
351 (delete-region beg end)
352 (insert completion))
352 (insert completion))
353 (t
353 (t
354 (message "Making completion list...")
354 (message "Making completion list...")
355 (with-output-to-temp-buffer "*Python Completions*"
355 (with-output-to-temp-buffer "*Python Completions*"
356 (display-completion-list (all-completions pattern completion-table)))
356 (display-completion-list (all-completions pattern completion-table)))
357 (message "Making completion list...%s" "done")))))
357 (message "Making completion list...%s" "done")))))
358 ;; emacs
358 ;; emacs
359 (defun ipython-complete ()
359 (defun ipython-complete ()
360 "Try to complete the python symbol before point. Only knows about the stuff
360 "Try to complete the python symbol before point. Only knows about the stuff
361 in the current *Python* session."
361 in the current *Python* session."
362 (interactive)
362 (interactive)
363 (let* ((ugly-return nil)
363 (let* ((ugly-return nil)
364 (sep ";")
364 (sep ";")
365 (python-process (or (get-buffer-process (current-buffer))
365 (python-process (or (get-buffer-process (current-buffer))
366 ;XXX hack for .py buffers
366 ;XXX hack for .py buffers
367 (get-process py-which-bufname)))
367 (get-process py-which-bufname)))
368 ;; XXX currently we go backwards to find the beginning of an
368 ;; XXX currently we go backwards to find the beginning of an
369 ;; expression part; a more powerful approach in the future might be
369 ;; expression part; a more powerful approach in the future might be
370 ;; to let ipython have the complete line, so that context can be used
370 ;; to let ipython have the complete line, so that context can be used
371 ;; to do things like filename completion etc.
371 ;; to do things like filename completion etc.
372 (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol))
372 (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol))
373 (point)))
373 (point)))
374 (end (point))
374 (end (point))
375 (pattern (buffer-substring-no-properties beg end))
375 (pattern (buffer-substring-no-properties beg end))
376 (completions nil)
376 (completions nil)
377 (completion-table nil)
377 (completion-table nil)
378 completion
378 completion
379 (comint-preoutput-filter-functions
379 (comint-preoutput-filter-functions
380 (append comint-preoutput-filter-functions
380 (append comint-preoutput-filter-functions
381 '(ansi-color-filter-apply
381 '(ansi-color-filter-apply
382 (lambda (string)
382 (lambda (string)
383 (setq ugly-return (concat ugly-return string))
383 (setq ugly-return (concat ugly-return string))
384 "")))))
384 "")))))
385 (process-send-string python-process
385 (process-send-string python-process
386 (format ipython-completion-command-string pattern))
386 (format ipython-completion-command-string pattern))
387 (accept-process-output python-process)
387 (accept-process-output python-process)
388 (setq completions
388 (setq completions
389 (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep))
389 (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep))
390 ;(message (format "DEBUG completions: %S" completions))
390 ;(message (format "DEBUG completions: %S" completions))
391 (setq completion-table (loop for str in completions
391 (setq completion-table (loop for str in completions
392 collect (list str nil)))
392 collect (list str nil)))
393 (setq completion (try-completion pattern completion-table))
393 (setq completion (try-completion pattern completion-table))
394 (cond ((eq completion t))
394 (cond ((eq completion t))
395 ((null completion)
395 ((null completion)
396 (message "Can't find completion for \"%s\"" pattern)
396 (message "Can't find completion for \"%s\"" pattern)
397 (ding))
397 (ding))
398 ((not (string= pattern completion))
398 ((not (string= pattern completion))
399 (delete-region beg end)
399 (delete-region beg end)
400 (insert completion))
400 (insert completion))
401 (t
401 (t
402 (message "Making completion list...")
402 (message "Making completion list...")
403 (with-output-to-temp-buffer "*IPython Completions*"
403 (with-output-to-temp-buffer "*IPython Completions*"
404 (display-completion-list (all-completions pattern completion-table)))
404 (display-completion-list (all-completions pattern completion-table)))
405 (message "Making completion list...%s" "done")))))
405 (message "Making completion list...%s" "done")))))
406 )
406 )
407
407
408 ;;; autoindent support: patch sent in by Jin Liu <m.liu.jin@gmail.com>,
409 ;;; originally written by doxgen@newsmth.net
410 ;;; Minor modifications by fperez for xemacs compatibility.
411
412 (defvar ipython-autoindent t
413 "If non-nil, enable autoindent for IPython shell through python-mode.")
414
415 (defvar ipython-indenting-buffer-name "*IPython Indentation Calculation*"
416 "Temporary buffer for indenting multiline statement.")
417
418 (defun ipython-get-indenting-buffer ()
419 "Return a temporary buffer set in python-mode. Create one if necessary."
420 (let ((buf (get-buffer-create ipython-indenting-buffer-name)))
421 (set-buffer buf)
422 (unless (eq major-mode 'python-mode)
423 (python-mode))
424 buf))
425
426 (defvar ipython-indentation-string nil
427 "Indentation for the next line in a multiline statement.")
428
429 (defun ipython-send-and-indent ()
430 "Send the current line to IPython, and calculate the indentation for
431 the next line."
432 (interactive)
433 (if ipython-autoindent
434 (let ((line (buffer-substring (point-at-bol) (point)))
435 (after-prompt1)
436 (after-prompt2))
437 (save-excursion
438 (comint-bol t)
439 (if (looking-at py-shell-input-prompt-1-regexp)
440 (setq after-prompt1 t)
441 (setq after-prompt2 (looking-at py-shell-input-prompt-2-regexp)))
442 (with-current-buffer (ipython-get-indenting-buffer)
443 (when after-prompt1
444 (erase-buffer))
445 (when (or after-prompt1 after-prompt2)
446 (delete-region (point-at-bol) (point))
447 (insert line)
448 (newline-and-indent))))))
449 ;; send input line to ipython interpreter
450 (comint-send-input))
451
452 (defun ipython-indentation-hook (string)
453 "Insert indentation string if py-shell-input-prompt-2-regexp
454 matches last process output."
455 (let* ((start-marker (or comint-last-output-start
456 (point-min-marker)))
457 (end-marker (process-mark (get-buffer-process (current-buffer))))
458 (text (ansi-color-filter-apply (buffer-substring start-marker end-marker))))
459 (progn
460 ;; XXX if `text' matches both pattern, it MUST be the last prompt-2
461 (cond ((and (string-match "\n$" text) (string-match
462 py-shell-input-prompt-2-regexp text))
463 (with-current-buffer (ipython-get-indenting-buffer)
464 (erase-buffer)))
465 ;; still a prompt-2
466 ((string-match py-shell-input-prompt-2-regexp text)
467 (with-current-buffer (ipython-get-indenting-buffer)
468 (setq ipython-indentation-string
469 (buffer-substring (point-at-bol) (point))))
470 (unless (eq ipython-indentation-string nil)
471 (message "ipython-indentation-hook: %s#%s##" text
472 ipython-indentation-string))
473 (goto-char end-marker)
474 (insert ipython-indentation-string)))
475 (setq ipython-indentation-string nil))))
476
477 (add-hook 'py-shell-hook
478 (lambda ()
479 (add-hook 'comint-output-filter-functions
480 'ipython-indentation-hook)))
481
482 (define-key py-shell-map (kbd "RET") 'ipython-send-and-indent)
483 ;;; / end autoindent support
484
408 (provide 'ipython)
485 (provide 'ipython)
General Comments 0
You need to be logged in to leave comments. Login now