##// END OF EJS Templates
-Added a unit testing framework...
vivainio -
Show More
@@ -0,0 +1,31 b''
1 """ Run ipython unit tests
2
3 This should be launched from inside ipython by "%run runtests.py"
4 or through ipython command line "ipython runtests.py".
5
6 """
7
8 from path import path
9 import pprint,os
10 import IPython.ipapi
11 ip = IPython.ipapi.get()
12
13 def main():
14 all = path('.').files('test_*py')
15 results = {}
16 res_exc = [None]
17 def exchook(self,*e):
18 res_exc[0] = [e]
19 ip.IP.set_custom_exc((Exception,), exchook)
20 startdir = os.getcwd()
21 for test in all:
22 print test
23 res_exc[0] = 'ok'
24 os.chdir(startdir)
25 ip.runlines(test.text())
26 results[str(test)] = res_exc[0]
27
28 os.chdir(startdir)
29 pprint.pprint(results)
30
31 main() No newline at end of file
@@ -0,0 +1,6 b''
1 import os
2 cd /
3 assert os.getcwd() == '/'
4 %cd /tmp
5
6 assert os.getcwd() == '/tmp'
@@ -0,0 +1,3 b''
1 # this will fail w/ assertionerror
2 cd /
3 assert os.getcwd() == '/does/not/exist'
@@ -1,184 +1,197 b''
1 1 ''' IPython customization API
2 2
3 3 Your one-stop module for configuring & extending ipython
4 4
5 5 The API will probably break when ipython 1.0 is released, but so
6 6 will the other configuration method (rc files).
7 7
8 8 All names prefixed by underscores are for internal use, not part
9 9 of the public api.
10 10
11 11 Below is an example that you can just put to a module and import from ipython.
12 12
13 13 A good practice is to install the config script below as e.g.
14 14
15 15 ~/.ipython/my_private_conf.py
16 16
17 17 And do
18 18
19 19 import_mod my_private_conf
20 20
21 21 in ~/.ipython/ipythonrc
22 22
23 23 That way the module is imported at startup and you can have all your
24 24 personal configuration (as opposed to boilerplate ipythonrc-PROFILENAME
25 25 stuff) in there.
26 26
27 27 -----------------------------------------------
28 28 import IPython.ipapi as ip
29 29
30 30 def ankka_f(self, arg):
31 31 print "Ankka",self,"says uppercase:",arg.upper()
32 32
33 33 ip.expose_magic("ankka",ankka_f)
34 34
35 35 ip.magic('alias sayhi echo "Testing, hi ok"')
36 36 ip.magic('alias helloworld echo "Hello world"')
37 37 ip.system('pwd')
38 38
39 39 ip.ex('import re')
40 40 ip.ex("""
41 41 def funcci(a,b):
42 42 print a+b
43 43 print funcci(3,4)
44 44 """)
45 45 ip.ex("funcci(348,9)")
46 46
47 47 def jed_editor(self,filename, linenum=None):
48 48 print "Calling my own editor, jed ... via hook!"
49 49 import os
50 50 if linenum is None: linenum = 0
51 51 os.system('jed +%d %s' % (linenum, filename))
52 52 print "exiting jed"
53 53
54 54 ip.set_hook('editor',jed_editor)
55 55
56 56 o = ip.options()
57 57 o.autocall = 2 # FULL autocall mode
58 58
59 59 print "done!"
60 60
61 61 '''
62 62
63 63
64 64 class TryNext(Exception):
65 65 """ Try next hook exception.
66 66
67 67 Raise this in your hook function to indicate that the next
68 68 hook handler should be used to handle the operation.
69 69 """
70 70
71 71
72 72 # contains the most recently instantiated IPApi
73 73 _recent = None
74 74
75 75 def get():
76 76 """ Get an IPApi object, or None if not running under ipython
77 77
78 78 Running this should be the first thing you do when writing
79 79 extensions that can be imported as normal modules. You can then
80 80 direct all the configuration operations against the returned
81 81 object.
82 82
83 83 """
84 84
85 85 return _recent
86 86
87 87
88 88
89 89 class IPApi:
90 90 """ The actual API class for configuring IPython
91 91
92 92 You should do all of the IPython configuration by getting
93 93 an IPApi object with IPython.ipapi.get() and using the provided
94 94 methods.
95 95
96 96 """
97 97 def __init__(self,ip):
98 98
99 99 self.magic = ip.ipmagic
100 100
101 101 self.system = ip.ipsystem
102 102
103 103 self.set_hook = ip.set_hook
104 104
105 self.set_custom_exc = ip.set_custom_exc
106
105 107 self.IP = ip
106 108 global _recent
107 109 _recent = self
108 110
109 111
110 112
111 113 def options(self):
112 114 """ All configurable variables """
113 115 return self.IP.rc
114 116
115 117 def user_ns(self):
116 118 return self.IP.user_ns
117 119
118 120 def expose_magic(self,magicname, func):
119 121 ''' Expose own function as magic function for ipython
120 122
121 123 def foo_impl(self,parameter_s=''):
122 124 """My very own magic!. (Use docstrings, IPython reads them)."""
123 125 print 'Magic function. Passed parameter is between < >: <'+parameter_s+'>'
124 126 print 'The self object is:',self
125 127
126 128 ipapi.expose_magic("foo",foo_impl)
127 129 '''
128 130
129 131 import new
130 132 im = new.instancemethod(func,self.IP, self.IP.__class__)
131 133 setattr(self.IP, "magic_" + magicname, im)
132 134
133 135
134 136 def ex(self,cmd):
135 137 """ Execute a normal python statement in user namespace """
136 138 exec cmd in self.user_ns()
137 139
138 140 def ev(self,expr):
139 141 """ Evaluate python expression expr in user namespace
140 142
141 143 Returns the result of evaluation"""
142 144 return eval(expr,self.user_ns())
143 145
144 146 def meta(self):
145 147 """ Get a session-specific data store
146 148
147 149 Object returned by this method can be used to store
148 150 data that should persist through the ipython session.
149 151 """
150 152 return self.IP.meta
151 153
152 154 def getdb(self):
153 155 """ Return a handle to persistent dict-like database
154 156
155 157 Return a PickleShareDB object.
156 158 """
157 159 return self.IP.db
160 def runlines(self,lines):
161 """ Run the specified lines in interpreter, honoring ipython directives.
162
163 This allows %magic and !shell escape notations.
158 164
165 Takes either all lines in one string or list of lines.
166 """
167 if isinstance(lines,basestring):
168 self.IP.runlines(lines)
169 else:
170 self.IP.runlines('\n'.join(lines))
171
159 172
160 173 def launch_new_instance(user_ns = None):
161 174 """ Create and start a new ipython instance.
162 175
163 176 This can be called even without having an already initialized
164 177 ipython session running.
165 178
166 179 This is also used as the egg entry point for the 'ipython' script.
167 180
168 181 """
169 182 ses = create_session(user_ns)
170 183 ses.mainloop()
171 184
172 185
173 186 def create_session(user_ns = None):
174 187 """ Creates, but does not launch an IPython session.
175 188
176 189 Later on you can call obj.mainloop() on the returned object.
177 190
178 191 This should *not* be run when a session exists already.
179 192
180 193 """
181 194 if user_ns is not None:
182 195 user_ns["__name__"] = user_ns.get("__name__",'ipy_session')
183 196 import IPython
184 197 return IPython.Shell.start(user_ns = user_ns) No newline at end of file
@@ -1,5183 +1,5190 b''
1 2006-02-09 Ville Vainio <vivainio@gmail.com>
2
3 * test/*: Added a unit testing framework (finally).
4 '%run runtests.py' to run test_*.
5
6 * ipapi.py: Exposed runlines and set_custom_exc
7
1 8 2006-02-07 Ville Vainio <vivainio@gmail.com>
2 9
3 10 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
4 11 instead use "f(1 2)" as before.
5 12
6 13 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
7 14
8 15 * IPython/demo.py (IPythonDemo): Add new classes to the demo
9 16 facilities, for demos processed by the IPython input filter
10 17 (IPythonDemo), and for running a script one-line-at-a-time as a
11 18 demo, both for pure Python (LineDemo) and for IPython-processed
12 19 input (IPythonLineDemo). After a request by Dave Kohel, from the
13 20 SAGE team.
14 21 (Demo.edit): added and edit() method to the demo objects, to edit
15 22 the in-memory copy of the last executed block.
16 23
17 24 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
18 25 processing to %edit, %macro and %save. These commands can now be
19 26 invoked on the unprocessed input as it was typed by the user
20 27 (without any prefilters applied). After requests by the SAGE team
21 28 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
22 29
23 30 2006-02-01 Ville Vainio <vivainio@gmail.com>
24 31
25 32 * setup.py, eggsetup.py: easy_install ipython==dev works
26 33 correctly now (on Linux)
27 34
28 35 * ipy_user_conf,ipmaker: user config changes, removed spurious
29 36 warnings
30 37
31 38 * iplib: if rc.banner is string, use it as is.
32 39
33 40 * Magic: %pycat accepts a string argument and pages it's contents.
34 41
35 42
36 43 2006-01-30 Ville Vainio <vivainio@gmail.com>
37 44
38 45 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
39 46 Now %store and bookmarks work through PickleShare, meaning that
40 47 concurrent access is possible and all ipython sessions see the
41 48 same database situation all the time, instead of snapshot of
42 49 the situation when the session was started. Hence, %bookmark
43 50 results are immediately accessible from othes sessions. The database
44 51 is also available for use by user extensions. See:
45 52 http://www.python.org/pypi/pickleshare
46 53
47 54 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
48 55
49 56 * aliases can now be %store'd
50 57
51 58 * path.py move to Extensions so that pickleshare does not need
52 59 IPython-specific import. Extensions added to pythonpath right
53 60 at __init__.
54 61
55 62 * iplib.py: ipalias deprecated/redundant; aliases are converted and
56 63 called with _ip.system and the pre-transformed command string.
57 64
58 65 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
59 66
60 67 * IPython/iplib.py (interact): Fix that we were not catching
61 68 KeyboardInterrupt exceptions properly. I'm not quite sure why the
62 69 logic here had to change, but it's fixed now.
63 70
64 71 2006-01-29 Ville Vainio <vivainio@gmail.com>
65 72
66 73 * iplib.py: Try to import pyreadline on Windows.
67 74
68 75 2006-01-27 Ville Vainio <vivainio@gmail.com>
69 76
70 77 * iplib.py: Expose ipapi as _ip in builtin namespace.
71 78 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
72 79 and ip_set_hook (-> _ip.set_hook) redundant. % and !
73 80 syntax now produce _ip.* variant of the commands.
74 81
75 82 * "_ip.options().autoedit_syntax = 2" automatically throws
76 83 user to editor for syntax error correction without prompting.
77 84
78 85 2006-01-27 Ville Vainio <vivainio@gmail.com>
79 86
80 87 * ipmaker.py: Give "realistic" sys.argv for scripts (without
81 88 'ipython' at argv[0]) executed through command line.
82 89 NOTE: this DEPRECATES calling ipython with multiple scripts
83 90 ("ipython a.py b.py c.py")
84 91
85 92 * iplib.py, hooks.py: Added configurable input prefilter,
86 93 named 'input_prefilter'. See ext_rescapture.py for example
87 94 usage.
88 95
89 96 * ext_rescapture.py, Magic.py: Better system command output capture
90 97 through 'var = !ls' (deprecates user-visible %sc). Same notation
91 98 applies for magics, 'var = %alias' assigns alias list to var.
92 99
93 100 * ipapi.py: added meta() for accessing extension-usable data store.
94 101
95 102 * iplib.py: added InteractiveShell.getapi(). New magics should be
96 103 written doing self.getapi() instead of using the shell directly.
97 104
98 105 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
99 106 %store foo >> ~/myfoo.txt to store variables to files (in clean
100 107 textual form, not a restorable pickle).
101 108
102 109 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
103 110
104 111 * usage.py, Magic.py: added %quickref
105 112
106 113 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
107 114
108 115 * GetoptErrors when invoking magics etc. with wrong args
109 116 are now more helpful:
110 117 GetoptError: option -l not recognized (allowed: "qb" )
111 118
112 119 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
113 120
114 121 * IPython/demo.py (Demo.show): Flush stdout after each block, so
115 122 computationally intensive blocks don't appear to stall the demo.
116 123
117 124 2006-01-24 Ville Vainio <vivainio@gmail.com>
118 125
119 126 * iplib.py, hooks.py: 'result_display' hook can return a non-None
120 127 value to manipulate resulting history entry.
121 128
122 129 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
123 130 to instance methods of IPApi class, to make extending an embedded
124 131 IPython feasible. See ext_rehashdir.py for example usage.
125 132
126 133 * Merged 1071-1076 from banches/0.7.1
127 134
128 135
129 136 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
130 137
131 138 * tools/release (daystamp): Fix build tools to use the new
132 139 eggsetup.py script to build lightweight eggs.
133 140
134 141 * Applied changesets 1062 and 1064 before 0.7.1 release.
135 142
136 143 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
137 144 see the raw input history (without conversions like %ls ->
138 145 ipmagic("ls")). After a request from W. Stein, SAGE
139 146 (http://modular.ucsd.edu/sage) developer. This information is
140 147 stored in the input_hist_raw attribute of the IPython instance, so
141 148 developers can access it if needed (it's an InputList instance).
142 149
143 150 * Versionstring = 0.7.2.svn
144 151
145 152 * eggsetup.py: A separate script for constructing eggs, creates
146 153 proper launch scripts even on Windows (an .exe file in
147 154 \python24\scripts).
148 155
149 156 * ipapi.py: launch_new_instance, launch entry point needed for the
150 157 egg.
151 158
152 159 2006-01-23 Ville Vainio <vivainio@gmail.com>
153 160
154 161 * Added %cpaste magic for pasting python code
155 162
156 163 2006-01-22 Ville Vainio <vivainio@gmail.com>
157 164
158 165 * Merge from branches/0.7.1 into trunk, revs 1052-1057
159 166
160 167 * Versionstring = 0.7.2.svn
161 168
162 169 * eggsetup.py: A separate script for constructing eggs, creates
163 170 proper launch scripts even on Windows (an .exe file in
164 171 \python24\scripts).
165 172
166 173 * ipapi.py: launch_new_instance, launch entry point needed for the
167 174 egg.
168 175
169 176 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
170 177
171 178 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
172 179 %pfile foo would print the file for foo even if it was a binary.
173 180 Now, extensions '.so' and '.dll' are skipped.
174 181
175 182 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
176 183 bug, where macros would fail in all threaded modes. I'm not 100%
177 184 sure, so I'm going to put out an rc instead of making a release
178 185 today, and wait for feedback for at least a few days.
179 186
180 187 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
181 188 it...) the handling of pasting external code with autoindent on.
182 189 To get out of a multiline input, the rule will appear for most
183 190 users unchanged: two blank lines or change the indent level
184 191 proposed by IPython. But there is a twist now: you can
185 192 add/subtract only *one or two spaces*. If you add/subtract three
186 193 or more (unless you completely delete the line), IPython will
187 194 accept that line, and you'll need to enter a second one of pure
188 195 whitespace. I know it sounds complicated, but I can't find a
189 196 different solution that covers all the cases, with the right
190 197 heuristics. Hopefully in actual use, nobody will really notice
191 198 all these strange rules and things will 'just work'.
192 199
193 200 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
194 201
195 202 * IPython/iplib.py (interact): catch exceptions which can be
196 203 triggered asynchronously by signal handlers. Thanks to an
197 204 automatic crash report, submitted by Colin Kingsley
198 205 <tercel-AT-gentoo.org>.
199 206
200 207 2006-01-20 Ville Vainio <vivainio@gmail.com>
201 208
202 209 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
203 210 (%rehashdir, very useful, try it out) of how to extend ipython
204 211 with new magics. Also added Extensions dir to pythonpath to make
205 212 importing extensions easy.
206 213
207 214 * %store now complains when trying to store interactively declared
208 215 classes / instances of those classes.
209 216
210 217 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
211 218 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
212 219 if they exist, and ipy_user_conf.py with some defaults is created for
213 220 the user.
214 221
215 222 * Startup rehashing done by the config file, not InterpreterExec.
216 223 This means system commands are available even without selecting the
217 224 pysh profile. It's the sensible default after all.
218 225
219 226 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
220 227
221 228 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
222 229 multiline code with autoindent on working. But I am really not
223 230 sure, so this needs more testing. Will commit a debug-enabled
224 231 version for now, while I test it some more, so that Ville and
225 232 others may also catch any problems. Also made
226 233 self.indent_current_str() a method, to ensure that there's no
227 234 chance of the indent space count and the corresponding string
228 235 falling out of sync. All code needing the string should just call
229 236 the method.
230 237
231 238 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
232 239
233 240 * IPython/Magic.py (magic_edit): fix check for when users don't
234 241 save their output files, the try/except was in the wrong section.
235 242
236 243 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
237 244
238 245 * IPython/Magic.py (magic_run): fix __file__ global missing from
239 246 script's namespace when executed via %run. After a report by
240 247 Vivian.
241 248
242 249 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
243 250 when using python 2.4. The parent constructor changed in 2.4, and
244 251 we need to track it directly (we can't call it, as it messes up
245 252 readline and tab-completion inside our pdb would stop working).
246 253 After a bug report by R. Bernstein <rocky-AT-panix.com>.
247 254
248 255 2006-01-16 Ville Vainio <vivainio@gmail.com>
249 256
250 257 * Ipython/magic.py:Reverted back to old %edit functionality
251 258 that returns file contents on exit.
252 259
253 260 * IPython/path.py: Added Jason Orendorff's "path" module to
254 261 IPython tree, http://www.jorendorff.com/articles/python/path/.
255 262 You can get path objects conveniently through %sc, and !!, e.g.:
256 263 sc files=ls
257 264 for p in files.paths: # or files.p
258 265 print p,p.mtime
259 266
260 267 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
261 268 now work again without considering the exclusion regexp -
262 269 hence, things like ',foo my/path' turn to 'foo("my/path")'
263 270 instead of syntax error.
264 271
265 272
266 273 2006-01-14 Ville Vainio <vivainio@gmail.com>
267 274
268 275 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
269 276 ipapi decorators for python 2.4 users, options() provides access to rc
270 277 data.
271 278
272 279 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
273 280 as path separators (even on Linux ;-). Space character after
274 281 backslash (as yielded by tab completer) is still space;
275 282 "%cd long\ name" works as expected.
276 283
277 284 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
278 285 as "chain of command", with priority. API stays the same,
279 286 TryNext exception raised by a hook function signals that
280 287 current hook failed and next hook should try handling it, as
281 288 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
282 289 requested configurable display hook, which is now implemented.
283 290
284 291 2006-01-13 Ville Vainio <vivainio@gmail.com>
285 292
286 293 * IPython/platutils*.py: platform specific utility functions,
287 294 so far only set_term_title is implemented (change terminal
288 295 label in windowing systems). %cd now changes the title to
289 296 current dir.
290 297
291 298 * IPython/Release.py: Added myself to "authors" list,
292 299 had to create new files.
293 300
294 301 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
295 302 shell escape; not a known bug but had potential to be one in the
296 303 future.
297 304
298 305 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
299 306 extension API for IPython! See the module for usage example. Fix
300 307 OInspect for docstring-less magic functions.
301 308
302 309
303 310 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
304 311
305 312 * IPython/iplib.py (raw_input): temporarily deactivate all
306 313 attempts at allowing pasting of code with autoindent on. It
307 314 introduced bugs (reported by Prabhu) and I can't seem to find a
308 315 robust combination which works in all cases. Will have to revisit
309 316 later.
310 317
311 318 * IPython/genutils.py: remove isspace() function. We've dropped
312 319 2.2 compatibility, so it's OK to use the string method.
313 320
314 321 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
315 322
316 323 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
317 324 matching what NOT to autocall on, to include all python binary
318 325 operators (including things like 'and', 'or', 'is' and 'in').
319 326 Prompted by a bug report on 'foo & bar', but I realized we had
320 327 many more potential bug cases with other operators. The regexp is
321 328 self.re_exclude_auto, it's fairly commented.
322 329
323 330 2006-01-12 Ville Vainio <vivainio@gmail.com>
324 331
325 332 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
326 333 Prettified and hardened string/backslash quoting with ipsystem(),
327 334 ipalias() and ipmagic(). Now even \ characters are passed to
328 335 %magics, !shell escapes and aliases exactly as they are in the
329 336 ipython command line. Should improve backslash experience,
330 337 particularly in Windows (path delimiter for some commands that
331 338 won't understand '/'), but Unix benefits as well (regexps). %cd
332 339 magic still doesn't support backslash path delimiters, though. Also
333 340 deleted all pretense of supporting multiline command strings in
334 341 !system or %magic commands. Thanks to Jerry McRae for suggestions.
335 342
336 343 * doc/build_doc_instructions.txt added. Documentation on how to
337 344 use doc/update_manual.py, added yesterday. Both files contributed
338 345 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
339 346 doc/*.sh for deprecation at a later date.
340 347
341 348 * /ipython.py Added ipython.py to root directory for
342 349 zero-installation (tar xzvf ipython.tgz; cd ipython; python
343 350 ipython.py) and development convenience (no need to kee doing
344 351 "setup.py install" between changes).
345 352
346 353 * Made ! and !! shell escapes work (again) in multiline expressions:
347 354 if 1:
348 355 !ls
349 356 !!ls
350 357
351 358 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
352 359
353 360 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
354 361 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
355 362 module in case-insensitive installation. Was causing crashes
356 363 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
357 364
358 365 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
359 366 <marienz-AT-gentoo.org>, closes
360 367 http://www.scipy.net/roundup/ipython/issue51.
361 368
362 369 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
363 370
364 371 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
365 372 problem of excessive CPU usage under *nix and keyboard lag under
366 373 win32.
367 374
368 375 2006-01-10 *** Released version 0.7.0
369 376
370 377 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
371 378
372 379 * IPython/Release.py (revision): tag version number to 0.7.0,
373 380 ready for release.
374 381
375 382 * IPython/Magic.py (magic_edit): Add print statement to %edit so
376 383 it informs the user of the name of the temp. file used. This can
377 384 help if you decide later to reuse that same file, so you know
378 385 where to copy the info from.
379 386
380 387 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
381 388
382 389 * setup_bdist_egg.py: little script to build an egg. Added
383 390 support in the release tools as well.
384 391
385 392 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
386 393
387 394 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
388 395 version selection (new -wxversion command line and ipythonrc
389 396 parameter). Patch contributed by Arnd Baecker
390 397 <arnd.baecker-AT-web.de>.
391 398
392 399 * IPython/iplib.py (embed_mainloop): fix tab-completion in
393 400 embedded instances, for variables defined at the interactive
394 401 prompt of the embedded ipython. Reported by Arnd.
395 402
396 403 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
397 404 it can be used as a (stateful) toggle, or with a direct parameter.
398 405
399 406 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
400 407 could be triggered in certain cases and cause the traceback
401 408 printer not to work.
402 409
403 410 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
404 411
405 412 * IPython/iplib.py (_should_recompile): Small fix, closes
406 413 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
407 414
408 415 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
409 416
410 417 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
411 418 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
412 419 Moad for help with tracking it down.
413 420
414 421 * IPython/iplib.py (handle_auto): fix autocall handling for
415 422 objects which support BOTH __getitem__ and __call__ (so that f [x]
416 423 is left alone, instead of becoming f([x]) automatically).
417 424
418 425 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
419 426 Ville's patch.
420 427
421 428 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
422 429
423 430 * IPython/iplib.py (handle_auto): changed autocall semantics to
424 431 include 'smart' mode, where the autocall transformation is NOT
425 432 applied if there are no arguments on the line. This allows you to
426 433 just type 'foo' if foo is a callable to see its internal form,
427 434 instead of having it called with no arguments (typically a
428 435 mistake). The old 'full' autocall still exists: for that, you
429 436 need to set the 'autocall' parameter to 2 in your ipythonrc file.
430 437
431 438 * IPython/completer.py (Completer.attr_matches): add
432 439 tab-completion support for Enthoughts' traits. After a report by
433 440 Arnd and a patch by Prabhu.
434 441
435 442 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
436 443
437 444 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
438 445 Schmolck's patch to fix inspect.getinnerframes().
439 446
440 447 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
441 448 for embedded instances, regarding handling of namespaces and items
442 449 added to the __builtin__ one. Multiple embedded instances and
443 450 recursive embeddings should work better now (though I'm not sure
444 451 I've got all the corner cases fixed, that code is a bit of a brain
445 452 twister).
446 453
447 454 * IPython/Magic.py (magic_edit): added support to edit in-memory
448 455 macros (automatically creates the necessary temp files). %edit
449 456 also doesn't return the file contents anymore, it's just noise.
450 457
451 458 * IPython/completer.py (Completer.attr_matches): revert change to
452 459 complete only on attributes listed in __all__. I realized it
453 460 cripples the tab-completion system as a tool for exploring the
454 461 internals of unknown libraries (it renders any non-__all__
455 462 attribute off-limits). I got bit by this when trying to see
456 463 something inside the dis module.
457 464
458 465 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
459 466
460 467 * IPython/iplib.py (InteractiveShell.__init__): add .meta
461 468 namespace for users and extension writers to hold data in. This
462 469 follows the discussion in
463 470 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
464 471
465 472 * IPython/completer.py (IPCompleter.complete): small patch to help
466 473 tab-completion under Emacs, after a suggestion by John Barnard
467 474 <barnarj-AT-ccf.org>.
468 475
469 476 * IPython/Magic.py (Magic.extract_input_slices): added support for
470 477 the slice notation in magics to use N-M to represent numbers N...M
471 478 (closed endpoints). This is used by %macro and %save.
472 479
473 480 * IPython/completer.py (Completer.attr_matches): for modules which
474 481 define __all__, complete only on those. After a patch by Jeffrey
475 482 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
476 483 speed up this routine.
477 484
478 485 * IPython/Logger.py (Logger.log): fix a history handling bug. I
479 486 don't know if this is the end of it, but the behavior now is
480 487 certainly much more correct. Note that coupled with macros,
481 488 slightly surprising (at first) behavior may occur: a macro will in
482 489 general expand to multiple lines of input, so upon exiting, the
483 490 in/out counters will both be bumped by the corresponding amount
484 491 (as if the macro's contents had been typed interactively). Typing
485 492 %hist will reveal the intermediate (silently processed) lines.
486 493
487 494 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
488 495 pickle to fail (%run was overwriting __main__ and not restoring
489 496 it, but pickle relies on __main__ to operate).
490 497
491 498 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
492 499 using properties, but forgot to make the main InteractiveShell
493 500 class a new-style class. Properties fail silently, and
494 501 misteriously, with old-style class (getters work, but
495 502 setters don't do anything).
496 503
497 504 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
498 505
499 506 * IPython/Magic.py (magic_history): fix history reporting bug (I
500 507 know some nasties are still there, I just can't seem to find a
501 508 reproducible test case to track them down; the input history is
502 509 falling out of sync...)
503 510
504 511 * IPython/iplib.py (handle_shell_escape): fix bug where both
505 512 aliases and system accesses where broken for indented code (such
506 513 as loops).
507 514
508 515 * IPython/genutils.py (shell): fix small but critical bug for
509 516 win32 system access.
510 517
511 518 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
512 519
513 520 * IPython/iplib.py (showtraceback): remove use of the
514 521 sys.last_{type/value/traceback} structures, which are non
515 522 thread-safe.
516 523 (_prefilter): change control flow to ensure that we NEVER
517 524 introspect objects when autocall is off. This will guarantee that
518 525 having an input line of the form 'x.y', where access to attribute
519 526 'y' has side effects, doesn't trigger the side effect TWICE. It
520 527 is important to note that, with autocall on, these side effects
521 528 can still happen.
522 529 (ipsystem): new builtin, to complete the ip{magic/alias/system}
523 530 trio. IPython offers these three kinds of special calls which are
524 531 not python code, and it's a good thing to have their call method
525 532 be accessible as pure python functions (not just special syntax at
526 533 the command line). It gives us a better internal implementation
527 534 structure, as well as exposing these for user scripting more
528 535 cleanly.
529 536
530 537 * IPython/macro.py (Macro.__init__): moved macros to a standalone
531 538 file. Now that they'll be more likely to be used with the
532 539 persistance system (%store), I want to make sure their module path
533 540 doesn't change in the future, so that we don't break things for
534 541 users' persisted data.
535 542
536 543 * IPython/iplib.py (autoindent_update): move indentation
537 544 management into the _text_ processing loop, not the keyboard
538 545 interactive one. This is necessary to correctly process non-typed
539 546 multiline input (such as macros).
540 547
541 548 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
542 549 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
543 550 which was producing problems in the resulting manual.
544 551 (magic_whos): improve reporting of instances (show their class,
545 552 instead of simply printing 'instance' which isn't terribly
546 553 informative).
547 554
548 555 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
549 556 (minor mods) to support network shares under win32.
550 557
551 558 * IPython/winconsole.py (get_console_size): add new winconsole
552 559 module and fixes to page_dumb() to improve its behavior under
553 560 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
554 561
555 562 * IPython/Magic.py (Macro): simplified Macro class to just
556 563 subclass list. We've had only 2.2 compatibility for a very long
557 564 time, yet I was still avoiding subclassing the builtin types. No
558 565 more (I'm also starting to use properties, though I won't shift to
559 566 2.3-specific features quite yet).
560 567 (magic_store): added Ville's patch for lightweight variable
561 568 persistence, after a request on the user list by Matt Wilkie
562 569 <maphew-AT-gmail.com>. The new %store magic's docstring has full
563 570 details.
564 571
565 572 * IPython/iplib.py (InteractiveShell.post_config_initialization):
566 573 changed the default logfile name from 'ipython.log' to
567 574 'ipython_log.py'. These logs are real python files, and now that
568 575 we have much better multiline support, people are more likely to
569 576 want to use them as such. Might as well name them correctly.
570 577
571 578 * IPython/Magic.py: substantial cleanup. While we can't stop
572 579 using magics as mixins, due to the existing customizations 'out
573 580 there' which rely on the mixin naming conventions, at least I
574 581 cleaned out all cross-class name usage. So once we are OK with
575 582 breaking compatibility, the two systems can be separated.
576 583
577 584 * IPython/Logger.py: major cleanup. This one is NOT a mixin
578 585 anymore, and the class is a fair bit less hideous as well. New
579 586 features were also introduced: timestamping of input, and logging
580 587 of output results. These are user-visible with the -t and -o
581 588 options to %logstart. Closes
582 589 http://www.scipy.net/roundup/ipython/issue11 and a request by
583 590 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
584 591
585 592 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
586 593
587 594 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
588 595 better hadnle backslashes in paths. See the thread 'More Windows
589 596 questions part 2 - \/ characters revisited' on the iypthon user
590 597 list:
591 598 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
592 599
593 600 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
594 601
595 602 (InteractiveShell.__init__): change threaded shells to not use the
596 603 ipython crash handler. This was causing more problems than not,
597 604 as exceptions in the main thread (GUI code, typically) would
598 605 always show up as a 'crash', when they really weren't.
599 606
600 607 The colors and exception mode commands (%colors/%xmode) have been
601 608 synchronized to also take this into account, so users can get
602 609 verbose exceptions for their threaded code as well. I also added
603 610 support for activating pdb inside this exception handler as well,
604 611 so now GUI authors can use IPython's enhanced pdb at runtime.
605 612
606 613 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
607 614 true by default, and add it to the shipped ipythonrc file. Since
608 615 this asks the user before proceeding, I think it's OK to make it
609 616 true by default.
610 617
611 618 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
612 619 of the previous special-casing of input in the eval loop. I think
613 620 this is cleaner, as they really are commands and shouldn't have
614 621 a special role in the middle of the core code.
615 622
616 623 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
617 624
618 625 * IPython/iplib.py (edit_syntax_error): added support for
619 626 automatically reopening the editor if the file had a syntax error
620 627 in it. Thanks to scottt who provided the patch at:
621 628 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
622 629 version committed).
623 630
624 631 * IPython/iplib.py (handle_normal): add suport for multi-line
625 632 input with emtpy lines. This fixes
626 633 http://www.scipy.net/roundup/ipython/issue43 and a similar
627 634 discussion on the user list.
628 635
629 636 WARNING: a behavior change is necessarily introduced to support
630 637 blank lines: now a single blank line with whitespace does NOT
631 638 break the input loop, which means that when autoindent is on, by
632 639 default hitting return on the next (indented) line does NOT exit.
633 640
634 641 Instead, to exit a multiline input you can either have:
635 642
636 643 - TWO whitespace lines (just hit return again), or
637 644 - a single whitespace line of a different length than provided
638 645 by the autoindent (add or remove a space).
639 646
640 647 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
641 648 module to better organize all readline-related functionality.
642 649 I've deleted FlexCompleter and put all completion clases here.
643 650
644 651 * IPython/iplib.py (raw_input): improve indentation management.
645 652 It is now possible to paste indented code with autoindent on, and
646 653 the code is interpreted correctly (though it still looks bad on
647 654 screen, due to the line-oriented nature of ipython).
648 655 (MagicCompleter.complete): change behavior so that a TAB key on an
649 656 otherwise empty line actually inserts a tab, instead of completing
650 657 on the entire global namespace. This makes it easier to use the
651 658 TAB key for indentation. After a request by Hans Meine
652 659 <hans_meine-AT-gmx.net>
653 660 (_prefilter): add support so that typing plain 'exit' or 'quit'
654 661 does a sensible thing. Originally I tried to deviate as little as
655 662 possible from the default python behavior, but even that one may
656 663 change in this direction (thread on python-dev to that effect).
657 664 Regardless, ipython should do the right thing even if CPython's
658 665 '>>>' prompt doesn't.
659 666 (InteractiveShell): removed subclassing code.InteractiveConsole
660 667 class. By now we'd overridden just about all of its methods: I've
661 668 copied the remaining two over, and now ipython is a standalone
662 669 class. This will provide a clearer picture for the chainsaw
663 670 branch refactoring.
664 671
665 672 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
666 673
667 674 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
668 675 failures for objects which break when dir() is called on them.
669 676
670 677 * IPython/FlexCompleter.py (Completer.__init__): Added support for
671 678 distinct local and global namespaces in the completer API. This
672 679 change allows us top properly handle completion with distinct
673 680 scopes, including in embedded instances (this had never really
674 681 worked correctly).
675 682
676 683 Note: this introduces a change in the constructor for
677 684 MagicCompleter, as a new global_namespace parameter is now the
678 685 second argument (the others were bumped one position).
679 686
680 687 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
681 688
682 689 * IPython/iplib.py (embed_mainloop): fix tab-completion in
683 690 embedded instances (which can be done now thanks to Vivian's
684 691 frame-handling fixes for pdb).
685 692 (InteractiveShell.__init__): Fix namespace handling problem in
686 693 embedded instances. We were overwriting __main__ unconditionally,
687 694 and this should only be done for 'full' (non-embedded) IPython;
688 695 embedded instances must respect the caller's __main__. Thanks to
689 696 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
690 697
691 698 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
692 699
693 700 * setup.py: added download_url to setup(). This registers the
694 701 download address at PyPI, which is not only useful to humans
695 702 browsing the site, but is also picked up by setuptools (the Eggs
696 703 machinery). Thanks to Ville and R. Kern for the info/discussion
697 704 on this.
698 705
699 706 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
700 707
701 708 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
702 709 This brings a lot of nice functionality to the pdb mode, which now
703 710 has tab-completion, syntax highlighting, and better stack handling
704 711 than before. Many thanks to Vivian De Smedt
705 712 <vivian-AT-vdesmedt.com> for the original patches.
706 713
707 714 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
708 715
709 716 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
710 717 sequence to consistently accept the banner argument. The
711 718 inconsistency was tripping SAGE, thanks to Gary Zablackis
712 719 <gzabl-AT-yahoo.com> for the report.
713 720
714 721 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
715 722
716 723 * IPython/iplib.py (InteractiveShell.post_config_initialization):
717 724 Fix bug where a naked 'alias' call in the ipythonrc file would
718 725 cause a crash. Bug reported by Jorgen Stenarson.
719 726
720 727 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
721 728
722 729 * IPython/ipmaker.py (make_IPython): cleanups which should improve
723 730 startup time.
724 731
725 732 * IPython/iplib.py (runcode): my globals 'fix' for embedded
726 733 instances had introduced a bug with globals in normal code. Now
727 734 it's working in all cases.
728 735
729 736 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
730 737 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
731 738 has been introduced to set the default case sensitivity of the
732 739 searches. Users can still select either mode at runtime on a
733 740 per-search basis.
734 741
735 742 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
736 743
737 744 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
738 745 attributes in wildcard searches for subclasses. Modified version
739 746 of a patch by Jorgen.
740 747
741 748 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
742 749
743 750 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
744 751 embedded instances. I added a user_global_ns attribute to the
745 752 InteractiveShell class to handle this.
746 753
747 754 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
748 755
749 756 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
750 757 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
751 758 (reported under win32, but may happen also in other platforms).
752 759 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
753 760
754 761 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
755 762
756 763 * IPython/Magic.py (magic_psearch): new support for wildcard
757 764 patterns. Now, typing ?a*b will list all names which begin with a
758 765 and end in b, for example. The %psearch magic has full
759 766 docstrings. Many thanks to JΓΆrgen Stenarson
760 767 <jorgen.stenarson-AT-bostream.nu>, author of the patches
761 768 implementing this functionality.
762 769
763 770 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
764 771
765 772 * Manual: fixed long-standing annoyance of double-dashes (as in
766 773 --prefix=~, for example) being stripped in the HTML version. This
767 774 is a latex2html bug, but a workaround was provided. Many thanks
768 775 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
769 776 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
770 777 rolling. This seemingly small issue had tripped a number of users
771 778 when first installing, so I'm glad to see it gone.
772 779
773 780 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
774 781
775 782 * IPython/Extensions/numeric_formats.py: fix missing import,
776 783 reported by Stephen Walton.
777 784
778 785 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
779 786
780 787 * IPython/demo.py: finish demo module, fully documented now.
781 788
782 789 * IPython/genutils.py (file_read): simple little utility to read a
783 790 file and ensure it's closed afterwards.
784 791
785 792 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
786 793
787 794 * IPython/demo.py (Demo.__init__): added support for individually
788 795 tagging blocks for automatic execution.
789 796
790 797 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
791 798 syntax-highlighted python sources, requested by John.
792 799
793 800 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
794 801
795 802 * IPython/demo.py (Demo.again): fix bug where again() blocks after
796 803 finishing.
797 804
798 805 * IPython/genutils.py (shlex_split): moved from Magic to here,
799 806 where all 2.2 compatibility stuff lives. I needed it for demo.py.
800 807
801 808 * IPython/demo.py (Demo.__init__): added support for silent
802 809 blocks, improved marks as regexps, docstrings written.
803 810 (Demo.__init__): better docstring, added support for sys.argv.
804 811
805 812 * IPython/genutils.py (marquee): little utility used by the demo
806 813 code, handy in general.
807 814
808 815 * IPython/demo.py (Demo.__init__): new class for interactive
809 816 demos. Not documented yet, I just wrote it in a hurry for
810 817 scipy'05. Will docstring later.
811 818
812 819 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
813 820
814 821 * IPython/Shell.py (sigint_handler): Drastic simplification which
815 822 also seems to make Ctrl-C work correctly across threads! This is
816 823 so simple, that I can't beleive I'd missed it before. Needs more
817 824 testing, though.
818 825 (KBINT): Never mind, revert changes. I'm sure I'd tried something
819 826 like this before...
820 827
821 828 * IPython/genutils.py (get_home_dir): add protection against
822 829 non-dirs in win32 registry.
823 830
824 831 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
825 832 bug where dict was mutated while iterating (pysh crash).
826 833
827 834 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
828 835
829 836 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
830 837 spurious newlines added by this routine. After a report by
831 838 F. Mantegazza.
832 839
833 840 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
834 841
835 842 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
836 843 calls. These were a leftover from the GTK 1.x days, and can cause
837 844 problems in certain cases (after a report by John Hunter).
838 845
839 846 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
840 847 os.getcwd() fails at init time. Thanks to patch from David Remahl
841 848 <chmod007-AT-mac.com>.
842 849 (InteractiveShell.__init__): prevent certain special magics from
843 850 being shadowed by aliases. Closes
844 851 http://www.scipy.net/roundup/ipython/issue41.
845 852
846 853 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
847 854
848 855 * IPython/iplib.py (InteractiveShell.complete): Added new
849 856 top-level completion method to expose the completion mechanism
850 857 beyond readline-based environments.
851 858
852 859 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
853 860
854 861 * tools/ipsvnc (svnversion): fix svnversion capture.
855 862
856 863 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
857 864 attribute to self, which was missing. Before, it was set by a
858 865 routine which in certain cases wasn't being called, so the
859 866 instance could end up missing the attribute. This caused a crash.
860 867 Closes http://www.scipy.net/roundup/ipython/issue40.
861 868
862 869 2005-08-16 Fernando Perez <fperez@colorado.edu>
863 870
864 871 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
865 872 contains non-string attribute. Closes
866 873 http://www.scipy.net/roundup/ipython/issue38.
867 874
868 875 2005-08-14 Fernando Perez <fperez@colorado.edu>
869 876
870 877 * tools/ipsvnc: Minor improvements, to add changeset info.
871 878
872 879 2005-08-12 Fernando Perez <fperez@colorado.edu>
873 880
874 881 * IPython/iplib.py (runsource): remove self.code_to_run_src
875 882 attribute. I realized this is nothing more than
876 883 '\n'.join(self.buffer), and having the same data in two different
877 884 places is just asking for synchronization bugs. This may impact
878 885 people who have custom exception handlers, so I need to warn
879 886 ipython-dev about it (F. Mantegazza may use them).
880 887
881 888 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
882 889
883 890 * IPython/genutils.py: fix 2.2 compatibility (generators)
884 891
885 892 2005-07-18 Fernando Perez <fperez@colorado.edu>
886 893
887 894 * IPython/genutils.py (get_home_dir): fix to help users with
888 895 invalid $HOME under win32.
889 896
890 897 2005-07-17 Fernando Perez <fperez@colorado.edu>
891 898
892 899 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
893 900 some old hacks and clean up a bit other routines; code should be
894 901 simpler and a bit faster.
895 902
896 903 * IPython/iplib.py (interact): removed some last-resort attempts
897 904 to survive broken stdout/stderr. That code was only making it
898 905 harder to abstract out the i/o (necessary for gui integration),
899 906 and the crashes it could prevent were extremely rare in practice
900 907 (besides being fully user-induced in a pretty violent manner).
901 908
902 909 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
903 910 Nothing major yet, but the code is simpler to read; this should
904 911 make it easier to do more serious modifications in the future.
905 912
906 913 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
907 914 which broke in .15 (thanks to a report by Ville).
908 915
909 916 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
910 917 be quite correct, I know next to nothing about unicode). This
911 918 will allow unicode strings to be used in prompts, amongst other
912 919 cases. It also will prevent ipython from crashing when unicode
913 920 shows up unexpectedly in many places. If ascii encoding fails, we
914 921 assume utf_8. Currently the encoding is not a user-visible
915 922 setting, though it could be made so if there is demand for it.
916 923
917 924 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
918 925
919 926 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
920 927
921 928 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
922 929
923 930 * IPython/genutils.py: Add 2.2 compatibility here, so all other
924 931 code can work transparently for 2.2/2.3.
925 932
926 933 2005-07-16 Fernando Perez <fperez@colorado.edu>
927 934
928 935 * IPython/ultraTB.py (ExceptionColors): Make a global variable
929 936 out of the color scheme table used for coloring exception
930 937 tracebacks. This allows user code to add new schemes at runtime.
931 938 This is a minimally modified version of the patch at
932 939 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
933 940 for the contribution.
934 941
935 942 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
936 943 slightly modified version of the patch in
937 944 http://www.scipy.net/roundup/ipython/issue34, which also allows me
938 945 to remove the previous try/except solution (which was costlier).
939 946 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
940 947
941 948 2005-06-08 Fernando Perez <fperez@colorado.edu>
942 949
943 950 * IPython/iplib.py (write/write_err): Add methods to abstract all
944 951 I/O a bit more.
945 952
946 953 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
947 954 warning, reported by Aric Hagberg, fix by JD Hunter.
948 955
949 956 2005-06-02 *** Released version 0.6.15
950 957
951 958 2005-06-01 Fernando Perez <fperez@colorado.edu>
952 959
953 960 * IPython/iplib.py (MagicCompleter.file_matches): Fix
954 961 tab-completion of filenames within open-quoted strings. Note that
955 962 this requires that in ~/.ipython/ipythonrc, users change the
956 963 readline delimiters configuration to read:
957 964
958 965 readline_remove_delims -/~
959 966
960 967
961 968 2005-05-31 *** Released version 0.6.14
962 969
963 970 2005-05-29 Fernando Perez <fperez@colorado.edu>
964 971
965 972 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
966 973 with files not on the filesystem. Reported by Eliyahu Sandler
967 974 <eli@gondolin.net>
968 975
969 976 2005-05-22 Fernando Perez <fperez@colorado.edu>
970 977
971 978 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
972 979 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
973 980
974 981 2005-05-19 Fernando Perez <fperez@colorado.edu>
975 982
976 983 * IPython/iplib.py (safe_execfile): close a file which could be
977 984 left open (causing problems in win32, which locks open files).
978 985 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
979 986
980 987 2005-05-18 Fernando Perez <fperez@colorado.edu>
981 988
982 989 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
983 990 keyword arguments correctly to safe_execfile().
984 991
985 992 2005-05-13 Fernando Perez <fperez@colorado.edu>
986 993
987 994 * ipython.1: Added info about Qt to manpage, and threads warning
988 995 to usage page (invoked with --help).
989 996
990 997 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
991 998 new matcher (it goes at the end of the priority list) to do
992 999 tab-completion on named function arguments. Submitted by George
993 1000 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
994 1001 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
995 1002 for more details.
996 1003
997 1004 * IPython/Magic.py (magic_run): Added new -e flag to ignore
998 1005 SystemExit exceptions in the script being run. Thanks to a report
999 1006 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1000 1007 producing very annoying behavior when running unit tests.
1001 1008
1002 1009 2005-05-12 Fernando Perez <fperez@colorado.edu>
1003 1010
1004 1011 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1005 1012 which I'd broken (again) due to a changed regexp. In the process,
1006 1013 added ';' as an escape to auto-quote the whole line without
1007 1014 splitting its arguments. Thanks to a report by Jerry McRae
1008 1015 <qrs0xyc02-AT-sneakemail.com>.
1009 1016
1010 1017 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1011 1018 possible crashes caused by a TokenError. Reported by Ed Schofield
1012 1019 <schofield-AT-ftw.at>.
1013 1020
1014 1021 2005-05-06 Fernando Perez <fperez@colorado.edu>
1015 1022
1016 1023 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1017 1024
1018 1025 2005-04-29 Fernando Perez <fperez@colorado.edu>
1019 1026
1020 1027 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1021 1028 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1022 1029 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1023 1030 which provides support for Qt interactive usage (similar to the
1024 1031 existing one for WX and GTK). This had been often requested.
1025 1032
1026 1033 2005-04-14 *** Released version 0.6.13
1027 1034
1028 1035 2005-04-08 Fernando Perez <fperez@colorado.edu>
1029 1036
1030 1037 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1031 1038 from _ofind, which gets called on almost every input line. Now,
1032 1039 we only try to get docstrings if they are actually going to be
1033 1040 used (the overhead of fetching unnecessary docstrings can be
1034 1041 noticeable for certain objects, such as Pyro proxies).
1035 1042
1036 1043 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1037 1044 for completers. For some reason I had been passing them the state
1038 1045 variable, which completers never actually need, and was in
1039 1046 conflict with the rlcompleter API. Custom completers ONLY need to
1040 1047 take the text parameter.
1041 1048
1042 1049 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1043 1050 work correctly in pysh. I've also moved all the logic which used
1044 1051 to be in pysh.py here, which will prevent problems with future
1045 1052 upgrades. However, this time I must warn users to update their
1046 1053 pysh profile to include the line
1047 1054
1048 1055 import_all IPython.Extensions.InterpreterExec
1049 1056
1050 1057 because otherwise things won't work for them. They MUST also
1051 1058 delete pysh.py and the line
1052 1059
1053 1060 execfile pysh.py
1054 1061
1055 1062 from their ipythonrc-pysh.
1056 1063
1057 1064 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1058 1065 robust in the face of objects whose dir() returns non-strings
1059 1066 (which it shouldn't, but some broken libs like ITK do). Thanks to
1060 1067 a patch by John Hunter (implemented differently, though). Also
1061 1068 minor improvements by using .extend instead of + on lists.
1062 1069
1063 1070 * pysh.py:
1064 1071
1065 1072 2005-04-06 Fernando Perez <fperez@colorado.edu>
1066 1073
1067 1074 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1068 1075 by default, so that all users benefit from it. Those who don't
1069 1076 want it can still turn it off.
1070 1077
1071 1078 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1072 1079 config file, I'd forgotten about this, so users were getting it
1073 1080 off by default.
1074 1081
1075 1082 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1076 1083 consistency. Now magics can be called in multiline statements,
1077 1084 and python variables can be expanded in magic calls via $var.
1078 1085 This makes the magic system behave just like aliases or !system
1079 1086 calls.
1080 1087
1081 1088 2005-03-28 Fernando Perez <fperez@colorado.edu>
1082 1089
1083 1090 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1084 1091 expensive string additions for building command. Add support for
1085 1092 trailing ';' when autocall is used.
1086 1093
1087 1094 2005-03-26 Fernando Perez <fperez@colorado.edu>
1088 1095
1089 1096 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1090 1097 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1091 1098 ipython.el robust against prompts with any number of spaces
1092 1099 (including 0) after the ':' character.
1093 1100
1094 1101 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1095 1102 continuation prompt, which misled users to think the line was
1096 1103 already indented. Closes debian Bug#300847, reported to me by
1097 1104 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1098 1105
1099 1106 2005-03-23 Fernando Perez <fperez@colorado.edu>
1100 1107
1101 1108 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1102 1109 properly aligned if they have embedded newlines.
1103 1110
1104 1111 * IPython/iplib.py (runlines): Add a public method to expose
1105 1112 IPython's code execution machinery, so that users can run strings
1106 1113 as if they had been typed at the prompt interactively.
1107 1114 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1108 1115 methods which can call the system shell, but with python variable
1109 1116 expansion. The three such methods are: __IPYTHON__.system,
1110 1117 .getoutput and .getoutputerror. These need to be documented in a
1111 1118 'public API' section (to be written) of the manual.
1112 1119
1113 1120 2005-03-20 Fernando Perez <fperez@colorado.edu>
1114 1121
1115 1122 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1116 1123 for custom exception handling. This is quite powerful, and it
1117 1124 allows for user-installable exception handlers which can trap
1118 1125 custom exceptions at runtime and treat them separately from
1119 1126 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1120 1127 Mantegazza <mantegazza-AT-ill.fr>.
1121 1128 (InteractiveShell.set_custom_completer): public API function to
1122 1129 add new completers at runtime.
1123 1130
1124 1131 2005-03-19 Fernando Perez <fperez@colorado.edu>
1125 1132
1126 1133 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1127 1134 allow objects which provide their docstrings via non-standard
1128 1135 mechanisms (like Pyro proxies) to still be inspected by ipython's
1129 1136 ? system.
1130 1137
1131 1138 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1132 1139 automatic capture system. I tried quite hard to make it work
1133 1140 reliably, and simply failed. I tried many combinations with the
1134 1141 subprocess module, but eventually nothing worked in all needed
1135 1142 cases (not blocking stdin for the child, duplicating stdout
1136 1143 without blocking, etc). The new %sc/%sx still do capture to these
1137 1144 magical list/string objects which make shell use much more
1138 1145 conveninent, so not all is lost.
1139 1146
1140 1147 XXX - FIX MANUAL for the change above!
1141 1148
1142 1149 (runsource): I copied code.py's runsource() into ipython to modify
1143 1150 it a bit. Now the code object and source to be executed are
1144 1151 stored in ipython. This makes this info accessible to third-party
1145 1152 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1146 1153 Mantegazza <mantegazza-AT-ill.fr>.
1147 1154
1148 1155 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1149 1156 history-search via readline (like C-p/C-n). I'd wanted this for a
1150 1157 long time, but only recently found out how to do it. For users
1151 1158 who already have their ipythonrc files made and want this, just
1152 1159 add:
1153 1160
1154 1161 readline_parse_and_bind "\e[A": history-search-backward
1155 1162 readline_parse_and_bind "\e[B": history-search-forward
1156 1163
1157 1164 2005-03-18 Fernando Perez <fperez@colorado.edu>
1158 1165
1159 1166 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1160 1167 LSString and SList classes which allow transparent conversions
1161 1168 between list mode and whitespace-separated string.
1162 1169 (magic_r): Fix recursion problem in %r.
1163 1170
1164 1171 * IPython/genutils.py (LSString): New class to be used for
1165 1172 automatic storage of the results of all alias/system calls in _o
1166 1173 and _e (stdout/err). These provide a .l/.list attribute which
1167 1174 does automatic splitting on newlines. This means that for most
1168 1175 uses, you'll never need to do capturing of output with %sc/%sx
1169 1176 anymore, since ipython keeps this always done for you. Note that
1170 1177 only the LAST results are stored, the _o/e variables are
1171 1178 overwritten on each call. If you need to save their contents
1172 1179 further, simply bind them to any other name.
1173 1180
1174 1181 2005-03-17 Fernando Perez <fperez@colorado.edu>
1175 1182
1176 1183 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1177 1184 prompt namespace handling.
1178 1185
1179 1186 2005-03-16 Fernando Perez <fperez@colorado.edu>
1180 1187
1181 1188 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1182 1189 classic prompts to be '>>> ' (final space was missing, and it
1183 1190 trips the emacs python mode).
1184 1191 (BasePrompt.__str__): Added safe support for dynamic prompt
1185 1192 strings. Now you can set your prompt string to be '$x', and the
1186 1193 value of x will be printed from your interactive namespace. The
1187 1194 interpolation syntax includes the full Itpl support, so
1188 1195 ${foo()+x+bar()} is a valid prompt string now, and the function
1189 1196 calls will be made at runtime.
1190 1197
1191 1198 2005-03-15 Fernando Perez <fperez@colorado.edu>
1192 1199
1193 1200 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1194 1201 avoid name clashes in pylab. %hist still works, it just forwards
1195 1202 the call to %history.
1196 1203
1197 1204 2005-03-02 *** Released version 0.6.12
1198 1205
1199 1206 2005-03-02 Fernando Perez <fperez@colorado.edu>
1200 1207
1201 1208 * IPython/iplib.py (handle_magic): log magic calls properly as
1202 1209 ipmagic() function calls.
1203 1210
1204 1211 * IPython/Magic.py (magic_time): Improved %time to support
1205 1212 statements and provide wall-clock as well as CPU time.
1206 1213
1207 1214 2005-02-27 Fernando Perez <fperez@colorado.edu>
1208 1215
1209 1216 * IPython/hooks.py: New hooks module, to expose user-modifiable
1210 1217 IPython functionality in a clean manner. For now only the editor
1211 1218 hook is actually written, and other thigns which I intend to turn
1212 1219 into proper hooks aren't yet there. The display and prefilter
1213 1220 stuff, for example, should be hooks. But at least now the
1214 1221 framework is in place, and the rest can be moved here with more
1215 1222 time later. IPython had had a .hooks variable for a long time for
1216 1223 this purpose, but I'd never actually used it for anything.
1217 1224
1218 1225 2005-02-26 Fernando Perez <fperez@colorado.edu>
1219 1226
1220 1227 * IPython/ipmaker.py (make_IPython): make the default ipython
1221 1228 directory be called _ipython under win32, to follow more the
1222 1229 naming peculiarities of that platform (where buggy software like
1223 1230 Visual Sourcesafe breaks with .named directories). Reported by
1224 1231 Ville Vainio.
1225 1232
1226 1233 2005-02-23 Fernando Perez <fperez@colorado.edu>
1227 1234
1228 1235 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1229 1236 auto_aliases for win32 which were causing problems. Users can
1230 1237 define the ones they personally like.
1231 1238
1232 1239 2005-02-21 Fernando Perez <fperez@colorado.edu>
1233 1240
1234 1241 * IPython/Magic.py (magic_time): new magic to time execution of
1235 1242 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1236 1243
1237 1244 2005-02-19 Fernando Perez <fperez@colorado.edu>
1238 1245
1239 1246 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1240 1247 into keys (for prompts, for example).
1241 1248
1242 1249 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1243 1250 prompts in case users want them. This introduces a small behavior
1244 1251 change: ipython does not automatically add a space to all prompts
1245 1252 anymore. To get the old prompts with a space, users should add it
1246 1253 manually to their ipythonrc file, so for example prompt_in1 should
1247 1254 now read 'In [\#]: ' instead of 'In [\#]:'.
1248 1255 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1249 1256 file) to control left-padding of secondary prompts.
1250 1257
1251 1258 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1252 1259 the profiler can't be imported. Fix for Debian, which removed
1253 1260 profile.py because of License issues. I applied a slightly
1254 1261 modified version of the original Debian patch at
1255 1262 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1256 1263
1257 1264 2005-02-17 Fernando Perez <fperez@colorado.edu>
1258 1265
1259 1266 * IPython/genutils.py (native_line_ends): Fix bug which would
1260 1267 cause improper line-ends under win32 b/c I was not opening files
1261 1268 in binary mode. Bug report and fix thanks to Ville.
1262 1269
1263 1270 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1264 1271 trying to catch spurious foo[1] autocalls. My fix actually broke
1265 1272 ',/' autoquote/call with explicit escape (bad regexp).
1266 1273
1267 1274 2005-02-15 *** Released version 0.6.11
1268 1275
1269 1276 2005-02-14 Fernando Perez <fperez@colorado.edu>
1270 1277
1271 1278 * IPython/background_jobs.py: New background job management
1272 1279 subsystem. This is implemented via a new set of classes, and
1273 1280 IPython now provides a builtin 'jobs' object for background job
1274 1281 execution. A convenience %bg magic serves as a lightweight
1275 1282 frontend for starting the more common type of calls. This was
1276 1283 inspired by discussions with B. Granger and the BackgroundCommand
1277 1284 class described in the book Python Scripting for Computational
1278 1285 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1279 1286 (although ultimately no code from this text was used, as IPython's
1280 1287 system is a separate implementation).
1281 1288
1282 1289 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1283 1290 to control the completion of single/double underscore names
1284 1291 separately. As documented in the example ipytonrc file, the
1285 1292 readline_omit__names variable can now be set to 2, to omit even
1286 1293 single underscore names. Thanks to a patch by Brian Wong
1287 1294 <BrianWong-AT-AirgoNetworks.Com>.
1288 1295 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1289 1296 be autocalled as foo([1]) if foo were callable. A problem for
1290 1297 things which are both callable and implement __getitem__.
1291 1298 (init_readline): Fix autoindentation for win32. Thanks to a patch
1292 1299 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1293 1300
1294 1301 2005-02-12 Fernando Perez <fperez@colorado.edu>
1295 1302
1296 1303 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1297 1304 which I had written long ago to sort out user error messages which
1298 1305 may occur during startup. This seemed like a good idea initially,
1299 1306 but it has proven a disaster in retrospect. I don't want to
1300 1307 change much code for now, so my fix is to set the internal 'debug'
1301 1308 flag to true everywhere, whose only job was precisely to control
1302 1309 this subsystem. This closes issue 28 (as well as avoiding all
1303 1310 sorts of strange hangups which occur from time to time).
1304 1311
1305 1312 2005-02-07 Fernando Perez <fperez@colorado.edu>
1306 1313
1307 1314 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1308 1315 previous call produced a syntax error.
1309 1316
1310 1317 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1311 1318 classes without constructor.
1312 1319
1313 1320 2005-02-06 Fernando Perez <fperez@colorado.edu>
1314 1321
1315 1322 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1316 1323 completions with the results of each matcher, so we return results
1317 1324 to the user from all namespaces. This breaks with ipython
1318 1325 tradition, but I think it's a nicer behavior. Now you get all
1319 1326 possible completions listed, from all possible namespaces (python,
1320 1327 filesystem, magics...) After a request by John Hunter
1321 1328 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1322 1329
1323 1330 2005-02-05 Fernando Perez <fperez@colorado.edu>
1324 1331
1325 1332 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1326 1333 the call had quote characters in it (the quotes were stripped).
1327 1334
1328 1335 2005-01-31 Fernando Perez <fperez@colorado.edu>
1329 1336
1330 1337 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1331 1338 Itpl.itpl() to make the code more robust against psyco
1332 1339 optimizations.
1333 1340
1334 1341 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1335 1342 of causing an exception. Quicker, cleaner.
1336 1343
1337 1344 2005-01-28 Fernando Perez <fperez@colorado.edu>
1338 1345
1339 1346 * scripts/ipython_win_post_install.py (install): hardcode
1340 1347 sys.prefix+'python.exe' as the executable path. It turns out that
1341 1348 during the post-installation run, sys.executable resolves to the
1342 1349 name of the binary installer! I should report this as a distutils
1343 1350 bug, I think. I updated the .10 release with this tiny fix, to
1344 1351 avoid annoying the lists further.
1345 1352
1346 1353 2005-01-27 *** Released version 0.6.10
1347 1354
1348 1355 2005-01-27 Fernando Perez <fperez@colorado.edu>
1349 1356
1350 1357 * IPython/numutils.py (norm): Added 'inf' as optional name for
1351 1358 L-infinity norm, included references to mathworld.com for vector
1352 1359 norm definitions.
1353 1360 (amin/amax): added amin/amax for array min/max. Similar to what
1354 1361 pylab ships with after the recent reorganization of names.
1355 1362 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1356 1363
1357 1364 * ipython.el: committed Alex's recent fixes and improvements.
1358 1365 Tested with python-mode from CVS, and it looks excellent. Since
1359 1366 python-mode hasn't released anything in a while, I'm temporarily
1360 1367 putting a copy of today's CVS (v 4.70) of python-mode in:
1361 1368 http://ipython.scipy.org/tmp/python-mode.el
1362 1369
1363 1370 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1364 1371 sys.executable for the executable name, instead of assuming it's
1365 1372 called 'python.exe' (the post-installer would have produced broken
1366 1373 setups on systems with a differently named python binary).
1367 1374
1368 1375 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1369 1376 references to os.linesep, to make the code more
1370 1377 platform-independent. This is also part of the win32 coloring
1371 1378 fixes.
1372 1379
1373 1380 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1374 1381 lines, which actually cause coloring bugs because the length of
1375 1382 the line is very difficult to correctly compute with embedded
1376 1383 escapes. This was the source of all the coloring problems under
1377 1384 Win32. I think that _finally_, Win32 users have a properly
1378 1385 working ipython in all respects. This would never have happened
1379 1386 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1380 1387
1381 1388 2005-01-26 *** Released version 0.6.9
1382 1389
1383 1390 2005-01-25 Fernando Perez <fperez@colorado.edu>
1384 1391
1385 1392 * setup.py: finally, we have a true Windows installer, thanks to
1386 1393 the excellent work of Viktor Ransmayr
1387 1394 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1388 1395 Windows users. The setup routine is quite a bit cleaner thanks to
1389 1396 this, and the post-install script uses the proper functions to
1390 1397 allow a clean de-installation using the standard Windows Control
1391 1398 Panel.
1392 1399
1393 1400 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1394 1401 environment variable under all OSes (including win32) if
1395 1402 available. This will give consistency to win32 users who have set
1396 1403 this variable for any reason. If os.environ['HOME'] fails, the
1397 1404 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1398 1405
1399 1406 2005-01-24 Fernando Perez <fperez@colorado.edu>
1400 1407
1401 1408 * IPython/numutils.py (empty_like): add empty_like(), similar to
1402 1409 zeros_like() but taking advantage of the new empty() Numeric routine.
1403 1410
1404 1411 2005-01-23 *** Released version 0.6.8
1405 1412
1406 1413 2005-01-22 Fernando Perez <fperez@colorado.edu>
1407 1414
1408 1415 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1409 1416 automatic show() calls. After discussing things with JDH, it
1410 1417 turns out there are too many corner cases where this can go wrong.
1411 1418 It's best not to try to be 'too smart', and simply have ipython
1412 1419 reproduce as much as possible the default behavior of a normal
1413 1420 python shell.
1414 1421
1415 1422 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1416 1423 line-splitting regexp and _prefilter() to avoid calling getattr()
1417 1424 on assignments. This closes
1418 1425 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1419 1426 readline uses getattr(), so a simple <TAB> keypress is still
1420 1427 enough to trigger getattr() calls on an object.
1421 1428
1422 1429 2005-01-21 Fernando Perez <fperez@colorado.edu>
1423 1430
1424 1431 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1425 1432 docstring under pylab so it doesn't mask the original.
1426 1433
1427 1434 2005-01-21 *** Released version 0.6.7
1428 1435
1429 1436 2005-01-21 Fernando Perez <fperez@colorado.edu>
1430 1437
1431 1438 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1432 1439 signal handling for win32 users in multithreaded mode.
1433 1440
1434 1441 2005-01-17 Fernando Perez <fperez@colorado.edu>
1435 1442
1436 1443 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1437 1444 instances with no __init__. After a crash report by Norbert Nemec
1438 1445 <Norbert-AT-nemec-online.de>.
1439 1446
1440 1447 2005-01-14 Fernando Perez <fperez@colorado.edu>
1441 1448
1442 1449 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1443 1450 names for verbose exceptions, when multiple dotted names and the
1444 1451 'parent' object were present on the same line.
1445 1452
1446 1453 2005-01-11 Fernando Perez <fperez@colorado.edu>
1447 1454
1448 1455 * IPython/genutils.py (flag_calls): new utility to trap and flag
1449 1456 calls in functions. I need it to clean up matplotlib support.
1450 1457 Also removed some deprecated code in genutils.
1451 1458
1452 1459 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1453 1460 that matplotlib scripts called with %run, which don't call show()
1454 1461 themselves, still have their plotting windows open.
1455 1462
1456 1463 2005-01-05 Fernando Perez <fperez@colorado.edu>
1457 1464
1458 1465 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1459 1466 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1460 1467
1461 1468 2004-12-19 Fernando Perez <fperez@colorado.edu>
1462 1469
1463 1470 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1464 1471 parent_runcode, which was an eyesore. The same result can be
1465 1472 obtained with Python's regular superclass mechanisms.
1466 1473
1467 1474 2004-12-17 Fernando Perez <fperez@colorado.edu>
1468 1475
1469 1476 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1470 1477 reported by Prabhu.
1471 1478 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1472 1479 sys.stderr) instead of explicitly calling sys.stderr. This helps
1473 1480 maintain our I/O abstractions clean, for future GUI embeddings.
1474 1481
1475 1482 * IPython/genutils.py (info): added new utility for sys.stderr
1476 1483 unified info message handling (thin wrapper around warn()).
1477 1484
1478 1485 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1479 1486 composite (dotted) names on verbose exceptions.
1480 1487 (VerboseTB.nullrepr): harden against another kind of errors which
1481 1488 Python's inspect module can trigger, and which were crashing
1482 1489 IPython. Thanks to a report by Marco Lombardi
1483 1490 <mlombard-AT-ma010192.hq.eso.org>.
1484 1491
1485 1492 2004-12-13 *** Released version 0.6.6
1486 1493
1487 1494 2004-12-12 Fernando Perez <fperez@colorado.edu>
1488 1495
1489 1496 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1490 1497 generated by pygtk upon initialization if it was built without
1491 1498 threads (for matplotlib users). After a crash reported by
1492 1499 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1493 1500
1494 1501 * IPython/ipmaker.py (make_IPython): fix small bug in the
1495 1502 import_some parameter for multiple imports.
1496 1503
1497 1504 * IPython/iplib.py (ipmagic): simplified the interface of
1498 1505 ipmagic() to take a single string argument, just as it would be
1499 1506 typed at the IPython cmd line.
1500 1507 (ipalias): Added new ipalias() with an interface identical to
1501 1508 ipmagic(). This completes exposing a pure python interface to the
1502 1509 alias and magic system, which can be used in loops or more complex
1503 1510 code where IPython's automatic line mangling is not active.
1504 1511
1505 1512 * IPython/genutils.py (timing): changed interface of timing to
1506 1513 simply run code once, which is the most common case. timings()
1507 1514 remains unchanged, for the cases where you want multiple runs.
1508 1515
1509 1516 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1510 1517 bug where Python2.2 crashes with exec'ing code which does not end
1511 1518 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1512 1519 before.
1513 1520
1514 1521 2004-12-10 Fernando Perez <fperez@colorado.edu>
1515 1522
1516 1523 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1517 1524 -t to -T, to accomodate the new -t flag in %run (the %run and
1518 1525 %prun options are kind of intermixed, and it's not easy to change
1519 1526 this with the limitations of python's getopt).
1520 1527
1521 1528 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1522 1529 the execution of scripts. It's not as fine-tuned as timeit.py,
1523 1530 but it works from inside ipython (and under 2.2, which lacks
1524 1531 timeit.py). Optionally a number of runs > 1 can be given for
1525 1532 timing very short-running code.
1526 1533
1527 1534 * IPython/genutils.py (uniq_stable): new routine which returns a
1528 1535 list of unique elements in any iterable, but in stable order of
1529 1536 appearance. I needed this for the ultraTB fixes, and it's a handy
1530 1537 utility.
1531 1538
1532 1539 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1533 1540 dotted names in Verbose exceptions. This had been broken since
1534 1541 the very start, now x.y will properly be printed in a Verbose
1535 1542 traceback, instead of x being shown and y appearing always as an
1536 1543 'undefined global'. Getting this to work was a bit tricky,
1537 1544 because by default python tokenizers are stateless. Saved by
1538 1545 python's ability to easily add a bit of state to an arbitrary
1539 1546 function (without needing to build a full-blown callable object).
1540 1547
1541 1548 Also big cleanup of this code, which had horrendous runtime
1542 1549 lookups of zillions of attributes for colorization. Moved all
1543 1550 this code into a few templates, which make it cleaner and quicker.
1544 1551
1545 1552 Printout quality was also improved for Verbose exceptions: one
1546 1553 variable per line, and memory addresses are printed (this can be
1547 1554 quite handy in nasty debugging situations, which is what Verbose
1548 1555 is for).
1549 1556
1550 1557 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1551 1558 the command line as scripts to be loaded by embedded instances.
1552 1559 Doing so has the potential for an infinite recursion if there are
1553 1560 exceptions thrown in the process. This fixes a strange crash
1554 1561 reported by Philippe MULLER <muller-AT-irit.fr>.
1555 1562
1556 1563 2004-12-09 Fernando Perez <fperez@colorado.edu>
1557 1564
1558 1565 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1559 1566 to reflect new names in matplotlib, which now expose the
1560 1567 matlab-compatible interface via a pylab module instead of the
1561 1568 'matlab' name. The new code is backwards compatible, so users of
1562 1569 all matplotlib versions are OK. Patch by J. Hunter.
1563 1570
1564 1571 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1565 1572 of __init__ docstrings for instances (class docstrings are already
1566 1573 automatically printed). Instances with customized docstrings
1567 1574 (indep. of the class) are also recognized and all 3 separate
1568 1575 docstrings are printed (instance, class, constructor). After some
1569 1576 comments/suggestions by J. Hunter.
1570 1577
1571 1578 2004-12-05 Fernando Perez <fperez@colorado.edu>
1572 1579
1573 1580 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1574 1581 warnings when tab-completion fails and triggers an exception.
1575 1582
1576 1583 2004-12-03 Fernando Perez <fperez@colorado.edu>
1577 1584
1578 1585 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1579 1586 be triggered when using 'run -p'. An incorrect option flag was
1580 1587 being set ('d' instead of 'D').
1581 1588 (manpage): fix missing escaped \- sign.
1582 1589
1583 1590 2004-11-30 *** Released version 0.6.5
1584 1591
1585 1592 2004-11-30 Fernando Perez <fperez@colorado.edu>
1586 1593
1587 1594 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1588 1595 setting with -d option.
1589 1596
1590 1597 * setup.py (docfiles): Fix problem where the doc glob I was using
1591 1598 was COMPLETELY BROKEN. It was giving the right files by pure
1592 1599 accident, but failed once I tried to include ipython.el. Note:
1593 1600 glob() does NOT allow you to do exclusion on multiple endings!
1594 1601
1595 1602 2004-11-29 Fernando Perez <fperez@colorado.edu>
1596 1603
1597 1604 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1598 1605 the manpage as the source. Better formatting & consistency.
1599 1606
1600 1607 * IPython/Magic.py (magic_run): Added new -d option, to run
1601 1608 scripts under the control of the python pdb debugger. Note that
1602 1609 this required changing the %prun option -d to -D, to avoid a clash
1603 1610 (since %run must pass options to %prun, and getopt is too dumb to
1604 1611 handle options with string values with embedded spaces). Thanks
1605 1612 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1606 1613 (magic_who_ls): added type matching to %who and %whos, so that one
1607 1614 can filter their output to only include variables of certain
1608 1615 types. Another suggestion by Matthew.
1609 1616 (magic_whos): Added memory summaries in kb and Mb for arrays.
1610 1617 (magic_who): Improve formatting (break lines every 9 vars).
1611 1618
1612 1619 2004-11-28 Fernando Perez <fperez@colorado.edu>
1613 1620
1614 1621 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1615 1622 cache when empty lines were present.
1616 1623
1617 1624 2004-11-24 Fernando Perez <fperez@colorado.edu>
1618 1625
1619 1626 * IPython/usage.py (__doc__): document the re-activated threading
1620 1627 options for WX and GTK.
1621 1628
1622 1629 2004-11-23 Fernando Perez <fperez@colorado.edu>
1623 1630
1624 1631 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1625 1632 the -wthread and -gthread options, along with a new -tk one to try
1626 1633 and coordinate Tk threading with wx/gtk. The tk support is very
1627 1634 platform dependent, since it seems to require Tcl and Tk to be
1628 1635 built with threads (Fedora1/2 appears NOT to have it, but in
1629 1636 Prabhu's Debian boxes it works OK). But even with some Tk
1630 1637 limitations, this is a great improvement.
1631 1638
1632 1639 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1633 1640 info in user prompts. Patch by Prabhu.
1634 1641
1635 1642 2004-11-18 Fernando Perez <fperez@colorado.edu>
1636 1643
1637 1644 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1638 1645 EOFErrors and bail, to avoid infinite loops if a non-terminating
1639 1646 file is fed into ipython. Patch submitted in issue 19 by user,
1640 1647 many thanks.
1641 1648
1642 1649 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1643 1650 autoquote/parens in continuation prompts, which can cause lots of
1644 1651 problems. Closes roundup issue 20.
1645 1652
1646 1653 2004-11-17 Fernando Perez <fperez@colorado.edu>
1647 1654
1648 1655 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1649 1656 reported as debian bug #280505. I'm not sure my local changelog
1650 1657 entry has the proper debian format (Jack?).
1651 1658
1652 1659 2004-11-08 *** Released version 0.6.4
1653 1660
1654 1661 2004-11-08 Fernando Perez <fperez@colorado.edu>
1655 1662
1656 1663 * IPython/iplib.py (init_readline): Fix exit message for Windows
1657 1664 when readline is active. Thanks to a report by Eric Jones
1658 1665 <eric-AT-enthought.com>.
1659 1666
1660 1667 2004-11-07 Fernando Perez <fperez@colorado.edu>
1661 1668
1662 1669 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1663 1670 sometimes seen by win2k/cygwin users.
1664 1671
1665 1672 2004-11-06 Fernando Perez <fperez@colorado.edu>
1666 1673
1667 1674 * IPython/iplib.py (interact): Change the handling of %Exit from
1668 1675 trying to propagate a SystemExit to an internal ipython flag.
1669 1676 This is less elegant than using Python's exception mechanism, but
1670 1677 I can't get that to work reliably with threads, so under -pylab
1671 1678 %Exit was hanging IPython. Cross-thread exception handling is
1672 1679 really a bitch. Thaks to a bug report by Stephen Walton
1673 1680 <stephen.walton-AT-csun.edu>.
1674 1681
1675 1682 2004-11-04 Fernando Perez <fperez@colorado.edu>
1676 1683
1677 1684 * IPython/iplib.py (raw_input_original): store a pointer to the
1678 1685 true raw_input to harden against code which can modify it
1679 1686 (wx.py.PyShell does this and would otherwise crash ipython).
1680 1687 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1681 1688
1682 1689 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1683 1690 Ctrl-C problem, which does not mess up the input line.
1684 1691
1685 1692 2004-11-03 Fernando Perez <fperez@colorado.edu>
1686 1693
1687 1694 * IPython/Release.py: Changed licensing to BSD, in all files.
1688 1695 (name): lowercase name for tarball/RPM release.
1689 1696
1690 1697 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1691 1698 use throughout ipython.
1692 1699
1693 1700 * IPython/Magic.py (Magic._ofind): Switch to using the new
1694 1701 OInspect.getdoc() function.
1695 1702
1696 1703 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1697 1704 of the line currently being canceled via Ctrl-C. It's extremely
1698 1705 ugly, but I don't know how to do it better (the problem is one of
1699 1706 handling cross-thread exceptions).
1700 1707
1701 1708 2004-10-28 Fernando Perez <fperez@colorado.edu>
1702 1709
1703 1710 * IPython/Shell.py (signal_handler): add signal handlers to trap
1704 1711 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1705 1712 report by Francesc Alted.
1706 1713
1707 1714 2004-10-21 Fernando Perez <fperez@colorado.edu>
1708 1715
1709 1716 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1710 1717 to % for pysh syntax extensions.
1711 1718
1712 1719 2004-10-09 Fernando Perez <fperez@colorado.edu>
1713 1720
1714 1721 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
1715 1722 arrays to print a more useful summary, without calling str(arr).
1716 1723 This avoids the problem of extremely lengthy computations which
1717 1724 occur if arr is large, and appear to the user as a system lockup
1718 1725 with 100% cpu activity. After a suggestion by Kristian Sandberg
1719 1726 <Kristian.Sandberg@colorado.edu>.
1720 1727 (Magic.__init__): fix bug in global magic escapes not being
1721 1728 correctly set.
1722 1729
1723 1730 2004-10-08 Fernando Perez <fperez@colorado.edu>
1724 1731
1725 1732 * IPython/Magic.py (__license__): change to absolute imports of
1726 1733 ipython's own internal packages, to start adapting to the absolute
1727 1734 import requirement of PEP-328.
1728 1735
1729 1736 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
1730 1737 files, and standardize author/license marks through the Release
1731 1738 module instead of having per/file stuff (except for files with
1732 1739 particular licenses, like the MIT/PSF-licensed codes).
1733 1740
1734 1741 * IPython/Debugger.py: remove dead code for python 2.1
1735 1742
1736 1743 2004-10-04 Fernando Perez <fperez@colorado.edu>
1737 1744
1738 1745 * IPython/iplib.py (ipmagic): New function for accessing magics
1739 1746 via a normal python function call.
1740 1747
1741 1748 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
1742 1749 from '@' to '%', to accomodate the new @decorator syntax of python
1743 1750 2.4.
1744 1751
1745 1752 2004-09-29 Fernando Perez <fperez@colorado.edu>
1746 1753
1747 1754 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
1748 1755 matplotlib.use to prevent running scripts which try to switch
1749 1756 interactive backends from within ipython. This will just crash
1750 1757 the python interpreter, so we can't allow it (but a detailed error
1751 1758 is given to the user).
1752 1759
1753 1760 2004-09-28 Fernando Perez <fperez@colorado.edu>
1754 1761
1755 1762 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
1756 1763 matplotlib-related fixes so that using @run with non-matplotlib
1757 1764 scripts doesn't pop up spurious plot windows. This requires
1758 1765 matplotlib >= 0.63, where I had to make some changes as well.
1759 1766
1760 1767 * IPython/ipmaker.py (make_IPython): update version requirement to
1761 1768 python 2.2.
1762 1769
1763 1770 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
1764 1771 banner arg for embedded customization.
1765 1772
1766 1773 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
1767 1774 explicit uses of __IP as the IPython's instance name. Now things
1768 1775 are properly handled via the shell.name value. The actual code
1769 1776 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
1770 1777 is much better than before. I'll clean things completely when the
1771 1778 magic stuff gets a real overhaul.
1772 1779
1773 1780 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
1774 1781 minor changes to debian dir.
1775 1782
1776 1783 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
1777 1784 pointer to the shell itself in the interactive namespace even when
1778 1785 a user-supplied dict is provided. This is needed for embedding
1779 1786 purposes (found by tests with Michel Sanner).
1780 1787
1781 1788 2004-09-27 Fernando Perez <fperez@colorado.edu>
1782 1789
1783 1790 * IPython/UserConfig/ipythonrc: remove []{} from
1784 1791 readline_remove_delims, so that things like [modname.<TAB> do
1785 1792 proper completion. This disables [].TAB, but that's a less common
1786 1793 case than module names in list comprehensions, for example.
1787 1794 Thanks to a report by Andrea Riciputi.
1788 1795
1789 1796 2004-09-09 Fernando Perez <fperez@colorado.edu>
1790 1797
1791 1798 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
1792 1799 blocking problems in win32 and osx. Fix by John.
1793 1800
1794 1801 2004-09-08 Fernando Perez <fperez@colorado.edu>
1795 1802
1796 1803 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
1797 1804 for Win32 and OSX. Fix by John Hunter.
1798 1805
1799 1806 2004-08-30 *** Released version 0.6.3
1800 1807
1801 1808 2004-08-30 Fernando Perez <fperez@colorado.edu>
1802 1809
1803 1810 * setup.py (isfile): Add manpages to list of dependent files to be
1804 1811 updated.
1805 1812
1806 1813 2004-08-27 Fernando Perez <fperez@colorado.edu>
1807 1814
1808 1815 * IPython/Shell.py (start): I've disabled -wthread and -gthread
1809 1816 for now. They don't really work with standalone WX/GTK code
1810 1817 (though matplotlib IS working fine with both of those backends).
1811 1818 This will neeed much more testing. I disabled most things with
1812 1819 comments, so turning it back on later should be pretty easy.
1813 1820
1814 1821 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
1815 1822 autocalling of expressions like r'foo', by modifying the line
1816 1823 split regexp. Closes
1817 1824 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
1818 1825 Riley <ipythonbugs-AT-sabi.net>.
1819 1826 (InteractiveShell.mainloop): honor --nobanner with banner
1820 1827 extensions.
1821 1828
1822 1829 * IPython/Shell.py: Significant refactoring of all classes, so
1823 1830 that we can really support ALL matplotlib backends and threading
1824 1831 models (John spotted a bug with Tk which required this). Now we
1825 1832 should support single-threaded, WX-threads and GTK-threads, both
1826 1833 for generic code and for matplotlib.
1827 1834
1828 1835 * IPython/ipmaker.py (__call__): Changed -mpthread option to
1829 1836 -pylab, to simplify things for users. Will also remove the pylab
1830 1837 profile, since now all of matplotlib configuration is directly
1831 1838 handled here. This also reduces startup time.
1832 1839
1833 1840 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
1834 1841 shell wasn't being correctly called. Also in IPShellWX.
1835 1842
1836 1843 * IPython/iplib.py (InteractiveShell.__init__): Added option to
1837 1844 fine-tune banner.
1838 1845
1839 1846 * IPython/numutils.py (spike): Deprecate these spike functions,
1840 1847 delete (long deprecated) gnuplot_exec handler.
1841 1848
1842 1849 2004-08-26 Fernando Perez <fperez@colorado.edu>
1843 1850
1844 1851 * ipython.1: Update for threading options, plus some others which
1845 1852 were missing.
1846 1853
1847 1854 * IPython/ipmaker.py (__call__): Added -wthread option for
1848 1855 wxpython thread handling. Make sure threading options are only
1849 1856 valid at the command line.
1850 1857
1851 1858 * scripts/ipython: moved shell selection into a factory function
1852 1859 in Shell.py, to keep the starter script to a minimum.
1853 1860
1854 1861 2004-08-25 Fernando Perez <fperez@colorado.edu>
1855 1862
1856 1863 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
1857 1864 John. Along with some recent changes he made to matplotlib, the
1858 1865 next versions of both systems should work very well together.
1859 1866
1860 1867 2004-08-24 Fernando Perez <fperez@colorado.edu>
1861 1868
1862 1869 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
1863 1870 tried to switch the profiling to using hotshot, but I'm getting
1864 1871 strange errors from prof.runctx() there. I may be misreading the
1865 1872 docs, but it looks weird. For now the profiling code will
1866 1873 continue to use the standard profiler.
1867 1874
1868 1875 2004-08-23 Fernando Perez <fperez@colorado.edu>
1869 1876
1870 1877 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
1871 1878 threaded shell, by John Hunter. It's not quite ready yet, but
1872 1879 close.
1873 1880
1874 1881 2004-08-22 Fernando Perez <fperez@colorado.edu>
1875 1882
1876 1883 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
1877 1884 in Magic and ultraTB.
1878 1885
1879 1886 * ipython.1: document threading options in manpage.
1880 1887
1881 1888 * scripts/ipython: Changed name of -thread option to -gthread,
1882 1889 since this is GTK specific. I want to leave the door open for a
1883 1890 -wthread option for WX, which will most likely be necessary. This
1884 1891 change affects usage and ipmaker as well.
1885 1892
1886 1893 * IPython/Shell.py (matplotlib_shell): Add a factory function to
1887 1894 handle the matplotlib shell issues. Code by John Hunter
1888 1895 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1889 1896 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
1890 1897 broken (and disabled for end users) for now, but it puts the
1891 1898 infrastructure in place.
1892 1899
1893 1900 2004-08-21 Fernando Perez <fperez@colorado.edu>
1894 1901
1895 1902 * ipythonrc-pylab: Add matplotlib support.
1896 1903
1897 1904 * matplotlib_config.py: new files for matplotlib support, part of
1898 1905 the pylab profile.
1899 1906
1900 1907 * IPython/usage.py (__doc__): documented the threading options.
1901 1908
1902 1909 2004-08-20 Fernando Perez <fperez@colorado.edu>
1903 1910
1904 1911 * ipython: Modified the main calling routine to handle the -thread
1905 1912 and -mpthread options. This needs to be done as a top-level hack,
1906 1913 because it determines which class to instantiate for IPython
1907 1914 itself.
1908 1915
1909 1916 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
1910 1917 classes to support multithreaded GTK operation without blocking,
1911 1918 and matplotlib with all backends. This is a lot of still very
1912 1919 experimental code, and threads are tricky. So it may still have a
1913 1920 few rough edges... This code owes a lot to
1914 1921 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
1915 1922 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
1916 1923 to John Hunter for all the matplotlib work.
1917 1924
1918 1925 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
1919 1926 options for gtk thread and matplotlib support.
1920 1927
1921 1928 2004-08-16 Fernando Perez <fperez@colorado.edu>
1922 1929
1923 1930 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
1924 1931 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
1925 1932 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
1926 1933
1927 1934 2004-08-11 Fernando Perez <fperez@colorado.edu>
1928 1935
1929 1936 * setup.py (isfile): Fix build so documentation gets updated for
1930 1937 rpms (it was only done for .tgz builds).
1931 1938
1932 1939 2004-08-10 Fernando Perez <fperez@colorado.edu>
1933 1940
1934 1941 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
1935 1942
1936 1943 * iplib.py : Silence syntax error exceptions in tab-completion.
1937 1944
1938 1945 2004-08-05 Fernando Perez <fperez@colorado.edu>
1939 1946
1940 1947 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
1941 1948 'color off' mark for continuation prompts. This was causing long
1942 1949 continuation lines to mis-wrap.
1943 1950
1944 1951 2004-08-01 Fernando Perez <fperez@colorado.edu>
1945 1952
1946 1953 * IPython/ipmaker.py (make_IPython): Allow the shell class used
1947 1954 for building ipython to be a parameter. All this is necessary
1948 1955 right now to have a multithreaded version, but this insane
1949 1956 non-design will be cleaned up soon. For now, it's a hack that
1950 1957 works.
1951 1958
1952 1959 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
1953 1960 args in various places. No bugs so far, but it's a dangerous
1954 1961 practice.
1955 1962
1956 1963 2004-07-31 Fernando Perez <fperez@colorado.edu>
1957 1964
1958 1965 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
1959 1966 fix completion of files with dots in their names under most
1960 1967 profiles (pysh was OK because the completion order is different).
1961 1968
1962 1969 2004-07-27 Fernando Perez <fperez@colorado.edu>
1963 1970
1964 1971 * IPython/iplib.py (InteractiveShell.__init__): build dict of
1965 1972 keywords manually, b/c the one in keyword.py was removed in python
1966 1973 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
1967 1974 This is NOT a bug under python 2.3 and earlier.
1968 1975
1969 1976 2004-07-26 Fernando Perez <fperez@colorado.edu>
1970 1977
1971 1978 * IPython/ultraTB.py (VerboseTB.text): Add another
1972 1979 linecache.checkcache() call to try to prevent inspect.py from
1973 1980 crashing under python 2.3. I think this fixes
1974 1981 http://www.scipy.net/roundup/ipython/issue17.
1975 1982
1976 1983 2004-07-26 *** Released version 0.6.2
1977 1984
1978 1985 2004-07-26 Fernando Perez <fperez@colorado.edu>
1979 1986
1980 1987 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
1981 1988 fail for any number.
1982 1989 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
1983 1990 empty bookmarks.
1984 1991
1985 1992 2004-07-26 *** Released version 0.6.1
1986 1993
1987 1994 2004-07-26 Fernando Perez <fperez@colorado.edu>
1988 1995
1989 1996 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
1990 1997
1991 1998 * IPython/iplib.py (protect_filename): Applied Ville's patch for
1992 1999 escaping '()[]{}' in filenames.
1993 2000
1994 2001 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
1995 2002 Python 2.2 users who lack a proper shlex.split.
1996 2003
1997 2004 2004-07-19 Fernando Perez <fperez@colorado.edu>
1998 2005
1999 2006 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2000 2007 for reading readline's init file. I follow the normal chain:
2001 2008 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2002 2009 report by Mike Heeter. This closes
2003 2010 http://www.scipy.net/roundup/ipython/issue16.
2004 2011
2005 2012 2004-07-18 Fernando Perez <fperez@colorado.edu>
2006 2013
2007 2014 * IPython/iplib.py (__init__): Add better handling of '\' under
2008 2015 Win32 for filenames. After a patch by Ville.
2009 2016
2010 2017 2004-07-17 Fernando Perez <fperez@colorado.edu>
2011 2018
2012 2019 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2013 2020 autocalling would be triggered for 'foo is bar' if foo is
2014 2021 callable. I also cleaned up the autocall detection code to use a
2015 2022 regexp, which is faster. Bug reported by Alexander Schmolck.
2016 2023
2017 2024 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2018 2025 '?' in them would confuse the help system. Reported by Alex
2019 2026 Schmolck.
2020 2027
2021 2028 2004-07-16 Fernando Perez <fperez@colorado.edu>
2022 2029
2023 2030 * IPython/GnuplotInteractive.py (__all__): added plot2.
2024 2031
2025 2032 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2026 2033 plotting dictionaries, lists or tuples of 1d arrays.
2027 2034
2028 2035 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2029 2036 optimizations.
2030 2037
2031 2038 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2032 2039 the information which was there from Janko's original IPP code:
2033 2040
2034 2041 03.05.99 20:53 porto.ifm.uni-kiel.de
2035 2042 --Started changelog.
2036 2043 --make clear do what it say it does
2037 2044 --added pretty output of lines from inputcache
2038 2045 --Made Logger a mixin class, simplifies handling of switches
2039 2046 --Added own completer class. .string<TAB> expands to last history
2040 2047 line which starts with string. The new expansion is also present
2041 2048 with Ctrl-r from the readline library. But this shows, who this
2042 2049 can be done for other cases.
2043 2050 --Added convention that all shell functions should accept a
2044 2051 parameter_string This opens the door for different behaviour for
2045 2052 each function. @cd is a good example of this.
2046 2053
2047 2054 04.05.99 12:12 porto.ifm.uni-kiel.de
2048 2055 --added logfile rotation
2049 2056 --added new mainloop method which freezes first the namespace
2050 2057
2051 2058 07.05.99 21:24 porto.ifm.uni-kiel.de
2052 2059 --added the docreader classes. Now there is a help system.
2053 2060 -This is only a first try. Currently it's not easy to put new
2054 2061 stuff in the indices. But this is the way to go. Info would be
2055 2062 better, but HTML is every where and not everybody has an info
2056 2063 system installed and it's not so easy to change html-docs to info.
2057 2064 --added global logfile option
2058 2065 --there is now a hook for object inspection method pinfo needs to
2059 2066 be provided for this. Can be reached by two '??'.
2060 2067
2061 2068 08.05.99 20:51 porto.ifm.uni-kiel.de
2062 2069 --added a README
2063 2070 --bug in rc file. Something has changed so functions in the rc
2064 2071 file need to reference the shell and not self. Not clear if it's a
2065 2072 bug or feature.
2066 2073 --changed rc file for new behavior
2067 2074
2068 2075 2004-07-15 Fernando Perez <fperez@colorado.edu>
2069 2076
2070 2077 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2071 2078 cache was falling out of sync in bizarre manners when multi-line
2072 2079 input was present. Minor optimizations and cleanup.
2073 2080
2074 2081 (Logger): Remove old Changelog info for cleanup. This is the
2075 2082 information which was there from Janko's original code:
2076 2083
2077 2084 Changes to Logger: - made the default log filename a parameter
2078 2085
2079 2086 - put a check for lines beginning with !@? in log(). Needed
2080 2087 (even if the handlers properly log their lines) for mid-session
2081 2088 logging activation to work properly. Without this, lines logged
2082 2089 in mid session, which get read from the cache, would end up
2083 2090 'bare' (with !@? in the open) in the log. Now they are caught
2084 2091 and prepended with a #.
2085 2092
2086 2093 * IPython/iplib.py (InteractiveShell.init_readline): added check
2087 2094 in case MagicCompleter fails to be defined, so we don't crash.
2088 2095
2089 2096 2004-07-13 Fernando Perez <fperez@colorado.edu>
2090 2097
2091 2098 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2092 2099 of EPS if the requested filename ends in '.eps'.
2093 2100
2094 2101 2004-07-04 Fernando Perez <fperez@colorado.edu>
2095 2102
2096 2103 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2097 2104 escaping of quotes when calling the shell.
2098 2105
2099 2106 2004-07-02 Fernando Perez <fperez@colorado.edu>
2100 2107
2101 2108 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2102 2109 gettext not working because we were clobbering '_'. Fixes
2103 2110 http://www.scipy.net/roundup/ipython/issue6.
2104 2111
2105 2112 2004-07-01 Fernando Perez <fperez@colorado.edu>
2106 2113
2107 2114 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2108 2115 into @cd. Patch by Ville.
2109 2116
2110 2117 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2111 2118 new function to store things after ipmaker runs. Patch by Ville.
2112 2119 Eventually this will go away once ipmaker is removed and the class
2113 2120 gets cleaned up, but for now it's ok. Key functionality here is
2114 2121 the addition of the persistent storage mechanism, a dict for
2115 2122 keeping data across sessions (for now just bookmarks, but more can
2116 2123 be implemented later).
2117 2124
2118 2125 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2119 2126 persistent across sections. Patch by Ville, I modified it
2120 2127 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2121 2128 added a '-l' option to list all bookmarks.
2122 2129
2123 2130 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2124 2131 center for cleanup. Registered with atexit.register(). I moved
2125 2132 here the old exit_cleanup(). After a patch by Ville.
2126 2133
2127 2134 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2128 2135 characters in the hacked shlex_split for python 2.2.
2129 2136
2130 2137 * IPython/iplib.py (file_matches): more fixes to filenames with
2131 2138 whitespace in them. It's not perfect, but limitations in python's
2132 2139 readline make it impossible to go further.
2133 2140
2134 2141 2004-06-29 Fernando Perez <fperez@colorado.edu>
2135 2142
2136 2143 * IPython/iplib.py (file_matches): escape whitespace correctly in
2137 2144 filename completions. Bug reported by Ville.
2138 2145
2139 2146 2004-06-28 Fernando Perez <fperez@colorado.edu>
2140 2147
2141 2148 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2142 2149 the history file will be called 'history-PROFNAME' (or just
2143 2150 'history' if no profile is loaded). I was getting annoyed at
2144 2151 getting my Numerical work history clobbered by pysh sessions.
2145 2152
2146 2153 * IPython/iplib.py (InteractiveShell.__init__): Internal
2147 2154 getoutputerror() function so that we can honor the system_verbose
2148 2155 flag for _all_ system calls. I also added escaping of #
2149 2156 characters here to avoid confusing Itpl.
2150 2157
2151 2158 * IPython/Magic.py (shlex_split): removed call to shell in
2152 2159 parse_options and replaced it with shlex.split(). The annoying
2153 2160 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2154 2161 to backport it from 2.3, with several frail hacks (the shlex
2155 2162 module is rather limited in 2.2). Thanks to a suggestion by Ville
2156 2163 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2157 2164 problem.
2158 2165
2159 2166 (Magic.magic_system_verbose): new toggle to print the actual
2160 2167 system calls made by ipython. Mainly for debugging purposes.
2161 2168
2162 2169 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2163 2170 doesn't support persistence. Reported (and fix suggested) by
2164 2171 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2165 2172
2166 2173 2004-06-26 Fernando Perez <fperez@colorado.edu>
2167 2174
2168 2175 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2169 2176 continue prompts.
2170 2177
2171 2178 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2172 2179 function (basically a big docstring) and a few more things here to
2173 2180 speedup startup. pysh.py is now very lightweight. We want because
2174 2181 it gets execfile'd, while InterpreterExec gets imported, so
2175 2182 byte-compilation saves time.
2176 2183
2177 2184 2004-06-25 Fernando Perez <fperez@colorado.edu>
2178 2185
2179 2186 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2180 2187 -NUM', which was recently broken.
2181 2188
2182 2189 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2183 2190 in multi-line input (but not !!, which doesn't make sense there).
2184 2191
2185 2192 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2186 2193 It's just too useful, and people can turn it off in the less
2187 2194 common cases where it's a problem.
2188 2195
2189 2196 2004-06-24 Fernando Perez <fperez@colorado.edu>
2190 2197
2191 2198 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2192 2199 special syntaxes (like alias calling) is now allied in multi-line
2193 2200 input. This is still _very_ experimental, but it's necessary for
2194 2201 efficient shell usage combining python looping syntax with system
2195 2202 calls. For now it's restricted to aliases, I don't think it
2196 2203 really even makes sense to have this for magics.
2197 2204
2198 2205 2004-06-23 Fernando Perez <fperez@colorado.edu>
2199 2206
2200 2207 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2201 2208 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2202 2209
2203 2210 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2204 2211 extensions under Windows (after code sent by Gary Bishop). The
2205 2212 extensions considered 'executable' are stored in IPython's rc
2206 2213 structure as win_exec_ext.
2207 2214
2208 2215 * IPython/genutils.py (shell): new function, like system() but
2209 2216 without return value. Very useful for interactive shell work.
2210 2217
2211 2218 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2212 2219 delete aliases.
2213 2220
2214 2221 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2215 2222 sure that the alias table doesn't contain python keywords.
2216 2223
2217 2224 2004-06-21 Fernando Perez <fperez@colorado.edu>
2218 2225
2219 2226 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2220 2227 non-existent items are found in $PATH. Reported by Thorsten.
2221 2228
2222 2229 2004-06-20 Fernando Perez <fperez@colorado.edu>
2223 2230
2224 2231 * IPython/iplib.py (complete): modified the completer so that the
2225 2232 order of priorities can be easily changed at runtime.
2226 2233
2227 2234 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2228 2235 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2229 2236
2230 2237 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2231 2238 expand Python variables prepended with $ in all system calls. The
2232 2239 same was done to InteractiveShell.handle_shell_escape. Now all
2233 2240 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2234 2241 expansion of python variables and expressions according to the
2235 2242 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2236 2243
2237 2244 Though PEP-215 has been rejected, a similar (but simpler) one
2238 2245 seems like it will go into Python 2.4, PEP-292 -
2239 2246 http://www.python.org/peps/pep-0292.html.
2240 2247
2241 2248 I'll keep the full syntax of PEP-215, since IPython has since the
2242 2249 start used Ka-Ping Yee's reference implementation discussed there
2243 2250 (Itpl), and I actually like the powerful semantics it offers.
2244 2251
2245 2252 In order to access normal shell variables, the $ has to be escaped
2246 2253 via an extra $. For example:
2247 2254
2248 2255 In [7]: PATH='a python variable'
2249 2256
2250 2257 In [8]: !echo $PATH
2251 2258 a python variable
2252 2259
2253 2260 In [9]: !echo $$PATH
2254 2261 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2255 2262
2256 2263 (Magic.parse_options): escape $ so the shell doesn't evaluate
2257 2264 things prematurely.
2258 2265
2259 2266 * IPython/iplib.py (InteractiveShell.call_alias): added the
2260 2267 ability for aliases to expand python variables via $.
2261 2268
2262 2269 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2263 2270 system, now there's a @rehash/@rehashx pair of magics. These work
2264 2271 like the csh rehash command, and can be invoked at any time. They
2265 2272 build a table of aliases to everything in the user's $PATH
2266 2273 (@rehash uses everything, @rehashx is slower but only adds
2267 2274 executable files). With this, the pysh.py-based shell profile can
2268 2275 now simply call rehash upon startup, and full access to all
2269 2276 programs in the user's path is obtained.
2270 2277
2271 2278 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2272 2279 functionality is now fully in place. I removed the old dynamic
2273 2280 code generation based approach, in favor of a much lighter one
2274 2281 based on a simple dict. The advantage is that this allows me to
2275 2282 now have thousands of aliases with negligible cost (unthinkable
2276 2283 with the old system).
2277 2284
2278 2285 2004-06-19 Fernando Perez <fperez@colorado.edu>
2279 2286
2280 2287 * IPython/iplib.py (__init__): extended MagicCompleter class to
2281 2288 also complete (last in priority) on user aliases.
2282 2289
2283 2290 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2284 2291 call to eval.
2285 2292 (ItplNS.__init__): Added a new class which functions like Itpl,
2286 2293 but allows configuring the namespace for the evaluation to occur
2287 2294 in.
2288 2295
2289 2296 2004-06-18 Fernando Perez <fperez@colorado.edu>
2290 2297
2291 2298 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2292 2299 better message when 'exit' or 'quit' are typed (a common newbie
2293 2300 confusion).
2294 2301
2295 2302 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2296 2303 check for Windows users.
2297 2304
2298 2305 * IPython/iplib.py (InteractiveShell.user_setup): removed
2299 2306 disabling of colors for Windows. I'll test at runtime and issue a
2300 2307 warning if Gary's readline isn't found, as to nudge users to
2301 2308 download it.
2302 2309
2303 2310 2004-06-16 Fernando Perez <fperez@colorado.edu>
2304 2311
2305 2312 * IPython/genutils.py (Stream.__init__): changed to print errors
2306 2313 to sys.stderr. I had a circular dependency here. Now it's
2307 2314 possible to run ipython as IDLE's shell (consider this pre-alpha,
2308 2315 since true stdout things end up in the starting terminal instead
2309 2316 of IDLE's out).
2310 2317
2311 2318 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2312 2319 users who haven't # updated their prompt_in2 definitions. Remove
2313 2320 eventually.
2314 2321 (multiple_replace): added credit to original ASPN recipe.
2315 2322
2316 2323 2004-06-15 Fernando Perez <fperez@colorado.edu>
2317 2324
2318 2325 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2319 2326 list of auto-defined aliases.
2320 2327
2321 2328 2004-06-13 Fernando Perez <fperez@colorado.edu>
2322 2329
2323 2330 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2324 2331 install was really requested (so setup.py can be used for other
2325 2332 things under Windows).
2326 2333
2327 2334 2004-06-10 Fernando Perez <fperez@colorado.edu>
2328 2335
2329 2336 * IPython/Logger.py (Logger.create_log): Manually remove any old
2330 2337 backup, since os.remove may fail under Windows. Fixes bug
2331 2338 reported by Thorsten.
2332 2339
2333 2340 2004-06-09 Fernando Perez <fperez@colorado.edu>
2334 2341
2335 2342 * examples/example-embed.py: fixed all references to %n (replaced
2336 2343 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2337 2344 for all examples and the manual as well.
2338 2345
2339 2346 2004-06-08 Fernando Perez <fperez@colorado.edu>
2340 2347
2341 2348 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2342 2349 alignment and color management. All 3 prompt subsystems now
2343 2350 inherit from BasePrompt.
2344 2351
2345 2352 * tools/release: updates for windows installer build and tag rpms
2346 2353 with python version (since paths are fixed).
2347 2354
2348 2355 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2349 2356 which will become eventually obsolete. Also fixed the default
2350 2357 prompt_in2 to use \D, so at least new users start with the correct
2351 2358 defaults.
2352 2359 WARNING: Users with existing ipythonrc files will need to apply
2353 2360 this fix manually!
2354 2361
2355 2362 * setup.py: make windows installer (.exe). This is finally the
2356 2363 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2357 2364 which I hadn't included because it required Python 2.3 (or recent
2358 2365 distutils).
2359 2366
2360 2367 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2361 2368 usage of new '\D' escape.
2362 2369
2363 2370 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2364 2371 lacks os.getuid())
2365 2372 (CachedOutput.set_colors): Added the ability to turn coloring
2366 2373 on/off with @colors even for manually defined prompt colors. It
2367 2374 uses a nasty global, but it works safely and via the generic color
2368 2375 handling mechanism.
2369 2376 (Prompt2.__init__): Introduced new escape '\D' for continuation
2370 2377 prompts. It represents the counter ('\#') as dots.
2371 2378 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2372 2379 need to update their ipythonrc files and replace '%n' with '\D' in
2373 2380 their prompt_in2 settings everywhere. Sorry, but there's
2374 2381 otherwise no clean way to get all prompts to properly align. The
2375 2382 ipythonrc shipped with IPython has been updated.
2376 2383
2377 2384 2004-06-07 Fernando Perez <fperez@colorado.edu>
2378 2385
2379 2386 * setup.py (isfile): Pass local_icons option to latex2html, so the
2380 2387 resulting HTML file is self-contained. Thanks to
2381 2388 dryice-AT-liu.com.cn for the tip.
2382 2389
2383 2390 * pysh.py: I created a new profile 'shell', which implements a
2384 2391 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2385 2392 system shell, nor will it become one anytime soon. It's mainly
2386 2393 meant to illustrate the use of the new flexible bash-like prompts.
2387 2394 I guess it could be used by hardy souls for true shell management,
2388 2395 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2389 2396 profile. This uses the InterpreterExec extension provided by
2390 2397 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2391 2398
2392 2399 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2393 2400 auto-align itself with the length of the previous input prompt
2394 2401 (taking into account the invisible color escapes).
2395 2402 (CachedOutput.__init__): Large restructuring of this class. Now
2396 2403 all three prompts (primary1, primary2, output) are proper objects,
2397 2404 managed by the 'parent' CachedOutput class. The code is still a
2398 2405 bit hackish (all prompts share state via a pointer to the cache),
2399 2406 but it's overall far cleaner than before.
2400 2407
2401 2408 * IPython/genutils.py (getoutputerror): modified to add verbose,
2402 2409 debug and header options. This makes the interface of all getout*
2403 2410 functions uniform.
2404 2411 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2405 2412
2406 2413 * IPython/Magic.py (Magic.default_option): added a function to
2407 2414 allow registering default options for any magic command. This
2408 2415 makes it easy to have profiles which customize the magics globally
2409 2416 for a certain use. The values set through this function are
2410 2417 picked up by the parse_options() method, which all magics should
2411 2418 use to parse their options.
2412 2419
2413 2420 * IPython/genutils.py (warn): modified the warnings framework to
2414 2421 use the Term I/O class. I'm trying to slowly unify all of
2415 2422 IPython's I/O operations to pass through Term.
2416 2423
2417 2424 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2418 2425 the secondary prompt to correctly match the length of the primary
2419 2426 one for any prompt. Now multi-line code will properly line up
2420 2427 even for path dependent prompts, such as the new ones available
2421 2428 via the prompt_specials.
2422 2429
2423 2430 2004-06-06 Fernando Perez <fperez@colorado.edu>
2424 2431
2425 2432 * IPython/Prompts.py (prompt_specials): Added the ability to have
2426 2433 bash-like special sequences in the prompts, which get
2427 2434 automatically expanded. Things like hostname, current working
2428 2435 directory and username are implemented already, but it's easy to
2429 2436 add more in the future. Thanks to a patch by W.J. van der Laan
2430 2437 <gnufnork-AT-hetdigitalegat.nl>
2431 2438 (prompt_specials): Added color support for prompt strings, so
2432 2439 users can define arbitrary color setups for their prompts.
2433 2440
2434 2441 2004-06-05 Fernando Perez <fperez@colorado.edu>
2435 2442
2436 2443 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2437 2444 code to load Gary Bishop's readline and configure it
2438 2445 automatically. Thanks to Gary for help on this.
2439 2446
2440 2447 2004-06-01 Fernando Perez <fperez@colorado.edu>
2441 2448
2442 2449 * IPython/Logger.py (Logger.create_log): fix bug for logging
2443 2450 with no filename (previous fix was incomplete).
2444 2451
2445 2452 2004-05-25 Fernando Perez <fperez@colorado.edu>
2446 2453
2447 2454 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2448 2455 parens would get passed to the shell.
2449 2456
2450 2457 2004-05-20 Fernando Perez <fperez@colorado.edu>
2451 2458
2452 2459 * IPython/Magic.py (Magic.magic_prun): changed default profile
2453 2460 sort order to 'time' (the more common profiling need).
2454 2461
2455 2462 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2456 2463 so that source code shown is guaranteed in sync with the file on
2457 2464 disk (also changed in psource). Similar fix to the one for
2458 2465 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2459 2466 <yann.ledu-AT-noos.fr>.
2460 2467
2461 2468 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2462 2469 with a single option would not be correctly parsed. Closes
2463 2470 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2464 2471 introduced in 0.6.0 (on 2004-05-06).
2465 2472
2466 2473 2004-05-13 *** Released version 0.6.0
2467 2474
2468 2475 2004-05-13 Fernando Perez <fperez@colorado.edu>
2469 2476
2470 2477 * debian/: Added debian/ directory to CVS, so that debian support
2471 2478 is publicly accessible. The debian package is maintained by Jack
2472 2479 Moffit <jack-AT-xiph.org>.
2473 2480
2474 2481 * Documentation: included the notes about an ipython-based system
2475 2482 shell (the hypothetical 'pysh') into the new_design.pdf document,
2476 2483 so that these ideas get distributed to users along with the
2477 2484 official documentation.
2478 2485
2479 2486 2004-05-10 Fernando Perez <fperez@colorado.edu>
2480 2487
2481 2488 * IPython/Logger.py (Logger.create_log): fix recently introduced
2482 2489 bug (misindented line) where logstart would fail when not given an
2483 2490 explicit filename.
2484 2491
2485 2492 2004-05-09 Fernando Perez <fperez@colorado.edu>
2486 2493
2487 2494 * IPython/Magic.py (Magic.parse_options): skip system call when
2488 2495 there are no options to look for. Faster, cleaner for the common
2489 2496 case.
2490 2497
2491 2498 * Documentation: many updates to the manual: describing Windows
2492 2499 support better, Gnuplot updates, credits, misc small stuff. Also
2493 2500 updated the new_design doc a bit.
2494 2501
2495 2502 2004-05-06 *** Released version 0.6.0.rc1
2496 2503
2497 2504 2004-05-06 Fernando Perez <fperez@colorado.edu>
2498 2505
2499 2506 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2500 2507 operations to use the vastly more efficient list/''.join() method.
2501 2508 (FormattedTB.text): Fix
2502 2509 http://www.scipy.net/roundup/ipython/issue12 - exception source
2503 2510 extract not updated after reload. Thanks to Mike Salib
2504 2511 <msalib-AT-mit.edu> for pinning the source of the problem.
2505 2512 Fortunately, the solution works inside ipython and doesn't require
2506 2513 any changes to python proper.
2507 2514
2508 2515 * IPython/Magic.py (Magic.parse_options): Improved to process the
2509 2516 argument list as a true shell would (by actually using the
2510 2517 underlying system shell). This way, all @magics automatically get
2511 2518 shell expansion for variables. Thanks to a comment by Alex
2512 2519 Schmolck.
2513 2520
2514 2521 2004-04-04 Fernando Perez <fperez@colorado.edu>
2515 2522
2516 2523 * IPython/iplib.py (InteractiveShell.interact): Added a special
2517 2524 trap for a debugger quit exception, which is basically impossible
2518 2525 to handle by normal mechanisms, given what pdb does to the stack.
2519 2526 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2520 2527
2521 2528 2004-04-03 Fernando Perez <fperez@colorado.edu>
2522 2529
2523 2530 * IPython/genutils.py (Term): Standardized the names of the Term
2524 2531 class streams to cin/cout/cerr, following C++ naming conventions
2525 2532 (I can't use in/out/err because 'in' is not a valid attribute
2526 2533 name).
2527 2534
2528 2535 * IPython/iplib.py (InteractiveShell.interact): don't increment
2529 2536 the prompt if there's no user input. By Daniel 'Dang' Griffith
2530 2537 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2531 2538 Francois Pinard.
2532 2539
2533 2540 2004-04-02 Fernando Perez <fperez@colorado.edu>
2534 2541
2535 2542 * IPython/genutils.py (Stream.__init__): Modified to survive at
2536 2543 least importing in contexts where stdin/out/err aren't true file
2537 2544 objects, such as PyCrust (they lack fileno() and mode). However,
2538 2545 the recovery facilities which rely on these things existing will
2539 2546 not work.
2540 2547
2541 2548 2004-04-01 Fernando Perez <fperez@colorado.edu>
2542 2549
2543 2550 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2544 2551 use the new getoutputerror() function, so it properly
2545 2552 distinguishes stdout/err.
2546 2553
2547 2554 * IPython/genutils.py (getoutputerror): added a function to
2548 2555 capture separately the standard output and error of a command.
2549 2556 After a comment from dang on the mailing lists. This code is
2550 2557 basically a modified version of commands.getstatusoutput(), from
2551 2558 the standard library.
2552 2559
2553 2560 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2554 2561 '!!' as a special syntax (shorthand) to access @sx.
2555 2562
2556 2563 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2557 2564 command and return its output as a list split on '\n'.
2558 2565
2559 2566 2004-03-31 Fernando Perez <fperez@colorado.edu>
2560 2567
2561 2568 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2562 2569 method to dictionaries used as FakeModule instances if they lack
2563 2570 it. At least pydoc in python2.3 breaks for runtime-defined
2564 2571 functions without this hack. At some point I need to _really_
2565 2572 understand what FakeModule is doing, because it's a gross hack.
2566 2573 But it solves Arnd's problem for now...
2567 2574
2568 2575 2004-02-27 Fernando Perez <fperez@colorado.edu>
2569 2576
2570 2577 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2571 2578 mode would behave erratically. Also increased the number of
2572 2579 possible logs in rotate mod to 999. Thanks to Rod Holland
2573 2580 <rhh@StructureLABS.com> for the report and fixes.
2574 2581
2575 2582 2004-02-26 Fernando Perez <fperez@colorado.edu>
2576 2583
2577 2584 * IPython/genutils.py (page): Check that the curses module really
2578 2585 has the initscr attribute before trying to use it. For some
2579 2586 reason, the Solaris curses module is missing this. I think this
2580 2587 should be considered a Solaris python bug, but I'm not sure.
2581 2588
2582 2589 2004-01-17 Fernando Perez <fperez@colorado.edu>
2583 2590
2584 2591 * IPython/genutils.py (Stream.__init__): Changes to try to make
2585 2592 ipython robust against stdin/out/err being closed by the user.
2586 2593 This is 'user error' (and blocks a normal python session, at least
2587 2594 the stdout case). However, Ipython should be able to survive such
2588 2595 instances of abuse as gracefully as possible. To simplify the
2589 2596 coding and maintain compatibility with Gary Bishop's Term
2590 2597 contributions, I've made use of classmethods for this. I think
2591 2598 this introduces a dependency on python 2.2.
2592 2599
2593 2600 2004-01-13 Fernando Perez <fperez@colorado.edu>
2594 2601
2595 2602 * IPython/numutils.py (exp_safe): simplified the code a bit and
2596 2603 removed the need for importing the kinds module altogether.
2597 2604
2598 2605 2004-01-06 Fernando Perez <fperez@colorado.edu>
2599 2606
2600 2607 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2601 2608 a magic function instead, after some community feedback. No
2602 2609 special syntax will exist for it, but its name is deliberately
2603 2610 very short.
2604 2611
2605 2612 2003-12-20 Fernando Perez <fperez@colorado.edu>
2606 2613
2607 2614 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2608 2615 new functionality, to automagically assign the result of a shell
2609 2616 command to a variable. I'll solicit some community feedback on
2610 2617 this before making it permanent.
2611 2618
2612 2619 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2613 2620 requested about callables for which inspect couldn't obtain a
2614 2621 proper argspec. Thanks to a crash report sent by Etienne
2615 2622 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2616 2623
2617 2624 2003-12-09 Fernando Perez <fperez@colorado.edu>
2618 2625
2619 2626 * IPython/genutils.py (page): patch for the pager to work across
2620 2627 various versions of Windows. By Gary Bishop.
2621 2628
2622 2629 2003-12-04 Fernando Perez <fperez@colorado.edu>
2623 2630
2624 2631 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2625 2632 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2626 2633 While I tested this and it looks ok, there may still be corner
2627 2634 cases I've missed.
2628 2635
2629 2636 2003-12-01 Fernando Perez <fperez@colorado.edu>
2630 2637
2631 2638 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2632 2639 where a line like 'p,q=1,2' would fail because the automagic
2633 2640 system would be triggered for @p.
2634 2641
2635 2642 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2636 2643 cleanups, code unmodified.
2637 2644
2638 2645 * IPython/genutils.py (Term): added a class for IPython to handle
2639 2646 output. In most cases it will just be a proxy for stdout/err, but
2640 2647 having this allows modifications to be made for some platforms,
2641 2648 such as handling color escapes under Windows. All of this code
2642 2649 was contributed by Gary Bishop, with minor modifications by me.
2643 2650 The actual changes affect many files.
2644 2651
2645 2652 2003-11-30 Fernando Perez <fperez@colorado.edu>
2646 2653
2647 2654 * IPython/iplib.py (file_matches): new completion code, courtesy
2648 2655 of Jeff Collins. This enables filename completion again under
2649 2656 python 2.3, which disabled it at the C level.
2650 2657
2651 2658 2003-11-11 Fernando Perez <fperez@colorado.edu>
2652 2659
2653 2660 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2654 2661 for Numeric.array(map(...)), but often convenient.
2655 2662
2656 2663 2003-11-05 Fernando Perez <fperez@colorado.edu>
2657 2664
2658 2665 * IPython/numutils.py (frange): Changed a call from int() to
2659 2666 int(round()) to prevent a problem reported with arange() in the
2660 2667 numpy list.
2661 2668
2662 2669 2003-10-06 Fernando Perez <fperez@colorado.edu>
2663 2670
2664 2671 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2665 2672 prevent crashes if sys lacks an argv attribute (it happens with
2666 2673 embedded interpreters which build a bare-bones sys module).
2667 2674 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2668 2675
2669 2676 2003-09-24 Fernando Perez <fperez@colorado.edu>
2670 2677
2671 2678 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2672 2679 to protect against poorly written user objects where __getattr__
2673 2680 raises exceptions other than AttributeError. Thanks to a bug
2674 2681 report by Oliver Sander <osander-AT-gmx.de>.
2675 2682
2676 2683 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2677 2684 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2678 2685
2679 2686 2003-09-09 Fernando Perez <fperez@colorado.edu>
2680 2687
2681 2688 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2682 2689 unpacking a list whith a callable as first element would
2683 2690 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2684 2691 Collins.
2685 2692
2686 2693 2003-08-25 *** Released version 0.5.0
2687 2694
2688 2695 2003-08-22 Fernando Perez <fperez@colorado.edu>
2689 2696
2690 2697 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2691 2698 improperly defined user exceptions. Thanks to feedback from Mark
2692 2699 Russell <mrussell-AT-verio.net>.
2693 2700
2694 2701 2003-08-20 Fernando Perez <fperez@colorado.edu>
2695 2702
2696 2703 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2697 2704 printing so that it would print multi-line string forms starting
2698 2705 with a new line. This way the formatting is better respected for
2699 2706 objects which work hard to make nice string forms.
2700 2707
2701 2708 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2702 2709 autocall would overtake data access for objects with both
2703 2710 __getitem__ and __call__.
2704 2711
2705 2712 2003-08-19 *** Released version 0.5.0-rc1
2706 2713
2707 2714 2003-08-19 Fernando Perez <fperez@colorado.edu>
2708 2715
2709 2716 * IPython/deep_reload.py (load_tail): single tiny change here
2710 2717 seems to fix the long-standing bug of dreload() failing to work
2711 2718 for dotted names. But this module is pretty tricky, so I may have
2712 2719 missed some subtlety. Needs more testing!.
2713 2720
2714 2721 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
2715 2722 exceptions which have badly implemented __str__ methods.
2716 2723 (VerboseTB.text): harden against inspect.getinnerframes crashing,
2717 2724 which I've been getting reports about from Python 2.3 users. I
2718 2725 wish I had a simple test case to reproduce the problem, so I could
2719 2726 either write a cleaner workaround or file a bug report if
2720 2727 necessary.
2721 2728
2722 2729 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
2723 2730 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
2724 2731 a bug report by Tjabo Kloppenburg.
2725 2732
2726 2733 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
2727 2734 crashes. Wrapped the pdb call in a blanket try/except, since pdb
2728 2735 seems rather unstable. Thanks to a bug report by Tjabo
2729 2736 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
2730 2737
2731 2738 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
2732 2739 this out soon because of the critical fixes in the inner loop for
2733 2740 generators.
2734 2741
2735 2742 * IPython/Magic.py (Magic.getargspec): removed. This (and
2736 2743 _get_def) have been obsoleted by OInspect for a long time, I
2737 2744 hadn't noticed that they were dead code.
2738 2745 (Magic._ofind): restored _ofind functionality for a few literals
2739 2746 (those in ["''",'""','[]','{}','()']). But it won't work anymore
2740 2747 for things like "hello".capitalize?, since that would require a
2741 2748 potentially dangerous eval() again.
2742 2749
2743 2750 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
2744 2751 logic a bit more to clean up the escapes handling and minimize the
2745 2752 use of _ofind to only necessary cases. The interactive 'feel' of
2746 2753 IPython should have improved quite a bit with the changes in
2747 2754 _prefilter and _ofind (besides being far safer than before).
2748 2755
2749 2756 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
2750 2757 obscure, never reported). Edit would fail to find the object to
2751 2758 edit under some circumstances.
2752 2759 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
2753 2760 which were causing double-calling of generators. Those eval calls
2754 2761 were _very_ dangerous, since code with side effects could be
2755 2762 triggered. As they say, 'eval is evil'... These were the
2756 2763 nastiest evals in IPython. Besides, _ofind is now far simpler,
2757 2764 and it should also be quite a bit faster. Its use of inspect is
2758 2765 also safer, so perhaps some of the inspect-related crashes I've
2759 2766 seen lately with Python 2.3 might be taken care of. That will
2760 2767 need more testing.
2761 2768
2762 2769 2003-08-17 Fernando Perez <fperez@colorado.edu>
2763 2770
2764 2771 * IPython/iplib.py (InteractiveShell._prefilter): significant
2765 2772 simplifications to the logic for handling user escapes. Faster
2766 2773 and simpler code.
2767 2774
2768 2775 2003-08-14 Fernando Perez <fperez@colorado.edu>
2769 2776
2770 2777 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
2771 2778 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
2772 2779 but it should be quite a bit faster. And the recursive version
2773 2780 generated O(log N) intermediate storage for all rank>1 arrays,
2774 2781 even if they were contiguous.
2775 2782 (l1norm): Added this function.
2776 2783 (norm): Added this function for arbitrary norms (including
2777 2784 l-infinity). l1 and l2 are still special cases for convenience
2778 2785 and speed.
2779 2786
2780 2787 2003-08-03 Fernando Perez <fperez@colorado.edu>
2781 2788
2782 2789 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
2783 2790 exceptions, which now raise PendingDeprecationWarnings in Python
2784 2791 2.3. There were some in Magic and some in Gnuplot2.
2785 2792
2786 2793 2003-06-30 Fernando Perez <fperez@colorado.edu>
2787 2794
2788 2795 * IPython/genutils.py (page): modified to call curses only for
2789 2796 terminals where TERM=='xterm'. After problems under many other
2790 2797 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
2791 2798
2792 2799 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
2793 2800 would be triggered when readline was absent. This was just an old
2794 2801 debugging statement I'd forgotten to take out.
2795 2802
2796 2803 2003-06-20 Fernando Perez <fperez@colorado.edu>
2797 2804
2798 2805 * IPython/genutils.py (clock): modified to return only user time
2799 2806 (not counting system time), after a discussion on scipy. While
2800 2807 system time may be a useful quantity occasionally, it may much
2801 2808 more easily be skewed by occasional swapping or other similar
2802 2809 activity.
2803 2810
2804 2811 2003-06-05 Fernando Perez <fperez@colorado.edu>
2805 2812
2806 2813 * IPython/numutils.py (identity): new function, for building
2807 2814 arbitrary rank Kronecker deltas (mostly backwards compatible with
2808 2815 Numeric.identity)
2809 2816
2810 2817 2003-06-03 Fernando Perez <fperez@colorado.edu>
2811 2818
2812 2819 * IPython/iplib.py (InteractiveShell.handle_magic): protect
2813 2820 arguments passed to magics with spaces, to allow trailing '\' to
2814 2821 work normally (mainly for Windows users).
2815 2822
2816 2823 2003-05-29 Fernando Perez <fperez@colorado.edu>
2817 2824
2818 2825 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
2819 2826 instead of pydoc.help. This fixes a bizarre behavior where
2820 2827 printing '%s' % locals() would trigger the help system. Now
2821 2828 ipython behaves like normal python does.
2822 2829
2823 2830 Note that if one does 'from pydoc import help', the bizarre
2824 2831 behavior returns, but this will also happen in normal python, so
2825 2832 it's not an ipython bug anymore (it has to do with how pydoc.help
2826 2833 is implemented).
2827 2834
2828 2835 2003-05-22 Fernando Perez <fperez@colorado.edu>
2829 2836
2830 2837 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
2831 2838 return [] instead of None when nothing matches, also match to end
2832 2839 of line. Patch by Gary Bishop.
2833 2840
2834 2841 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
2835 2842 protection as before, for files passed on the command line. This
2836 2843 prevents the CrashHandler from kicking in if user files call into
2837 2844 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
2838 2845 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
2839 2846
2840 2847 2003-05-20 *** Released version 0.4.0
2841 2848
2842 2849 2003-05-20 Fernando Perez <fperez@colorado.edu>
2843 2850
2844 2851 * setup.py: added support for manpages. It's a bit hackish b/c of
2845 2852 a bug in the way the bdist_rpm distutils target handles gzipped
2846 2853 manpages, but it works. After a patch by Jack.
2847 2854
2848 2855 2003-05-19 Fernando Perez <fperez@colorado.edu>
2849 2856
2850 2857 * IPython/numutils.py: added a mockup of the kinds module, since
2851 2858 it was recently removed from Numeric. This way, numutils will
2852 2859 work for all users even if they are missing kinds.
2853 2860
2854 2861 * IPython/Magic.py (Magic._ofind): Harden against an inspect
2855 2862 failure, which can occur with SWIG-wrapped extensions. After a
2856 2863 crash report from Prabhu.
2857 2864
2858 2865 2003-05-16 Fernando Perez <fperez@colorado.edu>
2859 2866
2860 2867 * IPython/iplib.py (InteractiveShell.excepthook): New method to
2861 2868 protect ipython from user code which may call directly
2862 2869 sys.excepthook (this looks like an ipython crash to the user, even
2863 2870 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2864 2871 This is especially important to help users of WxWindows, but may
2865 2872 also be useful in other cases.
2866 2873
2867 2874 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
2868 2875 an optional tb_offset to be specified, and to preserve exception
2869 2876 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
2870 2877
2871 2878 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2872 2879
2873 2880 2003-05-15 Fernando Perez <fperez@colorado.edu>
2874 2881
2875 2882 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
2876 2883 installing for a new user under Windows.
2877 2884
2878 2885 2003-05-12 Fernando Perez <fperez@colorado.edu>
2879 2886
2880 2887 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
2881 2888 handler for Emacs comint-based lines. Currently it doesn't do
2882 2889 much (but importantly, it doesn't update the history cache). In
2883 2890 the future it may be expanded if Alex needs more functionality
2884 2891 there.
2885 2892
2886 2893 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
2887 2894 info to crash reports.
2888 2895
2889 2896 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
2890 2897 just like Python's -c. Also fixed crash with invalid -color
2891 2898 option value at startup. Thanks to Will French
2892 2899 <wfrench-AT-bestweb.net> for the bug report.
2893 2900
2894 2901 2003-05-09 Fernando Perez <fperez@colorado.edu>
2895 2902
2896 2903 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
2897 2904 to EvalDict (it's a mapping, after all) and simplified its code
2898 2905 quite a bit, after a nice discussion on c.l.py where Gustavo
2899 2906 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
2900 2907
2901 2908 2003-04-30 Fernando Perez <fperez@colorado.edu>
2902 2909
2903 2910 * IPython/genutils.py (timings_out): modified it to reduce its
2904 2911 overhead in the common reps==1 case.
2905 2912
2906 2913 2003-04-29 Fernando Perez <fperez@colorado.edu>
2907 2914
2908 2915 * IPython/genutils.py (timings_out): Modified to use the resource
2909 2916 module, which avoids the wraparound problems of time.clock().
2910 2917
2911 2918 2003-04-17 *** Released version 0.2.15pre4
2912 2919
2913 2920 2003-04-17 Fernando Perez <fperez@colorado.edu>
2914 2921
2915 2922 * setup.py (scriptfiles): Split windows-specific stuff over to a
2916 2923 separate file, in an attempt to have a Windows GUI installer.
2917 2924 That didn't work, but part of the groundwork is done.
2918 2925
2919 2926 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
2920 2927 indent/unindent with 4 spaces. Particularly useful in combination
2921 2928 with the new auto-indent option.
2922 2929
2923 2930 2003-04-16 Fernando Perez <fperez@colorado.edu>
2924 2931
2925 2932 * IPython/Magic.py: various replacements of self.rc for
2926 2933 self.shell.rc. A lot more remains to be done to fully disentangle
2927 2934 this class from the main Shell class.
2928 2935
2929 2936 * IPython/GnuplotRuntime.py: added checks for mouse support so
2930 2937 that we don't try to enable it if the current gnuplot doesn't
2931 2938 really support it. Also added checks so that we don't try to
2932 2939 enable persist under Windows (where Gnuplot doesn't recognize the
2933 2940 option).
2934 2941
2935 2942 * IPython/iplib.py (InteractiveShell.interact): Added optional
2936 2943 auto-indenting code, after a patch by King C. Shu
2937 2944 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
2938 2945 get along well with pasting indented code. If I ever figure out
2939 2946 how to make that part go well, it will become on by default.
2940 2947
2941 2948 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
2942 2949 crash ipython if there was an unmatched '%' in the user's prompt
2943 2950 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
2944 2951
2945 2952 * IPython/iplib.py (InteractiveShell.interact): removed the
2946 2953 ability to ask the user whether he wants to crash or not at the
2947 2954 'last line' exception handler. Calling functions at that point
2948 2955 changes the stack, and the error reports would have incorrect
2949 2956 tracebacks.
2950 2957
2951 2958 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
2952 2959 pass through a peger a pretty-printed form of any object. After a
2953 2960 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
2954 2961
2955 2962 2003-04-14 Fernando Perez <fperez@colorado.edu>
2956 2963
2957 2964 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
2958 2965 all files in ~ would be modified at first install (instead of
2959 2966 ~/.ipython). This could be potentially disastrous, as the
2960 2967 modification (make line-endings native) could damage binary files.
2961 2968
2962 2969 2003-04-10 Fernando Perez <fperez@colorado.edu>
2963 2970
2964 2971 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
2965 2972 handle only lines which are invalid python. This now means that
2966 2973 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
2967 2974 for the bug report.
2968 2975
2969 2976 2003-04-01 Fernando Perez <fperez@colorado.edu>
2970 2977
2971 2978 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
2972 2979 where failing to set sys.last_traceback would crash pdb.pm().
2973 2980 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
2974 2981 report.
2975 2982
2976 2983 2003-03-25 Fernando Perez <fperez@colorado.edu>
2977 2984
2978 2985 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
2979 2986 before printing it (it had a lot of spurious blank lines at the
2980 2987 end).
2981 2988
2982 2989 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
2983 2990 output would be sent 21 times! Obviously people don't use this
2984 2991 too often, or I would have heard about it.
2985 2992
2986 2993 2003-03-24 Fernando Perez <fperez@colorado.edu>
2987 2994
2988 2995 * setup.py (scriptfiles): renamed the data_files parameter from
2989 2996 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
2990 2997 for the patch.
2991 2998
2992 2999 2003-03-20 Fernando Perez <fperez@colorado.edu>
2993 3000
2994 3001 * IPython/genutils.py (error): added error() and fatal()
2995 3002 functions.
2996 3003
2997 3004 2003-03-18 *** Released version 0.2.15pre3
2998 3005
2999 3006 2003-03-18 Fernando Perez <fperez@colorado.edu>
3000 3007
3001 3008 * setupext/install_data_ext.py
3002 3009 (install_data_ext.initialize_options): Class contributed by Jack
3003 3010 Moffit for fixing the old distutils hack. He is sending this to
3004 3011 the distutils folks so in the future we may not need it as a
3005 3012 private fix.
3006 3013
3007 3014 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3008 3015 changes for Debian packaging. See his patch for full details.
3009 3016 The old distutils hack of making the ipythonrc* files carry a
3010 3017 bogus .py extension is gone, at last. Examples were moved to a
3011 3018 separate subdir under doc/, and the separate executable scripts
3012 3019 now live in their own directory. Overall a great cleanup. The
3013 3020 manual was updated to use the new files, and setup.py has been
3014 3021 fixed for this setup.
3015 3022
3016 3023 * IPython/PyColorize.py (Parser.usage): made non-executable and
3017 3024 created a pycolor wrapper around it to be included as a script.
3018 3025
3019 3026 2003-03-12 *** Released version 0.2.15pre2
3020 3027
3021 3028 2003-03-12 Fernando Perez <fperez@colorado.edu>
3022 3029
3023 3030 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3024 3031 long-standing problem with garbage characters in some terminals.
3025 3032 The issue was really that the \001 and \002 escapes must _only_ be
3026 3033 passed to input prompts (which call readline), but _never_ to
3027 3034 normal text to be printed on screen. I changed ColorANSI to have
3028 3035 two classes: TermColors and InputTermColors, each with the
3029 3036 appropriate escapes for input prompts or normal text. The code in
3030 3037 Prompts.py got slightly more complicated, but this very old and
3031 3038 annoying bug is finally fixed.
3032 3039
3033 3040 All the credit for nailing down the real origin of this problem
3034 3041 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3035 3042 *Many* thanks to him for spending quite a bit of effort on this.
3036 3043
3037 3044 2003-03-05 *** Released version 0.2.15pre1
3038 3045
3039 3046 2003-03-03 Fernando Perez <fperez@colorado.edu>
3040 3047
3041 3048 * IPython/FakeModule.py: Moved the former _FakeModule to a
3042 3049 separate file, because it's also needed by Magic (to fix a similar
3043 3050 pickle-related issue in @run).
3044 3051
3045 3052 2003-03-02 Fernando Perez <fperez@colorado.edu>
3046 3053
3047 3054 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3048 3055 the autocall option at runtime.
3049 3056 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3050 3057 across Magic.py to start separating Magic from InteractiveShell.
3051 3058 (Magic._ofind): Fixed to return proper namespace for dotted
3052 3059 names. Before, a dotted name would always return 'not currently
3053 3060 defined', because it would find the 'parent'. s.x would be found,
3054 3061 but since 'x' isn't defined by itself, it would get confused.
3055 3062 (Magic.magic_run): Fixed pickling problems reported by Ralf
3056 3063 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3057 3064 that I'd used when Mike Heeter reported similar issues at the
3058 3065 top-level, but now for @run. It boils down to injecting the
3059 3066 namespace where code is being executed with something that looks
3060 3067 enough like a module to fool pickle.dump(). Since a pickle stores
3061 3068 a named reference to the importing module, we need this for
3062 3069 pickles to save something sensible.
3063 3070
3064 3071 * IPython/ipmaker.py (make_IPython): added an autocall option.
3065 3072
3066 3073 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3067 3074 the auto-eval code. Now autocalling is an option, and the code is
3068 3075 also vastly safer. There is no more eval() involved at all.
3069 3076
3070 3077 2003-03-01 Fernando Perez <fperez@colorado.edu>
3071 3078
3072 3079 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3073 3080 dict with named keys instead of a tuple.
3074 3081
3075 3082 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3076 3083
3077 3084 * setup.py (make_shortcut): Fixed message about directories
3078 3085 created during Windows installation (the directories were ok, just
3079 3086 the printed message was misleading). Thanks to Chris Liechti
3080 3087 <cliechti-AT-gmx.net> for the heads up.
3081 3088
3082 3089 2003-02-21 Fernando Perez <fperez@colorado.edu>
3083 3090
3084 3091 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3085 3092 of ValueError exception when checking for auto-execution. This
3086 3093 one is raised by things like Numeric arrays arr.flat when the
3087 3094 array is non-contiguous.
3088 3095
3089 3096 2003-01-31 Fernando Perez <fperez@colorado.edu>
3090 3097
3091 3098 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3092 3099 not return any value at all (even though the command would get
3093 3100 executed).
3094 3101 (xsys): Flush stdout right after printing the command to ensure
3095 3102 proper ordering of commands and command output in the total
3096 3103 output.
3097 3104 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3098 3105 system/getoutput as defaults. The old ones are kept for
3099 3106 compatibility reasons, so no code which uses this library needs
3100 3107 changing.
3101 3108
3102 3109 2003-01-27 *** Released version 0.2.14
3103 3110
3104 3111 2003-01-25 Fernando Perez <fperez@colorado.edu>
3105 3112
3106 3113 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3107 3114 functions defined in previous edit sessions could not be re-edited
3108 3115 (because the temp files were immediately removed). Now temp files
3109 3116 are removed only at IPython's exit.
3110 3117 (Magic.magic_run): Improved @run to perform shell-like expansions
3111 3118 on its arguments (~users and $VARS). With this, @run becomes more
3112 3119 like a normal command-line.
3113 3120
3114 3121 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3115 3122 bugs related to embedding and cleaned up that code. A fairly
3116 3123 important one was the impossibility to access the global namespace
3117 3124 through the embedded IPython (only local variables were visible).
3118 3125
3119 3126 2003-01-14 Fernando Perez <fperez@colorado.edu>
3120 3127
3121 3128 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3122 3129 auto-calling to be a bit more conservative. Now it doesn't get
3123 3130 triggered if any of '!=()<>' are in the rest of the input line, to
3124 3131 allow comparing callables. Thanks to Alex for the heads up.
3125 3132
3126 3133 2003-01-07 Fernando Perez <fperez@colorado.edu>
3127 3134
3128 3135 * IPython/genutils.py (page): fixed estimation of the number of
3129 3136 lines in a string to be paged to simply count newlines. This
3130 3137 prevents over-guessing due to embedded escape sequences. A better
3131 3138 long-term solution would involve stripping out the control chars
3132 3139 for the count, but it's potentially so expensive I just don't
3133 3140 think it's worth doing.
3134 3141
3135 3142 2002-12-19 *** Released version 0.2.14pre50
3136 3143
3137 3144 2002-12-19 Fernando Perez <fperez@colorado.edu>
3138 3145
3139 3146 * tools/release (version): Changed release scripts to inform
3140 3147 Andrea and build a NEWS file with a list of recent changes.
3141 3148
3142 3149 * IPython/ColorANSI.py (__all__): changed terminal detection
3143 3150 code. Seems to work better for xterms without breaking
3144 3151 konsole. Will need more testing to determine if WinXP and Mac OSX
3145 3152 also work ok.
3146 3153
3147 3154 2002-12-18 *** Released version 0.2.14pre49
3148 3155
3149 3156 2002-12-18 Fernando Perez <fperez@colorado.edu>
3150 3157
3151 3158 * Docs: added new info about Mac OSX, from Andrea.
3152 3159
3153 3160 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3154 3161 allow direct plotting of python strings whose format is the same
3155 3162 of gnuplot data files.
3156 3163
3157 3164 2002-12-16 Fernando Perez <fperez@colorado.edu>
3158 3165
3159 3166 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3160 3167 value of exit question to be acknowledged.
3161 3168
3162 3169 2002-12-03 Fernando Perez <fperez@colorado.edu>
3163 3170
3164 3171 * IPython/ipmaker.py: removed generators, which had been added
3165 3172 by mistake in an earlier debugging run. This was causing trouble
3166 3173 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3167 3174 for pointing this out.
3168 3175
3169 3176 2002-11-17 Fernando Perez <fperez@colorado.edu>
3170 3177
3171 3178 * Manual: updated the Gnuplot section.
3172 3179
3173 3180 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3174 3181 a much better split of what goes in Runtime and what goes in
3175 3182 Interactive.
3176 3183
3177 3184 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3178 3185 being imported from iplib.
3179 3186
3180 3187 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3181 3188 for command-passing. Now the global Gnuplot instance is called
3182 3189 'gp' instead of 'g', which was really a far too fragile and
3183 3190 common name.
3184 3191
3185 3192 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3186 3193 bounding boxes generated by Gnuplot for square plots.
3187 3194
3188 3195 * IPython/genutils.py (popkey): new function added. I should
3189 3196 suggest this on c.l.py as a dict method, it seems useful.
3190 3197
3191 3198 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3192 3199 to transparently handle PostScript generation. MUCH better than
3193 3200 the previous plot_eps/replot_eps (which I removed now). The code
3194 3201 is also fairly clean and well documented now (including
3195 3202 docstrings).
3196 3203
3197 3204 2002-11-13 Fernando Perez <fperez@colorado.edu>
3198 3205
3199 3206 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3200 3207 (inconsistent with options).
3201 3208
3202 3209 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3203 3210 manually disabled, I don't know why. Fixed it.
3204 3211 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3205 3212 eps output.
3206 3213
3207 3214 2002-11-12 Fernando Perez <fperez@colorado.edu>
3208 3215
3209 3216 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3210 3217 don't propagate up to caller. Fixes crash reported by François
3211 3218 Pinard.
3212 3219
3213 3220 2002-11-09 Fernando Perez <fperez@colorado.edu>
3214 3221
3215 3222 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3216 3223 history file for new users.
3217 3224 (make_IPython): fixed bug where initial install would leave the
3218 3225 user running in the .ipython dir.
3219 3226 (make_IPython): fixed bug where config dir .ipython would be
3220 3227 created regardless of the given -ipythondir option. Thanks to Cory
3221 3228 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3222 3229
3223 3230 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3224 3231 type confirmations. Will need to use it in all of IPython's code
3225 3232 consistently.
3226 3233
3227 3234 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3228 3235 context to print 31 lines instead of the default 5. This will make
3229 3236 the crash reports extremely detailed in case the problem is in
3230 3237 libraries I don't have access to.
3231 3238
3232 3239 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3233 3240 line of defense' code to still crash, but giving users fair
3234 3241 warning. I don't want internal errors to go unreported: if there's
3235 3242 an internal problem, IPython should crash and generate a full
3236 3243 report.
3237 3244
3238 3245 2002-11-08 Fernando Perez <fperez@colorado.edu>
3239 3246
3240 3247 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3241 3248 otherwise uncaught exceptions which can appear if people set
3242 3249 sys.stdout to something badly broken. Thanks to a crash report
3243 3250 from henni-AT-mail.brainbot.com.
3244 3251
3245 3252 2002-11-04 Fernando Perez <fperez@colorado.edu>
3246 3253
3247 3254 * IPython/iplib.py (InteractiveShell.interact): added
3248 3255 __IPYTHON__active to the builtins. It's a flag which goes on when
3249 3256 the interaction starts and goes off again when it stops. This
3250 3257 allows embedding code to detect being inside IPython. Before this
3251 3258 was done via __IPYTHON__, but that only shows that an IPython
3252 3259 instance has been created.
3253 3260
3254 3261 * IPython/Magic.py (Magic.magic_env): I realized that in a
3255 3262 UserDict, instance.data holds the data as a normal dict. So I
3256 3263 modified @env to return os.environ.data instead of rebuilding a
3257 3264 dict by hand.
3258 3265
3259 3266 2002-11-02 Fernando Perez <fperez@colorado.edu>
3260 3267
3261 3268 * IPython/genutils.py (warn): changed so that level 1 prints no
3262 3269 header. Level 2 is now the default (with 'WARNING' header, as
3263 3270 before). I think I tracked all places where changes were needed in
3264 3271 IPython, but outside code using the old level numbering may have
3265 3272 broken.
3266 3273
3267 3274 * IPython/iplib.py (InteractiveShell.runcode): added this to
3268 3275 handle the tracebacks in SystemExit traps correctly. The previous
3269 3276 code (through interact) was printing more of the stack than
3270 3277 necessary, showing IPython internal code to the user.
3271 3278
3272 3279 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3273 3280 default. Now that the default at the confirmation prompt is yes,
3274 3281 it's not so intrusive. François' argument that ipython sessions
3275 3282 tend to be complex enough not to lose them from an accidental C-d,
3276 3283 is a valid one.
3277 3284
3278 3285 * IPython/iplib.py (InteractiveShell.interact): added a
3279 3286 showtraceback() call to the SystemExit trap, and modified the exit
3280 3287 confirmation to have yes as the default.
3281 3288
3282 3289 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3283 3290 this file. It's been gone from the code for a long time, this was
3284 3291 simply leftover junk.
3285 3292
3286 3293 2002-11-01 Fernando Perez <fperez@colorado.edu>
3287 3294
3288 3295 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3289 3296 added. If set, IPython now traps EOF and asks for
3290 3297 confirmation. After a request by François Pinard.
3291 3298
3292 3299 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3293 3300 of @abort, and with a new (better) mechanism for handling the
3294 3301 exceptions.
3295 3302
3296 3303 2002-10-27 Fernando Perez <fperez@colorado.edu>
3297 3304
3298 3305 * IPython/usage.py (__doc__): updated the --help information and
3299 3306 the ipythonrc file to indicate that -log generates
3300 3307 ./ipython.log. Also fixed the corresponding info in @logstart.
3301 3308 This and several other fixes in the manuals thanks to reports by
3302 3309 François Pinard <pinard-AT-iro.umontreal.ca>.
3303 3310
3304 3311 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3305 3312 refer to @logstart (instead of @log, which doesn't exist).
3306 3313
3307 3314 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3308 3315 AttributeError crash. Thanks to Christopher Armstrong
3309 3316 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3310 3317 introduced recently (in 0.2.14pre37) with the fix to the eval
3311 3318 problem mentioned below.
3312 3319
3313 3320 2002-10-17 Fernando Perez <fperez@colorado.edu>
3314 3321
3315 3322 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3316 3323 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3317 3324
3318 3325 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3319 3326 this function to fix a problem reported by Alex Schmolck. He saw
3320 3327 it with list comprehensions and generators, which were getting
3321 3328 called twice. The real problem was an 'eval' call in testing for
3322 3329 automagic which was evaluating the input line silently.
3323 3330
3324 3331 This is a potentially very nasty bug, if the input has side
3325 3332 effects which must not be repeated. The code is much cleaner now,
3326 3333 without any blanket 'except' left and with a regexp test for
3327 3334 actual function names.
3328 3335
3329 3336 But an eval remains, which I'm not fully comfortable with. I just
3330 3337 don't know how to find out if an expression could be a callable in
3331 3338 the user's namespace without doing an eval on the string. However
3332 3339 that string is now much more strictly checked so that no code
3333 3340 slips by, so the eval should only happen for things that can
3334 3341 really be only function/method names.
3335 3342
3336 3343 2002-10-15 Fernando Perez <fperez@colorado.edu>
3337 3344
3338 3345 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3339 3346 OSX information to main manual, removed README_Mac_OSX file from
3340 3347 distribution. Also updated credits for recent additions.
3341 3348
3342 3349 2002-10-10 Fernando Perez <fperez@colorado.edu>
3343 3350
3344 3351 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3345 3352 terminal-related issues. Many thanks to Andrea Riciputi
3346 3353 <andrea.riciputi-AT-libero.it> for writing it.
3347 3354
3348 3355 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3349 3356 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3350 3357
3351 3358 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3352 3359 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3353 3360 <syver-en-AT-online.no> who both submitted patches for this problem.
3354 3361
3355 3362 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3356 3363 global embedding to make sure that things don't overwrite user
3357 3364 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3358 3365
3359 3366 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3360 3367 compatibility. Thanks to Hayden Callow
3361 3368 <h.callow-AT-elec.canterbury.ac.nz>
3362 3369
3363 3370 2002-10-04 Fernando Perez <fperez@colorado.edu>
3364 3371
3365 3372 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3366 3373 Gnuplot.File objects.
3367 3374
3368 3375 2002-07-23 Fernando Perez <fperez@colorado.edu>
3369 3376
3370 3377 * IPython/genutils.py (timing): Added timings() and timing() for
3371 3378 quick access to the most commonly needed data, the execution
3372 3379 times. Old timing() renamed to timings_out().
3373 3380
3374 3381 2002-07-18 Fernando Perez <fperez@colorado.edu>
3375 3382
3376 3383 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3377 3384 bug with nested instances disrupting the parent's tab completion.
3378 3385
3379 3386 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3380 3387 all_completions code to begin the emacs integration.
3381 3388
3382 3389 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3383 3390 argument to allow titling individual arrays when plotting.
3384 3391
3385 3392 2002-07-15 Fernando Perez <fperez@colorado.edu>
3386 3393
3387 3394 * setup.py (make_shortcut): changed to retrieve the value of
3388 3395 'Program Files' directory from the registry (this value changes in
3389 3396 non-english versions of Windows). Thanks to Thomas Fanslau
3390 3397 <tfanslau-AT-gmx.de> for the report.
3391 3398
3392 3399 2002-07-10 Fernando Perez <fperez@colorado.edu>
3393 3400
3394 3401 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3395 3402 a bug in pdb, which crashes if a line with only whitespace is
3396 3403 entered. Bug report submitted to sourceforge.
3397 3404
3398 3405 2002-07-09 Fernando Perez <fperez@colorado.edu>
3399 3406
3400 3407 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3401 3408 reporting exceptions (it's a bug in inspect.py, I just set a
3402 3409 workaround).
3403 3410
3404 3411 2002-07-08 Fernando Perez <fperez@colorado.edu>
3405 3412
3406 3413 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3407 3414 __IPYTHON__ in __builtins__ to show up in user_ns.
3408 3415
3409 3416 2002-07-03 Fernando Perez <fperez@colorado.edu>
3410 3417
3411 3418 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3412 3419 name from @gp_set_instance to @gp_set_default.
3413 3420
3414 3421 * IPython/ipmaker.py (make_IPython): default editor value set to
3415 3422 '0' (a string), to match the rc file. Otherwise will crash when
3416 3423 .strip() is called on it.
3417 3424
3418 3425
3419 3426 2002-06-28 Fernando Perez <fperez@colorado.edu>
3420 3427
3421 3428 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3422 3429 of files in current directory when a file is executed via
3423 3430 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3424 3431
3425 3432 * setup.py (manfiles): fix for rpm builds, submitted by RA
3426 3433 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3427 3434
3428 3435 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3429 3436 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3430 3437 string!). A. Schmolck caught this one.
3431 3438
3432 3439 2002-06-27 Fernando Perez <fperez@colorado.edu>
3433 3440
3434 3441 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3435 3442 defined files at the cmd line. __name__ wasn't being set to
3436 3443 __main__.
3437 3444
3438 3445 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3439 3446 regular lists and tuples besides Numeric arrays.
3440 3447
3441 3448 * IPython/Prompts.py (CachedOutput.__call__): Added output
3442 3449 supression for input ending with ';'. Similar to Mathematica and
3443 3450 Matlab. The _* vars and Out[] list are still updated, just like
3444 3451 Mathematica behaves.
3445 3452
3446 3453 2002-06-25 Fernando Perez <fperez@colorado.edu>
3447 3454
3448 3455 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3449 3456 .ini extensions for profiels under Windows.
3450 3457
3451 3458 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3452 3459 string form. Fix contributed by Alexander Schmolck
3453 3460 <a.schmolck-AT-gmx.net>
3454 3461
3455 3462 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3456 3463 pre-configured Gnuplot instance.
3457 3464
3458 3465 2002-06-21 Fernando Perez <fperez@colorado.edu>
3459 3466
3460 3467 * IPython/numutils.py (exp_safe): new function, works around the
3461 3468 underflow problems in Numeric.
3462 3469 (log2): New fn. Safe log in base 2: returns exact integer answer
3463 3470 for exact integer powers of 2.
3464 3471
3465 3472 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3466 3473 properly.
3467 3474
3468 3475 2002-06-20 Fernando Perez <fperez@colorado.edu>
3469 3476
3470 3477 * IPython/genutils.py (timing): new function like
3471 3478 Mathematica's. Similar to time_test, but returns more info.
3472 3479
3473 3480 2002-06-18 Fernando Perez <fperez@colorado.edu>
3474 3481
3475 3482 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3476 3483 according to Mike Heeter's suggestions.
3477 3484
3478 3485 2002-06-16 Fernando Perez <fperez@colorado.edu>
3479 3486
3480 3487 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3481 3488 system. GnuplotMagic is gone as a user-directory option. New files
3482 3489 make it easier to use all the gnuplot stuff both from external
3483 3490 programs as well as from IPython. Had to rewrite part of
3484 3491 hardcopy() b/c of a strange bug: often the ps files simply don't
3485 3492 get created, and require a repeat of the command (often several
3486 3493 times).
3487 3494
3488 3495 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3489 3496 resolve output channel at call time, so that if sys.stderr has
3490 3497 been redirected by user this gets honored.
3491 3498
3492 3499 2002-06-13 Fernando Perez <fperez@colorado.edu>
3493 3500
3494 3501 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3495 3502 IPShell. Kept a copy with the old names to avoid breaking people's
3496 3503 embedded code.
3497 3504
3498 3505 * IPython/ipython: simplified it to the bare minimum after
3499 3506 Holger's suggestions. Added info about how to use it in
3500 3507 PYTHONSTARTUP.
3501 3508
3502 3509 * IPython/Shell.py (IPythonShell): changed the options passing
3503 3510 from a string with funky %s replacements to a straight list. Maybe
3504 3511 a bit more typing, but it follows sys.argv conventions, so there's
3505 3512 less special-casing to remember.
3506 3513
3507 3514 2002-06-12 Fernando Perez <fperez@colorado.edu>
3508 3515
3509 3516 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3510 3517 command. Thanks to a suggestion by Mike Heeter.
3511 3518 (Magic.magic_pfile): added behavior to look at filenames if given
3512 3519 arg is not a defined object.
3513 3520 (Magic.magic_save): New @save function to save code snippets. Also
3514 3521 a Mike Heeter idea.
3515 3522
3516 3523 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3517 3524 plot() and replot(). Much more convenient now, especially for
3518 3525 interactive use.
3519 3526
3520 3527 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3521 3528 filenames.
3522 3529
3523 3530 2002-06-02 Fernando Perez <fperez@colorado.edu>
3524 3531
3525 3532 * IPython/Struct.py (Struct.__init__): modified to admit
3526 3533 initialization via another struct.
3527 3534
3528 3535 * IPython/genutils.py (SystemExec.__init__): New stateful
3529 3536 interface to xsys and bq. Useful for writing system scripts.
3530 3537
3531 3538 2002-05-30 Fernando Perez <fperez@colorado.edu>
3532 3539
3533 3540 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3534 3541 documents. This will make the user download smaller (it's getting
3535 3542 too big).
3536 3543
3537 3544 2002-05-29 Fernando Perez <fperez@colorado.edu>
3538 3545
3539 3546 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3540 3547 fix problems with shelve and pickle. Seems to work, but I don't
3541 3548 know if corner cases break it. Thanks to Mike Heeter
3542 3549 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3543 3550
3544 3551 2002-05-24 Fernando Perez <fperez@colorado.edu>
3545 3552
3546 3553 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3547 3554 macros having broken.
3548 3555
3549 3556 2002-05-21 Fernando Perez <fperez@colorado.edu>
3550 3557
3551 3558 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3552 3559 introduced logging bug: all history before logging started was
3553 3560 being written one character per line! This came from the redesign
3554 3561 of the input history as a special list which slices to strings,
3555 3562 not to lists.
3556 3563
3557 3564 2002-05-20 Fernando Perez <fperez@colorado.edu>
3558 3565
3559 3566 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3560 3567 be an attribute of all classes in this module. The design of these
3561 3568 classes needs some serious overhauling.
3562 3569
3563 3570 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3564 3571 which was ignoring '_' in option names.
3565 3572
3566 3573 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3567 3574 'Verbose_novars' to 'Context' and made it the new default. It's a
3568 3575 bit more readable and also safer than verbose.
3569 3576
3570 3577 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3571 3578 triple-quoted strings.
3572 3579
3573 3580 * IPython/OInspect.py (__all__): new module exposing the object
3574 3581 introspection facilities. Now the corresponding magics are dummy
3575 3582 wrappers around this. Having this module will make it much easier
3576 3583 to put these functions into our modified pdb.
3577 3584 This new object inspector system uses the new colorizing module,
3578 3585 so source code and other things are nicely syntax highlighted.
3579 3586
3580 3587 2002-05-18 Fernando Perez <fperez@colorado.edu>
3581 3588
3582 3589 * IPython/ColorANSI.py: Split the coloring tools into a separate
3583 3590 module so I can use them in other code easier (they were part of
3584 3591 ultraTB).
3585 3592
3586 3593 2002-05-17 Fernando Perez <fperez@colorado.edu>
3587 3594
3588 3595 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3589 3596 fixed it to set the global 'g' also to the called instance, as
3590 3597 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3591 3598 user's 'g' variables).
3592 3599
3593 3600 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3594 3601 global variables (aliases to _ih,_oh) so that users which expect
3595 3602 In[5] or Out[7] to work aren't unpleasantly surprised.
3596 3603 (InputList.__getslice__): new class to allow executing slices of
3597 3604 input history directly. Very simple class, complements the use of
3598 3605 macros.
3599 3606
3600 3607 2002-05-16 Fernando Perez <fperez@colorado.edu>
3601 3608
3602 3609 * setup.py (docdirbase): make doc directory be just doc/IPython
3603 3610 without version numbers, it will reduce clutter for users.
3604 3611
3605 3612 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3606 3613 execfile call to prevent possible memory leak. See for details:
3607 3614 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3608 3615
3609 3616 2002-05-15 Fernando Perez <fperez@colorado.edu>
3610 3617
3611 3618 * IPython/Magic.py (Magic.magic_psource): made the object
3612 3619 introspection names be more standard: pdoc, pdef, pfile and
3613 3620 psource. They all print/page their output, and it makes
3614 3621 remembering them easier. Kept old names for compatibility as
3615 3622 aliases.
3616 3623
3617 3624 2002-05-14 Fernando Perez <fperez@colorado.edu>
3618 3625
3619 3626 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3620 3627 what the mouse problem was. The trick is to use gnuplot with temp
3621 3628 files and NOT with pipes (for data communication), because having
3622 3629 both pipes and the mouse on is bad news.
3623 3630
3624 3631 2002-05-13 Fernando Perez <fperez@colorado.edu>
3625 3632
3626 3633 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3627 3634 bug. Information would be reported about builtins even when
3628 3635 user-defined functions overrode them.
3629 3636
3630 3637 2002-05-11 Fernando Perez <fperez@colorado.edu>
3631 3638
3632 3639 * IPython/__init__.py (__all__): removed FlexCompleter from
3633 3640 __all__ so that things don't fail in platforms without readline.
3634 3641
3635 3642 2002-05-10 Fernando Perez <fperez@colorado.edu>
3636 3643
3637 3644 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3638 3645 it requires Numeric, effectively making Numeric a dependency for
3639 3646 IPython.
3640 3647
3641 3648 * Released 0.2.13
3642 3649
3643 3650 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3644 3651 profiler interface. Now all the major options from the profiler
3645 3652 module are directly supported in IPython, both for single
3646 3653 expressions (@prun) and for full programs (@run -p).
3647 3654
3648 3655 2002-05-09 Fernando Perez <fperez@colorado.edu>
3649 3656
3650 3657 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3651 3658 magic properly formatted for screen.
3652 3659
3653 3660 * setup.py (make_shortcut): Changed things to put pdf version in
3654 3661 doc/ instead of doc/manual (had to change lyxport a bit).
3655 3662
3656 3663 * IPython/Magic.py (Profile.string_stats): made profile runs go
3657 3664 through pager (they are long and a pager allows searching, saving,
3658 3665 etc.)
3659 3666
3660 3667 2002-05-08 Fernando Perez <fperez@colorado.edu>
3661 3668
3662 3669 * Released 0.2.12
3663 3670
3664 3671 2002-05-06 Fernando Perez <fperez@colorado.edu>
3665 3672
3666 3673 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3667 3674 introduced); 'hist n1 n2' was broken.
3668 3675 (Magic.magic_pdb): added optional on/off arguments to @pdb
3669 3676 (Magic.magic_run): added option -i to @run, which executes code in
3670 3677 the IPython namespace instead of a clean one. Also added @irun as
3671 3678 an alias to @run -i.
3672 3679
3673 3680 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3674 3681 fixed (it didn't really do anything, the namespaces were wrong).
3675 3682
3676 3683 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3677 3684
3678 3685 * IPython/__init__.py (__all__): Fixed package namespace, now
3679 3686 'import IPython' does give access to IPython.<all> as
3680 3687 expected. Also renamed __release__ to Release.
3681 3688
3682 3689 * IPython/Debugger.py (__license__): created new Pdb class which
3683 3690 functions like a drop-in for the normal pdb.Pdb but does NOT
3684 3691 import readline by default. This way it doesn't muck up IPython's
3685 3692 readline handling, and now tab-completion finally works in the
3686 3693 debugger -- sort of. It completes things globally visible, but the
3687 3694 completer doesn't track the stack as pdb walks it. That's a bit
3688 3695 tricky, and I'll have to implement it later.
3689 3696
3690 3697 2002-05-05 Fernando Perez <fperez@colorado.edu>
3691 3698
3692 3699 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3693 3700 magic docstrings when printed via ? (explicit \'s were being
3694 3701 printed).
3695 3702
3696 3703 * IPython/ipmaker.py (make_IPython): fixed namespace
3697 3704 identification bug. Now variables loaded via logs or command-line
3698 3705 files are recognized in the interactive namespace by @who.
3699 3706
3700 3707 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3701 3708 log replay system stemming from the string form of Structs.
3702 3709
3703 3710 * IPython/Magic.py (Macro.__init__): improved macros to properly
3704 3711 handle magic commands in them.
3705 3712 (Magic.magic_logstart): usernames are now expanded so 'logstart
3706 3713 ~/mylog' now works.
3707 3714
3708 3715 * IPython/iplib.py (complete): fixed bug where paths starting with
3709 3716 '/' would be completed as magic names.
3710 3717
3711 3718 2002-05-04 Fernando Perez <fperez@colorado.edu>
3712 3719
3713 3720 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
3714 3721 allow running full programs under the profiler's control.
3715 3722
3716 3723 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
3717 3724 mode to report exceptions verbosely but without formatting
3718 3725 variables. This addresses the issue of ipython 'freezing' (it's
3719 3726 not frozen, but caught in an expensive formatting loop) when huge
3720 3727 variables are in the context of an exception.
3721 3728 (VerboseTB.text): Added '--->' markers at line where exception was
3722 3729 triggered. Much clearer to read, especially in NoColor modes.
3723 3730
3724 3731 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
3725 3732 implemented in reverse when changing to the new parse_options().
3726 3733
3727 3734 2002-05-03 Fernando Perez <fperez@colorado.edu>
3728 3735
3729 3736 * IPython/Magic.py (Magic.parse_options): new function so that
3730 3737 magics can parse options easier.
3731 3738 (Magic.magic_prun): new function similar to profile.run(),
3732 3739 suggested by Chris Hart.
3733 3740 (Magic.magic_cd): fixed behavior so that it only changes if
3734 3741 directory actually is in history.
3735 3742
3736 3743 * IPython/usage.py (__doc__): added information about potential
3737 3744 slowness of Verbose exception mode when there are huge data
3738 3745 structures to be formatted (thanks to Archie Paulson).
3739 3746
3740 3747 * IPython/ipmaker.py (make_IPython): Changed default logging
3741 3748 (when simply called with -log) to use curr_dir/ipython.log in
3742 3749 rotate mode. Fixed crash which was occuring with -log before
3743 3750 (thanks to Jim Boyle).
3744 3751
3745 3752 2002-05-01 Fernando Perez <fperez@colorado.edu>
3746 3753
3747 3754 * Released 0.2.11 for these fixes (mainly the ultraTB one which
3748 3755 was nasty -- though somewhat of a corner case).
3749 3756
3750 3757 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
3751 3758 text (was a bug).
3752 3759
3753 3760 2002-04-30 Fernando Perez <fperez@colorado.edu>
3754 3761
3755 3762 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
3756 3763 a print after ^D or ^C from the user so that the In[] prompt
3757 3764 doesn't over-run the gnuplot one.
3758 3765
3759 3766 2002-04-29 Fernando Perez <fperez@colorado.edu>
3760 3767
3761 3768 * Released 0.2.10
3762 3769
3763 3770 * IPython/__release__.py (version): get date dynamically.
3764 3771
3765 3772 * Misc. documentation updates thanks to Arnd's comments. Also ran
3766 3773 a full spellcheck on the manual (hadn't been done in a while).
3767 3774
3768 3775 2002-04-27 Fernando Perez <fperez@colorado.edu>
3769 3776
3770 3777 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
3771 3778 starting a log in mid-session would reset the input history list.
3772 3779
3773 3780 2002-04-26 Fernando Perez <fperez@colorado.edu>
3774 3781
3775 3782 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
3776 3783 all files were being included in an update. Now anything in
3777 3784 UserConfig that matches [A-Za-z]*.py will go (this excludes
3778 3785 __init__.py)
3779 3786
3780 3787 2002-04-25 Fernando Perez <fperez@colorado.edu>
3781 3788
3782 3789 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
3783 3790 to __builtins__ so that any form of embedded or imported code can
3784 3791 test for being inside IPython.
3785 3792
3786 3793 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
3787 3794 changed to GnuplotMagic because it's now an importable module,
3788 3795 this makes the name follow that of the standard Gnuplot module.
3789 3796 GnuplotMagic can now be loaded at any time in mid-session.
3790 3797
3791 3798 2002-04-24 Fernando Perez <fperez@colorado.edu>
3792 3799
3793 3800 * IPython/numutils.py: removed SIUnits. It doesn't properly set
3794 3801 the globals (IPython has its own namespace) and the
3795 3802 PhysicalQuantity stuff is much better anyway.
3796 3803
3797 3804 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
3798 3805 embedding example to standard user directory for
3799 3806 distribution. Also put it in the manual.
3800 3807
3801 3808 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
3802 3809 instance as first argument (so it doesn't rely on some obscure
3803 3810 hidden global).
3804 3811
3805 3812 * IPython/UserConfig/ipythonrc.py: put () back in accepted
3806 3813 delimiters. While it prevents ().TAB from working, it allows
3807 3814 completions in open (... expressions. This is by far a more common
3808 3815 case.
3809 3816
3810 3817 2002-04-23 Fernando Perez <fperez@colorado.edu>
3811 3818
3812 3819 * IPython/Extensions/InterpreterPasteInput.py: new
3813 3820 syntax-processing module for pasting lines with >>> or ... at the
3814 3821 start.
3815 3822
3816 3823 * IPython/Extensions/PhysicalQ_Interactive.py
3817 3824 (PhysicalQuantityInteractive.__int__): fixed to work with either
3818 3825 Numeric or math.
3819 3826
3820 3827 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
3821 3828 provided profiles. Now we have:
3822 3829 -math -> math module as * and cmath with its own namespace.
3823 3830 -numeric -> Numeric as *, plus gnuplot & grace
3824 3831 -physics -> same as before
3825 3832
3826 3833 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
3827 3834 user-defined magics wouldn't be found by @magic if they were
3828 3835 defined as class methods. Also cleaned up the namespace search
3829 3836 logic and the string building (to use %s instead of many repeated
3830 3837 string adds).
3831 3838
3832 3839 * IPython/UserConfig/example-magic.py (magic_foo): updated example
3833 3840 of user-defined magics to operate with class methods (cleaner, in
3834 3841 line with the gnuplot code).
3835 3842
3836 3843 2002-04-22 Fernando Perez <fperez@colorado.edu>
3837 3844
3838 3845 * setup.py: updated dependency list so that manual is updated when
3839 3846 all included files change.
3840 3847
3841 3848 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
3842 3849 the delimiter removal option (the fix is ugly right now).
3843 3850
3844 3851 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
3845 3852 all of the math profile (quicker loading, no conflict between
3846 3853 g-9.8 and g-gnuplot).
3847 3854
3848 3855 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
3849 3856 name of post-mortem files to IPython_crash_report.txt.
3850 3857
3851 3858 * Cleanup/update of the docs. Added all the new readline info and
3852 3859 formatted all lists as 'real lists'.
3853 3860
3854 3861 * IPython/ipmaker.py (make_IPython): removed now-obsolete
3855 3862 tab-completion options, since the full readline parse_and_bind is
3856 3863 now accessible.
3857 3864
3858 3865 * IPython/iplib.py (InteractiveShell.init_readline): Changed
3859 3866 handling of readline options. Now users can specify any string to
3860 3867 be passed to parse_and_bind(), as well as the delimiters to be
3861 3868 removed.
3862 3869 (InteractiveShell.__init__): Added __name__ to the global
3863 3870 namespace so that things like Itpl which rely on its existence
3864 3871 don't crash.
3865 3872 (InteractiveShell._prefilter): Defined the default with a _ so
3866 3873 that prefilter() is easier to override, while the default one
3867 3874 remains available.
3868 3875
3869 3876 2002-04-18 Fernando Perez <fperez@colorado.edu>
3870 3877
3871 3878 * Added information about pdb in the docs.
3872 3879
3873 3880 2002-04-17 Fernando Perez <fperez@colorado.edu>
3874 3881
3875 3882 * IPython/ipmaker.py (make_IPython): added rc_override option to
3876 3883 allow passing config options at creation time which may override
3877 3884 anything set in the config files or command line. This is
3878 3885 particularly useful for configuring embedded instances.
3879 3886
3880 3887 2002-04-15 Fernando Perez <fperez@colorado.edu>
3881 3888
3882 3889 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
3883 3890 crash embedded instances because of the input cache falling out of
3884 3891 sync with the output counter.
3885 3892
3886 3893 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
3887 3894 mode which calls pdb after an uncaught exception in IPython itself.
3888 3895
3889 3896 2002-04-14 Fernando Perez <fperez@colorado.edu>
3890 3897
3891 3898 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
3892 3899 readline, fix it back after each call.
3893 3900
3894 3901 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
3895 3902 method to force all access via __call__(), which guarantees that
3896 3903 traceback references are properly deleted.
3897 3904
3898 3905 * IPython/Prompts.py (CachedOutput._display): minor fixes to
3899 3906 improve printing when pprint is in use.
3900 3907
3901 3908 2002-04-13 Fernando Perez <fperez@colorado.edu>
3902 3909
3903 3910 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
3904 3911 exceptions aren't caught anymore. If the user triggers one, he
3905 3912 should know why he's doing it and it should go all the way up,
3906 3913 just like any other exception. So now @abort will fully kill the
3907 3914 embedded interpreter and the embedding code (unless that happens
3908 3915 to catch SystemExit).
3909 3916
3910 3917 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
3911 3918 and a debugger() method to invoke the interactive pdb debugger
3912 3919 after printing exception information. Also added the corresponding
3913 3920 -pdb option and @pdb magic to control this feature, and updated
3914 3921 the docs. After a suggestion from Christopher Hart
3915 3922 (hart-AT-caltech.edu).
3916 3923
3917 3924 2002-04-12 Fernando Perez <fperez@colorado.edu>
3918 3925
3919 3926 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
3920 3927 the exception handlers defined by the user (not the CrashHandler)
3921 3928 so that user exceptions don't trigger an ipython bug report.
3922 3929
3923 3930 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
3924 3931 configurable (it should have always been so).
3925 3932
3926 3933 2002-03-26 Fernando Perez <fperez@colorado.edu>
3927 3934
3928 3935 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
3929 3936 and there to fix embedding namespace issues. This should all be
3930 3937 done in a more elegant way.
3931 3938
3932 3939 2002-03-25 Fernando Perez <fperez@colorado.edu>
3933 3940
3934 3941 * IPython/genutils.py (get_home_dir): Try to make it work under
3935 3942 win9x also.
3936 3943
3937 3944 2002-03-20 Fernando Perez <fperez@colorado.edu>
3938 3945
3939 3946 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
3940 3947 sys.displayhook untouched upon __init__.
3941 3948
3942 3949 2002-03-19 Fernando Perez <fperez@colorado.edu>
3943 3950
3944 3951 * Released 0.2.9 (for embedding bug, basically).
3945 3952
3946 3953 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
3947 3954 exceptions so that enclosing shell's state can be restored.
3948 3955
3949 3956 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
3950 3957 naming conventions in the .ipython/ dir.
3951 3958
3952 3959 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
3953 3960 from delimiters list so filenames with - in them get expanded.
3954 3961
3955 3962 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
3956 3963 sys.displayhook not being properly restored after an embedded call.
3957 3964
3958 3965 2002-03-18 Fernando Perez <fperez@colorado.edu>
3959 3966
3960 3967 * Released 0.2.8
3961 3968
3962 3969 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
3963 3970 some files weren't being included in a -upgrade.
3964 3971 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
3965 3972 on' so that the first tab completes.
3966 3973 (InteractiveShell.handle_magic): fixed bug with spaces around
3967 3974 quotes breaking many magic commands.
3968 3975
3969 3976 * setup.py: added note about ignoring the syntax error messages at
3970 3977 installation.
3971 3978
3972 3979 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
3973 3980 streamlining the gnuplot interface, now there's only one magic @gp.
3974 3981
3975 3982 2002-03-17 Fernando Perez <fperez@colorado.edu>
3976 3983
3977 3984 * IPython/UserConfig/magic_gnuplot.py: new name for the
3978 3985 example-magic_pm.py file. Much enhanced system, now with a shell
3979 3986 for communicating directly with gnuplot, one command at a time.
3980 3987
3981 3988 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
3982 3989 setting __name__=='__main__'.
3983 3990
3984 3991 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
3985 3992 mini-shell for accessing gnuplot from inside ipython. Should
3986 3993 extend it later for grace access too. Inspired by Arnd's
3987 3994 suggestion.
3988 3995
3989 3996 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
3990 3997 calling magic functions with () in their arguments. Thanks to Arnd
3991 3998 Baecker for pointing this to me.
3992 3999
3993 4000 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
3994 4001 infinitely for integer or complex arrays (only worked with floats).
3995 4002
3996 4003 2002-03-16 Fernando Perez <fperez@colorado.edu>
3997 4004
3998 4005 * setup.py: Merged setup and setup_windows into a single script
3999 4006 which properly handles things for windows users.
4000 4007
4001 4008 2002-03-15 Fernando Perez <fperez@colorado.edu>
4002 4009
4003 4010 * Big change to the manual: now the magics are all automatically
4004 4011 documented. This information is generated from their docstrings
4005 4012 and put in a latex file included by the manual lyx file. This way
4006 4013 we get always up to date information for the magics. The manual
4007 4014 now also has proper version information, also auto-synced.
4008 4015
4009 4016 For this to work, an undocumented --magic_docstrings option was added.
4010 4017
4011 4018 2002-03-13 Fernando Perez <fperez@colorado.edu>
4012 4019
4013 4020 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4014 4021 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4015 4022
4016 4023 2002-03-12 Fernando Perez <fperez@colorado.edu>
4017 4024
4018 4025 * IPython/ultraTB.py (TermColors): changed color escapes again to
4019 4026 fix the (old, reintroduced) line-wrapping bug. Basically, if
4020 4027 \001..\002 aren't given in the color escapes, lines get wrapped
4021 4028 weirdly. But giving those screws up old xterms and emacs terms. So
4022 4029 I added some logic for emacs terms to be ok, but I can't identify old
4023 4030 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4024 4031
4025 4032 2002-03-10 Fernando Perez <fperez@colorado.edu>
4026 4033
4027 4034 * IPython/usage.py (__doc__): Various documentation cleanups and
4028 4035 updates, both in usage docstrings and in the manual.
4029 4036
4030 4037 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4031 4038 handling of caching. Set minimum acceptabe value for having a
4032 4039 cache at 20 values.
4033 4040
4034 4041 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4035 4042 install_first_time function to a method, renamed it and added an
4036 4043 'upgrade' mode. Now people can update their config directory with
4037 4044 a simple command line switch (-upgrade, also new).
4038 4045
4039 4046 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4040 4047 @file (convenient for automagic users under Python >= 2.2).
4041 4048 Removed @files (it seemed more like a plural than an abbrev. of
4042 4049 'file show').
4043 4050
4044 4051 * IPython/iplib.py (install_first_time): Fixed crash if there were
4045 4052 backup files ('~') in .ipython/ install directory.
4046 4053
4047 4054 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4048 4055 system. Things look fine, but these changes are fairly
4049 4056 intrusive. Test them for a few days.
4050 4057
4051 4058 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4052 4059 the prompts system. Now all in/out prompt strings are user
4053 4060 controllable. This is particularly useful for embedding, as one
4054 4061 can tag embedded instances with particular prompts.
4055 4062
4056 4063 Also removed global use of sys.ps1/2, which now allows nested
4057 4064 embeddings without any problems. Added command-line options for
4058 4065 the prompt strings.
4059 4066
4060 4067 2002-03-08 Fernando Perez <fperez@colorado.edu>
4061 4068
4062 4069 * IPython/UserConfig/example-embed-short.py (ipshell): added
4063 4070 example file with the bare minimum code for embedding.
4064 4071
4065 4072 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4066 4073 functionality for the embeddable shell to be activated/deactivated
4067 4074 either globally or at each call.
4068 4075
4069 4076 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4070 4077 rewriting the prompt with '--->' for auto-inputs with proper
4071 4078 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4072 4079 this is handled by the prompts class itself, as it should.
4073 4080
4074 4081 2002-03-05 Fernando Perez <fperez@colorado.edu>
4075 4082
4076 4083 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4077 4084 @logstart to avoid name clashes with the math log function.
4078 4085
4079 4086 * Big updates to X/Emacs section of the manual.
4080 4087
4081 4088 * Removed ipython_emacs. Milan explained to me how to pass
4082 4089 arguments to ipython through Emacs. Some day I'm going to end up
4083 4090 learning some lisp...
4084 4091
4085 4092 2002-03-04 Fernando Perez <fperez@colorado.edu>
4086 4093
4087 4094 * IPython/ipython_emacs: Created script to be used as the
4088 4095 py-python-command Emacs variable so we can pass IPython
4089 4096 parameters. I can't figure out how to tell Emacs directly to pass
4090 4097 parameters to IPython, so a dummy shell script will do it.
4091 4098
4092 4099 Other enhancements made for things to work better under Emacs'
4093 4100 various types of terminals. Many thanks to Milan Zamazal
4094 4101 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4095 4102
4096 4103 2002-03-01 Fernando Perez <fperez@colorado.edu>
4097 4104
4098 4105 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4099 4106 that loading of readline is now optional. This gives better
4100 4107 control to emacs users.
4101 4108
4102 4109 * IPython/ultraTB.py (__date__): Modified color escape sequences
4103 4110 and now things work fine under xterm and in Emacs' term buffers
4104 4111 (though not shell ones). Well, in emacs you get colors, but all
4105 4112 seem to be 'light' colors (no difference between dark and light
4106 4113 ones). But the garbage chars are gone, and also in xterms. It
4107 4114 seems that now I'm using 'cleaner' ansi sequences.
4108 4115
4109 4116 2002-02-21 Fernando Perez <fperez@colorado.edu>
4110 4117
4111 4118 * Released 0.2.7 (mainly to publish the scoping fix).
4112 4119
4113 4120 * IPython/Logger.py (Logger.logstate): added. A corresponding
4114 4121 @logstate magic was created.
4115 4122
4116 4123 * IPython/Magic.py: fixed nested scoping problem under Python
4117 4124 2.1.x (automagic wasn't working).
4118 4125
4119 4126 2002-02-20 Fernando Perez <fperez@colorado.edu>
4120 4127
4121 4128 * Released 0.2.6.
4122 4129
4123 4130 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4124 4131 option so that logs can come out without any headers at all.
4125 4132
4126 4133 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4127 4134 SciPy.
4128 4135
4129 4136 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4130 4137 that embedded IPython calls don't require vars() to be explicitly
4131 4138 passed. Now they are extracted from the caller's frame (code
4132 4139 snatched from Eric Jones' weave). Added better documentation to
4133 4140 the section on embedding and the example file.
4134 4141
4135 4142 * IPython/genutils.py (page): Changed so that under emacs, it just
4136 4143 prints the string. You can then page up and down in the emacs
4137 4144 buffer itself. This is how the builtin help() works.
4138 4145
4139 4146 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4140 4147 macro scoping: macros need to be executed in the user's namespace
4141 4148 to work as if they had been typed by the user.
4142 4149
4143 4150 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4144 4151 execute automatically (no need to type 'exec...'). They then
4145 4152 behave like 'true macros'. The printing system was also modified
4146 4153 for this to work.
4147 4154
4148 4155 2002-02-19 Fernando Perez <fperez@colorado.edu>
4149 4156
4150 4157 * IPython/genutils.py (page_file): new function for paging files
4151 4158 in an OS-independent way. Also necessary for file viewing to work
4152 4159 well inside Emacs buffers.
4153 4160 (page): Added checks for being in an emacs buffer.
4154 4161 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4155 4162 same bug in iplib.
4156 4163
4157 4164 2002-02-18 Fernando Perez <fperez@colorado.edu>
4158 4165
4159 4166 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4160 4167 of readline so that IPython can work inside an Emacs buffer.
4161 4168
4162 4169 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4163 4170 method signatures (they weren't really bugs, but it looks cleaner
4164 4171 and keeps PyChecker happy).
4165 4172
4166 4173 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4167 4174 for implementing various user-defined hooks. Currently only
4168 4175 display is done.
4169 4176
4170 4177 * IPython/Prompts.py (CachedOutput._display): changed display
4171 4178 functions so that they can be dynamically changed by users easily.
4172 4179
4173 4180 * IPython/Extensions/numeric_formats.py (num_display): added an
4174 4181 extension for printing NumPy arrays in flexible manners. It
4175 4182 doesn't do anything yet, but all the structure is in
4176 4183 place. Ultimately the plan is to implement output format control
4177 4184 like in Octave.
4178 4185
4179 4186 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4180 4187 methods are found at run-time by all the automatic machinery.
4181 4188
4182 4189 2002-02-17 Fernando Perez <fperez@colorado.edu>
4183 4190
4184 4191 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4185 4192 whole file a little.
4186 4193
4187 4194 * ToDo: closed this document. Now there's a new_design.lyx
4188 4195 document for all new ideas. Added making a pdf of it for the
4189 4196 end-user distro.
4190 4197
4191 4198 * IPython/Logger.py (Logger.switch_log): Created this to replace
4192 4199 logon() and logoff(). It also fixes a nasty crash reported by
4193 4200 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4194 4201
4195 4202 * IPython/iplib.py (complete): got auto-completion to work with
4196 4203 automagic (I had wanted this for a long time).
4197 4204
4198 4205 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4199 4206 to @file, since file() is now a builtin and clashes with automagic
4200 4207 for @file.
4201 4208
4202 4209 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4203 4210 of this was previously in iplib, which had grown to more than 2000
4204 4211 lines, way too long. No new functionality, but it makes managing
4205 4212 the code a bit easier.
4206 4213
4207 4214 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4208 4215 information to crash reports.
4209 4216
4210 4217 2002-02-12 Fernando Perez <fperez@colorado.edu>
4211 4218
4212 4219 * Released 0.2.5.
4213 4220
4214 4221 2002-02-11 Fernando Perez <fperez@colorado.edu>
4215 4222
4216 4223 * Wrote a relatively complete Windows installer. It puts
4217 4224 everything in place, creates Start Menu entries and fixes the
4218 4225 color issues. Nothing fancy, but it works.
4219 4226
4220 4227 2002-02-10 Fernando Perez <fperez@colorado.edu>
4221 4228
4222 4229 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4223 4230 os.path.expanduser() call so that we can type @run ~/myfile.py and
4224 4231 have thigs work as expected.
4225 4232
4226 4233 * IPython/genutils.py (page): fixed exception handling so things
4227 4234 work both in Unix and Windows correctly. Quitting a pager triggers
4228 4235 an IOError/broken pipe in Unix, and in windows not finding a pager
4229 4236 is also an IOError, so I had to actually look at the return value
4230 4237 of the exception, not just the exception itself. Should be ok now.
4231 4238
4232 4239 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4233 4240 modified to allow case-insensitive color scheme changes.
4234 4241
4235 4242 2002-02-09 Fernando Perez <fperez@colorado.edu>
4236 4243
4237 4244 * IPython/genutils.py (native_line_ends): new function to leave
4238 4245 user config files with os-native line-endings.
4239 4246
4240 4247 * README and manual updates.
4241 4248
4242 4249 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4243 4250 instead of StringType to catch Unicode strings.
4244 4251
4245 4252 * IPython/genutils.py (filefind): fixed bug for paths with
4246 4253 embedded spaces (very common in Windows).
4247 4254
4248 4255 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4249 4256 files under Windows, so that they get automatically associated
4250 4257 with a text editor. Windows makes it a pain to handle
4251 4258 extension-less files.
4252 4259
4253 4260 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4254 4261 warning about readline only occur for Posix. In Windows there's no
4255 4262 way to get readline, so why bother with the warning.
4256 4263
4257 4264 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4258 4265 for __str__ instead of dir(self), since dir() changed in 2.2.
4259 4266
4260 4267 * Ported to Windows! Tested on XP, I suspect it should work fine
4261 4268 on NT/2000, but I don't think it will work on 98 et al. That
4262 4269 series of Windows is such a piece of junk anyway that I won't try
4263 4270 porting it there. The XP port was straightforward, showed a few
4264 4271 bugs here and there (fixed all), in particular some string
4265 4272 handling stuff which required considering Unicode strings (which
4266 4273 Windows uses). This is good, but hasn't been too tested :) No
4267 4274 fancy installer yet, I'll put a note in the manual so people at
4268 4275 least make manually a shortcut.
4269 4276
4270 4277 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4271 4278 into a single one, "colors". This now controls both prompt and
4272 4279 exception color schemes, and can be changed both at startup
4273 4280 (either via command-line switches or via ipythonrc files) and at
4274 4281 runtime, with @colors.
4275 4282 (Magic.magic_run): renamed @prun to @run and removed the old
4276 4283 @run. The two were too similar to warrant keeping both.
4277 4284
4278 4285 2002-02-03 Fernando Perez <fperez@colorado.edu>
4279 4286
4280 4287 * IPython/iplib.py (install_first_time): Added comment on how to
4281 4288 configure the color options for first-time users. Put a <return>
4282 4289 request at the end so that small-terminal users get a chance to
4283 4290 read the startup info.
4284 4291
4285 4292 2002-01-23 Fernando Perez <fperez@colorado.edu>
4286 4293
4287 4294 * IPython/iplib.py (CachedOutput.update): Changed output memory
4288 4295 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4289 4296 input history we still use _i. Did this b/c these variable are
4290 4297 very commonly used in interactive work, so the less we need to
4291 4298 type the better off we are.
4292 4299 (Magic.magic_prun): updated @prun to better handle the namespaces
4293 4300 the file will run in, including a fix for __name__ not being set
4294 4301 before.
4295 4302
4296 4303 2002-01-20 Fernando Perez <fperez@colorado.edu>
4297 4304
4298 4305 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4299 4306 extra garbage for Python 2.2. Need to look more carefully into
4300 4307 this later.
4301 4308
4302 4309 2002-01-19 Fernando Perez <fperez@colorado.edu>
4303 4310
4304 4311 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4305 4312 display SyntaxError exceptions properly formatted when they occur
4306 4313 (they can be triggered by imported code).
4307 4314
4308 4315 2002-01-18 Fernando Perez <fperez@colorado.edu>
4309 4316
4310 4317 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4311 4318 SyntaxError exceptions are reported nicely formatted, instead of
4312 4319 spitting out only offset information as before.
4313 4320 (Magic.magic_prun): Added the @prun function for executing
4314 4321 programs with command line args inside IPython.
4315 4322
4316 4323 2002-01-16 Fernando Perez <fperez@colorado.edu>
4317 4324
4318 4325 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4319 4326 to *not* include the last item given in a range. This brings their
4320 4327 behavior in line with Python's slicing:
4321 4328 a[n1:n2] -> a[n1]...a[n2-1]
4322 4329 It may be a bit less convenient, but I prefer to stick to Python's
4323 4330 conventions *everywhere*, so users never have to wonder.
4324 4331 (Magic.magic_macro): Added @macro function to ease the creation of
4325 4332 macros.
4326 4333
4327 4334 2002-01-05 Fernando Perez <fperez@colorado.edu>
4328 4335
4329 4336 * Released 0.2.4.
4330 4337
4331 4338 * IPython/iplib.py (Magic.magic_pdef):
4332 4339 (InteractiveShell.safe_execfile): report magic lines and error
4333 4340 lines without line numbers so one can easily copy/paste them for
4334 4341 re-execution.
4335 4342
4336 4343 * Updated manual with recent changes.
4337 4344
4338 4345 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4339 4346 docstring printing when class? is called. Very handy for knowing
4340 4347 how to create class instances (as long as __init__ is well
4341 4348 documented, of course :)
4342 4349 (Magic.magic_doc): print both class and constructor docstrings.
4343 4350 (Magic.magic_pdef): give constructor info if passed a class and
4344 4351 __call__ info for callable object instances.
4345 4352
4346 4353 2002-01-04 Fernando Perez <fperez@colorado.edu>
4347 4354
4348 4355 * Made deep_reload() off by default. It doesn't always work
4349 4356 exactly as intended, so it's probably safer to have it off. It's
4350 4357 still available as dreload() anyway, so nothing is lost.
4351 4358
4352 4359 2002-01-02 Fernando Perez <fperez@colorado.edu>
4353 4360
4354 4361 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4355 4362 so I wanted an updated release).
4356 4363
4357 4364 2001-12-27 Fernando Perez <fperez@colorado.edu>
4358 4365
4359 4366 * IPython/iplib.py (InteractiveShell.interact): Added the original
4360 4367 code from 'code.py' for this module in order to change the
4361 4368 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4362 4369 the history cache would break when the user hit Ctrl-C, and
4363 4370 interact() offers no way to add any hooks to it.
4364 4371
4365 4372 2001-12-23 Fernando Perez <fperez@colorado.edu>
4366 4373
4367 4374 * setup.py: added check for 'MANIFEST' before trying to remove
4368 4375 it. Thanks to Sean Reifschneider.
4369 4376
4370 4377 2001-12-22 Fernando Perez <fperez@colorado.edu>
4371 4378
4372 4379 * Released 0.2.2.
4373 4380
4374 4381 * Finished (reasonably) writing the manual. Later will add the
4375 4382 python-standard navigation stylesheets, but for the time being
4376 4383 it's fairly complete. Distribution will include html and pdf
4377 4384 versions.
4378 4385
4379 4386 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4380 4387 (MayaVi author).
4381 4388
4382 4389 2001-12-21 Fernando Perez <fperez@colorado.edu>
4383 4390
4384 4391 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4385 4392 good public release, I think (with the manual and the distutils
4386 4393 installer). The manual can use some work, but that can go
4387 4394 slowly. Otherwise I think it's quite nice for end users. Next
4388 4395 summer, rewrite the guts of it...
4389 4396
4390 4397 * Changed format of ipythonrc files to use whitespace as the
4391 4398 separator instead of an explicit '='. Cleaner.
4392 4399
4393 4400 2001-12-20 Fernando Perez <fperez@colorado.edu>
4394 4401
4395 4402 * Started a manual in LyX. For now it's just a quick merge of the
4396 4403 various internal docstrings and READMEs. Later it may grow into a
4397 4404 nice, full-blown manual.
4398 4405
4399 4406 * Set up a distutils based installer. Installation should now be
4400 4407 trivially simple for end-users.
4401 4408
4402 4409 2001-12-11 Fernando Perez <fperez@colorado.edu>
4403 4410
4404 4411 * Released 0.2.0. First public release, announced it at
4405 4412 comp.lang.python. From now on, just bugfixes...
4406 4413
4407 4414 * Went through all the files, set copyright/license notices and
4408 4415 cleaned up things. Ready for release.
4409 4416
4410 4417 2001-12-10 Fernando Perez <fperez@colorado.edu>
4411 4418
4412 4419 * Changed the first-time installer not to use tarfiles. It's more
4413 4420 robust now and less unix-dependent. Also makes it easier for
4414 4421 people to later upgrade versions.
4415 4422
4416 4423 * Changed @exit to @abort to reflect the fact that it's pretty
4417 4424 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4418 4425 becomes significant only when IPyhton is embedded: in that case,
4419 4426 C-D closes IPython only, but @abort kills the enclosing program
4420 4427 too (unless it had called IPython inside a try catching
4421 4428 SystemExit).
4422 4429
4423 4430 * Created Shell module which exposes the actuall IPython Shell
4424 4431 classes, currently the normal and the embeddable one. This at
4425 4432 least offers a stable interface we won't need to change when
4426 4433 (later) the internals are rewritten. That rewrite will be confined
4427 4434 to iplib and ipmaker, but the Shell interface should remain as is.
4428 4435
4429 4436 * Added embed module which offers an embeddable IPShell object,
4430 4437 useful to fire up IPython *inside* a running program. Great for
4431 4438 debugging or dynamical data analysis.
4432 4439
4433 4440 2001-12-08 Fernando Perez <fperez@colorado.edu>
4434 4441
4435 4442 * Fixed small bug preventing seeing info from methods of defined
4436 4443 objects (incorrect namespace in _ofind()).
4437 4444
4438 4445 * Documentation cleanup. Moved the main usage docstrings to a
4439 4446 separate file, usage.py (cleaner to maintain, and hopefully in the
4440 4447 future some perlpod-like way of producing interactive, man and
4441 4448 html docs out of it will be found).
4442 4449
4443 4450 * Added @profile to see your profile at any time.
4444 4451
4445 4452 * Added @p as an alias for 'print'. It's especially convenient if
4446 4453 using automagic ('p x' prints x).
4447 4454
4448 4455 * Small cleanups and fixes after a pychecker run.
4449 4456
4450 4457 * Changed the @cd command to handle @cd - and @cd -<n> for
4451 4458 visiting any directory in _dh.
4452 4459
4453 4460 * Introduced _dh, a history of visited directories. @dhist prints
4454 4461 it out with numbers.
4455 4462
4456 4463 2001-12-07 Fernando Perez <fperez@colorado.edu>
4457 4464
4458 4465 * Released 0.1.22
4459 4466
4460 4467 * Made initialization a bit more robust against invalid color
4461 4468 options in user input (exit, not traceback-crash).
4462 4469
4463 4470 * Changed the bug crash reporter to write the report only in the
4464 4471 user's .ipython directory. That way IPython won't litter people's
4465 4472 hard disks with crash files all over the place. Also print on
4466 4473 screen the necessary mail command.
4467 4474
4468 4475 * With the new ultraTB, implemented LightBG color scheme for light
4469 4476 background terminals. A lot of people like white backgrounds, so I
4470 4477 guess we should at least give them something readable.
4471 4478
4472 4479 2001-12-06 Fernando Perez <fperez@colorado.edu>
4473 4480
4474 4481 * Modified the structure of ultraTB. Now there's a proper class
4475 4482 for tables of color schemes which allow adding schemes easily and
4476 4483 switching the active scheme without creating a new instance every
4477 4484 time (which was ridiculous). The syntax for creating new schemes
4478 4485 is also cleaner. I think ultraTB is finally done, with a clean
4479 4486 class structure. Names are also much cleaner (now there's proper
4480 4487 color tables, no need for every variable to also have 'color' in
4481 4488 its name).
4482 4489
4483 4490 * Broke down genutils into separate files. Now genutils only
4484 4491 contains utility functions, and classes have been moved to their
4485 4492 own files (they had enough independent functionality to warrant
4486 4493 it): ConfigLoader, OutputTrap, Struct.
4487 4494
4488 4495 2001-12-05 Fernando Perez <fperez@colorado.edu>
4489 4496
4490 4497 * IPython turns 21! Released version 0.1.21, as a candidate for
4491 4498 public consumption. If all goes well, release in a few days.
4492 4499
4493 4500 * Fixed path bug (files in Extensions/ directory wouldn't be found
4494 4501 unless IPython/ was explicitly in sys.path).
4495 4502
4496 4503 * Extended the FlexCompleter class as MagicCompleter to allow
4497 4504 completion of @-starting lines.
4498 4505
4499 4506 * Created __release__.py file as a central repository for release
4500 4507 info that other files can read from.
4501 4508
4502 4509 * Fixed small bug in logging: when logging was turned on in
4503 4510 mid-session, old lines with special meanings (!@?) were being
4504 4511 logged without the prepended comment, which is necessary since
4505 4512 they are not truly valid python syntax. This should make session
4506 4513 restores produce less errors.
4507 4514
4508 4515 * The namespace cleanup forced me to make a FlexCompleter class
4509 4516 which is nothing but a ripoff of rlcompleter, but with selectable
4510 4517 namespace (rlcompleter only works in __main__.__dict__). I'll try
4511 4518 to submit a note to the authors to see if this change can be
4512 4519 incorporated in future rlcompleter releases (Dec.6: done)
4513 4520
4514 4521 * More fixes to namespace handling. It was a mess! Now all
4515 4522 explicit references to __main__.__dict__ are gone (except when
4516 4523 really needed) and everything is handled through the namespace
4517 4524 dicts in the IPython instance. We seem to be getting somewhere
4518 4525 with this, finally...
4519 4526
4520 4527 * Small documentation updates.
4521 4528
4522 4529 * Created the Extensions directory under IPython (with an
4523 4530 __init__.py). Put the PhysicalQ stuff there. This directory should
4524 4531 be used for all special-purpose extensions.
4525 4532
4526 4533 * File renaming:
4527 4534 ipythonlib --> ipmaker
4528 4535 ipplib --> iplib
4529 4536 This makes a bit more sense in terms of what these files actually do.
4530 4537
4531 4538 * Moved all the classes and functions in ipythonlib to ipplib, so
4532 4539 now ipythonlib only has make_IPython(). This will ease up its
4533 4540 splitting in smaller functional chunks later.
4534 4541
4535 4542 * Cleaned up (done, I think) output of @whos. Better column
4536 4543 formatting, and now shows str(var) for as much as it can, which is
4537 4544 typically what one gets with a 'print var'.
4538 4545
4539 4546 2001-12-04 Fernando Perez <fperez@colorado.edu>
4540 4547
4541 4548 * Fixed namespace problems. Now builtin/IPyhton/user names get
4542 4549 properly reported in their namespace. Internal namespace handling
4543 4550 is finally getting decent (not perfect yet, but much better than
4544 4551 the ad-hoc mess we had).
4545 4552
4546 4553 * Removed -exit option. If people just want to run a python
4547 4554 script, that's what the normal interpreter is for. Less
4548 4555 unnecessary options, less chances for bugs.
4549 4556
4550 4557 * Added a crash handler which generates a complete post-mortem if
4551 4558 IPython crashes. This will help a lot in tracking bugs down the
4552 4559 road.
4553 4560
4554 4561 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4555 4562 which were boud to functions being reassigned would bypass the
4556 4563 logger, breaking the sync of _il with the prompt counter. This
4557 4564 would then crash IPython later when a new line was logged.
4558 4565
4559 4566 2001-12-02 Fernando Perez <fperez@colorado.edu>
4560 4567
4561 4568 * Made IPython a package. This means people don't have to clutter
4562 4569 their sys.path with yet another directory. Changed the INSTALL
4563 4570 file accordingly.
4564 4571
4565 4572 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4566 4573 sorts its output (so @who shows it sorted) and @whos formats the
4567 4574 table according to the width of the first column. Nicer, easier to
4568 4575 read. Todo: write a generic table_format() which takes a list of
4569 4576 lists and prints it nicely formatted, with optional row/column
4570 4577 separators and proper padding and justification.
4571 4578
4572 4579 * Released 0.1.20
4573 4580
4574 4581 * Fixed bug in @log which would reverse the inputcache list (a
4575 4582 copy operation was missing).
4576 4583
4577 4584 * Code cleanup. @config was changed to use page(). Better, since
4578 4585 its output is always quite long.
4579 4586
4580 4587 * Itpl is back as a dependency. I was having too many problems
4581 4588 getting the parametric aliases to work reliably, and it's just
4582 4589 easier to code weird string operations with it than playing %()s
4583 4590 games. It's only ~6k, so I don't think it's too big a deal.
4584 4591
4585 4592 * Found (and fixed) a very nasty bug with history. !lines weren't
4586 4593 getting cached, and the out of sync caches would crash
4587 4594 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4588 4595 division of labor a bit better. Bug fixed, cleaner structure.
4589 4596
4590 4597 2001-12-01 Fernando Perez <fperez@colorado.edu>
4591 4598
4592 4599 * Released 0.1.19
4593 4600
4594 4601 * Added option -n to @hist to prevent line number printing. Much
4595 4602 easier to copy/paste code this way.
4596 4603
4597 4604 * Created global _il to hold the input list. Allows easy
4598 4605 re-execution of blocks of code by slicing it (inspired by Janko's
4599 4606 comment on 'macros').
4600 4607
4601 4608 * Small fixes and doc updates.
4602 4609
4603 4610 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4604 4611 much too fragile with automagic. Handles properly multi-line
4605 4612 statements and takes parameters.
4606 4613
4607 4614 2001-11-30 Fernando Perez <fperez@colorado.edu>
4608 4615
4609 4616 * Version 0.1.18 released.
4610 4617
4611 4618 * Fixed nasty namespace bug in initial module imports.
4612 4619
4613 4620 * Added copyright/license notes to all code files (except
4614 4621 DPyGetOpt). For the time being, LGPL. That could change.
4615 4622
4616 4623 * Rewrote a much nicer README, updated INSTALL, cleaned up
4617 4624 ipythonrc-* samples.
4618 4625
4619 4626 * Overall code/documentation cleanup. Basically ready for
4620 4627 release. Only remaining thing: licence decision (LGPL?).
4621 4628
4622 4629 * Converted load_config to a class, ConfigLoader. Now recursion
4623 4630 control is better organized. Doesn't include the same file twice.
4624 4631
4625 4632 2001-11-29 Fernando Perez <fperez@colorado.edu>
4626 4633
4627 4634 * Got input history working. Changed output history variables from
4628 4635 _p to _o so that _i is for input and _o for output. Just cleaner
4629 4636 convention.
4630 4637
4631 4638 * Implemented parametric aliases. This pretty much allows the
4632 4639 alias system to offer full-blown shell convenience, I think.
4633 4640
4634 4641 * Version 0.1.17 released, 0.1.18 opened.
4635 4642
4636 4643 * dot_ipython/ipythonrc (alias): added documentation.
4637 4644 (xcolor): Fixed small bug (xcolors -> xcolor)
4638 4645
4639 4646 * Changed the alias system. Now alias is a magic command to define
4640 4647 aliases just like the shell. Rationale: the builtin magics should
4641 4648 be there for things deeply connected to IPython's
4642 4649 architecture. And this is a much lighter system for what I think
4643 4650 is the really important feature: allowing users to define quickly
4644 4651 magics that will do shell things for them, so they can customize
4645 4652 IPython easily to match their work habits. If someone is really
4646 4653 desperate to have another name for a builtin alias, they can
4647 4654 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4648 4655 works.
4649 4656
4650 4657 2001-11-28 Fernando Perez <fperez@colorado.edu>
4651 4658
4652 4659 * Changed @file so that it opens the source file at the proper
4653 4660 line. Since it uses less, if your EDITOR environment is
4654 4661 configured, typing v will immediately open your editor of choice
4655 4662 right at the line where the object is defined. Not as quick as
4656 4663 having a direct @edit command, but for all intents and purposes it
4657 4664 works. And I don't have to worry about writing @edit to deal with
4658 4665 all the editors, less does that.
4659 4666
4660 4667 * Version 0.1.16 released, 0.1.17 opened.
4661 4668
4662 4669 * Fixed some nasty bugs in the page/page_dumb combo that could
4663 4670 crash IPython.
4664 4671
4665 4672 2001-11-27 Fernando Perez <fperez@colorado.edu>
4666 4673
4667 4674 * Version 0.1.15 released, 0.1.16 opened.
4668 4675
4669 4676 * Finally got ? and ?? to work for undefined things: now it's
4670 4677 possible to type {}.get? and get information about the get method
4671 4678 of dicts, or os.path? even if only os is defined (so technically
4672 4679 os.path isn't). Works at any level. For example, after import os,
4673 4680 os?, os.path?, os.path.abspath? all work. This is great, took some
4674 4681 work in _ofind.
4675 4682
4676 4683 * Fixed more bugs with logging. The sanest way to do it was to add
4677 4684 to @log a 'mode' parameter. Killed two in one shot (this mode
4678 4685 option was a request of Janko's). I think it's finally clean
4679 4686 (famous last words).
4680 4687
4681 4688 * Added a page_dumb() pager which does a decent job of paging on
4682 4689 screen, if better things (like less) aren't available. One less
4683 4690 unix dependency (someday maybe somebody will port this to
4684 4691 windows).
4685 4692
4686 4693 * Fixed problem in magic_log: would lock of logging out if log
4687 4694 creation failed (because it would still think it had succeeded).
4688 4695
4689 4696 * Improved the page() function using curses to auto-detect screen
4690 4697 size. Now it can make a much better decision on whether to print
4691 4698 or page a string. Option screen_length was modified: a value 0
4692 4699 means auto-detect, and that's the default now.
4693 4700
4694 4701 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4695 4702 go out. I'll test it for a few days, then talk to Janko about
4696 4703 licences and announce it.
4697 4704
4698 4705 * Fixed the length of the auto-generated ---> prompt which appears
4699 4706 for auto-parens and auto-quotes. Getting this right isn't trivial,
4700 4707 with all the color escapes, different prompt types and optional
4701 4708 separators. But it seems to be working in all the combinations.
4702 4709
4703 4710 2001-11-26 Fernando Perez <fperez@colorado.edu>
4704 4711
4705 4712 * Wrote a regexp filter to get option types from the option names
4706 4713 string. This eliminates the need to manually keep two duplicate
4707 4714 lists.
4708 4715
4709 4716 * Removed the unneeded check_option_names. Now options are handled
4710 4717 in a much saner manner and it's easy to visually check that things
4711 4718 are ok.
4712 4719
4713 4720 * Updated version numbers on all files I modified to carry a
4714 4721 notice so Janko and Nathan have clear version markers.
4715 4722
4716 4723 * Updated docstring for ultraTB with my changes. I should send
4717 4724 this to Nathan.
4718 4725
4719 4726 * Lots of small fixes. Ran everything through pychecker again.
4720 4727
4721 4728 * Made loading of deep_reload an cmd line option. If it's not too
4722 4729 kosher, now people can just disable it. With -nodeep_reload it's
4723 4730 still available as dreload(), it just won't overwrite reload().
4724 4731
4725 4732 * Moved many options to the no| form (-opt and -noopt
4726 4733 accepted). Cleaner.
4727 4734
4728 4735 * Changed magic_log so that if called with no parameters, it uses
4729 4736 'rotate' mode. That way auto-generated logs aren't automatically
4730 4737 over-written. For normal logs, now a backup is made if it exists
4731 4738 (only 1 level of backups). A new 'backup' mode was added to the
4732 4739 Logger class to support this. This was a request by Janko.
4733 4740
4734 4741 * Added @logoff/@logon to stop/restart an active log.
4735 4742
4736 4743 * Fixed a lot of bugs in log saving/replay. It was pretty
4737 4744 broken. Now special lines (!@,/) appear properly in the command
4738 4745 history after a log replay.
4739 4746
4740 4747 * Tried and failed to implement full session saving via pickle. My
4741 4748 idea was to pickle __main__.__dict__, but modules can't be
4742 4749 pickled. This would be a better alternative to replaying logs, but
4743 4750 seems quite tricky to get to work. Changed -session to be called
4744 4751 -logplay, which more accurately reflects what it does. And if we
4745 4752 ever get real session saving working, -session is now available.
4746 4753
4747 4754 * Implemented color schemes for prompts also. As for tracebacks,
4748 4755 currently only NoColor and Linux are supported. But now the
4749 4756 infrastructure is in place, based on a generic ColorScheme
4750 4757 class. So writing and activating new schemes both for the prompts
4751 4758 and the tracebacks should be straightforward.
4752 4759
4753 4760 * Version 0.1.13 released, 0.1.14 opened.
4754 4761
4755 4762 * Changed handling of options for output cache. Now counter is
4756 4763 hardwired starting at 1 and one specifies the maximum number of
4757 4764 entries *in the outcache* (not the max prompt counter). This is
4758 4765 much better, since many statements won't increase the cache
4759 4766 count. It also eliminated some confusing options, now there's only
4760 4767 one: cache_size.
4761 4768
4762 4769 * Added 'alias' magic function and magic_alias option in the
4763 4770 ipythonrc file. Now the user can easily define whatever names he
4764 4771 wants for the magic functions without having to play weird
4765 4772 namespace games. This gives IPython a real shell-like feel.
4766 4773
4767 4774 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
4768 4775 @ or not).
4769 4776
4770 4777 This was one of the last remaining 'visible' bugs (that I know
4771 4778 of). I think if I can clean up the session loading so it works
4772 4779 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
4773 4780 about licensing).
4774 4781
4775 4782 2001-11-25 Fernando Perez <fperez@colorado.edu>
4776 4783
4777 4784 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
4778 4785 there's a cleaner distinction between what ? and ?? show.
4779 4786
4780 4787 * Added screen_length option. Now the user can define his own
4781 4788 screen size for page() operations.
4782 4789
4783 4790 * Implemented magic shell-like functions with automatic code
4784 4791 generation. Now adding another function is just a matter of adding
4785 4792 an entry to a dict, and the function is dynamically generated at
4786 4793 run-time. Python has some really cool features!
4787 4794
4788 4795 * Renamed many options to cleanup conventions a little. Now all
4789 4796 are lowercase, and only underscores where needed. Also in the code
4790 4797 option name tables are clearer.
4791 4798
4792 4799 * Changed prompts a little. Now input is 'In [n]:' instead of
4793 4800 'In[n]:='. This allows it the numbers to be aligned with the
4794 4801 Out[n] numbers, and removes usage of ':=' which doesn't exist in
4795 4802 Python (it was a Mathematica thing). The '...' continuation prompt
4796 4803 was also changed a little to align better.
4797 4804
4798 4805 * Fixed bug when flushing output cache. Not all _p<n> variables
4799 4806 exist, so their deletion needs to be wrapped in a try:
4800 4807
4801 4808 * Figured out how to properly use inspect.formatargspec() (it
4802 4809 requires the args preceded by *). So I removed all the code from
4803 4810 _get_pdef in Magic, which was just replicating that.
4804 4811
4805 4812 * Added test to prefilter to allow redefining magic function names
4806 4813 as variables. This is ok, since the @ form is always available,
4807 4814 but whe should allow the user to define a variable called 'ls' if
4808 4815 he needs it.
4809 4816
4810 4817 * Moved the ToDo information from README into a separate ToDo.
4811 4818
4812 4819 * General code cleanup and small bugfixes. I think it's close to a
4813 4820 state where it can be released, obviously with a big 'beta'
4814 4821 warning on it.
4815 4822
4816 4823 * Got the magic function split to work. Now all magics are defined
4817 4824 in a separate class. It just organizes things a bit, and now
4818 4825 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
4819 4826 was too long).
4820 4827
4821 4828 * Changed @clear to @reset to avoid potential confusions with
4822 4829 the shell command clear. Also renamed @cl to @clear, which does
4823 4830 exactly what people expect it to from their shell experience.
4824 4831
4825 4832 Added a check to the @reset command (since it's so
4826 4833 destructive, it's probably a good idea to ask for confirmation).
4827 4834 But now reset only works for full namespace resetting. Since the
4828 4835 del keyword is already there for deleting a few specific
4829 4836 variables, I don't see the point of having a redundant magic
4830 4837 function for the same task.
4831 4838
4832 4839 2001-11-24 Fernando Perez <fperez@colorado.edu>
4833 4840
4834 4841 * Updated the builtin docs (esp. the ? ones).
4835 4842
4836 4843 * Ran all the code through pychecker. Not terribly impressed with
4837 4844 it: lots of spurious warnings and didn't really find anything of
4838 4845 substance (just a few modules being imported and not used).
4839 4846
4840 4847 * Implemented the new ultraTB functionality into IPython. New
4841 4848 option: xcolors. This chooses color scheme. xmode now only selects
4842 4849 between Plain and Verbose. Better orthogonality.
4843 4850
4844 4851 * Large rewrite of ultraTB. Much cleaner now, with a separation of
4845 4852 mode and color scheme for the exception handlers. Now it's
4846 4853 possible to have the verbose traceback with no coloring.
4847 4854
4848 4855 2001-11-23 Fernando Perez <fperez@colorado.edu>
4849 4856
4850 4857 * Version 0.1.12 released, 0.1.13 opened.
4851 4858
4852 4859 * Removed option to set auto-quote and auto-paren escapes by
4853 4860 user. The chances of breaking valid syntax are just too high. If
4854 4861 someone *really* wants, they can always dig into the code.
4855 4862
4856 4863 * Made prompt separators configurable.
4857 4864
4858 4865 2001-11-22 Fernando Perez <fperez@colorado.edu>
4859 4866
4860 4867 * Small bugfixes in many places.
4861 4868
4862 4869 * Removed the MyCompleter class from ipplib. It seemed redundant
4863 4870 with the C-p,C-n history search functionality. Less code to
4864 4871 maintain.
4865 4872
4866 4873 * Moved all the original ipython.py code into ipythonlib.py. Right
4867 4874 now it's just one big dump into a function called make_IPython, so
4868 4875 no real modularity has been gained. But at least it makes the
4869 4876 wrapper script tiny, and since ipythonlib is a module, it gets
4870 4877 compiled and startup is much faster.
4871 4878
4872 4879 This is a reasobably 'deep' change, so we should test it for a
4873 4880 while without messing too much more with the code.
4874 4881
4875 4882 2001-11-21 Fernando Perez <fperez@colorado.edu>
4876 4883
4877 4884 * Version 0.1.11 released, 0.1.12 opened for further work.
4878 4885
4879 4886 * Removed dependency on Itpl. It was only needed in one place. It
4880 4887 would be nice if this became part of python, though. It makes life
4881 4888 *a lot* easier in some cases.
4882 4889
4883 4890 * Simplified the prefilter code a bit. Now all handlers are
4884 4891 expected to explicitly return a value (at least a blank string).
4885 4892
4886 4893 * Heavy edits in ipplib. Removed the help system altogether. Now
4887 4894 obj?/?? is used for inspecting objects, a magic @doc prints
4888 4895 docstrings, and full-blown Python help is accessed via the 'help'
4889 4896 keyword. This cleans up a lot of code (less to maintain) and does
4890 4897 the job. Since 'help' is now a standard Python component, might as
4891 4898 well use it and remove duplicate functionality.
4892 4899
4893 4900 Also removed the option to use ipplib as a standalone program. By
4894 4901 now it's too dependent on other parts of IPython to function alone.
4895 4902
4896 4903 * Fixed bug in genutils.pager. It would crash if the pager was
4897 4904 exited immediately after opening (broken pipe).
4898 4905
4899 4906 * Trimmed down the VerboseTB reporting a little. The header is
4900 4907 much shorter now and the repeated exception arguments at the end
4901 4908 have been removed. For interactive use the old header seemed a bit
4902 4909 excessive.
4903 4910
4904 4911 * Fixed small bug in output of @whos for variables with multi-word
4905 4912 types (only first word was displayed).
4906 4913
4907 4914 2001-11-17 Fernando Perez <fperez@colorado.edu>
4908 4915
4909 4916 * Version 0.1.10 released, 0.1.11 opened for further work.
4910 4917
4911 4918 * Modified dirs and friends. dirs now *returns* the stack (not
4912 4919 prints), so one can manipulate it as a variable. Convenient to
4913 4920 travel along many directories.
4914 4921
4915 4922 * Fixed bug in magic_pdef: would only work with functions with
4916 4923 arguments with default values.
4917 4924
4918 4925 2001-11-14 Fernando Perez <fperez@colorado.edu>
4919 4926
4920 4927 * Added the PhysicsInput stuff to dot_ipython so it ships as an
4921 4928 example with IPython. Various other minor fixes and cleanups.
4922 4929
4923 4930 * Version 0.1.9 released, 0.1.10 opened for further work.
4924 4931
4925 4932 * Added sys.path to the list of directories searched in the
4926 4933 execfile= option. It used to be the current directory and the
4927 4934 user's IPYTHONDIR only.
4928 4935
4929 4936 2001-11-13 Fernando Perez <fperez@colorado.edu>
4930 4937
4931 4938 * Reinstated the raw_input/prefilter separation that Janko had
4932 4939 initially. This gives a more convenient setup for extending the
4933 4940 pre-processor from the outside: raw_input always gets a string,
4934 4941 and prefilter has to process it. We can then redefine prefilter
4935 4942 from the outside and implement extensions for special
4936 4943 purposes.
4937 4944
4938 4945 Today I got one for inputting PhysicalQuantity objects
4939 4946 (from Scientific) without needing any function calls at
4940 4947 all. Extremely convenient, and it's all done as a user-level
4941 4948 extension (no IPython code was touched). Now instead of:
4942 4949 a = PhysicalQuantity(4.2,'m/s**2')
4943 4950 one can simply say
4944 4951 a = 4.2 m/s**2
4945 4952 or even
4946 4953 a = 4.2 m/s^2
4947 4954
4948 4955 I use this, but it's also a proof of concept: IPython really is
4949 4956 fully user-extensible, even at the level of the parsing of the
4950 4957 command line. It's not trivial, but it's perfectly doable.
4951 4958
4952 4959 * Added 'add_flip' method to inclusion conflict resolver. Fixes
4953 4960 the problem of modules being loaded in the inverse order in which
4954 4961 they were defined in
4955 4962
4956 4963 * Version 0.1.8 released, 0.1.9 opened for further work.
4957 4964
4958 4965 * Added magics pdef, source and file. They respectively show the
4959 4966 definition line ('prototype' in C), source code and full python
4960 4967 file for any callable object. The object inspector oinfo uses
4961 4968 these to show the same information.
4962 4969
4963 4970 * Version 0.1.7 released, 0.1.8 opened for further work.
4964 4971
4965 4972 * Separated all the magic functions into a class called Magic. The
4966 4973 InteractiveShell class was becoming too big for Xemacs to handle
4967 4974 (de-indenting a line would lock it up for 10 seconds while it
4968 4975 backtracked on the whole class!)
4969 4976
4970 4977 FIXME: didn't work. It can be done, but right now namespaces are
4971 4978 all messed up. Do it later (reverted it for now, so at least
4972 4979 everything works as before).
4973 4980
4974 4981 * Got the object introspection system (magic_oinfo) working! I
4975 4982 think this is pretty much ready for release to Janko, so he can
4976 4983 test it for a while and then announce it. Pretty much 100% of what
4977 4984 I wanted for the 'phase 1' release is ready. Happy, tired.
4978 4985
4979 4986 2001-11-12 Fernando Perez <fperez@colorado.edu>
4980 4987
4981 4988 * Version 0.1.6 released, 0.1.7 opened for further work.
4982 4989
4983 4990 * Fixed bug in printing: it used to test for truth before
4984 4991 printing, so 0 wouldn't print. Now checks for None.
4985 4992
4986 4993 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
4987 4994 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
4988 4995 reaches by hand into the outputcache. Think of a better way to do
4989 4996 this later.
4990 4997
4991 4998 * Various small fixes thanks to Nathan's comments.
4992 4999
4993 5000 * Changed magic_pprint to magic_Pprint. This way it doesn't
4994 5001 collide with pprint() and the name is consistent with the command
4995 5002 line option.
4996 5003
4997 5004 * Changed prompt counter behavior to be fully like
4998 5005 Mathematica's. That is, even input that doesn't return a result
4999 5006 raises the prompt counter. The old behavior was kind of confusing
5000 5007 (getting the same prompt number several times if the operation
5001 5008 didn't return a result).
5002 5009
5003 5010 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5004 5011
5005 5012 * Fixed -Classic mode (wasn't working anymore).
5006 5013
5007 5014 * Added colored prompts using Nathan's new code. Colors are
5008 5015 currently hardwired, they can be user-configurable. For
5009 5016 developers, they can be chosen in file ipythonlib.py, at the
5010 5017 beginning of the CachedOutput class def.
5011 5018
5012 5019 2001-11-11 Fernando Perez <fperez@colorado.edu>
5013 5020
5014 5021 * Version 0.1.5 released, 0.1.6 opened for further work.
5015 5022
5016 5023 * Changed magic_env to *return* the environment as a dict (not to
5017 5024 print it). This way it prints, but it can also be processed.
5018 5025
5019 5026 * Added Verbose exception reporting to interactive
5020 5027 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5021 5028 traceback. Had to make some changes to the ultraTB file. This is
5022 5029 probably the last 'big' thing in my mental todo list. This ties
5023 5030 in with the next entry:
5024 5031
5025 5032 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5026 5033 has to specify is Plain, Color or Verbose for all exception
5027 5034 handling.
5028 5035
5029 5036 * Removed ShellServices option. All this can really be done via
5030 5037 the magic system. It's easier to extend, cleaner and has automatic
5031 5038 namespace protection and documentation.
5032 5039
5033 5040 2001-11-09 Fernando Perez <fperez@colorado.edu>
5034 5041
5035 5042 * Fixed bug in output cache flushing (missing parameter to
5036 5043 __init__). Other small bugs fixed (found using pychecker).
5037 5044
5038 5045 * Version 0.1.4 opened for bugfixing.
5039 5046
5040 5047 2001-11-07 Fernando Perez <fperez@colorado.edu>
5041 5048
5042 5049 * Version 0.1.3 released, mainly because of the raw_input bug.
5043 5050
5044 5051 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5045 5052 and when testing for whether things were callable, a call could
5046 5053 actually be made to certain functions. They would get called again
5047 5054 once 'really' executed, with a resulting double call. A disaster
5048 5055 in many cases (list.reverse() would never work!).
5049 5056
5050 5057 * Removed prefilter() function, moved its code to raw_input (which
5051 5058 after all was just a near-empty caller for prefilter). This saves
5052 5059 a function call on every prompt, and simplifies the class a tiny bit.
5053 5060
5054 5061 * Fix _ip to __ip name in magic example file.
5055 5062
5056 5063 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5057 5064 work with non-gnu versions of tar.
5058 5065
5059 5066 2001-11-06 Fernando Perez <fperez@colorado.edu>
5060 5067
5061 5068 * Version 0.1.2. Just to keep track of the recent changes.
5062 5069
5063 5070 * Fixed nasty bug in output prompt routine. It used to check 'if
5064 5071 arg != None...'. Problem is, this fails if arg implements a
5065 5072 special comparison (__cmp__) which disallows comparing to
5066 5073 None. Found it when trying to use the PhysicalQuantity module from
5067 5074 ScientificPython.
5068 5075
5069 5076 2001-11-05 Fernando Perez <fperez@colorado.edu>
5070 5077
5071 5078 * Also added dirs. Now the pushd/popd/dirs family functions
5072 5079 basically like the shell, with the added convenience of going home
5073 5080 when called with no args.
5074 5081
5075 5082 * pushd/popd slightly modified to mimic shell behavior more
5076 5083 closely.
5077 5084
5078 5085 * Added env,pushd,popd from ShellServices as magic functions. I
5079 5086 think the cleanest will be to port all desired functions from
5080 5087 ShellServices as magics and remove ShellServices altogether. This
5081 5088 will provide a single, clean way of adding functionality
5082 5089 (shell-type or otherwise) to IP.
5083 5090
5084 5091 2001-11-04 Fernando Perez <fperez@colorado.edu>
5085 5092
5086 5093 * Added .ipython/ directory to sys.path. This way users can keep
5087 5094 customizations there and access them via import.
5088 5095
5089 5096 2001-11-03 Fernando Perez <fperez@colorado.edu>
5090 5097
5091 5098 * Opened version 0.1.1 for new changes.
5092 5099
5093 5100 * Changed version number to 0.1.0: first 'public' release, sent to
5094 5101 Nathan and Janko.
5095 5102
5096 5103 * Lots of small fixes and tweaks.
5097 5104
5098 5105 * Minor changes to whos format. Now strings are shown, snipped if
5099 5106 too long.
5100 5107
5101 5108 * Changed ShellServices to work on __main__ so they show up in @who
5102 5109
5103 5110 * Help also works with ? at the end of a line:
5104 5111 ?sin and sin?
5105 5112 both produce the same effect. This is nice, as often I use the
5106 5113 tab-complete to find the name of a method, but I used to then have
5107 5114 to go to the beginning of the line to put a ? if I wanted more
5108 5115 info. Now I can just add the ? and hit return. Convenient.
5109 5116
5110 5117 2001-11-02 Fernando Perez <fperez@colorado.edu>
5111 5118
5112 5119 * Python version check (>=2.1) added.
5113 5120
5114 5121 * Added LazyPython documentation. At this point the docs are quite
5115 5122 a mess. A cleanup is in order.
5116 5123
5117 5124 * Auto-installer created. For some bizarre reason, the zipfiles
5118 5125 module isn't working on my system. So I made a tar version
5119 5126 (hopefully the command line options in various systems won't kill
5120 5127 me).
5121 5128
5122 5129 * Fixes to Struct in genutils. Now all dictionary-like methods are
5123 5130 protected (reasonably).
5124 5131
5125 5132 * Added pager function to genutils and changed ? to print usage
5126 5133 note through it (it was too long).
5127 5134
5128 5135 * Added the LazyPython functionality. Works great! I changed the
5129 5136 auto-quote escape to ';', it's on home row and next to '. But
5130 5137 both auto-quote and auto-paren (still /) escapes are command-line
5131 5138 parameters.
5132 5139
5133 5140
5134 5141 2001-11-01 Fernando Perez <fperez@colorado.edu>
5135 5142
5136 5143 * Version changed to 0.0.7. Fairly large change: configuration now
5137 5144 is all stored in a directory, by default .ipython. There, all
5138 5145 config files have normal looking names (not .names)
5139 5146
5140 5147 * Version 0.0.6 Released first to Lucas and Archie as a test
5141 5148 run. Since it's the first 'semi-public' release, change version to
5142 5149 > 0.0.6 for any changes now.
5143 5150
5144 5151 * Stuff I had put in the ipplib.py changelog:
5145 5152
5146 5153 Changes to InteractiveShell:
5147 5154
5148 5155 - Made the usage message a parameter.
5149 5156
5150 5157 - Require the name of the shell variable to be given. It's a bit
5151 5158 of a hack, but allows the name 'shell' not to be hardwire in the
5152 5159 magic (@) handler, which is problematic b/c it requires
5153 5160 polluting the global namespace with 'shell'. This in turn is
5154 5161 fragile: if a user redefines a variable called shell, things
5155 5162 break.
5156 5163
5157 5164 - magic @: all functions available through @ need to be defined
5158 5165 as magic_<name>, even though they can be called simply as
5159 5166 @<name>. This allows the special command @magic to gather
5160 5167 information automatically about all existing magic functions,
5161 5168 even if they are run-time user extensions, by parsing the shell
5162 5169 instance __dict__ looking for special magic_ names.
5163 5170
5164 5171 - mainloop: added *two* local namespace parameters. This allows
5165 5172 the class to differentiate between parameters which were there
5166 5173 before and after command line initialization was processed. This
5167 5174 way, later @who can show things loaded at startup by the
5168 5175 user. This trick was necessary to make session saving/reloading
5169 5176 really work: ideally after saving/exiting/reloading a session,
5170 5177 *everythin* should look the same, including the output of @who. I
5171 5178 was only able to make this work with this double namespace
5172 5179 trick.
5173 5180
5174 5181 - added a header to the logfile which allows (almost) full
5175 5182 session restoring.
5176 5183
5177 5184 - prepend lines beginning with @ or !, with a and log
5178 5185 them. Why? !lines: may be useful to know what you did @lines:
5179 5186 they may affect session state. So when restoring a session, at
5180 5187 least inform the user of their presence. I couldn't quite get
5181 5188 them to properly re-execute, but at least the user is warned.
5182 5189
5183 5190 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now