##// END OF EJS Templates
Pauli's autoreload patch to do proper "superreload", i.e. replace code objects of used function objects. Fixes #237691
Ville M. Vainio -
Show More
@@ -1,244 +1,340 b''
1 1 """
2 2 IPython extension: autoreload modules before executing the next line
3 3
4 4 Try::
5 5
6 6 %autoreload?
7 7
8 8 for documentation.
9 9 """
10 10
11 11 # Pauli Virtanen <pav@iki.fi>, 2008.
12 12 # Thomas Heller, 2000.
13 13 #
14 14 # This IPython module is written by Pauli Virtanen, based on the autoreload
15 15 # code by Thomas Heller.
16 16
17 17 #------------------------------------------------------------------------------
18 18 # Autoreload functionality
19 19 #------------------------------------------------------------------------------
20 20
21 21 import time, os, threading, sys, types, imp, inspect, traceback, atexit
22 import weakref
22 23
23 24 def _get_compiled_ext():
24 25 """Official way to get the extension of compiled files (.pyc or .pyo)"""
25 26 for ext, mode, typ in imp.get_suffixes():
26 27 if typ == imp.PY_COMPILED:
27 28 return ext
28 29
29 30 PY_COMPILED_EXT = _get_compiled_ext()
30 31
31 32 class ModuleReloader(object):
32 skipped = {}
33 failed = {}
33 34 """Modules that failed to reload: {module: mtime-on-failed-reload, ...}"""
34 35
35 36 modules = {}
36 37 """Modules specially marked as autoreloadable."""
37 38
38 39 skip_modules = {}
39 40 """Modules specially marked as not autoreloadable."""
40 41
41 42 check_all = True
42 43 """Autoreload all modules, not just those listed in 'modules'"""
44
45 old_objects = {}
46 """(module-name, name) -> weakref, for replacing old code objects"""
43 47
44 48 def check(self, check_all=False):
45 49 """Check whether some modules need to be reloaded."""
46 50
47 51 if check_all or self.check_all:
48 52 modules = sys.modules.keys()
49 53 else:
50 54 modules = self.modules.keys()
51 55
52 56 for modname in modules:
53 57 m = sys.modules.get(modname, None)
54 58
55 59 if modname in self.skip_modules:
56 60 continue
57 61
58 62 if not hasattr(m, '__file__'):
59 63 continue
60 64
61 65 if m.__name__ == '__main__':
62 66 # we cannot reload(__main__)
63 67 continue
64 68
65 69 filename = m.__file__
66 70 dirname = os.path.dirname(filename)
67 71 path, ext = os.path.splitext(filename)
68 72
69 73 if ext.lower() == '.py':
70 74 ext = PY_COMPILED_EXT
71 75 filename = os.path.join(dirname, path + PY_COMPILED_EXT)
72 76
73 77 if ext != PY_COMPILED_EXT:
74 78 continue
75 79
76 80 try:
77 81 pymtime = os.stat(filename[:-1]).st_mtime
78 82 if pymtime <= os.stat(filename).st_mtime:
79 83 continue
80 if self.skipped.get(filename[:-1], None) == pymtime:
84 if self.failed.get(filename[:-1], None) == pymtime:
81 85 continue
82 86 except OSError:
83 87 continue
84 88
85 89 try:
86 superreload(m)
87 if filename[:-1] in self.skipped:
88 del self.skipped[filename[:-1]]
90 superreload(m, reload, self.old_objects)
91 if filename[:-1] in self.failed:
92 del self.failed[filename[:-1]]
89 93 except:
90 self.skipped[filename[:-1]] = pymtime
94 print >> sys.stderr, "[autoreload of %s failed: %s]" % (
95 modname, traceback.format_exc(1))
96 self.failed[filename[:-1]] = pymtime
91 97
92 def update_function(old, new, attrnames):
93 for name in attrnames:
94 setattr(old, name, getattr(new, name))
98 #------------------------------------------------------------------------------
99 # superreload
100 #------------------------------------------------------------------------------
95 101
96 def superreload(module, reload=reload):
102 def update_function(old, new):
103 """Upgrade the code object of a function"""
104 for name in ['func_code', 'func_defaults', 'func_doc',
105 'func_closure', 'func_globals', 'func_dict']:
106 try:
107 setattr(old, name, getattr(new, name))
108 except (AttributeError, TypeError):
109 pass
110
111 def update_class(old, new):
112 """Replace stuff in the __dict__ of a class, and upgrade
113 method code objects"""
114 for key in old.__dict__.keys():
115 old_obj = getattr(old, key)
116
117 try:
118 new_obj = getattr(new, key)
119 except AttributeError:
120 # obsolete attribute: remove it
121 try:
122 delattr(old, key)
123 except (AttributeError, TypeError):
124 pass
125 continue
126
127 if update_generic(old_obj, new_obj): continue
128
129 try:
130 setattr(old, key, getattr(new, key))
131 except (AttributeError, TypeError):
132 pass # skip non-writable attributes
133
134 def update_property(old, new):
135 """Replace get/set/del functions of a property"""
136 update_generic(old.fdel, new.fdel)
137 update_generic(old.fget, new.fget)
138 update_generic(old.fset, new.fset)
139
140 def isinstance2(a, b, typ):
141 return isinstance(a, typ) and isinstance(b, typ)
142
143 UPDATE_RULES = [
144 (lambda a, b: isinstance2(a, b, types.ClassType),
145 update_class),
146 (lambda a, b: isinstance2(a, b, types.TypeType),
147 update_class),
148 (lambda a, b: isinstance2(a, b, types.FunctionType),
149 update_function),
150 (lambda a, b: isinstance2(a, b, property),
151 update_property),
152 (lambda a, b: isinstance2(a, b, types.MethodType),
153 lambda a, b: update_function(a.im_func, b.im_func)),
154 ]
155
156 def update_generic(a, b):
157 for type_check, update in UPDATE_RULES:
158 if type_check(a, b):
159 update(a, b)
160 return True
161 return False
162
163 class StrongRef(object):
164 def __init__(self, obj):
165 self.obj = obj
166 def __call__(self):
167 return self.obj
168
169 def superreload(module, reload=reload, old_objects={}):
97 170 """Enhanced version of the builtin reload function.
98
99 superreload replaces the class dictionary of every top-level
100 class in the module with the new one automatically,
101 as well as every function's code object.
171
172 superreload remembers objects previously in the module, and
173
174 - upgrades the class dictionary of every old class in the module
175 - upgrades the code object of every old function and method
176 - clears the module's namespace before reloading
102 177
103 178 """
104
179
180 # collect old objects in the module
181 for name, obj in module.__dict__.items():
182 if not hasattr(obj, '__module__') or obj.__module__ != module.__name__:
183 continue
184 key = (module.__name__, name)
185 try:
186 old_objects.setdefault(key, []).append(weakref.ref(obj))
187 except TypeError:
188 # weakref doesn't work for all types;
189 # create strong references for 'important' cases
190 if isinstance(obj, types.ClassType):
191 old_objects.setdefault(key, []).append(StrongRef(obj))
192
193 # reload module
194 try:
195 # clear namespace first from old cruft
196 old_name = module.__name__
197 module.__dict__.clear()
198 module.__dict__['__name__'] = old_name
199 except (TypeError, AttributeError, KeyError):
200 pass
105 201 module = reload(module)
106 202
107 # iterate over all objects and update them
108 count = 0
203 # iterate over all objects and update functions & classes
109 204 for name, new_obj in module.__dict__.items():
110 205 key = (module.__name__, name)
111 if _old_objects.has_key(key):
112 for old_obj in _old_objects[key]:
113 if type(new_obj) == types.ClassType:
114 old_obj.__dict__.update(new_obj.__dict__)
115 count += 1
116 elif type(new_obj) == types.FunctionType:
117 update_function(old_obj,
118 new_obj,
119 "func_code func_defaults func_doc".split())
120 count += 1
121 elif type(new_obj) == types.MethodType:
122 update_function(old_obj.im_func,
123 new_obj.im_func,
124 "func_code func_defaults func_doc".split())
125 count += 1
126
206 if key not in old_objects: continue
207
208 new_refs = []
209 for old_ref in old_objects[key]:
210 old_obj = old_ref()
211 if old_obj is None: continue
212 new_refs.append(old_ref)
213 update_generic(old_obj, new_obj)
214
215 if new_refs:
216 old_objects[key] = new_refs
217 else:
218 del old_objects[key]
219
127 220 return module
128 221
129 222 reloader = ModuleReloader()
130 223
131 224 #------------------------------------------------------------------------------
132 # IPython monkey-patching
225 # IPython connectivity
133 226 #------------------------------------------------------------------------------
227 import IPython.ipapi
134 228
135 import IPython.iplib
229 ip = IPython.ipapi.get()
136 230
137 231 autoreload_enabled = False
138 232
139 233 def runcode_hook(self):
140 234 if not autoreload_enabled:
141 235 raise IPython.ipapi.TryNext
142 236 try:
143 237 reloader.check()
144 238 except:
145 239 pass
146 240
147
148 241 def enable_autoreload():
149 242 global autoreload_enabled
150 243 autoreload_enabled = True
151
152 244
153 245 def disable_autoreload():
154 246 global autoreload_enabled
155 247 autoreload_enabled = False
156
157 #------------------------------------------------------------------------------
158 # IPython connectivity
159 #------------------------------------------------------------------------------
160
161 import IPython.ipapi
162 ip = IPython.ipapi.get()
163 248
164 249 def autoreload_f(self, parameter_s=''):
165 250 r""" %autoreload => Reload modules automatically
166
251
167 252 %autoreload
168 Reload all modules (except thoses excluded by %aimport) automatically now.
169
253 Reload all modules (except those excluded by %aimport) automatically now.
254
170 255 %autoreload 1
171 256 Reload all modules imported with %aimport every time before executing
172 257 the Python code typed.
173
258
174 259 %autoreload 2
175 Reload all modules (except thoses excluded by %aimport) every time
260 Reload all modules (except those excluded by %aimport) every time
176 261 before executing the Python code typed.
177
178 Reloading Python modules in a reliable way is in general
179 difficult, and unexpected things may occur. Some of the common
180 caveats relevant for 'autoreload' are:
181
182 - Modules are not reloaded in any specific order, and no dependency
183 analysis is done. For example, modules with 'from xxx import foo'
184 retain old versions of 'foo' when 'xxx' is autoreloaded.
185 - Functions or objects imported from the autoreloaded module to
186 the interactive namespace are not updated.
262
263 Reloading Python modules in a reliable way is in general difficult,
264 and unexpected things may occur. %autoreload tries to work
265 around common pitfalls by replacing code objects of functions
266 previously in the module with new versions. This makes the following
267 things to work:
268
269 - Functions and classes imported via 'from xxx import foo' are upgraded
270 to new versions when 'xxx' is reloaded.
271 - Methods and properties of classes are upgraded on reload, so that
272 calling 'c.foo()' on an object 'c' created before the reload causes
273 the new code for 'foo' to be executed.
274
275 Some of the known remaining caveats are:
276
277 - Replacing code objects does not always succeed: changing a @property
278 in a class to an ordinary method or a method to a member variable
279 can cause problems (but in old objects only).
280 - Functions that are removed (eg. via monkey-patching) from a module
281 before it is reloaded are not upgraded.
187 282 - C extension modules cannot be reloaded, and so cannot be
188 283 autoreloaded.
284
189 285 """
190 286 if parameter_s == '':
191 287 reloader.check(True)
192 288 elif parameter_s == '0':
193 289 disable_autoreload()
194 290 elif parameter_s == '1':
195 291 reloader.check_all = False
196 292 enable_autoreload()
197 293 elif parameter_s == '2':
198 294 reloader.check_all = True
199 295 enable_autoreload()
200 296
201 297 def aimport_f(self, parameter_s=''):
202 298 """%aimport => Import modules for automatic reloading.
203 299
204 300 %aimport
205 301 List modules to automatically import and not to import.
206 302
207 303 %aimport foo
208 304 Import module 'foo' and mark it to be autoreloaded for %autoreload 1
209 305
210 306 %aimport -foo
211 307 Mark module 'foo' to not be autoreloaded for %autoreload 1
212 308
213 309 """
214 310
215 311 modname = parameter_s
216 312 if not modname:
217 313 to_reload = reloader.modules.keys()
218 314 to_reload.sort()
219 315 to_skip = reloader.skip_modules.keys()
220 316 to_skip.sort()
221 317 if reloader.check_all:
222 318 print "Modules to reload:\nall-expect-skipped"
223 319 else:
224 320 print "Modules to reload:\n%s" % ' '.join(to_reload)
225 321 print "\nModules to skip:\n%s" % ' '.join(to_skip)
226 322 elif modname.startswith('-'):
227 323 modname = modname[1:]
228 324 try: del reloader.modules[modname]
229 325 except KeyError: pass
230 326 reloader.skip_modules[modname] = True
231 327 else:
232 328 try: del reloader.skip_modules[modname]
233 329 except KeyError: pass
234 330 reloader.modules[modname] = True
235 331
236 332 mod = __import__(modname)
237 333 ip.to_user_ns({modname: mod})
238 334
239 335 def init():
240 336 ip.expose_magic('autoreload', autoreload_f)
241 337 ip.expose_magic('aimport', aimport_f)
242 338 ip.set_hook('pre_runcode_hook', runcode_hook)
243 339
244 init() No newline at end of file
340 init()
@@ -1,7673 +1,7683 b''
1 2008-06-09 Ville Vainio <vivainio@gmail.com>
2
3 * Extensions/ipy_autoreload.py: Apply Pauli Virtanen's patch
4 to autoreloading that also replaces the changed code objects
5 with new versions
6
7 * pspersistence.py: report UsageError on %store -w w/o arg,
8 and other usage pattern errors. Bug report by Johann Cohen-Tanugi.
9
10
1 11 2008-06-03 Ville Vainio <vivainio@gmail.com>
2 12
3 13 * ipython.rst, ipython.1: remove -twisted from man page,
4 14 add -pydb to both man page and manual.
5 15
6 16 * pspersistence.py: report UsageError on %store -w w/o arg,
7 17 and other usage pattern errors. Bug report by Johann Cohen-Tanugi.
8 18
9 19 2008-06-02 Fernando Perez <Fernando.Perez@berkeley.edu>
10 20
11 21 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): add
12 22 numpy/np/pyplot/plt imports according to new conventions we're
13 23 trying to standardize on. This only affects the -pylab mode.
14 24
15 25 2008-05-31 Fernando Perez <Fernando.Perez@berkeley.edu>
16 26
17 27 * IPython/ipmaker.py (make_IPython): The -twisted option is fully
18 28 disabled.
19 29
20 30 2008-05-31 *** Released version 0.8.4
21 31
22 32 2008-05-31 Fernando Perez <Fernando.Perez@berkeley.edu>
23 33
24 34 * IPython/ipmaker.py (make_IPython): The -twisted option is fully
25 35 disabled.
26 36
27 37 * IPython/Shell.py (_select_shell): completely disable -twisted.
28 38 This code is of dubious quality and normal users should not
29 39 encounter it until we can clarify things further, even under
30 40 win32. Since we need a quick emergency 0.8.4 release, it is now
31 41 disabled completely. Users who want to run it can use the
32 42 following command (it's easy to put it in an alias or script):
33 43
34 44 python -c"from IPython import twshell;twshell.IPShellTwisted().mainloop()"
35 45
36 46 2008-05-30 Ville Vainio <vivainio@gmail.com>
37 47
38 48 * shell.py: disable -twisted on non-win32 platforms.
39 49 import sets module on python 2.3.
40 50
41 51 * ipy_profile_sh.py: disable ipy_signals. Now, ipython
42 52 is verified to work with python 2.3
43 53
44 54 * Release.py: update version to 0.8.4 for quick point fix
45 55
46 56 2008-05-28 *** Released version 0.8.3
47 57
48 58 2008-05-28 Fernando Perez <Fernando.Perez@berkeley.edu>
49 59
50 60 * ../win32_manual_post_install.py (run): Fix the windows installer
51 61 so the links to the docs are correct.
52 62
53 63 * IPython/ultraTB.py: flush stderr after writing to it to fix
54 64 problems with exception traceback ordering in some platforms.
55 65 Thanks to a report/fix by Jie Tang <jietang86-AT-gmail.com>.
56 66
57 67 * IPython/Magic.py (magic_cpaste): add stripping of continuation
58 68 prompts, feature requested by Stefan vdW.
59 69
60 70 * ../setup.py: updates to build and release tools in preparation
61 71 for 0.8.3 release.
62 72
63 73 2008-05-27 Ville Vainio <vivainio@gmail.com>
64 74
65 75 * iplib.py, ipmaker.py: survive lack of doctest and site._Helper
66 76 for minimal environments (e.g. Maemo sdk python)
67 77
68 78 * Magic.py: cpaste strips whitespace before >>> (allow pasting
69 79 doctests)
70 80
71 81 * ipy_completers.py: cd completer now does recursive path expand
72 82 (old behaviour is buggy on some readline versions)
73 83
74 84 2008-05-14 Ville Vainio <vivainio@gmail.com>
75 85
76 86 * Extensions/ipy_greedycompleter.py:
77 87 New extension that enables a bit more "relaxed" tab
78 88 completer that evaluates code without safety checks
79 89 (i.e. there can be side effects like function calls)
80 90
81 91 2008-04-20 Ville Vainio <vivainio@gmail.com>
82 92
83 93 * Extensions/ipy_lookfor.py: add %lookfor magic command
84 94 (search docstrings for words) by Pauli Virtanen. Close #245.
85 95
86 96 * Extension/ipy_jot.py: %jot and %read magics, analogous
87 97 to %store but you can specify some notes. Not read
88 98 in automatically on startup, you need %read.
89 99 Contributed by Yichun Wei.
90 100
91 101 2008-04-18 Fernando Perez <Fernando.Perez@berkeley.edu>
92 102
93 103 * IPython/genutils.py (page): apply workaround to curses bug that
94 104 can leave terminal corrupted after a call to initscr().
95 105
96 106 2008-04-15 Ville Vainio <vivainio@gmail.com>
97 107
98 108 * genutils.py: SList.grep supports 'field' argument
99 109
100 110 * ipy_completers.py: module completer looks inside
101 111 .egg zip files (patch by mc). Close #196.
102 112
103 113 2008-04-09 Ville Vainio <vivainio@gmail.com>
104 114
105 115 * deep_reload.py: do not crash on from __future__ import
106 116 absolute_import. Close #244.
107 117
108 118 2008-04-02 Ville Vainio <vivainio@gmail.com>
109 119
110 120 * ipy_winpdb.py: New extension for winpdb integration. %wdb
111 121 test.py is winpdb equivalent of %run -d test.py. winpdb is a
112 122 crossplatform remote GUI debugger based on wxpython.
113 123
114 124 2008-03-29 Ville Vainio <vivainio@gmail.com>
115 125
116 126 * ipython.rst, do_sphinx.py: New documentation base, based on
117 127 reStucturedText and Sphinx (html/pdf generation). The old Lyx
118 128 based documentation will not be updated anymore.
119 129
120 130 * jobctrl.py: Use shell in Popen for 'start' command (in windows).
121 131
122 132 2008-03-24 Ville Vainio <vivainio@gmail.com>
123 133
124 134 * ipython.rst, do_sphinx.py: New documentation base, based on
125 135 reStucturedText and Sphinx (html/pdf generation). The old Lyx
126 136 based documentation will not be updated anymore.
127 137
128 138 ipython.rst has up to date documentation on matters that were not
129 139 documented at all, and it also removes various
130 140 misdocumented/deprecated features.
131 141
132 142 2008-03-22 Ville Vainio <vivainio@gmail.com>
133 143
134 144 * Shell.py: Merge mtexp branch:
135 145 https://code.launchpad.net/~ipython/ipython/mtexp
136 146
137 147 Privides simpler and more robust MTInteractiveShell that won't
138 148 deadlock, even when the worker thread (GUI) stops doing runcode()
139 149 regularly. r71.
140 150
141 151 2008-03-20 Ville Vainio <vivainio@gmail.com>
142 152
143 153 * twshell.py: New shell that runs IPython code in Twisted reactor.
144 154 Launch by doing ipython -twisted. r67.
145 155
146 156 2008-03-19 Ville Vainio <vivainio@gmail.com>
147 157
148 158 * Magic.py: %rehashx works correctly when shadowed system commands
149 159 have upper case characters (e.g. Print.exe). r64.
150 160
151 161 * ipy_bzr.py, ipy_app_completers.py: new bzr completer that also
152 162 knows options to commands, based on bzrtools. Uses bzrlib
153 163 directly. r66.
154 164
155 165 2008-03-16 Ville Vainio <vivainio@gmail.com>
156 166
157 167 * make_tarball.py: Fixed for bzr.
158 168
159 169 * ipapi.py: Better _ip.runlines() script cleanup. r56,r79.
160 170
161 171 * ipy_vimserver.py, ipy.vim: New extension for vim server mode,
162 172 by Erich Heine.
163 173
164 174 2008-03-12 Ville Vainio <vivainio@gmail.com>
165 175
166 176 * ipmaker.py: Force (reload?) import of ipy_user_conf and
167 177 ipy_profile_foo, so that embedded instances can be relaunched and
168 178 configuration is still done. r50
169 179
170 180 * ipapi.py, test_embed.py: Allow specifying shell class in
171 181 launch_new_instance & make_new instance. Use this in
172 182 test_embed.py. r51.
173 183
174 184 test_embed.py is also a good and simple demo of embedding IPython.
175 185
176 186
177 187 2008-03-10 Ville Vainio <vivainio@gmail.com>
178 188
179 189 * tool/update_revnum.py: Change to bzr revisioning scheme in
180 190 revision numbers.
181 191
182 192 * Shell.py: Threading improvements:
183 193
184 194 In multithreaded shells, do not hang on macros and o.autoexec
185 195 commands (or anything executed with _ip.runlines()) anymore. Allow
186 196 recursive execution of IPython code in
187 197 MTInteractiveShell.runsource by checking if we are already in
188 198 worker thread, and execute code directly if we are. r48.
189 199
190 200 MTInteractiveShell.runsource: execute code directly if worker
191 201 thread is not running yet (this is the case in config files). r49.
192 202
193 203 2008-03-09 Ville Vainio <vivainio@gmail.com>
194 204
195 205 * ipy_profile_sh.py: You can now use $LA or LA() to refer to last
196 206 argument of previous command in sh profile. Similar to bash '!$'.
197 207 LA(3) or $LA(3) stands for last argument of input history command
198 208 3.
199 209
200 210 * Shell.py: -pylab names don't clutter %whos listing.
201 211
202 212 2008-03-07 Ville Vainio <vivainio@gmail.com>
203 213
204 214 * ipy_autoreload.py: new extension (by Pauli Virtanen) for
205 215 autoreloading modules; try %autoreload and %aimport. Close #154.
206 216 Uses the new pre_runcode_hook.
207 217
208 218 2008-02-24 Ville Vainio <vivainio@gmail.com>
209 219
210 220 * platutils_posix.py: freeze_term_title works
211 221
212 222 2008-02-21 Ville Vainio <vivainio@gmail.com>
213 223
214 224 * Magic.py: %quickref does not crash with empty docstring
215 225
216 226 2008-02-20 Ville Vainio <vivainio@gmail.com>
217 227
218 228 * completer.py: do not treat [](){} as protectable chars anymore,
219 229 close #233.
220 230
221 231 * completer.py: do not treat [](){} as protectable chars anymore
222 232
223 233 * magic.py, test_cpaste.py: Allow different prefix for pasting
224 234 from email
225 235
226 236 2008-02-17 Ville Vainio <vivainio@gmail.com>
227 237
228 238 * Switched over to Launchpad/bzr as primary VCS.
229 239
230 240 2008-02-14 Ville Vainio <vivainio@gmail.com>
231 241
232 242 * ipapi.py: _ip.runlines() is now much more liberal about
233 243 indentation - it cleans up the scripts it gets
234 244
235 245 2008-02-14 Ville Vainio <vivainio@gmail.com>
236 246
237 247 * Extensions/ipy_leo.py: created 'ILeo' IPython-Leo bridge.
238 248 Changes to it (later on) are too numerous to list in ChangeLog
239 249 until it stabilizes
240 250
241 251 2008-02-07 Darren Dale <darren.dale@cornell.edu>
242 252
243 253 * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
244 254 an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve
245 255 interaction in the interpreter (like Tkinter does), but it seems to
246 256 partially interfere with the IPython implementation and exec_()
247 257 still seems to block. So we disable the PyQt implementation and
248 258 stick with the IPython one for now.
249 259
250 260 2008-02-02 Walter Doerwald <walter@livinglogic.de>
251 261
252 262 * ipipe.py: A new ipipe table has been added: ialias produces all
253 263 entries from IPython's alias table.
254 264
255 265 2008-02-01 Fernando Perez <Fernando.Perez@colorado.edu>
256 266
257 267 * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
258 268 of KBINT in threaded shells. After code provided by Marc in #212.
259 269
260 270 2008-01-30 Fernando Perez <Fernando.Perez@colorado.edu>
261 271
262 272 * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
263 273 that could occur due to a race condition in threaded shells.
264 274 Thanks to code provided by Marc, as #210.
265 275
266 276 2008-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
267 277
268 278 * IPython/Magic.py (magic_doctest_mode): respect the user's
269 279 settings for input separators rather than overriding them. After
270 280 a report by Jeff Kowalczyk <jtk-AT-yahoo.com>
271 281
272 282 * IPython/history.py (magic_history): Add support for declaring an
273 283 output file directly from the history command.
274 284
275 285 2008-01-21 Walter Doerwald <walter@livinglogic.de>
276 286
277 287 * ipipe.py: Register ipipe's displayhooks via the generic function
278 288 generics.result_display() instead of using ipapi.set_hook().
279 289
280 290 2008-01-19 Walter Doerwald <walter@livinglogic.de>
281 291
282 292 * ibrowse.py, igrid.py, ipipe.py:
283 293 The input object can now be passed to the constructor of the display classes.
284 294 This makes it possible to use them with objects that implement __or__.
285 295 Use this constructor in the displayhook instead of piping.
286 296
287 297 * ipipe.py: Importing astyle.py is done as late as possible to
288 298 avoid problems with circular imports.
289 299
290 300 2008-01-19 Ville Vainio <vivainio@gmail.com>
291 301
292 302 * hooks.py, iplib.py: Added 'shell_hook' to customize how
293 303 IPython calls shell.
294 304
295 305 * hooks.py, iplib.py: Added 'show_in_pager' hook to specify
296 306 how IPython pages text (%page, %pycat, %pdoc etc.)
297 307
298 308 * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
299 309 and '%kill' to kill hanging processes that won't obey ctrl+C.
300 310
301 311 2008-01-16 Ville Vainio <vivainio@gmail.com>
302 312
303 313 * ipy_completers.py: pyw extension support for %run completer.
304 314
305 315 2008-01-11 Ville Vainio <vivainio@gmail.com>
306 316
307 317 * iplib.py, ipmaker.py: new rc option - autoexec. It's a list
308 318 of ipython commands to be run when IPython has started up
309 319 (just before running the scripts and -c arg on command line).
310 320
311 321 * ipy_user_conf.py: Added an example on how to change term
312 322 colors in config file (through using autoexec).
313 323
314 324 * completer.py, test_completer.py: Ability to specify custom
315 325 get_endidx to replace readline.get_endidx. For emacs users.
316 326
317 327 2008-01-10 Ville Vainio <vivainio@gmail.com>
318 328
319 329 * Prompts.py (set_p_str): do not crash on illegal prompt strings
320 330
321 331 2008-01-08 Ville Vainio <vivainio@gmail.com>
322 332
323 333 * '%macro -r' (raw mode) is now default in sh profile.
324 334
325 335 2007-12-31 Ville Vainio <vivainio@gmail.com>
326 336
327 337 * completer.py: custom completer matching is now case sensitive
328 338 (#207).
329 339
330 340 * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
331 341 an attempt to prevent occasional crashes.
332 342
333 343 * CrashHandler.py: Crash log dump now asks user to press enter
334 344 before exiting.
335 345
336 346 * Store _ip in user_ns instead of __builtin__, enabling safer
337 347 coexistence of multiple IPython instances in the same python
338 348 interpreter (#197).
339 349
340 350 * Debugger.py, ipmaker.py: Need to add '-pydb' command line
341 351 switch to enable pydb in post-mortem debugging and %run -d.
342 352
343 353 2007-12-28 Ville Vainio <vivainio@gmail.com>
344 354
345 355 * ipy_server.py: TCP socket server for "remote control" of an IPython
346 356 instance.
347 357
348 358 * Debugger.py: Change to PSF license
349 359
350 360 * simplegeneric.py: Add license & author notes.
351 361
352 362 * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way
353 363 to navigate file system with a custom completer. Run
354 364 ipy_fsops.test_pathobj() to play with it.
355 365
356 366 2007-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
357 367
358 368 * IPython/dtutils.py: Add utilities for interactively running
359 369 doctests. Still needs work to more easily handle the namespace of
360 370 the package one may be working on, but the basics are in place.
361 371
362 372 2007-12-27 Ville Vainio <vivainio@gmail.com>
363 373
364 374 * ipy_completers.py: Applied arno's patch to get proper list of
365 375 packages in import completer. Closes #196.
366 376
367 377 2007-12-20 Ville Vainio <vivainio@gmail.com>
368 378
369 379 * completer.py, generics.py(complete_object): Allow
370 380 custom complers based on python objects via simplegeneric.
371 381 See generics.py / my_demo_complete_object
372 382
373 383 2007-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
374 384
375 385 * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
376 386 behavior to prompt objects, useful for display hooks to adjust
377 387 themselves depending on whether prompts will be there or not.
378 388
379 389 2007-12-13 Ville Vainio <vivainio@gmail.com>
380 390
381 391 * iplib.py(raw_input): unix readline does not allow unicode in
382 392 history, encode to normal string. After patch by Tiago.
383 393 Close #201
384 394
385 395 2007-12-12 Ville Vainio <vivainio@gmail.com>
386 396
387 397 * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of
388 398 current directory.
389 399
390 400 2007-12-12 Fernando Perez <Fernando.Perez@colorado.edu>
391 401
392 402 * IPython/Shell.py (_select_shell): add support for controlling
393 403 the pylab threading mode directly at the command line, without
394 404 having to modify MPL config files. Added unit tests for this
395 405 feature, though manual/docs update is still pending, will do later.
396 406
397 407 2007-12-11 Ville Vainio <vivainio@gmail.com>
398 408
399 409 * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
400 410 use in scripts)
401 411
402 412 2007-12-07 Ville Vainio <vivainio@gmail.com>
403 413
404 414 * iplib.py, ipy_profile_sh.py: Do not escape # on command lines
405 415 anymore (to \#) - even if it is a comment char that is implicitly
406 416 escaped in some unix shells in interactive mode, it is ok to leave
407 417 it in IPython as such.
408 418
409 419
410 420 2007-12-01 Robert Kern <robert.kern@gmail.com>
411 421
412 422 * IPython/ultraTB.py (findsource): Improve the monkeypatch to
413 423 inspect.findsource(). It can now find source lines inside zipped
414 424 packages.
415 425
416 426 * IPython/ultraTB.py: When constructing tracebacks, try to use __file__
417 427 in the frame's namespace before trusting the filename in the code object
418 428 which created the frame.
419 429
420 430 2007-11-29 *** Released version 0.8.2
421 431
422 432 2007-11-25 Fernando Perez <Fernando.Perez@colorado.edu>
423 433
424 434 * IPython/Logger.py (Logger.logstop): add a proper logstop()
425 435 method to fully stop the logger, along with a corresponding
426 436 %logstop magic for interactive use.
427 437
428 438 * IPython/Extensions/ipy_host_completers.py: added new host
429 439 completers functionality, contributed by Gael Pasgrimaud
430 440 <gawel-AT-afpy.org>.
431 441
432 442 2007-11-24 Fernando Perez <Fernando.Perez@colorado.edu>
433 443
434 444 * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
435 445 <gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
436 446 options handling. Unicode fix in %whos (committed a while ago)
437 447 was also contributed by Paul.
438 448
439 449 2007-11-23 Darren Dale <darren.dale@cornell.edu>
440 450 * ipy_traits_completer.py: let traits_completer respect the user's
441 451 readline_omit__names setting.
442 452
443 453 2007-11-08 Ville Vainio <vivainio@gmail.com>
444 454
445 455 * ipy_completers.py (import completer): assume 'xml' module exists.
446 456 Do not add every module twice anymore. Closes #196.
447 457
448 458 * ipy_completers.py, ipy_app_completers.py: Add proper apt-get
449 459 completer that uses apt-cache to search for existing packages.
450 460
451 461 2007-11-06 Ville Vainio <vivainio@gmail.com>
452 462
453 463 * Prompts.py: Do not update _oh and _123 when do_full_cache is not
454 464 true. Closes #194.
455 465
456 466 2007-11-01 Brian Granger <ellisonbg@gmail.com>
457 467
458 468 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
459 469 working with OS X 10.5 libedit implementation of readline.
460 470
461 471 2007-10-24 Ville Vainio <vivainio@gmail.com>
462 472
463 473 * iplib.py(user_setup): To route around buggy installations where
464 474 UserConfig is not available, create a minimal _ipython.
465 475
466 476 * iplib.py: Unicode fixes from Jorgen.
467 477
468 478 * genutils.py: Slist now has new method 'fields()' for extraction of
469 479 whitespace-separated fields from line-oriented data.
470 480
471 481 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
472 482
473 483 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
474 484 when querying objects with no __class__ attribute (such as
475 485 f2py-generated modules).
476 486
477 487 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
478 488
479 489 * IPython/Magic.py (magic_time): track compilation time and report
480 490 it if longer than 0.1s (fix done to %time and %timeit). After a
481 491 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
482 492
483 493 2007-09-18 Ville Vainio <vivainio@gmail.com>
484 494
485 495 * genutils.py(make_quoted_expr): Do not use Itpl, it does
486 496 not support unicode at the moment. Fixes (many) magic calls with
487 497 special characters.
488 498
489 499 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
490 500
491 501 * IPython/genutils.py (doctest_reload): expose the doctest
492 502 reloader to the user so that people can easily reset doctest while
493 503 using it interactively. Fixes a problem reported by Jorgen.
494 504
495 505 * IPython/iplib.py (InteractiveShell.__init__): protect the
496 506 FakeModule instances used for __main__ in %run calls from
497 507 deletion, so that user code defined in them isn't left with
498 508 dangling references due to the Python module deletion machinery.
499 509 This should fix the problems reported by Darren.
500 510
501 511 2007-09-10 Darren Dale <dd55@cornell.edu>
502 512
503 513 * Cleanup of IPShellQt and IPShellQt4
504 514
505 515 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
506 516
507 517 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
508 518 doctest support.
509 519
510 520 * IPython/iplib.py (safe_execfile): minor docstring improvements.
511 521
512 522 2007-09-08 Ville Vainio <vivainio@gmail.com>
513 523
514 524 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
515 525 directory, not the target directory.
516 526
517 527 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
518 528 exception that won't print the tracebacks. Switched many magics to
519 529 raise them on error situations, also GetoptError is not printed
520 530 anymore.
521 531
522 532 2007-09-07 Ville Vainio <vivainio@gmail.com>
523 533
524 534 * iplib.py: do not auto-alias "dir", it screws up other dir auto
525 535 aliases.
526 536
527 537 * genutils.py: SList.grep() implemented.
528 538
529 539 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
530 540 for easy "out of the box" setup of several common editors, so that
531 541 e.g. '%edit os.path.isfile' will jump to the correct line
532 542 automatically. Contributions for command lines of your favourite
533 543 editors welcome.
534 544
535 545 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
536 546
537 547 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
538 548 preventing source display in certain cases. In reality I think
539 549 the problem is with Ubuntu's Python build, but this change works
540 550 around the issue in some cases (not in all, unfortunately). I'd
541 551 filed a Python bug on this with more details, but in the change of
542 552 bug trackers it seems to have been lost.
543 553
544 554 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
545 555 not the same, it's not self-documenting, doesn't allow range
546 556 selection, and sorts alphabetically instead of numerically.
547 557 (magic_r): restore %r. No, "up + enter. One char magic" is not
548 558 the same thing, since %r takes parameters to allow fast retrieval
549 559 of old commands. I've received emails from users who use this a
550 560 LOT, so it stays.
551 561 (magic_automagic): restore %automagic. "use _ip.option.automagic"
552 562 is not a valid replacement b/c it doesn't provide an complete
553 563 explanation (which the automagic docstring does).
554 564 (magic_autocall): restore %autocall, with improved docstring.
555 565 Same argument as for others, "use _ip.options.autocall" is not a
556 566 valid replacement.
557 567 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
558 568 tutorials and online docs.
559 569
560 570 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
561 571
562 572 * IPython/usage.py (quick_reference): mention magics in quickref,
563 573 modified main banner to mention %quickref.
564 574
565 575 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
566 576
567 577 2007-09-06 Ville Vainio <vivainio@gmail.com>
568 578
569 579 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
570 580 Callable aliases now pass the _ip as first arg. This breaks
571 581 compatibility with earlier 0.8.2.svn series! (though they should
572 582 not have been in use yet outside these few extensions)
573 583
574 584 2007-09-05 Ville Vainio <vivainio@gmail.com>
575 585
576 586 * external/mglob.py: expand('dirname') => ['dirname'], instead
577 587 of ['dirname/foo','dirname/bar', ...].
578 588
579 589 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
580 590 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
581 591 is useful for others as well).
582 592
583 593 * iplib.py: on callable aliases (as opposed to old style aliases),
584 594 do var_expand() immediately, and use make_quoted_expr instead
585 595 of hardcoded r"""
586 596
587 597 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
588 598 if not available load ipy_fsops.py for cp, mv, etc. replacements
589 599
590 600 * OInspect.py, ipy_which.py: improve %which and obj? for callable
591 601 aliases
592 602
593 603 2007-09-04 Ville Vainio <vivainio@gmail.com>
594 604
595 605 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
596 606 Relicensed under BSD with the authors approval.
597 607
598 608 * ipmaker.py, usage.py: Remove %magic from default banner, improve
599 609 %quickref
600 610
601 611 2007-09-03 Ville Vainio <vivainio@gmail.com>
602 612
603 613 * Magic.py: %time now passes expression through prefilter,
604 614 allowing IPython syntax.
605 615
606 616 2007-09-01 Ville Vainio <vivainio@gmail.com>
607 617
608 618 * ipmaker.py: Always show full traceback when newstyle config fails
609 619
610 620 2007-08-27 Ville Vainio <vivainio@gmail.com>
611 621
612 622 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
613 623
614 624 2007-08-26 Ville Vainio <vivainio@gmail.com>
615 625
616 626 * ipmaker.py: Command line args have the highest priority again
617 627
618 628 * iplib.py, ipmaker.py: -i command line argument now behaves as in
619 629 normal python, i.e. leaves the IPython session running after -c
620 630 command or running a batch file from command line.
621 631
622 632 2007-08-22 Ville Vainio <vivainio@gmail.com>
623 633
624 634 * iplib.py: no extra empty (last) line in raw hist w/ multiline
625 635 statements
626 636
627 637 * logger.py: Fix bug where blank lines in history were not
628 638 added until AFTER adding the current line; translated and raw
629 639 history should finally be in sync with prompt now.
630 640
631 641 * ipy_completers.py: quick_completer now makes it easy to create
632 642 trivial custom completers
633 643
634 644 * clearcmd.py: shadow history compression & erasing, fixed input hist
635 645 clearing.
636 646
637 647 * envpersist.py, history.py: %env (sh profile only), %hist completers
638 648
639 649 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
640 650 term title now include the drive letter, and always use / instead of
641 651 os.sep (as per recommended approach for win32 ipython in general).
642 652
643 653 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
644 654 plain python scripts from ipykit command line by running
645 655 "py myscript.py", even w/o installed python.
646 656
647 657 2007-08-21 Ville Vainio <vivainio@gmail.com>
648 658
649 659 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
650 660 (for backwards compatibility)
651 661
652 662 * history.py: switch back to %hist -t from %hist -r as default.
653 663 At least until raw history is fixed for good.
654 664
655 665 2007-08-20 Ville Vainio <vivainio@gmail.com>
656 666
657 667 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
658 668 locate alias redeclarations etc. Also, avoid handling
659 669 _ip.IP.alias_table directly, prefer using _ip.defalias.
660 670
661 671
662 672 2007-08-15 Ville Vainio <vivainio@gmail.com>
663 673
664 674 * prefilter.py: ! is now always served first
665 675
666 676 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
667 677
668 678 * IPython/iplib.py (safe_execfile): fix the SystemExit
669 679 auto-suppression code to work in Python2.4 (the internal structure
670 680 of that exception changed and I'd only tested the code with 2.5).
671 681 Bug reported by a SciPy attendee.
672 682
673 683 2007-08-13 Ville Vainio <vivainio@gmail.com>
674 684
675 685 * prefilter.py: reverted !c:/bin/foo fix, made % in
676 686 multiline specials work again
677 687
678 688 2007-08-13 Ville Vainio <vivainio@gmail.com>
679 689
680 690 * prefilter.py: Take more care to special-case !, so that
681 691 !c:/bin/foo.exe works.
682 692
683 693 * setup.py: if we are building eggs, strip all docs and
684 694 examples (it doesn't make sense to bytecompile examples,
685 695 and docs would be in an awkward place anyway).
686 696
687 697 * Ryan Krauss' patch fixes start menu shortcuts when IPython
688 698 is installed into a directory that has spaces in the name.
689 699
690 700 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
691 701
692 702 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
693 703 doctest profile and %doctest_mode, so they actually generate the
694 704 blank lines needed by doctest to separate individual tests.
695 705
696 706 * IPython/iplib.py (safe_execfile): modify so that running code
697 707 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
698 708 doesn't get a printed traceback. Any other value in sys.exit(),
699 709 including the empty call, still generates a traceback. This
700 710 enables use of %run without having to pass '-e' for codes that
701 711 correctly set the exit status flag.
702 712
703 713 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
704 714
705 715 * IPython/iplib.py (InteractiveShell.post_config_initialization):
706 716 fix problems with doctests failing when run inside IPython due to
707 717 IPython's modifications of sys.displayhook.
708 718
709 719 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
710 720
711 721 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
712 722 a string with names.
713 723
714 724 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
715 725
716 726 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
717 727 magic to toggle on/off the doctest pasting support without having
718 728 to leave a session to switch to a separate profile.
719 729
720 730 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
721 731
722 732 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
723 733 introduce a blank line between inputs, to conform to doctest
724 734 requirements.
725 735
726 736 * IPython/OInspect.py (Inspector.pinfo): fix another part where
727 737 auto-generated docstrings for new-style classes were showing up.
728 738
729 739 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
730 740
731 741 * api_changes: Add new file to track backward-incompatible
732 742 user-visible changes.
733 743
734 744 2007-08-06 Ville Vainio <vivainio@gmail.com>
735 745
736 746 * ipmaker.py: fix bug where user_config_ns didn't exist at all
737 747 before all the config files were handled.
738 748
739 749 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
740 750
741 751 * IPython/irunner.py (RunnerFactory): Add new factory class for
742 752 creating reusable runners based on filenames.
743 753
744 754 * IPython/Extensions/ipy_profile_doctest.py: New profile for
745 755 doctest support. It sets prompts/exceptions as similar to
746 756 standard Python as possible, so that ipython sessions in this
747 757 profile can be easily pasted as doctests with minimal
748 758 modifications. It also enables pasting of doctests from external
749 759 sources (even if they have leading whitespace), so that you can
750 760 rerun doctests from existing sources.
751 761
752 762 * IPython/iplib.py (_prefilter): fix a buglet where after entering
753 763 some whitespace, the prompt would become a continuation prompt
754 764 with no way of exiting it other than Ctrl-C. This fix brings us
755 765 into conformity with how the default python prompt works.
756 766
757 767 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
758 768 Add support for pasting not only lines that start with '>>>', but
759 769 also with ' >>>'. That is, arbitrary whitespace can now precede
760 770 the prompts. This makes the system useful for pasting doctests
761 771 from docstrings back into a normal session.
762 772
763 773 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
764 774
765 775 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
766 776 r1357, which had killed multiple invocations of an embedded
767 777 ipython (this means that example-embed has been broken for over 1
768 778 year!!!). Rather than possibly breaking the batch stuff for which
769 779 the code in iplib.py/interact was introduced, I worked around the
770 780 problem in the embedding class in Shell.py. We really need a
771 781 bloody test suite for this code, I'm sick of finding stuff that
772 782 used to work breaking left and right every time I use an old
773 783 feature I hadn't touched in a few months.
774 784 (kill_embedded): Add a new magic that only shows up in embedded
775 785 mode, to allow users to permanently deactivate an embedded instance.
776 786
777 787 2007-08-01 Ville Vainio <vivainio@gmail.com>
778 788
779 789 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
780 790 history gets out of sync on runlines (e.g. when running macros).
781 791
782 792 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
783 793
784 794 * IPython/Magic.py (magic_colors): fix win32-related error message
785 795 that could appear under *nix when readline was missing. Patch by
786 796 Scott Jackson, closes #175.
787 797
788 798 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
789 799
790 800 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
791 801 completer that it traits-aware, so that traits objects don't show
792 802 all of their internal attributes all the time.
793 803
794 804 * IPython/genutils.py (dir2): moved this code from inside
795 805 completer.py to expose it publicly, so I could use it in the
796 806 wildcards bugfix.
797 807
798 808 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
799 809 Stefan with Traits.
800 810
801 811 * IPython/completer.py (Completer.attr_matches): change internal
802 812 var name from 'object' to 'obj', since 'object' is now a builtin
803 813 and this can lead to weird bugs if reusing this code elsewhere.
804 814
805 815 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
806 816
807 817 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
808 818 'foo?' and update the code to prevent printing of default
809 819 docstrings that started appearing after I added support for
810 820 new-style classes. The approach I'm using isn't ideal (I just
811 821 special-case those strings) but I'm not sure how to more robustly
812 822 differentiate between truly user-written strings and Python's
813 823 automatic ones.
814 824
815 825 2007-07-09 Ville Vainio <vivainio@gmail.com>
816 826
817 827 * completer.py: Applied Matthew Neeley's patch:
818 828 Dynamic attributes from trait_names and _getAttributeNames are added
819 829 to the list of tab completions, but when this happens, the attribute
820 830 list is turned into a set, so the attributes are unordered when
821 831 printed, which makes it hard to find the right completion. This patch
822 832 turns this set back into a list and sort it.
823 833
824 834 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
825 835
826 836 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
827 837 classes in various inspector functions.
828 838
829 839 2007-06-28 Ville Vainio <vivainio@gmail.com>
830 840
831 841 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
832 842 Implement "shadow" namespace, and callable aliases that reside there.
833 843 Use them by:
834 844
835 845 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
836 846
837 847 foo hello world
838 848 (gets translated to:)
839 849 _sh.foo(r"""hello world""")
840 850
841 851 In practice, this kind of alias can take the role of a magic function
842 852
843 853 * New generic inspect_object, called on obj? and obj??
844 854
845 855 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
846 856
847 857 * IPython/ultraTB.py (findsource): fix a problem with
848 858 inspect.getfile that can cause crashes during traceback construction.
849 859
850 860 2007-06-14 Ville Vainio <vivainio@gmail.com>
851 861
852 862 * iplib.py (handle_auto): Try to use ascii for printing "--->"
853 863 autocall rewrite indication, becausesometimes unicode fails to print
854 864 properly (and you get ' - - - '). Use plain uncoloured ---> for
855 865 unicode.
856 866
857 867 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
858 868
859 869 . pickleshare 'hash' commands (hget, hset, hcompress,
860 870 hdict) for efficient shadow history storage.
861 871
862 872 2007-06-13 Ville Vainio <vivainio@gmail.com>
863 873
864 874 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
865 875 Added kw arg 'interactive', tell whether vars should be visible
866 876 with %whos.
867 877
868 878 2007-06-11 Ville Vainio <vivainio@gmail.com>
869 879
870 880 * pspersistence.py, Magic.py, iplib.py: directory history now saved
871 881 to db
872 882
873 883 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
874 884 Also, it exits IPython immediately after evaluating the command (just like
875 885 std python)
876 886
877 887 2007-06-05 Walter Doerwald <walter@livinglogic.de>
878 888
879 889 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
880 890 Python string and captures the output. (Idea and original patch by
881 891 Stefan van der Walt)
882 892
883 893 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
884 894
885 895 * IPython/ultraTB.py (VerboseTB.text): update printing of
886 896 exception types for Python 2.5 (now all exceptions in the stdlib
887 897 are new-style classes).
888 898
889 899 2007-05-31 Walter Doerwald <walter@livinglogic.de>
890 900
891 901 * IPython/Extensions/igrid.py: Add new commands refresh and
892 902 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
893 903 the iterator once (refresh) or after every x seconds (refresh_timer).
894 904 Add a working implementation of "searchexpression", where the text
895 905 entered is not the text to search for, but an expression that must
896 906 be true. Added display of shortcuts to the menu. Added commands "pickinput"
897 907 and "pickinputattr" that put the object or attribute under the cursor
898 908 in the input line. Split the statusbar to be able to display the currently
899 909 active refresh interval. (Patch by Nik Tautenhahn)
900 910
901 911 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
902 912
903 913 * fixing set_term_title to use ctypes as default
904 914
905 915 * fixing set_term_title fallback to work when curent dir
906 916 is on a windows network share
907 917
908 918 2007-05-28 Ville Vainio <vivainio@gmail.com>
909 919
910 920 * %cpaste: strip + with > from left (diffs).
911 921
912 922 * iplib.py: Fix crash when readline not installed
913 923
914 924 2007-05-26 Ville Vainio <vivainio@gmail.com>
915 925
916 926 * generics.py: introduce easy to extend result_display generic
917 927 function (using simplegeneric.py).
918 928
919 929 * Fixed the append functionality of %set.
920 930
921 931 2007-05-25 Ville Vainio <vivainio@gmail.com>
922 932
923 933 * New magic: %rep (fetch / run old commands from history)
924 934
925 935 * New extension: mglob (%mglob magic), for powerful glob / find /filter
926 936 like functionality
927 937
928 938 % maghistory.py: %hist -g PATTERM greps the history for pattern
929 939
930 940 2007-05-24 Walter Doerwald <walter@livinglogic.de>
931 941
932 942 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
933 943 browse the IPython input history
934 944
935 945 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
936 946 (mapped to "i") can be used to put the object under the curser in the input
937 947 line. pickinputattr (mapped to "I") does the same for the attribute under
938 948 the cursor.
939 949
940 950 2007-05-24 Ville Vainio <vivainio@gmail.com>
941 951
942 952 * Grand magic cleansing (changeset [2380]):
943 953
944 954 * Introduce ipy_legacy.py where the following magics were
945 955 moved:
946 956
947 957 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
948 958
949 959 If you need them, either use default profile or "import ipy_legacy"
950 960 in your ipy_user_conf.py
951 961
952 962 * Move sh and scipy profile to Extensions from UserConfig. this implies
953 963 you should not edit them, but you don't need to run %upgrade when
954 964 upgrading IPython anymore.
955 965
956 966 * %hist/%history now operates in "raw" mode by default. To get the old
957 967 behaviour, run '%hist -n' (native mode).
958 968
959 969 * split ipy_stock_completers.py to ipy_stock_completers.py and
960 970 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
961 971 installed as default.
962 972
963 973 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
964 974 handling.
965 975
966 976 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
967 977 input if readline is available.
968 978
969 979 2007-05-23 Ville Vainio <vivainio@gmail.com>
970 980
971 981 * macro.py: %store uses __getstate__ properly
972 982
973 983 * exesetup.py: added new setup script for creating
974 984 standalone IPython executables with py2exe (i.e.
975 985 no python installation required).
976 986
977 987 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
978 988 its place.
979 989
980 990 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
981 991
982 992 2007-05-21 Ville Vainio <vivainio@gmail.com>
983 993
984 994 * platutil_win32.py (set_term_title): handle
985 995 failure of 'title' system call properly.
986 996
987 997 2007-05-17 Walter Doerwald <walter@livinglogic.de>
988 998
989 999 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
990 1000 (Bug detected by Paul Mueller).
991 1001
992 1002 2007-05-16 Ville Vainio <vivainio@gmail.com>
993 1003
994 1004 * ipy_profile_sci.py, ipython_win_post_install.py: Create
995 1005 new "sci" profile, effectively a modern version of the old
996 1006 "scipy" profile (which is now slated for deprecation).
997 1007
998 1008 2007-05-15 Ville Vainio <vivainio@gmail.com>
999 1009
1000 1010 * pycolorize.py, pycolor.1: Paul Mueller's patches that
1001 1011 make pycolorize read input from stdin when run without arguments.
1002 1012
1003 1013 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
1004 1014
1005 1015 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
1006 1016 it in sh profile (instead of ipy_system_conf.py).
1007 1017
1008 1018 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
1009 1019 aliases are now lower case on windows (MyCommand.exe => mycommand).
1010 1020
1011 1021 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
1012 1022 Macros are now callable objects that inherit from ipapi.IPyAutocall,
1013 1023 i.e. get autocalled regardless of system autocall setting.
1014 1024
1015 1025 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
1016 1026
1017 1027 * IPython/rlineimpl.py: check for clear_history in readline and
1018 1028 make it a dummy no-op if not available. This function isn't
1019 1029 guaranteed to be in the API and appeared in Python 2.4, so we need
1020 1030 to check it ourselves. Also, clean up this file quite a bit.
1021 1031
1022 1032 * ipython.1: update man page and full manual with information
1023 1033 about threads (remove outdated warning). Closes #151.
1024 1034
1025 1035 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
1026 1036
1027 1037 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
1028 1038 in trunk (note that this made it into the 0.8.1 release already,
1029 1039 but the changelogs didn't get coordinated). Many thanks to Gael
1030 1040 Varoquaux <gael.varoquaux-AT-normalesup.org>
1031 1041
1032 1042 2007-05-09 *** Released version 0.8.1
1033 1043
1034 1044 2007-05-10 Walter Doerwald <walter@livinglogic.de>
1035 1045
1036 1046 * IPython/Extensions/igrid.py: Incorporate html help into
1037 1047 the module, so we don't have to search for the file.
1038 1048
1039 1049 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
1040 1050
1041 1051 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
1042 1052
1043 1053 2007-04-30 Ville Vainio <vivainio@gmail.com>
1044 1054
1045 1055 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
1046 1056 user has illegal (non-ascii) home directory name
1047 1057
1048 1058 2007-04-27 Ville Vainio <vivainio@gmail.com>
1049 1059
1050 1060 * platutils_win32.py: implement set_term_title for windows
1051 1061
1052 1062 * Update version number
1053 1063
1054 1064 * ipy_profile_sh.py: more informative prompt (2 dir levels)
1055 1065
1056 1066 2007-04-26 Walter Doerwald <walter@livinglogic.de>
1057 1067
1058 1068 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
1059 1069 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
1060 1070 bug discovered by Ville).
1061 1071
1062 1072 2007-04-26 Ville Vainio <vivainio@gmail.com>
1063 1073
1064 1074 * Extensions/ipy_completers.py: Olivier's module completer now
1065 1075 saves the list of root modules if it takes > 4 secs on the first run.
1066 1076
1067 1077 * Magic.py (%rehashx): %rehashx now clears the completer cache
1068 1078
1069 1079
1070 1080 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
1071 1081
1072 1082 * ipython.el: fix incorrect color scheme, reported by Stefan.
1073 1083 Closes #149.
1074 1084
1075 1085 * IPython/PyColorize.py (Parser.format2): fix state-handling
1076 1086 logic. I still don't like how that code handles state, but at
1077 1087 least now it should be correct, if inelegant. Closes #146.
1078 1088
1079 1089 2007-04-25 Ville Vainio <vivainio@gmail.com>
1080 1090
1081 1091 * Extensions/ipy_which.py: added extension for %which magic, works
1082 1092 a lot like unix 'which' but also finds and expands aliases, and
1083 1093 allows wildcards.
1084 1094
1085 1095 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
1086 1096 as opposed to returning nothing.
1087 1097
1088 1098 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
1089 1099 ipy_stock_completers on default profile, do import on sh profile.
1090 1100
1091 1101 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1092 1102
1093 1103 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
1094 1104 like ipython.py foo.py which raised a IndexError.
1095 1105
1096 1106 2007-04-21 Ville Vainio <vivainio@gmail.com>
1097 1107
1098 1108 * Extensions/ipy_extutil.py: added extension to manage other ipython
1099 1109 extensions. Now only supports 'ls' == list extensions.
1100 1110
1101 1111 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
1102 1112
1103 1113 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
1104 1114 would prevent use of the exception system outside of a running
1105 1115 IPython instance.
1106 1116
1107 1117 2007-04-20 Ville Vainio <vivainio@gmail.com>
1108 1118
1109 1119 * Extensions/ipy_render.py: added extension for easy
1110 1120 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
1111 1121 'Iptl' template notation,
1112 1122
1113 1123 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
1114 1124 safer & faster 'import' completer.
1115 1125
1116 1126 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
1117 1127 and _ip.defalias(name, command).
1118 1128
1119 1129 * Extensions/ipy_exportdb.py: New extension for exporting all the
1120 1130 %store'd data in a portable format (normal ipapi calls like
1121 1131 defmacro() etc.)
1122 1132
1123 1133 2007-04-19 Ville Vainio <vivainio@gmail.com>
1124 1134
1125 1135 * upgrade_dir.py: skip junk files like *.pyc
1126 1136
1127 1137 * Release.py: version number to 0.8.1
1128 1138
1129 1139 2007-04-18 Ville Vainio <vivainio@gmail.com>
1130 1140
1131 1141 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
1132 1142 and later on win32.
1133 1143
1134 1144 2007-04-16 Ville Vainio <vivainio@gmail.com>
1135 1145
1136 1146 * iplib.py (showtraceback): Do not crash when running w/o readline.
1137 1147
1138 1148 2007-04-12 Walter Doerwald <walter@livinglogic.de>
1139 1149
1140 1150 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
1141 1151 sorted (case sensitive with files and dirs mixed).
1142 1152
1143 1153 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
1144 1154
1145 1155 * IPython/Release.py (version): Open trunk for 0.8.1 development.
1146 1156
1147 1157 2007-04-10 *** Released version 0.8.0
1148 1158
1149 1159 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
1150 1160
1151 1161 * Tag 0.8.0 for release.
1152 1162
1153 1163 * IPython/iplib.py (reloadhist): add API function to cleanly
1154 1164 reload the readline history, which was growing inappropriately on
1155 1165 every %run call.
1156 1166
1157 1167 * win32_manual_post_install.py (run): apply last part of Nicolas
1158 1168 Pernetty's patch (I'd accidentally applied it in a different
1159 1169 directory and this particular file didn't get patched).
1160 1170
1161 1171 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
1162 1172
1163 1173 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
1164 1174 find the main thread id and use the proper API call. Thanks to
1165 1175 Stefan for the fix.
1166 1176
1167 1177 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
1168 1178 unit tests to reflect fixed ticket #52, and add more tests sent by
1169 1179 him.
1170 1180
1171 1181 * IPython/iplib.py (raw_input): restore the readline completer
1172 1182 state on every input, in case third-party code messed it up.
1173 1183 (_prefilter): revert recent addition of early-escape checks which
1174 1184 prevent many valid alias calls from working.
1175 1185
1176 1186 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
1177 1187 flag for sigint handler so we don't run a full signal() call on
1178 1188 each runcode access.
1179 1189
1180 1190 * IPython/Magic.py (magic_whos): small improvement to diagnostic
1181 1191 message.
1182 1192
1183 1193 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1184 1194
1185 1195 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
1186 1196 asynchronous exceptions working, i.e., Ctrl-C can actually
1187 1197 interrupt long-running code in the multithreaded shells.
1188 1198
1189 1199 This is using Tomer Filiba's great ctypes-based trick:
1190 1200 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
1191 1201 this in the past, but hadn't been able to make it work before. So
1192 1202 far it looks like it's actually running, but this needs more
1193 1203 testing. If it really works, I'll be *very* happy, and we'll owe
1194 1204 a huge thank you to Tomer. My current implementation is ugly,
1195 1205 hackish and uses nasty globals, but I don't want to try and clean
1196 1206 anything up until we know if it actually works.
1197 1207
1198 1208 NOTE: this feature needs ctypes to work. ctypes is included in
1199 1209 Python2.5, but 2.4 users will need to manually install it. This
1200 1210 feature makes multi-threaded shells so much more usable that it's
1201 1211 a minor price to pay (ctypes is very easy to install, already a
1202 1212 requirement for win32 and available in major linux distros).
1203 1213
1204 1214 2007-04-04 Ville Vainio <vivainio@gmail.com>
1205 1215
1206 1216 * Extensions/ipy_completers.py, ipy_stock_completers.py:
1207 1217 Moved implementations of 'bundled' completers to ipy_completers.py,
1208 1218 they are only enabled in ipy_stock_completers.py.
1209 1219
1210 1220 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
1211 1221
1212 1222 * IPython/PyColorize.py (Parser.format2): Fix identation of
1213 1223 colorzied output and return early if color scheme is NoColor, to
1214 1224 avoid unnecessary and expensive tokenization. Closes #131.
1215 1225
1216 1226 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
1217 1227
1218 1228 * IPython/Debugger.py: disable the use of pydb version 1.17. It
1219 1229 has a critical bug (a missing import that makes post-mortem not
1220 1230 work at all). Unfortunately as of this time, this is the version
1221 1231 shipped with Ubuntu Edgy, so quite a few people have this one. I
1222 1232 hope Edgy will update to a more recent package.
1223 1233
1224 1234 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
1225 1235
1226 1236 * IPython/iplib.py (_prefilter): close #52, second part of a patch
1227 1237 set by Stefan (only the first part had been applied before).
1228 1238
1229 1239 * IPython/Extensions/ipy_stock_completers.py (module_completer):
1230 1240 remove usage of the dangerous pkgutil.walk_packages(). See
1231 1241 details in comments left in the code.
1232 1242
1233 1243 * IPython/Magic.py (magic_whos): add support for numpy arrays
1234 1244 similar to what we had for Numeric.
1235 1245
1236 1246 * IPython/completer.py (IPCompleter.complete): extend the
1237 1247 complete() call API to support completions by other mechanisms
1238 1248 than readline. Closes #109.
1239 1249
1240 1250 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
1241 1251 protect against a bug in Python's execfile(). Closes #123.
1242 1252
1243 1253 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
1244 1254
1245 1255 * IPython/iplib.py (split_user_input): ensure that when splitting
1246 1256 user input, the part that can be treated as a python name is pure
1247 1257 ascii (Python identifiers MUST be pure ascii). Part of the
1248 1258 ongoing Unicode support work.
1249 1259
1250 1260 * IPython/Prompts.py (prompt_specials_color): Add \N for the
1251 1261 actual prompt number, without any coloring. This allows users to
1252 1262 produce numbered prompts with their own colors. Added after a
1253 1263 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
1254 1264
1255 1265 2007-03-31 Walter Doerwald <walter@livinglogic.de>
1256 1266
1257 1267 * IPython/Extensions/igrid.py: Map the return key
1258 1268 to enter() and shift-return to enterattr().
1259 1269
1260 1270 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
1261 1271
1262 1272 * IPython/Magic.py (magic_psearch): add unicode support by
1263 1273 encoding to ascii the input, since this routine also only deals
1264 1274 with valid Python names. Fixes a bug reported by Stefan.
1265 1275
1266 1276 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
1267 1277
1268 1278 * IPython/Magic.py (_inspect): convert unicode input into ascii
1269 1279 before trying to evaluate it as a Python identifier. This fixes a
1270 1280 problem that the new unicode support had introduced when analyzing
1271 1281 long definition lines for functions.
1272 1282
1273 1283 2007-03-24 Walter Doerwald <walter@livinglogic.de>
1274 1284
1275 1285 * IPython/Extensions/igrid.py: Fix picking. Using
1276 1286 igrid with wxPython 2.6 and -wthread should work now.
1277 1287 igrid.display() simply tries to create a frame without
1278 1288 an application. Only if this fails an application is created.
1279 1289
1280 1290 2007-03-23 Walter Doerwald <walter@livinglogic.de>
1281 1291
1282 1292 * IPython/Extensions/path.py: Updated to version 2.2.
1283 1293
1284 1294 2007-03-23 Ville Vainio <vivainio@gmail.com>
1285 1295
1286 1296 * iplib.py: recursive alias expansion now works better, so that
1287 1297 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
1288 1298 doesn't trip up the process, if 'd' has been aliased to 'ls'.
1289 1299
1290 1300 * Extensions/ipy_gnuglobal.py added, provides %global magic
1291 1301 for users of http://www.gnu.org/software/global
1292 1302
1293 1303 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
1294 1304 Closes #52. Patch by Stefan van der Walt.
1295 1305
1296 1306 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
1297 1307
1298 1308 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
1299 1309 respect the __file__ attribute when using %run. Thanks to a bug
1300 1310 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
1301 1311
1302 1312 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
1303 1313
1304 1314 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
1305 1315 input. Patch sent by Stefan.
1306 1316
1307 1317 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1308 1318 * IPython/Extensions/ipy_stock_completer.py
1309 1319 shlex_split, fix bug in shlex_split. len function
1310 1320 call was missing an if statement. Caused shlex_split to
1311 1321 sometimes return "" as last element.
1312 1322
1313 1323 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
1314 1324
1315 1325 * IPython/completer.py
1316 1326 (IPCompleter.file_matches.single_dir_expand): fix a problem
1317 1327 reported by Stefan, where directories containign a single subdir
1318 1328 would be completed too early.
1319 1329
1320 1330 * IPython/Shell.py (_load_pylab): Make the execution of 'from
1321 1331 pylab import *' when -pylab is given be optional. A new flag,
1322 1332 pylab_import_all controls this behavior, the default is True for
1323 1333 backwards compatibility.
1324 1334
1325 1335 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
1326 1336 modified) R. Bernstein's patch for fully syntax highlighted
1327 1337 tracebacks. The functionality is also available under ultraTB for
1328 1338 non-ipython users (someone using ultraTB but outside an ipython
1329 1339 session). They can select the color scheme by setting the
1330 1340 module-level global DEFAULT_SCHEME. The highlight functionality
1331 1341 also works when debugging.
1332 1342
1333 1343 * IPython/genutils.py (IOStream.close): small patch by
1334 1344 R. Bernstein for improved pydb support.
1335 1345
1336 1346 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
1337 1347 DaveS <davls@telus.net> to improve support of debugging under
1338 1348 NTEmacs, including improved pydb behavior.
1339 1349
1340 1350 * IPython/Magic.py (magic_prun): Fix saving of profile info for
1341 1351 Python 2.5, where the stats object API changed a little. Thanks
1342 1352 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
1343 1353
1344 1354 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
1345 1355 Pernetty's patch to improve support for (X)Emacs under Win32.
1346 1356
1347 1357 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
1348 1358
1349 1359 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
1350 1360 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
1351 1361 a report by Nik Tautenhahn.
1352 1362
1353 1363 2007-03-16 Walter Doerwald <walter@livinglogic.de>
1354 1364
1355 1365 * setup.py: Add the igrid help files to the list of data files
1356 1366 to be installed alongside igrid.
1357 1367 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
1358 1368 Show the input object of the igrid browser as the window tile.
1359 1369 Show the object the cursor is on in the statusbar.
1360 1370
1361 1371 2007-03-15 Ville Vainio <vivainio@gmail.com>
1362 1372
1363 1373 * Extensions/ipy_stock_completers.py: Fixed exception
1364 1374 on mismatching quotes in %run completer. Patch by
1365 1375 Jorgen Stenarson. Closes #127.
1366 1376
1367 1377 2007-03-14 Ville Vainio <vivainio@gmail.com>
1368 1378
1369 1379 * Extensions/ext_rehashdir.py: Do not do auto_alias
1370 1380 in %rehashdir, it clobbers %store'd aliases.
1371 1381
1372 1382 * UserConfig/ipy_profile_sh.py: envpersist.py extension
1373 1383 (beefed up %env) imported for sh profile.
1374 1384
1375 1385 2007-03-10 Walter Doerwald <walter@livinglogic.de>
1376 1386
1377 1387 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
1378 1388 as the default browser.
1379 1389 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
1380 1390 As igrid displays all attributes it ever encounters, fetch() (which has
1381 1391 been renamed to _fetch()) doesn't have to recalculate the display attributes
1382 1392 every time a new item is fetched. This should speed up scrolling.
1383 1393
1384 1394 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
1385 1395
1386 1396 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
1387 1397 Schmolck's recently reported tab-completion bug (my previous one
1388 1398 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
1389 1399
1390 1400 2007-03-09 Walter Doerwald <walter@livinglogic.de>
1391 1401
1392 1402 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
1393 1403 Close help window if exiting igrid.
1394 1404
1395 1405 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
1396 1406
1397 1407 * IPython/Extensions/ipy_defaults.py: Check if readline is available
1398 1408 before calling functions from readline.
1399 1409
1400 1410 2007-03-02 Walter Doerwald <walter@livinglogic.de>
1401 1411
1402 1412 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
1403 1413 igrid is a wxPython-based display object for ipipe. If your system has
1404 1414 wx installed igrid will be the default display. Without wx ipipe falls
1405 1415 back to ibrowse (which needs curses). If no curses is installed ipipe
1406 1416 falls back to idump.
1407 1417
1408 1418 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
1409 1419
1410 1420 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
1411 1421 my changes from yesterday, they introduced bugs. Will reactivate
1412 1422 once I get a correct solution, which will be much easier thanks to
1413 1423 Dan Milstein's new prefilter test suite.
1414 1424
1415 1425 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
1416 1426
1417 1427 * IPython/iplib.py (split_user_input): fix input splitting so we
1418 1428 don't attempt attribute accesses on things that can't possibly be
1419 1429 valid Python attributes. After a bug report by Alex Schmolck.
1420 1430 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
1421 1431 %magic with explicit % prefix.
1422 1432
1423 1433 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
1424 1434
1425 1435 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
1426 1436 avoid a DeprecationWarning from GTK.
1427 1437
1428 1438 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
1429 1439
1430 1440 * IPython/genutils.py (clock): I modified clock() to return total
1431 1441 time, user+system. This is a more commonly needed metric. I also
1432 1442 introduced the new clocku/clocks to get only user/system time if
1433 1443 one wants those instead.
1434 1444
1435 1445 ***WARNING: API CHANGE*** clock() used to return only user time,
1436 1446 so if you want exactly the same results as before, use clocku
1437 1447 instead.
1438 1448
1439 1449 2007-02-22 Ville Vainio <vivainio@gmail.com>
1440 1450
1441 1451 * IPython/Extensions/ipy_p4.py: Extension for improved
1442 1452 p4 (perforce version control system) experience.
1443 1453 Adds %p4 magic with p4 command completion and
1444 1454 automatic -G argument (marshall output as python dict)
1445 1455
1446 1456 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
1447 1457
1448 1458 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
1449 1459 stop marks.
1450 1460 (ClearingMixin): a simple mixin to easily make a Demo class clear
1451 1461 the screen in between blocks and have empty marquees. The
1452 1462 ClearDemo and ClearIPDemo classes that use it are included.
1453 1463
1454 1464 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
1455 1465
1456 1466 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
1457 1467 protect against exceptions at Python shutdown time. Patch
1458 1468 sumbmitted to upstream.
1459 1469
1460 1470 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1461 1471
1462 1472 * IPython/Extensions/ibrowse.py: If entering the first object level
1463 1473 (i.e. the object for which the browser has been started) fails,
1464 1474 now the error is raised directly (aborting the browser) instead of
1465 1475 running into an empty levels list later.
1466 1476
1467 1477 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1468 1478
1469 1479 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1470 1480 for the noitem object.
1471 1481
1472 1482 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1473 1483
1474 1484 * IPython/completer.py (Completer.attr_matches): Fix small
1475 1485 tab-completion bug with Enthought Traits objects with units.
1476 1486 Thanks to a bug report by Tom Denniston
1477 1487 <tom.denniston-AT-alum.dartmouth.org>.
1478 1488
1479 1489 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1480 1490
1481 1491 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1482 1492 bug where only .ipy or .py would be completed. Once the first
1483 1493 argument to %run has been given, all completions are valid because
1484 1494 they are the arguments to the script, which may well be non-python
1485 1495 filenames.
1486 1496
1487 1497 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1488 1498 to irunner to allow it to correctly support real doctesting of
1489 1499 out-of-process ipython code.
1490 1500
1491 1501 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1492 1502 title an option (-noterm_title) because it completely breaks
1493 1503 doctesting.
1494 1504
1495 1505 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1496 1506
1497 1507 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1498 1508
1499 1509 * IPython/irunner.py (main): fix small bug where extensions were
1500 1510 not being correctly recognized.
1501 1511
1502 1512 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1503 1513
1504 1514 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1505 1515 a string containing a single line yields the string itself as the
1506 1516 only item.
1507 1517
1508 1518 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1509 1519 object if it's the same as the one on the last level (This avoids
1510 1520 infinite recursion for one line strings).
1511 1521
1512 1522 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1513 1523
1514 1524 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1515 1525 all output streams before printing tracebacks. This ensures that
1516 1526 user output doesn't end up interleaved with traceback output.
1517 1527
1518 1528 2007-01-10 Ville Vainio <vivainio@gmail.com>
1519 1529
1520 1530 * Extensions/envpersist.py: Turbocharged %env that remembers
1521 1531 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1522 1532 "%env VISUAL=jed".
1523 1533
1524 1534 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1525 1535
1526 1536 * IPython/iplib.py (showtraceback): ensure that we correctly call
1527 1537 custom handlers in all cases (some with pdb were slipping through,
1528 1538 but I'm not exactly sure why).
1529 1539
1530 1540 * IPython/Debugger.py (Tracer.__init__): added new class to
1531 1541 support set_trace-like usage of IPython's enhanced debugger.
1532 1542
1533 1543 2006-12-24 Ville Vainio <vivainio@gmail.com>
1534 1544
1535 1545 * ipmaker.py: more informative message when ipy_user_conf
1536 1546 import fails (suggest running %upgrade).
1537 1547
1538 1548 * tools/run_ipy_in_profiler.py: Utility to see where
1539 1549 the time during IPython startup is spent.
1540 1550
1541 1551 2006-12-20 Ville Vainio <vivainio@gmail.com>
1542 1552
1543 1553 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1544 1554
1545 1555 * ipapi.py: Add new ipapi method, expand_alias.
1546 1556
1547 1557 * Release.py: Bump up version to 0.7.4.svn
1548 1558
1549 1559 2006-12-17 Ville Vainio <vivainio@gmail.com>
1550 1560
1551 1561 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1552 1562 to work properly on posix too
1553 1563
1554 1564 * Release.py: Update revnum (version is still just 0.7.3).
1555 1565
1556 1566 2006-12-15 Ville Vainio <vivainio@gmail.com>
1557 1567
1558 1568 * scripts/ipython_win_post_install: create ipython.py in
1559 1569 prefix + "/scripts".
1560 1570
1561 1571 * Release.py: Update version to 0.7.3.
1562 1572
1563 1573 2006-12-14 Ville Vainio <vivainio@gmail.com>
1564 1574
1565 1575 * scripts/ipython_win_post_install: Overwrite old shortcuts
1566 1576 if they already exist
1567 1577
1568 1578 * Release.py: release 0.7.3rc2
1569 1579
1570 1580 2006-12-13 Ville Vainio <vivainio@gmail.com>
1571 1581
1572 1582 * Branch and update Release.py for 0.7.3rc1
1573 1583
1574 1584 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1575 1585
1576 1586 * IPython/Shell.py (IPShellWX): update for current WX naming
1577 1587 conventions, to avoid a deprecation warning with current WX
1578 1588 versions. Thanks to a report by Danny Shevitz.
1579 1589
1580 1590 2006-12-12 Ville Vainio <vivainio@gmail.com>
1581 1591
1582 1592 * ipmaker.py: apply david cournapeau's patch to make
1583 1593 import_some work properly even when ipythonrc does
1584 1594 import_some on empty list (it was an old bug!).
1585 1595
1586 1596 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1587 1597 Add deprecation note to ipythonrc and a url to wiki
1588 1598 in ipy_user_conf.py
1589 1599
1590 1600
1591 1601 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1592 1602 as if it was typed on IPython command prompt, i.e.
1593 1603 as IPython script.
1594 1604
1595 1605 * example-magic.py, magic_grepl.py: remove outdated examples
1596 1606
1597 1607 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1598 1608
1599 1609 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1600 1610 is called before any exception has occurred.
1601 1611
1602 1612 2006-12-08 Ville Vainio <vivainio@gmail.com>
1603 1613
1604 1614 * Extensions/ipy_stock_completers.py: fix cd completer
1605 1615 to translate /'s to \'s again.
1606 1616
1607 1617 * completer.py: prevent traceback on file completions w/
1608 1618 backslash.
1609 1619
1610 1620 * Release.py: Update release number to 0.7.3b3 for release
1611 1621
1612 1622 2006-12-07 Ville Vainio <vivainio@gmail.com>
1613 1623
1614 1624 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1615 1625 while executing external code. Provides more shell-like behaviour
1616 1626 and overall better response to ctrl + C / ctrl + break.
1617 1627
1618 1628 * tools/make_tarball.py: new script to create tarball straight from svn
1619 1629 (setup.py sdist doesn't work on win32).
1620 1630
1621 1631 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1622 1632 on dirnames with spaces and use the default completer instead.
1623 1633
1624 1634 * Revision.py: Change version to 0.7.3b2 for release.
1625 1635
1626 1636 2006-12-05 Ville Vainio <vivainio@gmail.com>
1627 1637
1628 1638 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1629 1639 pydb patch 4 (rm debug printing, py 2.5 checking)
1630 1640
1631 1641 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1632 1642 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1633 1643 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1634 1644 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1635 1645 object the cursor was on before the refresh. The command "markrange" is
1636 1646 mapped to "%" now.
1637 1647 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1638 1648
1639 1649 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1640 1650
1641 1651 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1642 1652 interactive debugger on the last traceback, without having to call
1643 1653 %pdb and rerun your code. Made minor changes in various modules,
1644 1654 should automatically recognize pydb if available.
1645 1655
1646 1656 2006-11-28 Ville Vainio <vivainio@gmail.com>
1647 1657
1648 1658 * completer.py: If the text start with !, show file completions
1649 1659 properly. This helps when trying to complete command name
1650 1660 for shell escapes.
1651 1661
1652 1662 2006-11-27 Ville Vainio <vivainio@gmail.com>
1653 1663
1654 1664 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1655 1665 der Walt. Clean up svn and hg completers by using a common
1656 1666 vcs_completer.
1657 1667
1658 1668 2006-11-26 Ville Vainio <vivainio@gmail.com>
1659 1669
1660 1670 * Remove ipconfig and %config; you should use _ip.options structure
1661 1671 directly instead!
1662 1672
1663 1673 * genutils.py: add wrap_deprecated function for deprecating callables
1664 1674
1665 1675 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1666 1676 _ip.system instead. ipalias is redundant.
1667 1677
1668 1678 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1669 1679 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1670 1680 explicit.
1671 1681
1672 1682 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1673 1683 completer. Try it by entering 'hg ' and pressing tab.
1674 1684
1675 1685 * macro.py: Give Macro a useful __repr__ method
1676 1686
1677 1687 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1678 1688
1679 1689 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1680 1690 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1681 1691 we don't get a duplicate ipipe module, where registration of the xrepr
1682 1692 implementation for Text is useless.
1683 1693
1684 1694 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1685 1695
1686 1696 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1687 1697
1688 1698 2006-11-24 Ville Vainio <vivainio@gmail.com>
1689 1699
1690 1700 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1691 1701 try to use "cProfile" instead of the slower pure python
1692 1702 "profile"
1693 1703
1694 1704 2006-11-23 Ville Vainio <vivainio@gmail.com>
1695 1705
1696 1706 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1697 1707 Qt+IPython+Designer link in documentation.
1698 1708
1699 1709 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1700 1710 correct Pdb object to %pydb.
1701 1711
1702 1712
1703 1713 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1704 1714 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1705 1715 generic xrepr(), otherwise the list implementation would kick in.
1706 1716
1707 1717 2006-11-21 Ville Vainio <vivainio@gmail.com>
1708 1718
1709 1719 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1710 1720 with one from UserConfig.
1711 1721
1712 1722 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1713 1723 it was missing which broke the sh profile.
1714 1724
1715 1725 * completer.py: file completer now uses explicit '/' instead
1716 1726 of os.path.join, expansion of 'foo' was broken on win32
1717 1727 if there was one directory with name 'foobar'.
1718 1728
1719 1729 * A bunch of patches from Kirill Smelkov:
1720 1730
1721 1731 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1722 1732
1723 1733 * [patch 7/9] Implement %page -r (page in raw mode) -
1724 1734
1725 1735 * [patch 5/9] ScientificPython webpage has moved
1726 1736
1727 1737 * [patch 4/9] The manual mentions %ds, should be %dhist
1728 1738
1729 1739 * [patch 3/9] Kill old bits from %prun doc.
1730 1740
1731 1741 * [patch 1/9] Fix typos here and there.
1732 1742
1733 1743 2006-11-08 Ville Vainio <vivainio@gmail.com>
1734 1744
1735 1745 * completer.py (attr_matches): catch all exceptions raised
1736 1746 by eval of expr with dots.
1737 1747
1738 1748 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1739 1749
1740 1750 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1741 1751 input if it starts with whitespace. This allows you to paste
1742 1752 indented input from any editor without manually having to type in
1743 1753 the 'if 1:', which is convenient when working interactively.
1744 1754 Slightly modifed version of a patch by Bo Peng
1745 1755 <bpeng-AT-rice.edu>.
1746 1756
1747 1757 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1748 1758
1749 1759 * IPython/irunner.py (main): modified irunner so it automatically
1750 1760 recognizes the right runner to use based on the extension (.py for
1751 1761 python, .ipy for ipython and .sage for sage).
1752 1762
1753 1763 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1754 1764 visible in ipapi as ip.config(), to programatically control the
1755 1765 internal rc object. There's an accompanying %config magic for
1756 1766 interactive use, which has been enhanced to match the
1757 1767 funtionality in ipconfig.
1758 1768
1759 1769 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1760 1770 so it's not just a toggle, it now takes an argument. Add support
1761 1771 for a customizable header when making system calls, as the new
1762 1772 system_header variable in the ipythonrc file.
1763 1773
1764 1774 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1765 1775
1766 1776 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1767 1777 generic functions (using Philip J. Eby's simplegeneric package).
1768 1778 This makes it possible to customize the display of third-party classes
1769 1779 without having to monkeypatch them. xiter() no longer supports a mode
1770 1780 argument and the XMode class has been removed. The same functionality can
1771 1781 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1772 1782 One consequence of the switch to generic functions is that xrepr() and
1773 1783 xattrs() implementation must define the default value for the mode
1774 1784 argument themselves and xattrs() implementations must return real
1775 1785 descriptors.
1776 1786
1777 1787 * IPython/external: This new subpackage will contain all third-party
1778 1788 packages that are bundled with IPython. (The first one is simplegeneric).
1779 1789
1780 1790 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1781 1791 directory which as been dropped in r1703.
1782 1792
1783 1793 * IPython/Extensions/ipipe.py (iless): Fixed.
1784 1794
1785 1795 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1786 1796
1787 1797 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1788 1798
1789 1799 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1790 1800 handling in variable expansion so that shells and magics recognize
1791 1801 function local scopes correctly. Bug reported by Brian.
1792 1802
1793 1803 * scripts/ipython: remove the very first entry in sys.path which
1794 1804 Python auto-inserts for scripts, so that sys.path under IPython is
1795 1805 as similar as possible to that under plain Python.
1796 1806
1797 1807 * IPython/completer.py (IPCompleter.file_matches): Fix
1798 1808 tab-completion so that quotes are not closed unless the completion
1799 1809 is unambiguous. After a request by Stefan. Minor cleanups in
1800 1810 ipy_stock_completers.
1801 1811
1802 1812 2006-11-02 Ville Vainio <vivainio@gmail.com>
1803 1813
1804 1814 * ipy_stock_completers.py: Add %run and %cd completers.
1805 1815
1806 1816 * completer.py: Try running custom completer for both
1807 1817 "foo" and "%foo" if the command is just "foo". Ignore case
1808 1818 when filtering possible completions.
1809 1819
1810 1820 * UserConfig/ipy_user_conf.py: install stock completers as default
1811 1821
1812 1822 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1813 1823 simplified readline history save / restore through a wrapper
1814 1824 function
1815 1825
1816 1826
1817 1827 2006-10-31 Ville Vainio <vivainio@gmail.com>
1818 1828
1819 1829 * strdispatch.py, completer.py, ipy_stock_completers.py:
1820 1830 Allow str_key ("command") in completer hooks. Implement
1821 1831 trivial completer for 'import' (stdlib modules only). Rename
1822 1832 ipy_linux_package_managers.py to ipy_stock_completers.py.
1823 1833 SVN completer.
1824 1834
1825 1835 * Extensions/ledit.py: %magic line editor for easily and
1826 1836 incrementally manipulating lists of strings. The magic command
1827 1837 name is %led.
1828 1838
1829 1839 2006-10-30 Ville Vainio <vivainio@gmail.com>
1830 1840
1831 1841 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1832 1842 Bernsteins's patches for pydb integration.
1833 1843 http://bashdb.sourceforge.net/pydb/
1834 1844
1835 1845 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1836 1846 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1837 1847 custom completer hook to allow the users to implement their own
1838 1848 completers. See ipy_linux_package_managers.py for example. The
1839 1849 hook name is 'complete_command'.
1840 1850
1841 1851 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1842 1852
1843 1853 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1844 1854 Numeric leftovers.
1845 1855
1846 1856 * ipython.el (py-execute-region): apply Stefan's patch to fix
1847 1857 garbled results if the python shell hasn't been previously started.
1848 1858
1849 1859 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1850 1860 pretty generic function and useful for other things.
1851 1861
1852 1862 * IPython/OInspect.py (getsource): Add customizable source
1853 1863 extractor. After a request/patch form W. Stein (SAGE).
1854 1864
1855 1865 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1856 1866 window size to a more reasonable value from what pexpect does,
1857 1867 since their choice causes wrapping bugs with long input lines.
1858 1868
1859 1869 2006-10-28 Ville Vainio <vivainio@gmail.com>
1860 1870
1861 1871 * Magic.py (%run): Save and restore the readline history from
1862 1872 file around %run commands to prevent side effects from
1863 1873 %runned programs that might use readline (e.g. pydb).
1864 1874
1865 1875 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1866 1876 invoking the pydb enhanced debugger.
1867 1877
1868 1878 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1869 1879
1870 1880 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1871 1881 call the base class method and propagate the return value to
1872 1882 ifile. This is now done by path itself.
1873 1883
1874 1884 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1875 1885
1876 1886 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1877 1887 api: set_crash_handler(), to expose the ability to change the
1878 1888 internal crash handler.
1879 1889
1880 1890 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1881 1891 the various parameters of the crash handler so that apps using
1882 1892 IPython as their engine can customize crash handling. Ipmlemented
1883 1893 at the request of SAGE.
1884 1894
1885 1895 2006-10-14 Ville Vainio <vivainio@gmail.com>
1886 1896
1887 1897 * Magic.py, ipython.el: applied first "safe" part of Rocky
1888 1898 Bernstein's patch set for pydb integration.
1889 1899
1890 1900 * Magic.py (%unalias, %alias): %store'd aliases can now be
1891 1901 removed with '%unalias'. %alias w/o args now shows most
1892 1902 interesting (stored / manually defined) aliases last
1893 1903 where they catch the eye w/o scrolling.
1894 1904
1895 1905 * Magic.py (%rehashx), ext_rehashdir.py: files with
1896 1906 'py' extension are always considered executable, even
1897 1907 when not in PATHEXT environment variable.
1898 1908
1899 1909 2006-10-12 Ville Vainio <vivainio@gmail.com>
1900 1910
1901 1911 * jobctrl.py: Add new "jobctrl" extension for spawning background
1902 1912 processes with "&find /". 'import jobctrl' to try it out. Requires
1903 1913 'subprocess' module, standard in python 2.4+.
1904 1914
1905 1915 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1906 1916 so if foo -> bar and bar -> baz, then foo -> baz.
1907 1917
1908 1918 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1909 1919
1910 1920 * IPython/Magic.py (Magic.parse_options): add a new posix option
1911 1921 to allow parsing of input args in magics that doesn't strip quotes
1912 1922 (if posix=False). This also closes %timeit bug reported by
1913 1923 Stefan.
1914 1924
1915 1925 2006-10-03 Ville Vainio <vivainio@gmail.com>
1916 1926
1917 1927 * iplib.py (raw_input, interact): Return ValueError catching for
1918 1928 raw_input. Fixes infinite loop for sys.stdin.close() or
1919 1929 sys.stdout.close().
1920 1930
1921 1931 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1922 1932
1923 1933 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1924 1934 to help in handling doctests. irunner is now pretty useful for
1925 1935 running standalone scripts and simulate a full interactive session
1926 1936 in a format that can be then pasted as a doctest.
1927 1937
1928 1938 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1929 1939 on top of the default (useless) ones. This also fixes the nasty
1930 1940 way in which 2.5's Quitter() exits (reverted [1785]).
1931 1941
1932 1942 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1933 1943 2.5.
1934 1944
1935 1945 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1936 1946 color scheme is updated as well when color scheme is changed
1937 1947 interactively.
1938 1948
1939 1949 2006-09-27 Ville Vainio <vivainio@gmail.com>
1940 1950
1941 1951 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1942 1952 infinite loop and just exit. It's a hack, but will do for a while.
1943 1953
1944 1954 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1945 1955
1946 1956 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1947 1957 the constructor, this makes it possible to get a list of only directories
1948 1958 or only files.
1949 1959
1950 1960 2006-08-12 Ville Vainio <vivainio@gmail.com>
1951 1961
1952 1962 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1953 1963 they broke unittest
1954 1964
1955 1965 2006-08-11 Ville Vainio <vivainio@gmail.com>
1956 1966
1957 1967 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1958 1968 by resolving issue properly, i.e. by inheriting FakeModule
1959 1969 from types.ModuleType. Pickling ipython interactive data
1960 1970 should still work as usual (testing appreciated).
1961 1971
1962 1972 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1963 1973
1964 1974 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1965 1975 running under python 2.3 with code from 2.4 to fix a bug with
1966 1976 help(). Reported by the Debian maintainers, Norbert Tretkowski
1967 1977 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1968 1978 <afayolle-AT-debian.org>.
1969 1979
1970 1980 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1971 1981
1972 1982 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1973 1983 (which was displaying "quit" twice).
1974 1984
1975 1985 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1976 1986
1977 1987 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1978 1988 the mode argument).
1979 1989
1980 1990 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1981 1991
1982 1992 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1983 1993 not running under IPython.
1984 1994
1985 1995 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1986 1996 and make it iterable (iterating over the attribute itself). Add two new
1987 1997 magic strings for __xattrs__(): If the string starts with "-", the attribute
1988 1998 will not be displayed in ibrowse's detail view (but it can still be
1989 1999 iterated over). This makes it possible to add attributes that are large
1990 2000 lists or generator methods to the detail view. Replace magic attribute names
1991 2001 and _attrname() and _getattr() with "descriptors": For each type of magic
1992 2002 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1993 2003 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1994 2004 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1995 2005 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1996 2006 are still supported.
1997 2007
1998 2008 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1999 2009 fails in ibrowse.fetch(), the exception object is added as the last item
2000 2010 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
2001 2011 a generator throws an exception midway through execution.
2002 2012
2003 2013 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
2004 2014 encoding into methods.
2005 2015
2006 2016 2006-07-26 Ville Vainio <vivainio@gmail.com>
2007 2017
2008 2018 * iplib.py: history now stores multiline input as single
2009 2019 history entries. Patch by Jorgen Cederlof.
2010 2020
2011 2021 2006-07-18 Walter Doerwald <walter@livinglogic.de>
2012 2022
2013 2023 * IPython/Extensions/ibrowse.py: Make cursor visible over
2014 2024 non existing attributes.
2015 2025
2016 2026 2006-07-14 Walter Doerwald <walter@livinglogic.de>
2017 2027
2018 2028 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
2019 2029 error output of the running command doesn't mess up the screen.
2020 2030
2021 2031 2006-07-13 Walter Doerwald <walter@livinglogic.de>
2022 2032
2023 2033 * IPython/Extensions/ipipe.py (isort): Make isort usable without
2024 2034 argument. This sorts the items themselves.
2025 2035
2026 2036 2006-07-12 Walter Doerwald <walter@livinglogic.de>
2027 2037
2028 2038 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
2029 2039 Compile expression strings into code objects. This should speed
2030 2040 up ifilter and friends somewhat.
2031 2041
2032 2042 2006-07-08 Ville Vainio <vivainio@gmail.com>
2033 2043
2034 2044 * Magic.py: %cpaste now strips > from the beginning of lines
2035 2045 to ease pasting quoted code from emails. Contributed by
2036 2046 Stefan van der Walt.
2037 2047
2038 2048 2006-06-29 Ville Vainio <vivainio@gmail.com>
2039 2049
2040 2050 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
2041 2051 mode, patch contributed by Darren Dale. NEEDS TESTING!
2042 2052
2043 2053 2006-06-28 Walter Doerwald <walter@livinglogic.de>
2044 2054
2045 2055 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
2046 2056 a blue background. Fix fetching new display rows when the browser
2047 2057 scrolls more than a screenful (e.g. by using the goto command).
2048 2058
2049 2059 2006-06-27 Ville Vainio <vivainio@gmail.com>
2050 2060
2051 2061 * Magic.py (_inspect, _ofind) Apply David Huard's
2052 2062 patch for displaying the correct docstring for 'property'
2053 2063 attributes.
2054 2064
2055 2065 2006-06-23 Walter Doerwald <walter@livinglogic.de>
2056 2066
2057 2067 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
2058 2068 commands into the methods implementing them.
2059 2069
2060 2070 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
2061 2071
2062 2072 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
2063 2073 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
2064 2074 autoindent support was authored by Jin Liu.
2065 2075
2066 2076 2006-06-22 Walter Doerwald <walter@livinglogic.de>
2067 2077
2068 2078 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
2069 2079 for keymaps with a custom class that simplifies handling.
2070 2080
2071 2081 2006-06-19 Walter Doerwald <walter@livinglogic.de>
2072 2082
2073 2083 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
2074 2084 resizing. This requires Python 2.5 to work.
2075 2085
2076 2086 2006-06-16 Walter Doerwald <walter@livinglogic.de>
2077 2087
2078 2088 * IPython/Extensions/ibrowse.py: Add two new commands to
2079 2089 ibrowse: "hideattr" (mapped to "h") hides the attribute under
2080 2090 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
2081 2091 attributes again. Remapped the help command to "?". Display
2082 2092 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
2083 2093 as keys for the "home" and "end" commands. Add three new commands
2084 2094 to the input mode for "find" and friends: "delend" (CTRL-K)
2085 2095 deletes to the end of line. "incsearchup" searches upwards in the
2086 2096 command history for an input that starts with the text before the cursor.
2087 2097 "incsearchdown" does the same downwards. Removed a bogus mapping of
2088 2098 the x key to "delete".
2089 2099
2090 2100 2006-06-15 Ville Vainio <vivainio@gmail.com>
2091 2101
2092 2102 * iplib.py, hooks.py: Added new generate_prompt hook that can be
2093 2103 used to create prompts dynamically, instead of the "old" way of
2094 2104 assigning "magic" strings to prompt_in1 and prompt_in2. The old
2095 2105 way still works (it's invoked by the default hook), of course.
2096 2106
2097 2107 * Prompts.py: added generate_output_prompt hook for altering output
2098 2108 prompt
2099 2109
2100 2110 * Release.py: Changed version string to 0.7.3.svn.
2101 2111
2102 2112 2006-06-15 Walter Doerwald <walter@livinglogic.de>
2103 2113
2104 2114 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
2105 2115 the call to fetch() always tries to fetch enough data for at least one
2106 2116 full screen. This makes it possible to simply call moveto(0,0,True) in
2107 2117 the constructor. Fix typos and removed the obsolete goto attribute.
2108 2118
2109 2119 2006-06-12 Ville Vainio <vivainio@gmail.com>
2110 2120
2111 2121 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
2112 2122 allowing $variable interpolation within multiline statements,
2113 2123 though so far only with "sh" profile for a testing period.
2114 2124 The patch also enables splitting long commands with \ but it
2115 2125 doesn't work properly yet.
2116 2126
2117 2127 2006-06-12 Walter Doerwald <walter@livinglogic.de>
2118 2128
2119 2129 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
2120 2130 input history and the position of the cursor in the input history for
2121 2131 the find, findbackwards and goto command.
2122 2132
2123 2133 2006-06-10 Walter Doerwald <walter@livinglogic.de>
2124 2134
2125 2135 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
2126 2136 implements the basic functionality of browser commands that require
2127 2137 input. Reimplement the goto, find and findbackwards commands as
2128 2138 subclasses of _CommandInput. Add an input history and keymaps to those
2129 2139 commands. Add "\r" as a keyboard shortcut for the enterdefault and
2130 2140 execute commands.
2131 2141
2132 2142 2006-06-07 Ville Vainio <vivainio@gmail.com>
2133 2143
2134 2144 * iplib.py: ipython mybatch.ipy exits ipython immediately after
2135 2145 running the batch files instead of leaving the session open.
2136 2146
2137 2147 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
2138 2148
2139 2149 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
2140 2150 the original fix was incomplete. Patch submitted by W. Maier.
2141 2151
2142 2152 2006-06-07 Ville Vainio <vivainio@gmail.com>
2143 2153
2144 2154 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
2145 2155 Confirmation prompts can be supressed by 'quiet' option.
2146 2156 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
2147 2157
2148 2158 2006-06-06 *** Released version 0.7.2
2149 2159
2150 2160 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
2151 2161
2152 2162 * IPython/Release.py (version): Made 0.7.2 final for release.
2153 2163 Repo tagged and release cut.
2154 2164
2155 2165 2006-06-05 Ville Vainio <vivainio@gmail.com>
2156 2166
2157 2167 * Magic.py (magic_rehashx): Honor no_alias list earlier in
2158 2168 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
2159 2169
2160 2170 * upgrade_dir.py: try import 'path' module a bit harder
2161 2171 (for %upgrade)
2162 2172
2163 2173 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
2164 2174
2165 2175 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
2166 2176 instead of looping 20 times.
2167 2177
2168 2178 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
2169 2179 correctly at initialization time. Bug reported by Krishna Mohan
2170 2180 Gundu <gkmohan-AT-gmail.com> on the user list.
2171 2181
2172 2182 * IPython/Release.py (version): Mark 0.7.2 version to start
2173 2183 testing for release on 06/06.
2174 2184
2175 2185 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
2176 2186
2177 2187 * scripts/irunner: thin script interface so users don't have to
2178 2188 find the module and call it as an executable, since modules rarely
2179 2189 live in people's PATH.
2180 2190
2181 2191 * IPython/irunner.py (InteractiveRunner.__init__): added
2182 2192 delaybeforesend attribute to control delays with newer versions of
2183 2193 pexpect. Thanks to detailed help from pexpect's author, Noah
2184 2194 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
2185 2195 correctly (it works in NoColor mode).
2186 2196
2187 2197 * IPython/iplib.py (handle_normal): fix nasty crash reported on
2188 2198 SAGE list, from improper log() calls.
2189 2199
2190 2200 2006-05-31 Ville Vainio <vivainio@gmail.com>
2191 2201
2192 2202 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
2193 2203 with args in parens to work correctly with dirs that have spaces.
2194 2204
2195 2205 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
2196 2206
2197 2207 * IPython/Logger.py (Logger.logstart): add option to log raw input
2198 2208 instead of the processed one. A -r flag was added to the
2199 2209 %logstart magic used for controlling logging.
2200 2210
2201 2211 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
2202 2212
2203 2213 * IPython/iplib.py (InteractiveShell.__init__): add check for the
2204 2214 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
2205 2215 recognize the option. After a bug report by Will Maier. This
2206 2216 closes #64 (will do it after confirmation from W. Maier).
2207 2217
2208 2218 * IPython/irunner.py: New module to run scripts as if manually
2209 2219 typed into an interactive environment, based on pexpect. After a
2210 2220 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
2211 2221 ipython-user list. Simple unittests in the tests/ directory.
2212 2222
2213 2223 * tools/release: add Will Maier, OpenBSD port maintainer, to
2214 2224 recepients list. We are now officially part of the OpenBSD ports:
2215 2225 http://www.openbsd.org/ports.html ! Many thanks to Will for the
2216 2226 work.
2217 2227
2218 2228 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
2219 2229
2220 2230 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
2221 2231 so that it doesn't break tkinter apps.
2222 2232
2223 2233 * IPython/iplib.py (_prefilter): fix bug where aliases would
2224 2234 shadow variables when autocall was fully off. Reported by SAGE
2225 2235 author William Stein.
2226 2236
2227 2237 * IPython/OInspect.py (Inspector.__init__): add a flag to control
2228 2238 at what detail level strings are computed when foo? is requested.
2229 2239 This allows users to ask for example that the string form of an
2230 2240 object is only computed when foo?? is called, or even never, by
2231 2241 setting the object_info_string_level >= 2 in the configuration
2232 2242 file. This new option has been added and documented. After a
2233 2243 request by SAGE to be able to control the printing of very large
2234 2244 objects more easily.
2235 2245
2236 2246 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
2237 2247
2238 2248 * IPython/ipmaker.py (make_IPython): remove the ipython call path
2239 2249 from sys.argv, to be 100% consistent with how Python itself works
2240 2250 (as seen for example with python -i file.py). After a bug report
2241 2251 by Jeffrey Collins.
2242 2252
2243 2253 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
2244 2254 nasty bug which was preventing custom namespaces with -pylab,
2245 2255 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
2246 2256 compatibility (long gone from mpl).
2247 2257
2248 2258 * IPython/ipapi.py (make_session): name change: create->make. We
2249 2259 use make in other places (ipmaker,...), it's shorter and easier to
2250 2260 type and say, etc. I'm trying to clean things before 0.7.2 so
2251 2261 that I can keep things stable wrt to ipapi in the chainsaw branch.
2252 2262
2253 2263 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
2254 2264 python-mode recognizes our debugger mode. Add support for
2255 2265 autoindent inside (X)emacs. After a patch sent in by Jin Liu
2256 2266 <m.liu.jin-AT-gmail.com> originally written by
2257 2267 doxgen-AT-newsmth.net (with minor modifications for xemacs
2258 2268 compatibility)
2259 2269
2260 2270 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
2261 2271 tracebacks when walking the stack so that the stack tracking system
2262 2272 in emacs' python-mode can identify the frames correctly.
2263 2273
2264 2274 * IPython/ipmaker.py (make_IPython): make the internal (and
2265 2275 default config) autoedit_syntax value false by default. Too many
2266 2276 users have complained to me (both on and off-list) about problems
2267 2277 with this option being on by default, so I'm making it default to
2268 2278 off. It can still be enabled by anyone via the usual mechanisms.
2269 2279
2270 2280 * IPython/completer.py (Completer.attr_matches): add support for
2271 2281 PyCrust-style _getAttributeNames magic method. Patch contributed
2272 2282 by <mscott-AT-goldenspud.com>. Closes #50.
2273 2283
2274 2284 * IPython/iplib.py (InteractiveShell.__init__): remove the
2275 2285 deletion of exit/quit from __builtin__, which can break
2276 2286 third-party tools like the Zope debugging console. The
2277 2287 %exit/%quit magics remain. In general, it's probably a good idea
2278 2288 not to delete anything from __builtin__, since we never know what
2279 2289 that will break. In any case, python now (for 2.5) will support
2280 2290 'real' exit/quit, so this issue is moot. Closes #55.
2281 2291
2282 2292 * IPython/genutils.py (with_obj): rename the 'with' function to
2283 2293 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
2284 2294 becomes a language keyword. Closes #53.
2285 2295
2286 2296 * IPython/FakeModule.py (FakeModule.__init__): add a proper
2287 2297 __file__ attribute to this so it fools more things into thinking
2288 2298 it is a real module. Closes #59.
2289 2299
2290 2300 * IPython/Magic.py (magic_edit): add -n option to open the editor
2291 2301 at a specific line number. After a patch by Stefan van der Walt.
2292 2302
2293 2303 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
2294 2304
2295 2305 * IPython/iplib.py (edit_syntax_error): fix crash when for some
2296 2306 reason the file could not be opened. After automatic crash
2297 2307 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
2298 2308 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
2299 2309 (_should_recompile): Don't fire editor if using %bg, since there
2300 2310 is no file in the first place. From the same report as above.
2301 2311 (raw_input): protect against faulty third-party prefilters. After
2302 2312 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
2303 2313 while running under SAGE.
2304 2314
2305 2315 2006-05-23 Ville Vainio <vivainio@gmail.com>
2306 2316
2307 2317 * ipapi.py: Stripped down ip.to_user_ns() to work only as
2308 2318 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
2309 2319 now returns None (again), unless dummy is specifically allowed by
2310 2320 ipapi.get(allow_dummy=True).
2311 2321
2312 2322 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
2313 2323
2314 2324 * IPython: remove all 2.2-compatibility objects and hacks from
2315 2325 everywhere, since we only support 2.3 at this point. Docs
2316 2326 updated.
2317 2327
2318 2328 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
2319 2329 Anything requiring extra validation can be turned into a Python
2320 2330 property in the future. I used a property for the db one b/c
2321 2331 there was a nasty circularity problem with the initialization
2322 2332 order, which right now I don't have time to clean up.
2323 2333
2324 2334 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
2325 2335 another locking bug reported by Jorgen. I'm not 100% sure though,
2326 2336 so more testing is needed...
2327 2337
2328 2338 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
2329 2339
2330 2340 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
2331 2341 local variables from any routine in user code (typically executed
2332 2342 with %run) directly into the interactive namespace. Very useful
2333 2343 when doing complex debugging.
2334 2344 (IPythonNotRunning): Changed the default None object to a dummy
2335 2345 whose attributes can be queried as well as called without
2336 2346 exploding, to ease writing code which works transparently both in
2337 2347 and out of ipython and uses some of this API.
2338 2348
2339 2349 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
2340 2350
2341 2351 * IPython/hooks.py (result_display): Fix the fact that our display
2342 2352 hook was using str() instead of repr(), as the default python
2343 2353 console does. This had gone unnoticed b/c it only happened if
2344 2354 %Pprint was off, but the inconsistency was there.
2345 2355
2346 2356 2006-05-15 Ville Vainio <vivainio@gmail.com>
2347 2357
2348 2358 * Oinspect.py: Only show docstring for nonexisting/binary files
2349 2359 when doing object??, closing ticket #62
2350 2360
2351 2361 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
2352 2362
2353 2363 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
2354 2364 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
2355 2365 was being released in a routine which hadn't checked if it had
2356 2366 been the one to acquire it.
2357 2367
2358 2368 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
2359 2369
2360 2370 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2361 2371
2362 2372 2006-04-11 Ville Vainio <vivainio@gmail.com>
2363 2373
2364 2374 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
2365 2375 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
2366 2376 prefilters, allowing stuff like magics and aliases in the file.
2367 2377
2368 2378 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
2369 2379 added. Supported now are "%clear in" and "%clear out" (clear input and
2370 2380 output history, respectively). Also fixed CachedOutput.flush to
2371 2381 properly flush the output cache.
2372 2382
2373 2383 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
2374 2384 half-success (and fail explicitly).
2375 2385
2376 2386 2006-03-28 Ville Vainio <vivainio@gmail.com>
2377 2387
2378 2388 * iplib.py: Fix quoting of aliases so that only argless ones
2379 2389 are quoted
2380 2390
2381 2391 2006-03-28 Ville Vainio <vivainio@gmail.com>
2382 2392
2383 2393 * iplib.py: Quote aliases with spaces in the name.
2384 2394 "c:\program files\blah\bin" is now legal alias target.
2385 2395
2386 2396 * ext_rehashdir.py: Space no longer allowed as arg
2387 2397 separator, since space is legal in path names.
2388 2398
2389 2399 2006-03-16 Ville Vainio <vivainio@gmail.com>
2390 2400
2391 2401 * upgrade_dir.py: Take path.py from Extensions, correcting
2392 2402 %upgrade magic
2393 2403
2394 2404 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
2395 2405
2396 2406 * hooks.py: Only enclose editor binary in quotes if legal and
2397 2407 necessary (space in the name, and is an existing file). Fixes a bug
2398 2408 reported by Zachary Pincus.
2399 2409
2400 2410 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
2401 2411
2402 2412 * Manual: thanks to a tip on proper color handling for Emacs, by
2403 2413 Eric J Haywiser <ejh1-AT-MIT.EDU>.
2404 2414
2405 2415 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
2406 2416 by applying the provided patch. Thanks to Liu Jin
2407 2417 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
2408 2418 XEmacs/Linux, I'm trusting the submitter that it actually helps
2409 2419 under win32/GNU Emacs. Will revisit if any problems are reported.
2410 2420
2411 2421 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2412 2422
2413 2423 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
2414 2424 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2415 2425
2416 2426 2006-03-12 Ville Vainio <vivainio@gmail.com>
2417 2427
2418 2428 * Magic.py (magic_timeit): Added %timeit magic, contributed by
2419 2429 Torsten Marek.
2420 2430
2421 2431 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
2422 2432
2423 2433 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
2424 2434 line ranges works again.
2425 2435
2426 2436 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
2427 2437
2428 2438 * IPython/iplib.py (showtraceback): add back sys.last_traceback
2429 2439 and friends, after a discussion with Zach Pincus on ipython-user.
2430 2440 I'm not 100% sure, but after thinking about it quite a bit, it may
2431 2441 be OK. Testing with the multithreaded shells didn't reveal any
2432 2442 problems, but let's keep an eye out.
2433 2443
2434 2444 In the process, I fixed a few things which were calling
2435 2445 self.InteractiveTB() directly (like safe_execfile), which is a
2436 2446 mistake: ALL exception reporting should be done by calling
2437 2447 self.showtraceback(), which handles state and tab-completion and
2438 2448 more.
2439 2449
2440 2450 2006-03-01 Ville Vainio <vivainio@gmail.com>
2441 2451
2442 2452 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
2443 2453 To use, do "from ipipe import *".
2444 2454
2445 2455 2006-02-24 Ville Vainio <vivainio@gmail.com>
2446 2456
2447 2457 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
2448 2458 "cleanly" and safely than the older upgrade mechanism.
2449 2459
2450 2460 2006-02-21 Ville Vainio <vivainio@gmail.com>
2451 2461
2452 2462 * Magic.py: %save works again.
2453 2463
2454 2464 2006-02-15 Ville Vainio <vivainio@gmail.com>
2455 2465
2456 2466 * Magic.py: %Pprint works again
2457 2467
2458 2468 * Extensions/ipy_sane_defaults.py: Provide everything provided
2459 2469 in default ipythonrc, to make it possible to have a completely empty
2460 2470 ipythonrc (and thus completely rc-file free configuration)
2461 2471
2462 2472 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2463 2473
2464 2474 * IPython/hooks.py (editor): quote the call to the editor command,
2465 2475 to allow commands with spaces in them. Problem noted by watching
2466 2476 Ian Oswald's video about textpad under win32 at
2467 2477 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2468 2478
2469 2479 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2470 2480 describing magics (we haven't used @ for a loong time).
2471 2481
2472 2482 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2473 2483 contributed by marienz to close
2474 2484 http://www.scipy.net/roundup/ipython/issue53.
2475 2485
2476 2486 2006-02-10 Ville Vainio <vivainio@gmail.com>
2477 2487
2478 2488 * genutils.py: getoutput now works in win32 too
2479 2489
2480 2490 * completer.py: alias and magic completion only invoked
2481 2491 at the first "item" in the line, to avoid "cd %store"
2482 2492 nonsense.
2483 2493
2484 2494 2006-02-09 Ville Vainio <vivainio@gmail.com>
2485 2495
2486 2496 * test/*: Added a unit testing framework (finally).
2487 2497 '%run runtests.py' to run test_*.
2488 2498
2489 2499 * ipapi.py: Exposed runlines and set_custom_exc
2490 2500
2491 2501 2006-02-07 Ville Vainio <vivainio@gmail.com>
2492 2502
2493 2503 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2494 2504 instead use "f(1 2)" as before.
2495 2505
2496 2506 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2497 2507
2498 2508 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2499 2509 facilities, for demos processed by the IPython input filter
2500 2510 (IPythonDemo), and for running a script one-line-at-a-time as a
2501 2511 demo, both for pure Python (LineDemo) and for IPython-processed
2502 2512 input (IPythonLineDemo). After a request by Dave Kohel, from the
2503 2513 SAGE team.
2504 2514 (Demo.edit): added an edit() method to the demo objects, to edit
2505 2515 the in-memory copy of the last executed block.
2506 2516
2507 2517 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2508 2518 processing to %edit, %macro and %save. These commands can now be
2509 2519 invoked on the unprocessed input as it was typed by the user
2510 2520 (without any prefilters applied). After requests by the SAGE team
2511 2521 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2512 2522
2513 2523 2006-02-01 Ville Vainio <vivainio@gmail.com>
2514 2524
2515 2525 * setup.py, eggsetup.py: easy_install ipython==dev works
2516 2526 correctly now (on Linux)
2517 2527
2518 2528 * ipy_user_conf,ipmaker: user config changes, removed spurious
2519 2529 warnings
2520 2530
2521 2531 * iplib: if rc.banner is string, use it as is.
2522 2532
2523 2533 * Magic: %pycat accepts a string argument and pages it's contents.
2524 2534
2525 2535
2526 2536 2006-01-30 Ville Vainio <vivainio@gmail.com>
2527 2537
2528 2538 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2529 2539 Now %store and bookmarks work through PickleShare, meaning that
2530 2540 concurrent access is possible and all ipython sessions see the
2531 2541 same database situation all the time, instead of snapshot of
2532 2542 the situation when the session was started. Hence, %bookmark
2533 2543 results are immediately accessible from othes sessions. The database
2534 2544 is also available for use by user extensions. See:
2535 2545 http://www.python.org/pypi/pickleshare
2536 2546
2537 2547 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2538 2548
2539 2549 * aliases can now be %store'd
2540 2550
2541 2551 * path.py moved to Extensions so that pickleshare does not need
2542 2552 IPython-specific import. Extensions added to pythonpath right
2543 2553 at __init__.
2544 2554
2545 2555 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2546 2556 called with _ip.system and the pre-transformed command string.
2547 2557
2548 2558 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2549 2559
2550 2560 * IPython/iplib.py (interact): Fix that we were not catching
2551 2561 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2552 2562 logic here had to change, but it's fixed now.
2553 2563
2554 2564 2006-01-29 Ville Vainio <vivainio@gmail.com>
2555 2565
2556 2566 * iplib.py: Try to import pyreadline on Windows.
2557 2567
2558 2568 2006-01-27 Ville Vainio <vivainio@gmail.com>
2559 2569
2560 2570 * iplib.py: Expose ipapi as _ip in builtin namespace.
2561 2571 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2562 2572 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2563 2573 syntax now produce _ip.* variant of the commands.
2564 2574
2565 2575 * "_ip.options().autoedit_syntax = 2" automatically throws
2566 2576 user to editor for syntax error correction without prompting.
2567 2577
2568 2578 2006-01-27 Ville Vainio <vivainio@gmail.com>
2569 2579
2570 2580 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2571 2581 'ipython' at argv[0]) executed through command line.
2572 2582 NOTE: this DEPRECATES calling ipython with multiple scripts
2573 2583 ("ipython a.py b.py c.py")
2574 2584
2575 2585 * iplib.py, hooks.py: Added configurable input prefilter,
2576 2586 named 'input_prefilter'. See ext_rescapture.py for example
2577 2587 usage.
2578 2588
2579 2589 * ext_rescapture.py, Magic.py: Better system command output capture
2580 2590 through 'var = !ls' (deprecates user-visible %sc). Same notation
2581 2591 applies for magics, 'var = %alias' assigns alias list to var.
2582 2592
2583 2593 * ipapi.py: added meta() for accessing extension-usable data store.
2584 2594
2585 2595 * iplib.py: added InteractiveShell.getapi(). New magics should be
2586 2596 written doing self.getapi() instead of using the shell directly.
2587 2597
2588 2598 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2589 2599 %store foo >> ~/myfoo.txt to store variables to files (in clean
2590 2600 textual form, not a restorable pickle).
2591 2601
2592 2602 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2593 2603
2594 2604 * usage.py, Magic.py: added %quickref
2595 2605
2596 2606 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2597 2607
2598 2608 * GetoptErrors when invoking magics etc. with wrong args
2599 2609 are now more helpful:
2600 2610 GetoptError: option -l not recognized (allowed: "qb" )
2601 2611
2602 2612 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2603 2613
2604 2614 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2605 2615 computationally intensive blocks don't appear to stall the demo.
2606 2616
2607 2617 2006-01-24 Ville Vainio <vivainio@gmail.com>
2608 2618
2609 2619 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2610 2620 value to manipulate resulting history entry.
2611 2621
2612 2622 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2613 2623 to instance methods of IPApi class, to make extending an embedded
2614 2624 IPython feasible. See ext_rehashdir.py for example usage.
2615 2625
2616 2626 * Merged 1071-1076 from branches/0.7.1
2617 2627
2618 2628
2619 2629 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2620 2630
2621 2631 * tools/release (daystamp): Fix build tools to use the new
2622 2632 eggsetup.py script to build lightweight eggs.
2623 2633
2624 2634 * Applied changesets 1062 and 1064 before 0.7.1 release.
2625 2635
2626 2636 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2627 2637 see the raw input history (without conversions like %ls ->
2628 2638 ipmagic("ls")). After a request from W. Stein, SAGE
2629 2639 (http://modular.ucsd.edu/sage) developer. This information is
2630 2640 stored in the input_hist_raw attribute of the IPython instance, so
2631 2641 developers can access it if needed (it's an InputList instance).
2632 2642
2633 2643 * Versionstring = 0.7.2.svn
2634 2644
2635 2645 * eggsetup.py: A separate script for constructing eggs, creates
2636 2646 proper launch scripts even on Windows (an .exe file in
2637 2647 \python24\scripts).
2638 2648
2639 2649 * ipapi.py: launch_new_instance, launch entry point needed for the
2640 2650 egg.
2641 2651
2642 2652 2006-01-23 Ville Vainio <vivainio@gmail.com>
2643 2653
2644 2654 * Added %cpaste magic for pasting python code
2645 2655
2646 2656 2006-01-22 Ville Vainio <vivainio@gmail.com>
2647 2657
2648 2658 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2649 2659
2650 2660 * Versionstring = 0.7.2.svn
2651 2661
2652 2662 * eggsetup.py: A separate script for constructing eggs, creates
2653 2663 proper launch scripts even on Windows (an .exe file in
2654 2664 \python24\scripts).
2655 2665
2656 2666 * ipapi.py: launch_new_instance, launch entry point needed for the
2657 2667 egg.
2658 2668
2659 2669 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2660 2670
2661 2671 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2662 2672 %pfile foo would print the file for foo even if it was a binary.
2663 2673 Now, extensions '.so' and '.dll' are skipped.
2664 2674
2665 2675 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2666 2676 bug, where macros would fail in all threaded modes. I'm not 100%
2667 2677 sure, so I'm going to put out an rc instead of making a release
2668 2678 today, and wait for feedback for at least a few days.
2669 2679
2670 2680 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2671 2681 it...) the handling of pasting external code with autoindent on.
2672 2682 To get out of a multiline input, the rule will appear for most
2673 2683 users unchanged: two blank lines or change the indent level
2674 2684 proposed by IPython. But there is a twist now: you can
2675 2685 add/subtract only *one or two spaces*. If you add/subtract three
2676 2686 or more (unless you completely delete the line), IPython will
2677 2687 accept that line, and you'll need to enter a second one of pure
2678 2688 whitespace. I know it sounds complicated, but I can't find a
2679 2689 different solution that covers all the cases, with the right
2680 2690 heuristics. Hopefully in actual use, nobody will really notice
2681 2691 all these strange rules and things will 'just work'.
2682 2692
2683 2693 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2684 2694
2685 2695 * IPython/iplib.py (interact): catch exceptions which can be
2686 2696 triggered asynchronously by signal handlers. Thanks to an
2687 2697 automatic crash report, submitted by Colin Kingsley
2688 2698 <tercel-AT-gentoo.org>.
2689 2699
2690 2700 2006-01-20 Ville Vainio <vivainio@gmail.com>
2691 2701
2692 2702 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2693 2703 (%rehashdir, very useful, try it out) of how to extend ipython
2694 2704 with new magics. Also added Extensions dir to pythonpath to make
2695 2705 importing extensions easy.
2696 2706
2697 2707 * %store now complains when trying to store interactively declared
2698 2708 classes / instances of those classes.
2699 2709
2700 2710 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2701 2711 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2702 2712 if they exist, and ipy_user_conf.py with some defaults is created for
2703 2713 the user.
2704 2714
2705 2715 * Startup rehashing done by the config file, not InterpreterExec.
2706 2716 This means system commands are available even without selecting the
2707 2717 pysh profile. It's the sensible default after all.
2708 2718
2709 2719 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2710 2720
2711 2721 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2712 2722 multiline code with autoindent on working. But I am really not
2713 2723 sure, so this needs more testing. Will commit a debug-enabled
2714 2724 version for now, while I test it some more, so that Ville and
2715 2725 others may also catch any problems. Also made
2716 2726 self.indent_current_str() a method, to ensure that there's no
2717 2727 chance of the indent space count and the corresponding string
2718 2728 falling out of sync. All code needing the string should just call
2719 2729 the method.
2720 2730
2721 2731 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2722 2732
2723 2733 * IPython/Magic.py (magic_edit): fix check for when users don't
2724 2734 save their output files, the try/except was in the wrong section.
2725 2735
2726 2736 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2727 2737
2728 2738 * IPython/Magic.py (magic_run): fix __file__ global missing from
2729 2739 script's namespace when executed via %run. After a report by
2730 2740 Vivian.
2731 2741
2732 2742 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2733 2743 when using python 2.4. The parent constructor changed in 2.4, and
2734 2744 we need to track it directly (we can't call it, as it messes up
2735 2745 readline and tab-completion inside our pdb would stop working).
2736 2746 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2737 2747
2738 2748 2006-01-16 Ville Vainio <vivainio@gmail.com>
2739 2749
2740 2750 * Ipython/magic.py: Reverted back to old %edit functionality
2741 2751 that returns file contents on exit.
2742 2752
2743 2753 * IPython/path.py: Added Jason Orendorff's "path" module to
2744 2754 IPython tree, http://www.jorendorff.com/articles/python/path/.
2745 2755 You can get path objects conveniently through %sc, and !!, e.g.:
2746 2756 sc files=ls
2747 2757 for p in files.paths: # or files.p
2748 2758 print p,p.mtime
2749 2759
2750 2760 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2751 2761 now work again without considering the exclusion regexp -
2752 2762 hence, things like ',foo my/path' turn to 'foo("my/path")'
2753 2763 instead of syntax error.
2754 2764
2755 2765
2756 2766 2006-01-14 Ville Vainio <vivainio@gmail.com>
2757 2767
2758 2768 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2759 2769 ipapi decorators for python 2.4 users, options() provides access to rc
2760 2770 data.
2761 2771
2762 2772 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2763 2773 as path separators (even on Linux ;-). Space character after
2764 2774 backslash (as yielded by tab completer) is still space;
2765 2775 "%cd long\ name" works as expected.
2766 2776
2767 2777 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2768 2778 as "chain of command", with priority. API stays the same,
2769 2779 TryNext exception raised by a hook function signals that
2770 2780 current hook failed and next hook should try handling it, as
2771 2781 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2772 2782 requested configurable display hook, which is now implemented.
2773 2783
2774 2784 2006-01-13 Ville Vainio <vivainio@gmail.com>
2775 2785
2776 2786 * IPython/platutils*.py: platform specific utility functions,
2777 2787 so far only set_term_title is implemented (change terminal
2778 2788 label in windowing systems). %cd now changes the title to
2779 2789 current dir.
2780 2790
2781 2791 * IPython/Release.py: Added myself to "authors" list,
2782 2792 had to create new files.
2783 2793
2784 2794 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2785 2795 shell escape; not a known bug but had potential to be one in the
2786 2796 future.
2787 2797
2788 2798 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2789 2799 extension API for IPython! See the module for usage example. Fix
2790 2800 OInspect for docstring-less magic functions.
2791 2801
2792 2802
2793 2803 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2794 2804
2795 2805 * IPython/iplib.py (raw_input): temporarily deactivate all
2796 2806 attempts at allowing pasting of code with autoindent on. It
2797 2807 introduced bugs (reported by Prabhu) and I can't seem to find a
2798 2808 robust combination which works in all cases. Will have to revisit
2799 2809 later.
2800 2810
2801 2811 * IPython/genutils.py: remove isspace() function. We've dropped
2802 2812 2.2 compatibility, so it's OK to use the string method.
2803 2813
2804 2814 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2805 2815
2806 2816 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2807 2817 matching what NOT to autocall on, to include all python binary
2808 2818 operators (including things like 'and', 'or', 'is' and 'in').
2809 2819 Prompted by a bug report on 'foo & bar', but I realized we had
2810 2820 many more potential bug cases with other operators. The regexp is
2811 2821 self.re_exclude_auto, it's fairly commented.
2812 2822
2813 2823 2006-01-12 Ville Vainio <vivainio@gmail.com>
2814 2824
2815 2825 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2816 2826 Prettified and hardened string/backslash quoting with ipsystem(),
2817 2827 ipalias() and ipmagic(). Now even \ characters are passed to
2818 2828 %magics, !shell escapes and aliases exactly as they are in the
2819 2829 ipython command line. Should improve backslash experience,
2820 2830 particularly in Windows (path delimiter for some commands that
2821 2831 won't understand '/'), but Unix benefits as well (regexps). %cd
2822 2832 magic still doesn't support backslash path delimiters, though. Also
2823 2833 deleted all pretense of supporting multiline command strings in
2824 2834 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2825 2835
2826 2836 * doc/build_doc_instructions.txt added. Documentation on how to
2827 2837 use doc/update_manual.py, added yesterday. Both files contributed
2828 2838 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2829 2839 doc/*.sh for deprecation at a later date.
2830 2840
2831 2841 * /ipython.py Added ipython.py to root directory for
2832 2842 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2833 2843 ipython.py) and development convenience (no need to keep doing
2834 2844 "setup.py install" between changes).
2835 2845
2836 2846 * Made ! and !! shell escapes work (again) in multiline expressions:
2837 2847 if 1:
2838 2848 !ls
2839 2849 !!ls
2840 2850
2841 2851 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2842 2852
2843 2853 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2844 2854 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2845 2855 module in case-insensitive installation. Was causing crashes
2846 2856 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2847 2857
2848 2858 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2849 2859 <marienz-AT-gentoo.org>, closes
2850 2860 http://www.scipy.net/roundup/ipython/issue51.
2851 2861
2852 2862 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2853 2863
2854 2864 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2855 2865 problem of excessive CPU usage under *nix and keyboard lag under
2856 2866 win32.
2857 2867
2858 2868 2006-01-10 *** Released version 0.7.0
2859 2869
2860 2870 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2861 2871
2862 2872 * IPython/Release.py (revision): tag version number to 0.7.0,
2863 2873 ready for release.
2864 2874
2865 2875 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2866 2876 it informs the user of the name of the temp. file used. This can
2867 2877 help if you decide later to reuse that same file, so you know
2868 2878 where to copy the info from.
2869 2879
2870 2880 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2871 2881
2872 2882 * setup_bdist_egg.py: little script to build an egg. Added
2873 2883 support in the release tools as well.
2874 2884
2875 2885 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2876 2886
2877 2887 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2878 2888 version selection (new -wxversion command line and ipythonrc
2879 2889 parameter). Patch contributed by Arnd Baecker
2880 2890 <arnd.baecker-AT-web.de>.
2881 2891
2882 2892 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2883 2893 embedded instances, for variables defined at the interactive
2884 2894 prompt of the embedded ipython. Reported by Arnd.
2885 2895
2886 2896 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2887 2897 it can be used as a (stateful) toggle, or with a direct parameter.
2888 2898
2889 2899 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2890 2900 could be triggered in certain cases and cause the traceback
2891 2901 printer not to work.
2892 2902
2893 2903 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2894 2904
2895 2905 * IPython/iplib.py (_should_recompile): Small fix, closes
2896 2906 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2897 2907
2898 2908 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2899 2909
2900 2910 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2901 2911 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2902 2912 Moad for help with tracking it down.
2903 2913
2904 2914 * IPython/iplib.py (handle_auto): fix autocall handling for
2905 2915 objects which support BOTH __getitem__ and __call__ (so that f [x]
2906 2916 is left alone, instead of becoming f([x]) automatically).
2907 2917
2908 2918 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2909 2919 Ville's patch.
2910 2920
2911 2921 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2912 2922
2913 2923 * IPython/iplib.py (handle_auto): changed autocall semantics to
2914 2924 include 'smart' mode, where the autocall transformation is NOT
2915 2925 applied if there are no arguments on the line. This allows you to
2916 2926 just type 'foo' if foo is a callable to see its internal form,
2917 2927 instead of having it called with no arguments (typically a
2918 2928 mistake). The old 'full' autocall still exists: for that, you
2919 2929 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2920 2930
2921 2931 * IPython/completer.py (Completer.attr_matches): add
2922 2932 tab-completion support for Enthoughts' traits. After a report by
2923 2933 Arnd and a patch by Prabhu.
2924 2934
2925 2935 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2926 2936
2927 2937 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2928 2938 Schmolck's patch to fix inspect.getinnerframes().
2929 2939
2930 2940 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2931 2941 for embedded instances, regarding handling of namespaces and items
2932 2942 added to the __builtin__ one. Multiple embedded instances and
2933 2943 recursive embeddings should work better now (though I'm not sure
2934 2944 I've got all the corner cases fixed, that code is a bit of a brain
2935 2945 twister).
2936 2946
2937 2947 * IPython/Magic.py (magic_edit): added support to edit in-memory
2938 2948 macros (automatically creates the necessary temp files). %edit
2939 2949 also doesn't return the file contents anymore, it's just noise.
2940 2950
2941 2951 * IPython/completer.py (Completer.attr_matches): revert change to
2942 2952 complete only on attributes listed in __all__. I realized it
2943 2953 cripples the tab-completion system as a tool for exploring the
2944 2954 internals of unknown libraries (it renders any non-__all__
2945 2955 attribute off-limits). I got bit by this when trying to see
2946 2956 something inside the dis module.
2947 2957
2948 2958 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2949 2959
2950 2960 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2951 2961 namespace for users and extension writers to hold data in. This
2952 2962 follows the discussion in
2953 2963 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2954 2964
2955 2965 * IPython/completer.py (IPCompleter.complete): small patch to help
2956 2966 tab-completion under Emacs, after a suggestion by John Barnard
2957 2967 <barnarj-AT-ccf.org>.
2958 2968
2959 2969 * IPython/Magic.py (Magic.extract_input_slices): added support for
2960 2970 the slice notation in magics to use N-M to represent numbers N...M
2961 2971 (closed endpoints). This is used by %macro and %save.
2962 2972
2963 2973 * IPython/completer.py (Completer.attr_matches): for modules which
2964 2974 define __all__, complete only on those. After a patch by Jeffrey
2965 2975 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2966 2976 speed up this routine.
2967 2977
2968 2978 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2969 2979 don't know if this is the end of it, but the behavior now is
2970 2980 certainly much more correct. Note that coupled with macros,
2971 2981 slightly surprising (at first) behavior may occur: a macro will in
2972 2982 general expand to multiple lines of input, so upon exiting, the
2973 2983 in/out counters will both be bumped by the corresponding amount
2974 2984 (as if the macro's contents had been typed interactively). Typing
2975 2985 %hist will reveal the intermediate (silently processed) lines.
2976 2986
2977 2987 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2978 2988 pickle to fail (%run was overwriting __main__ and not restoring
2979 2989 it, but pickle relies on __main__ to operate).
2980 2990
2981 2991 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2982 2992 using properties, but forgot to make the main InteractiveShell
2983 2993 class a new-style class. Properties fail silently, and
2984 2994 mysteriously, with old-style class (getters work, but
2985 2995 setters don't do anything).
2986 2996
2987 2997 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2988 2998
2989 2999 * IPython/Magic.py (magic_history): fix history reporting bug (I
2990 3000 know some nasties are still there, I just can't seem to find a
2991 3001 reproducible test case to track them down; the input history is
2992 3002 falling out of sync...)
2993 3003
2994 3004 * IPython/iplib.py (handle_shell_escape): fix bug where both
2995 3005 aliases and system accesses where broken for indented code (such
2996 3006 as loops).
2997 3007
2998 3008 * IPython/genutils.py (shell): fix small but critical bug for
2999 3009 win32 system access.
3000 3010
3001 3011 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
3002 3012
3003 3013 * IPython/iplib.py (showtraceback): remove use of the
3004 3014 sys.last_{type/value/traceback} structures, which are non
3005 3015 thread-safe.
3006 3016 (_prefilter): change control flow to ensure that we NEVER
3007 3017 introspect objects when autocall is off. This will guarantee that
3008 3018 having an input line of the form 'x.y', where access to attribute
3009 3019 'y' has side effects, doesn't trigger the side effect TWICE. It
3010 3020 is important to note that, with autocall on, these side effects
3011 3021 can still happen.
3012 3022 (ipsystem): new builtin, to complete the ip{magic/alias/system}
3013 3023 trio. IPython offers these three kinds of special calls which are
3014 3024 not python code, and it's a good thing to have their call method
3015 3025 be accessible as pure python functions (not just special syntax at
3016 3026 the command line). It gives us a better internal implementation
3017 3027 structure, as well as exposing these for user scripting more
3018 3028 cleanly.
3019 3029
3020 3030 * IPython/macro.py (Macro.__init__): moved macros to a standalone
3021 3031 file. Now that they'll be more likely to be used with the
3022 3032 persistance system (%store), I want to make sure their module path
3023 3033 doesn't change in the future, so that we don't break things for
3024 3034 users' persisted data.
3025 3035
3026 3036 * IPython/iplib.py (autoindent_update): move indentation
3027 3037 management into the _text_ processing loop, not the keyboard
3028 3038 interactive one. This is necessary to correctly process non-typed
3029 3039 multiline input (such as macros).
3030 3040
3031 3041 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
3032 3042 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
3033 3043 which was producing problems in the resulting manual.
3034 3044 (magic_whos): improve reporting of instances (show their class,
3035 3045 instead of simply printing 'instance' which isn't terribly
3036 3046 informative).
3037 3047
3038 3048 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
3039 3049 (minor mods) to support network shares under win32.
3040 3050
3041 3051 * IPython/winconsole.py (get_console_size): add new winconsole
3042 3052 module and fixes to page_dumb() to improve its behavior under
3043 3053 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
3044 3054
3045 3055 * IPython/Magic.py (Macro): simplified Macro class to just
3046 3056 subclass list. We've had only 2.2 compatibility for a very long
3047 3057 time, yet I was still avoiding subclassing the builtin types. No
3048 3058 more (I'm also starting to use properties, though I won't shift to
3049 3059 2.3-specific features quite yet).
3050 3060 (magic_store): added Ville's patch for lightweight variable
3051 3061 persistence, after a request on the user list by Matt Wilkie
3052 3062 <maphew-AT-gmail.com>. The new %store magic's docstring has full
3053 3063 details.
3054 3064
3055 3065 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3056 3066 changed the default logfile name from 'ipython.log' to
3057 3067 'ipython_log.py'. These logs are real python files, and now that
3058 3068 we have much better multiline support, people are more likely to
3059 3069 want to use them as such. Might as well name them correctly.
3060 3070
3061 3071 * IPython/Magic.py: substantial cleanup. While we can't stop
3062 3072 using magics as mixins, due to the existing customizations 'out
3063 3073 there' which rely on the mixin naming conventions, at least I
3064 3074 cleaned out all cross-class name usage. So once we are OK with
3065 3075 breaking compatibility, the two systems can be separated.
3066 3076
3067 3077 * IPython/Logger.py: major cleanup. This one is NOT a mixin
3068 3078 anymore, and the class is a fair bit less hideous as well. New
3069 3079 features were also introduced: timestamping of input, and logging
3070 3080 of output results. These are user-visible with the -t and -o
3071 3081 options to %logstart. Closes
3072 3082 http://www.scipy.net/roundup/ipython/issue11 and a request by
3073 3083 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
3074 3084
3075 3085 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
3076 3086
3077 3087 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
3078 3088 better handle backslashes in paths. See the thread 'More Windows
3079 3089 questions part 2 - \/ characters revisited' on the iypthon user
3080 3090 list:
3081 3091 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
3082 3092
3083 3093 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
3084 3094
3085 3095 (InteractiveShell.__init__): change threaded shells to not use the
3086 3096 ipython crash handler. This was causing more problems than not,
3087 3097 as exceptions in the main thread (GUI code, typically) would
3088 3098 always show up as a 'crash', when they really weren't.
3089 3099
3090 3100 The colors and exception mode commands (%colors/%xmode) have been
3091 3101 synchronized to also take this into account, so users can get
3092 3102 verbose exceptions for their threaded code as well. I also added
3093 3103 support for activating pdb inside this exception handler as well,
3094 3104 so now GUI authors can use IPython's enhanced pdb at runtime.
3095 3105
3096 3106 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
3097 3107 true by default, and add it to the shipped ipythonrc file. Since
3098 3108 this asks the user before proceeding, I think it's OK to make it
3099 3109 true by default.
3100 3110
3101 3111 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
3102 3112 of the previous special-casing of input in the eval loop. I think
3103 3113 this is cleaner, as they really are commands and shouldn't have
3104 3114 a special role in the middle of the core code.
3105 3115
3106 3116 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
3107 3117
3108 3118 * IPython/iplib.py (edit_syntax_error): added support for
3109 3119 automatically reopening the editor if the file had a syntax error
3110 3120 in it. Thanks to scottt who provided the patch at:
3111 3121 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
3112 3122 version committed).
3113 3123
3114 3124 * IPython/iplib.py (handle_normal): add suport for multi-line
3115 3125 input with emtpy lines. This fixes
3116 3126 http://www.scipy.net/roundup/ipython/issue43 and a similar
3117 3127 discussion on the user list.
3118 3128
3119 3129 WARNING: a behavior change is necessarily introduced to support
3120 3130 blank lines: now a single blank line with whitespace does NOT
3121 3131 break the input loop, which means that when autoindent is on, by
3122 3132 default hitting return on the next (indented) line does NOT exit.
3123 3133
3124 3134 Instead, to exit a multiline input you can either have:
3125 3135
3126 3136 - TWO whitespace lines (just hit return again), or
3127 3137 - a single whitespace line of a different length than provided
3128 3138 by the autoindent (add or remove a space).
3129 3139
3130 3140 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
3131 3141 module to better organize all readline-related functionality.
3132 3142 I've deleted FlexCompleter and put all completion clases here.
3133 3143
3134 3144 * IPython/iplib.py (raw_input): improve indentation management.
3135 3145 It is now possible to paste indented code with autoindent on, and
3136 3146 the code is interpreted correctly (though it still looks bad on
3137 3147 screen, due to the line-oriented nature of ipython).
3138 3148 (MagicCompleter.complete): change behavior so that a TAB key on an
3139 3149 otherwise empty line actually inserts a tab, instead of completing
3140 3150 on the entire global namespace. This makes it easier to use the
3141 3151 TAB key for indentation. After a request by Hans Meine
3142 3152 <hans_meine-AT-gmx.net>
3143 3153 (_prefilter): add support so that typing plain 'exit' or 'quit'
3144 3154 does a sensible thing. Originally I tried to deviate as little as
3145 3155 possible from the default python behavior, but even that one may
3146 3156 change in this direction (thread on python-dev to that effect).
3147 3157 Regardless, ipython should do the right thing even if CPython's
3148 3158 '>>>' prompt doesn't.
3149 3159 (InteractiveShell): removed subclassing code.InteractiveConsole
3150 3160 class. By now we'd overridden just about all of its methods: I've
3151 3161 copied the remaining two over, and now ipython is a standalone
3152 3162 class. This will provide a clearer picture for the chainsaw
3153 3163 branch refactoring.
3154 3164
3155 3165 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
3156 3166
3157 3167 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
3158 3168 failures for objects which break when dir() is called on them.
3159 3169
3160 3170 * IPython/FlexCompleter.py (Completer.__init__): Added support for
3161 3171 distinct local and global namespaces in the completer API. This
3162 3172 change allows us to properly handle completion with distinct
3163 3173 scopes, including in embedded instances (this had never really
3164 3174 worked correctly).
3165 3175
3166 3176 Note: this introduces a change in the constructor for
3167 3177 MagicCompleter, as a new global_namespace parameter is now the
3168 3178 second argument (the others were bumped one position).
3169 3179
3170 3180 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
3171 3181
3172 3182 * IPython/iplib.py (embed_mainloop): fix tab-completion in
3173 3183 embedded instances (which can be done now thanks to Vivian's
3174 3184 frame-handling fixes for pdb).
3175 3185 (InteractiveShell.__init__): Fix namespace handling problem in
3176 3186 embedded instances. We were overwriting __main__ unconditionally,
3177 3187 and this should only be done for 'full' (non-embedded) IPython;
3178 3188 embedded instances must respect the caller's __main__. Thanks to
3179 3189 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
3180 3190
3181 3191 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
3182 3192
3183 3193 * setup.py: added download_url to setup(). This registers the
3184 3194 download address at PyPI, which is not only useful to humans
3185 3195 browsing the site, but is also picked up by setuptools (the Eggs
3186 3196 machinery). Thanks to Ville and R. Kern for the info/discussion
3187 3197 on this.
3188 3198
3189 3199 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
3190 3200
3191 3201 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
3192 3202 This brings a lot of nice functionality to the pdb mode, which now
3193 3203 has tab-completion, syntax highlighting, and better stack handling
3194 3204 than before. Many thanks to Vivian De Smedt
3195 3205 <vivian-AT-vdesmedt.com> for the original patches.
3196 3206
3197 3207 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
3198 3208
3199 3209 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
3200 3210 sequence to consistently accept the banner argument. The
3201 3211 inconsistency was tripping SAGE, thanks to Gary Zablackis
3202 3212 <gzabl-AT-yahoo.com> for the report.
3203 3213
3204 3214 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3205 3215
3206 3216 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3207 3217 Fix bug where a naked 'alias' call in the ipythonrc file would
3208 3218 cause a crash. Bug reported by Jorgen Stenarson.
3209 3219
3210 3220 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
3211 3221
3212 3222 * IPython/ipmaker.py (make_IPython): cleanups which should improve
3213 3223 startup time.
3214 3224
3215 3225 * IPython/iplib.py (runcode): my globals 'fix' for embedded
3216 3226 instances had introduced a bug with globals in normal code. Now
3217 3227 it's working in all cases.
3218 3228
3219 3229 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
3220 3230 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
3221 3231 has been introduced to set the default case sensitivity of the
3222 3232 searches. Users can still select either mode at runtime on a
3223 3233 per-search basis.
3224 3234
3225 3235 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
3226 3236
3227 3237 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
3228 3238 attributes in wildcard searches for subclasses. Modified version
3229 3239 of a patch by Jorgen.
3230 3240
3231 3241 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
3232 3242
3233 3243 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
3234 3244 embedded instances. I added a user_global_ns attribute to the
3235 3245 InteractiveShell class to handle this.
3236 3246
3237 3247 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
3238 3248
3239 3249 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
3240 3250 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
3241 3251 (reported under win32, but may happen also in other platforms).
3242 3252 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
3243 3253
3244 3254 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
3245 3255
3246 3256 * IPython/Magic.py (magic_psearch): new support for wildcard
3247 3257 patterns. Now, typing ?a*b will list all names which begin with a
3248 3258 and end in b, for example. The %psearch magic has full
3249 3259 docstrings. Many thanks to JΓΆrgen Stenarson
3250 3260 <jorgen.stenarson-AT-bostream.nu>, author of the patches
3251 3261 implementing this functionality.
3252 3262
3253 3263 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3254 3264
3255 3265 * Manual: fixed long-standing annoyance of double-dashes (as in
3256 3266 --prefix=~, for example) being stripped in the HTML version. This
3257 3267 is a latex2html bug, but a workaround was provided. Many thanks
3258 3268 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
3259 3269 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
3260 3270 rolling. This seemingly small issue had tripped a number of users
3261 3271 when first installing, so I'm glad to see it gone.
3262 3272
3263 3273 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
3264 3274
3265 3275 * IPython/Extensions/numeric_formats.py: fix missing import,
3266 3276 reported by Stephen Walton.
3267 3277
3268 3278 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
3269 3279
3270 3280 * IPython/demo.py: finish demo module, fully documented now.
3271 3281
3272 3282 * IPython/genutils.py (file_read): simple little utility to read a
3273 3283 file and ensure it's closed afterwards.
3274 3284
3275 3285 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
3276 3286
3277 3287 * IPython/demo.py (Demo.__init__): added support for individually
3278 3288 tagging blocks for automatic execution.
3279 3289
3280 3290 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
3281 3291 syntax-highlighted python sources, requested by John.
3282 3292
3283 3293 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
3284 3294
3285 3295 * IPython/demo.py (Demo.again): fix bug where again() blocks after
3286 3296 finishing.
3287 3297
3288 3298 * IPython/genutils.py (shlex_split): moved from Magic to here,
3289 3299 where all 2.2 compatibility stuff lives. I needed it for demo.py.
3290 3300
3291 3301 * IPython/demo.py (Demo.__init__): added support for silent
3292 3302 blocks, improved marks as regexps, docstrings written.
3293 3303 (Demo.__init__): better docstring, added support for sys.argv.
3294 3304
3295 3305 * IPython/genutils.py (marquee): little utility used by the demo
3296 3306 code, handy in general.
3297 3307
3298 3308 * IPython/demo.py (Demo.__init__): new class for interactive
3299 3309 demos. Not documented yet, I just wrote it in a hurry for
3300 3310 scipy'05. Will docstring later.
3301 3311
3302 3312 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
3303 3313
3304 3314 * IPython/Shell.py (sigint_handler): Drastic simplification which
3305 3315 also seems to make Ctrl-C work correctly across threads! This is
3306 3316 so simple, that I can't beleive I'd missed it before. Needs more
3307 3317 testing, though.
3308 3318 (KBINT): Never mind, revert changes. I'm sure I'd tried something
3309 3319 like this before...
3310 3320
3311 3321 * IPython/genutils.py (get_home_dir): add protection against
3312 3322 non-dirs in win32 registry.
3313 3323
3314 3324 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
3315 3325 bug where dict was mutated while iterating (pysh crash).
3316 3326
3317 3327 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
3318 3328
3319 3329 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
3320 3330 spurious newlines added by this routine. After a report by
3321 3331 F. Mantegazza.
3322 3332
3323 3333 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
3324 3334
3325 3335 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
3326 3336 calls. These were a leftover from the GTK 1.x days, and can cause
3327 3337 problems in certain cases (after a report by John Hunter).
3328 3338
3329 3339 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
3330 3340 os.getcwd() fails at init time. Thanks to patch from David Remahl
3331 3341 <chmod007-AT-mac.com>.
3332 3342 (InteractiveShell.__init__): prevent certain special magics from
3333 3343 being shadowed by aliases. Closes
3334 3344 http://www.scipy.net/roundup/ipython/issue41.
3335 3345
3336 3346 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
3337 3347
3338 3348 * IPython/iplib.py (InteractiveShell.complete): Added new
3339 3349 top-level completion method to expose the completion mechanism
3340 3350 beyond readline-based environments.
3341 3351
3342 3352 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
3343 3353
3344 3354 * tools/ipsvnc (svnversion): fix svnversion capture.
3345 3355
3346 3356 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
3347 3357 attribute to self, which was missing. Before, it was set by a
3348 3358 routine which in certain cases wasn't being called, so the
3349 3359 instance could end up missing the attribute. This caused a crash.
3350 3360 Closes http://www.scipy.net/roundup/ipython/issue40.
3351 3361
3352 3362 2005-08-16 Fernando Perez <fperez@colorado.edu>
3353 3363
3354 3364 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
3355 3365 contains non-string attribute. Closes
3356 3366 http://www.scipy.net/roundup/ipython/issue38.
3357 3367
3358 3368 2005-08-14 Fernando Perez <fperez@colorado.edu>
3359 3369
3360 3370 * tools/ipsvnc: Minor improvements, to add changeset info.
3361 3371
3362 3372 2005-08-12 Fernando Perez <fperez@colorado.edu>
3363 3373
3364 3374 * IPython/iplib.py (runsource): remove self.code_to_run_src
3365 3375 attribute. I realized this is nothing more than
3366 3376 '\n'.join(self.buffer), and having the same data in two different
3367 3377 places is just asking for synchronization bugs. This may impact
3368 3378 people who have custom exception handlers, so I need to warn
3369 3379 ipython-dev about it (F. Mantegazza may use them).
3370 3380
3371 3381 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
3372 3382
3373 3383 * IPython/genutils.py: fix 2.2 compatibility (generators)
3374 3384
3375 3385 2005-07-18 Fernando Perez <fperez@colorado.edu>
3376 3386
3377 3387 * IPython/genutils.py (get_home_dir): fix to help users with
3378 3388 invalid $HOME under win32.
3379 3389
3380 3390 2005-07-17 Fernando Perez <fperez@colorado.edu>
3381 3391
3382 3392 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
3383 3393 some old hacks and clean up a bit other routines; code should be
3384 3394 simpler and a bit faster.
3385 3395
3386 3396 * IPython/iplib.py (interact): removed some last-resort attempts
3387 3397 to survive broken stdout/stderr. That code was only making it
3388 3398 harder to abstract out the i/o (necessary for gui integration),
3389 3399 and the crashes it could prevent were extremely rare in practice
3390 3400 (besides being fully user-induced in a pretty violent manner).
3391 3401
3392 3402 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
3393 3403 Nothing major yet, but the code is simpler to read; this should
3394 3404 make it easier to do more serious modifications in the future.
3395 3405
3396 3406 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
3397 3407 which broke in .15 (thanks to a report by Ville).
3398 3408
3399 3409 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
3400 3410 be quite correct, I know next to nothing about unicode). This
3401 3411 will allow unicode strings to be used in prompts, amongst other
3402 3412 cases. It also will prevent ipython from crashing when unicode
3403 3413 shows up unexpectedly in many places. If ascii encoding fails, we
3404 3414 assume utf_8. Currently the encoding is not a user-visible
3405 3415 setting, though it could be made so if there is demand for it.
3406 3416
3407 3417 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
3408 3418
3409 3419 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
3410 3420
3411 3421 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
3412 3422
3413 3423 * IPython/genutils.py: Add 2.2 compatibility here, so all other
3414 3424 code can work transparently for 2.2/2.3.
3415 3425
3416 3426 2005-07-16 Fernando Perez <fperez@colorado.edu>
3417 3427
3418 3428 * IPython/ultraTB.py (ExceptionColors): Make a global variable
3419 3429 out of the color scheme table used for coloring exception
3420 3430 tracebacks. This allows user code to add new schemes at runtime.
3421 3431 This is a minimally modified version of the patch at
3422 3432 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
3423 3433 for the contribution.
3424 3434
3425 3435 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
3426 3436 slightly modified version of the patch in
3427 3437 http://www.scipy.net/roundup/ipython/issue34, which also allows me
3428 3438 to remove the previous try/except solution (which was costlier).
3429 3439 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
3430 3440
3431 3441 2005-06-08 Fernando Perez <fperez@colorado.edu>
3432 3442
3433 3443 * IPython/iplib.py (write/write_err): Add methods to abstract all
3434 3444 I/O a bit more.
3435 3445
3436 3446 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
3437 3447 warning, reported by Aric Hagberg, fix by JD Hunter.
3438 3448
3439 3449 2005-06-02 *** Released version 0.6.15
3440 3450
3441 3451 2005-06-01 Fernando Perez <fperez@colorado.edu>
3442 3452
3443 3453 * IPython/iplib.py (MagicCompleter.file_matches): Fix
3444 3454 tab-completion of filenames within open-quoted strings. Note that
3445 3455 this requires that in ~/.ipython/ipythonrc, users change the
3446 3456 readline delimiters configuration to read:
3447 3457
3448 3458 readline_remove_delims -/~
3449 3459
3450 3460
3451 3461 2005-05-31 *** Released version 0.6.14
3452 3462
3453 3463 2005-05-29 Fernando Perez <fperez@colorado.edu>
3454 3464
3455 3465 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
3456 3466 with files not on the filesystem. Reported by Eliyahu Sandler
3457 3467 <eli@gondolin.net>
3458 3468
3459 3469 2005-05-22 Fernando Perez <fperez@colorado.edu>
3460 3470
3461 3471 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3462 3472 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3463 3473
3464 3474 2005-05-19 Fernando Perez <fperez@colorado.edu>
3465 3475
3466 3476 * IPython/iplib.py (safe_execfile): close a file which could be
3467 3477 left open (causing problems in win32, which locks open files).
3468 3478 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3469 3479
3470 3480 2005-05-18 Fernando Perez <fperez@colorado.edu>
3471 3481
3472 3482 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3473 3483 keyword arguments correctly to safe_execfile().
3474 3484
3475 3485 2005-05-13 Fernando Perez <fperez@colorado.edu>
3476 3486
3477 3487 * ipython.1: Added info about Qt to manpage, and threads warning
3478 3488 to usage page (invoked with --help).
3479 3489
3480 3490 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3481 3491 new matcher (it goes at the end of the priority list) to do
3482 3492 tab-completion on named function arguments. Submitted by George
3483 3493 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3484 3494 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3485 3495 for more details.
3486 3496
3487 3497 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3488 3498 SystemExit exceptions in the script being run. Thanks to a report
3489 3499 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3490 3500 producing very annoying behavior when running unit tests.
3491 3501
3492 3502 2005-05-12 Fernando Perez <fperez@colorado.edu>
3493 3503
3494 3504 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3495 3505 which I'd broken (again) due to a changed regexp. In the process,
3496 3506 added ';' as an escape to auto-quote the whole line without
3497 3507 splitting its arguments. Thanks to a report by Jerry McRae
3498 3508 <qrs0xyc02-AT-sneakemail.com>.
3499 3509
3500 3510 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3501 3511 possible crashes caused by a TokenError. Reported by Ed Schofield
3502 3512 <schofield-AT-ftw.at>.
3503 3513
3504 3514 2005-05-06 Fernando Perez <fperez@colorado.edu>
3505 3515
3506 3516 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3507 3517
3508 3518 2005-04-29 Fernando Perez <fperez@colorado.edu>
3509 3519
3510 3520 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3511 3521 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3512 3522 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3513 3523 which provides support for Qt interactive usage (similar to the
3514 3524 existing one for WX and GTK). This had been often requested.
3515 3525
3516 3526 2005-04-14 *** Released version 0.6.13
3517 3527
3518 3528 2005-04-08 Fernando Perez <fperez@colorado.edu>
3519 3529
3520 3530 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3521 3531 from _ofind, which gets called on almost every input line. Now,
3522 3532 we only try to get docstrings if they are actually going to be
3523 3533 used (the overhead of fetching unnecessary docstrings can be
3524 3534 noticeable for certain objects, such as Pyro proxies).
3525 3535
3526 3536 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3527 3537 for completers. For some reason I had been passing them the state
3528 3538 variable, which completers never actually need, and was in
3529 3539 conflict with the rlcompleter API. Custom completers ONLY need to
3530 3540 take the text parameter.
3531 3541
3532 3542 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3533 3543 work correctly in pysh. I've also moved all the logic which used
3534 3544 to be in pysh.py here, which will prevent problems with future
3535 3545 upgrades. However, this time I must warn users to update their
3536 3546 pysh profile to include the line
3537 3547
3538 3548 import_all IPython.Extensions.InterpreterExec
3539 3549
3540 3550 because otherwise things won't work for them. They MUST also
3541 3551 delete pysh.py and the line
3542 3552
3543 3553 execfile pysh.py
3544 3554
3545 3555 from their ipythonrc-pysh.
3546 3556
3547 3557 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3548 3558 robust in the face of objects whose dir() returns non-strings
3549 3559 (which it shouldn't, but some broken libs like ITK do). Thanks to
3550 3560 a patch by John Hunter (implemented differently, though). Also
3551 3561 minor improvements by using .extend instead of + on lists.
3552 3562
3553 3563 * pysh.py:
3554 3564
3555 3565 2005-04-06 Fernando Perez <fperez@colorado.edu>
3556 3566
3557 3567 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3558 3568 by default, so that all users benefit from it. Those who don't
3559 3569 want it can still turn it off.
3560 3570
3561 3571 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3562 3572 config file, I'd forgotten about this, so users were getting it
3563 3573 off by default.
3564 3574
3565 3575 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3566 3576 consistency. Now magics can be called in multiline statements,
3567 3577 and python variables can be expanded in magic calls via $var.
3568 3578 This makes the magic system behave just like aliases or !system
3569 3579 calls.
3570 3580
3571 3581 2005-03-28 Fernando Perez <fperez@colorado.edu>
3572 3582
3573 3583 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3574 3584 expensive string additions for building command. Add support for
3575 3585 trailing ';' when autocall is used.
3576 3586
3577 3587 2005-03-26 Fernando Perez <fperez@colorado.edu>
3578 3588
3579 3589 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3580 3590 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3581 3591 ipython.el robust against prompts with any number of spaces
3582 3592 (including 0) after the ':' character.
3583 3593
3584 3594 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3585 3595 continuation prompt, which misled users to think the line was
3586 3596 already indented. Closes debian Bug#300847, reported to me by
3587 3597 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3588 3598
3589 3599 2005-03-23 Fernando Perez <fperez@colorado.edu>
3590 3600
3591 3601 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3592 3602 properly aligned if they have embedded newlines.
3593 3603
3594 3604 * IPython/iplib.py (runlines): Add a public method to expose
3595 3605 IPython's code execution machinery, so that users can run strings
3596 3606 as if they had been typed at the prompt interactively.
3597 3607 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3598 3608 methods which can call the system shell, but with python variable
3599 3609 expansion. The three such methods are: __IPYTHON__.system,
3600 3610 .getoutput and .getoutputerror. These need to be documented in a
3601 3611 'public API' section (to be written) of the manual.
3602 3612
3603 3613 2005-03-20 Fernando Perez <fperez@colorado.edu>
3604 3614
3605 3615 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3606 3616 for custom exception handling. This is quite powerful, and it
3607 3617 allows for user-installable exception handlers which can trap
3608 3618 custom exceptions at runtime and treat them separately from
3609 3619 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3610 3620 Mantegazza <mantegazza-AT-ill.fr>.
3611 3621 (InteractiveShell.set_custom_completer): public API function to
3612 3622 add new completers at runtime.
3613 3623
3614 3624 2005-03-19 Fernando Perez <fperez@colorado.edu>
3615 3625
3616 3626 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3617 3627 allow objects which provide their docstrings via non-standard
3618 3628 mechanisms (like Pyro proxies) to still be inspected by ipython's
3619 3629 ? system.
3620 3630
3621 3631 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3622 3632 automatic capture system. I tried quite hard to make it work
3623 3633 reliably, and simply failed. I tried many combinations with the
3624 3634 subprocess module, but eventually nothing worked in all needed
3625 3635 cases (not blocking stdin for the child, duplicating stdout
3626 3636 without blocking, etc). The new %sc/%sx still do capture to these
3627 3637 magical list/string objects which make shell use much more
3628 3638 conveninent, so not all is lost.
3629 3639
3630 3640 XXX - FIX MANUAL for the change above!
3631 3641
3632 3642 (runsource): I copied code.py's runsource() into ipython to modify
3633 3643 it a bit. Now the code object and source to be executed are
3634 3644 stored in ipython. This makes this info accessible to third-party
3635 3645 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3636 3646 Mantegazza <mantegazza-AT-ill.fr>.
3637 3647
3638 3648 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3639 3649 history-search via readline (like C-p/C-n). I'd wanted this for a
3640 3650 long time, but only recently found out how to do it. For users
3641 3651 who already have their ipythonrc files made and want this, just
3642 3652 add:
3643 3653
3644 3654 readline_parse_and_bind "\e[A": history-search-backward
3645 3655 readline_parse_and_bind "\e[B": history-search-forward
3646 3656
3647 3657 2005-03-18 Fernando Perez <fperez@colorado.edu>
3648 3658
3649 3659 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3650 3660 LSString and SList classes which allow transparent conversions
3651 3661 between list mode and whitespace-separated string.
3652 3662 (magic_r): Fix recursion problem in %r.
3653 3663
3654 3664 * IPython/genutils.py (LSString): New class to be used for
3655 3665 automatic storage of the results of all alias/system calls in _o
3656 3666 and _e (stdout/err). These provide a .l/.list attribute which
3657 3667 does automatic splitting on newlines. This means that for most
3658 3668 uses, you'll never need to do capturing of output with %sc/%sx
3659 3669 anymore, since ipython keeps this always done for you. Note that
3660 3670 only the LAST results are stored, the _o/e variables are
3661 3671 overwritten on each call. If you need to save their contents
3662 3672 further, simply bind them to any other name.
3663 3673
3664 3674 2005-03-17 Fernando Perez <fperez@colorado.edu>
3665 3675
3666 3676 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3667 3677 prompt namespace handling.
3668 3678
3669 3679 2005-03-16 Fernando Perez <fperez@colorado.edu>
3670 3680
3671 3681 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3672 3682 classic prompts to be '>>> ' (final space was missing, and it
3673 3683 trips the emacs python mode).
3674 3684 (BasePrompt.__str__): Added safe support for dynamic prompt
3675 3685 strings. Now you can set your prompt string to be '$x', and the
3676 3686 value of x will be printed from your interactive namespace. The
3677 3687 interpolation syntax includes the full Itpl support, so
3678 3688 ${foo()+x+bar()} is a valid prompt string now, and the function
3679 3689 calls will be made at runtime.
3680 3690
3681 3691 2005-03-15 Fernando Perez <fperez@colorado.edu>
3682 3692
3683 3693 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3684 3694 avoid name clashes in pylab. %hist still works, it just forwards
3685 3695 the call to %history.
3686 3696
3687 3697 2005-03-02 *** Released version 0.6.12
3688 3698
3689 3699 2005-03-02 Fernando Perez <fperez@colorado.edu>
3690 3700
3691 3701 * IPython/iplib.py (handle_magic): log magic calls properly as
3692 3702 ipmagic() function calls.
3693 3703
3694 3704 * IPython/Magic.py (magic_time): Improved %time to support
3695 3705 statements and provide wall-clock as well as CPU time.
3696 3706
3697 3707 2005-02-27 Fernando Perez <fperez@colorado.edu>
3698 3708
3699 3709 * IPython/hooks.py: New hooks module, to expose user-modifiable
3700 3710 IPython functionality in a clean manner. For now only the editor
3701 3711 hook is actually written, and other thigns which I intend to turn
3702 3712 into proper hooks aren't yet there. The display and prefilter
3703 3713 stuff, for example, should be hooks. But at least now the
3704 3714 framework is in place, and the rest can be moved here with more
3705 3715 time later. IPython had had a .hooks variable for a long time for
3706 3716 this purpose, but I'd never actually used it for anything.
3707 3717
3708 3718 2005-02-26 Fernando Perez <fperez@colorado.edu>
3709 3719
3710 3720 * IPython/ipmaker.py (make_IPython): make the default ipython
3711 3721 directory be called _ipython under win32, to follow more the
3712 3722 naming peculiarities of that platform (where buggy software like
3713 3723 Visual Sourcesafe breaks with .named directories). Reported by
3714 3724 Ville Vainio.
3715 3725
3716 3726 2005-02-23 Fernando Perez <fperez@colorado.edu>
3717 3727
3718 3728 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3719 3729 auto_aliases for win32 which were causing problems. Users can
3720 3730 define the ones they personally like.
3721 3731
3722 3732 2005-02-21 Fernando Perez <fperez@colorado.edu>
3723 3733
3724 3734 * IPython/Magic.py (magic_time): new magic to time execution of
3725 3735 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3726 3736
3727 3737 2005-02-19 Fernando Perez <fperez@colorado.edu>
3728 3738
3729 3739 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3730 3740 into keys (for prompts, for example).
3731 3741
3732 3742 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3733 3743 prompts in case users want them. This introduces a small behavior
3734 3744 change: ipython does not automatically add a space to all prompts
3735 3745 anymore. To get the old prompts with a space, users should add it
3736 3746 manually to their ipythonrc file, so for example prompt_in1 should
3737 3747 now read 'In [\#]: ' instead of 'In [\#]:'.
3738 3748 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3739 3749 file) to control left-padding of secondary prompts.
3740 3750
3741 3751 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3742 3752 the profiler can't be imported. Fix for Debian, which removed
3743 3753 profile.py because of License issues. I applied a slightly
3744 3754 modified version of the original Debian patch at
3745 3755 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3746 3756
3747 3757 2005-02-17 Fernando Perez <fperez@colorado.edu>
3748 3758
3749 3759 * IPython/genutils.py (native_line_ends): Fix bug which would
3750 3760 cause improper line-ends under win32 b/c I was not opening files
3751 3761 in binary mode. Bug report and fix thanks to Ville.
3752 3762
3753 3763 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3754 3764 trying to catch spurious foo[1] autocalls. My fix actually broke
3755 3765 ',/' autoquote/call with explicit escape (bad regexp).
3756 3766
3757 3767 2005-02-15 *** Released version 0.6.11
3758 3768
3759 3769 2005-02-14 Fernando Perez <fperez@colorado.edu>
3760 3770
3761 3771 * IPython/background_jobs.py: New background job management
3762 3772 subsystem. This is implemented via a new set of classes, and
3763 3773 IPython now provides a builtin 'jobs' object for background job
3764 3774 execution. A convenience %bg magic serves as a lightweight
3765 3775 frontend for starting the more common type of calls. This was
3766 3776 inspired by discussions with B. Granger and the BackgroundCommand
3767 3777 class described in the book Python Scripting for Computational
3768 3778 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3769 3779 (although ultimately no code from this text was used, as IPython's
3770 3780 system is a separate implementation).
3771 3781
3772 3782 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3773 3783 to control the completion of single/double underscore names
3774 3784 separately. As documented in the example ipytonrc file, the
3775 3785 readline_omit__names variable can now be set to 2, to omit even
3776 3786 single underscore names. Thanks to a patch by Brian Wong
3777 3787 <BrianWong-AT-AirgoNetworks.Com>.
3778 3788 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3779 3789 be autocalled as foo([1]) if foo were callable. A problem for
3780 3790 things which are both callable and implement __getitem__.
3781 3791 (init_readline): Fix autoindentation for win32. Thanks to a patch
3782 3792 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3783 3793
3784 3794 2005-02-12 Fernando Perez <fperez@colorado.edu>
3785 3795
3786 3796 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3787 3797 which I had written long ago to sort out user error messages which
3788 3798 may occur during startup. This seemed like a good idea initially,
3789 3799 but it has proven a disaster in retrospect. I don't want to
3790 3800 change much code for now, so my fix is to set the internal 'debug'
3791 3801 flag to true everywhere, whose only job was precisely to control
3792 3802 this subsystem. This closes issue 28 (as well as avoiding all
3793 3803 sorts of strange hangups which occur from time to time).
3794 3804
3795 3805 2005-02-07 Fernando Perez <fperez@colorado.edu>
3796 3806
3797 3807 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3798 3808 previous call produced a syntax error.
3799 3809
3800 3810 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3801 3811 classes without constructor.
3802 3812
3803 3813 2005-02-06 Fernando Perez <fperez@colorado.edu>
3804 3814
3805 3815 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3806 3816 completions with the results of each matcher, so we return results
3807 3817 to the user from all namespaces. This breaks with ipython
3808 3818 tradition, but I think it's a nicer behavior. Now you get all
3809 3819 possible completions listed, from all possible namespaces (python,
3810 3820 filesystem, magics...) After a request by John Hunter
3811 3821 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3812 3822
3813 3823 2005-02-05 Fernando Perez <fperez@colorado.edu>
3814 3824
3815 3825 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3816 3826 the call had quote characters in it (the quotes were stripped).
3817 3827
3818 3828 2005-01-31 Fernando Perez <fperez@colorado.edu>
3819 3829
3820 3830 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3821 3831 Itpl.itpl() to make the code more robust against psyco
3822 3832 optimizations.
3823 3833
3824 3834 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3825 3835 of causing an exception. Quicker, cleaner.
3826 3836
3827 3837 2005-01-28 Fernando Perez <fperez@colorado.edu>
3828 3838
3829 3839 * scripts/ipython_win_post_install.py (install): hardcode
3830 3840 sys.prefix+'python.exe' as the executable path. It turns out that
3831 3841 during the post-installation run, sys.executable resolves to the
3832 3842 name of the binary installer! I should report this as a distutils
3833 3843 bug, I think. I updated the .10 release with this tiny fix, to
3834 3844 avoid annoying the lists further.
3835 3845
3836 3846 2005-01-27 *** Released version 0.6.10
3837 3847
3838 3848 2005-01-27 Fernando Perez <fperez@colorado.edu>
3839 3849
3840 3850 * IPython/numutils.py (norm): Added 'inf' as optional name for
3841 3851 L-infinity norm, included references to mathworld.com for vector
3842 3852 norm definitions.
3843 3853 (amin/amax): added amin/amax for array min/max. Similar to what
3844 3854 pylab ships with after the recent reorganization of names.
3845 3855 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3846 3856
3847 3857 * ipython.el: committed Alex's recent fixes and improvements.
3848 3858 Tested with python-mode from CVS, and it looks excellent. Since
3849 3859 python-mode hasn't released anything in a while, I'm temporarily
3850 3860 putting a copy of today's CVS (v 4.70) of python-mode in:
3851 3861 http://ipython.scipy.org/tmp/python-mode.el
3852 3862
3853 3863 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3854 3864 sys.executable for the executable name, instead of assuming it's
3855 3865 called 'python.exe' (the post-installer would have produced broken
3856 3866 setups on systems with a differently named python binary).
3857 3867
3858 3868 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3859 3869 references to os.linesep, to make the code more
3860 3870 platform-independent. This is also part of the win32 coloring
3861 3871 fixes.
3862 3872
3863 3873 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3864 3874 lines, which actually cause coloring bugs because the length of
3865 3875 the line is very difficult to correctly compute with embedded
3866 3876 escapes. This was the source of all the coloring problems under
3867 3877 Win32. I think that _finally_, Win32 users have a properly
3868 3878 working ipython in all respects. This would never have happened
3869 3879 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3870 3880
3871 3881 2005-01-26 *** Released version 0.6.9
3872 3882
3873 3883 2005-01-25 Fernando Perez <fperez@colorado.edu>
3874 3884
3875 3885 * setup.py: finally, we have a true Windows installer, thanks to
3876 3886 the excellent work of Viktor Ransmayr
3877 3887 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3878 3888 Windows users. The setup routine is quite a bit cleaner thanks to
3879 3889 this, and the post-install script uses the proper functions to
3880 3890 allow a clean de-installation using the standard Windows Control
3881 3891 Panel.
3882 3892
3883 3893 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3884 3894 environment variable under all OSes (including win32) if
3885 3895 available. This will give consistency to win32 users who have set
3886 3896 this variable for any reason. If os.environ['HOME'] fails, the
3887 3897 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3888 3898
3889 3899 2005-01-24 Fernando Perez <fperez@colorado.edu>
3890 3900
3891 3901 * IPython/numutils.py (empty_like): add empty_like(), similar to
3892 3902 zeros_like() but taking advantage of the new empty() Numeric routine.
3893 3903
3894 3904 2005-01-23 *** Released version 0.6.8
3895 3905
3896 3906 2005-01-22 Fernando Perez <fperez@colorado.edu>
3897 3907
3898 3908 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3899 3909 automatic show() calls. After discussing things with JDH, it
3900 3910 turns out there are too many corner cases where this can go wrong.
3901 3911 It's best not to try to be 'too smart', and simply have ipython
3902 3912 reproduce as much as possible the default behavior of a normal
3903 3913 python shell.
3904 3914
3905 3915 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3906 3916 line-splitting regexp and _prefilter() to avoid calling getattr()
3907 3917 on assignments. This closes
3908 3918 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3909 3919 readline uses getattr(), so a simple <TAB> keypress is still
3910 3920 enough to trigger getattr() calls on an object.
3911 3921
3912 3922 2005-01-21 Fernando Perez <fperez@colorado.edu>
3913 3923
3914 3924 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3915 3925 docstring under pylab so it doesn't mask the original.
3916 3926
3917 3927 2005-01-21 *** Released version 0.6.7
3918 3928
3919 3929 2005-01-21 Fernando Perez <fperez@colorado.edu>
3920 3930
3921 3931 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3922 3932 signal handling for win32 users in multithreaded mode.
3923 3933
3924 3934 2005-01-17 Fernando Perez <fperez@colorado.edu>
3925 3935
3926 3936 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3927 3937 instances with no __init__. After a crash report by Norbert Nemec
3928 3938 <Norbert-AT-nemec-online.de>.
3929 3939
3930 3940 2005-01-14 Fernando Perez <fperez@colorado.edu>
3931 3941
3932 3942 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3933 3943 names for verbose exceptions, when multiple dotted names and the
3934 3944 'parent' object were present on the same line.
3935 3945
3936 3946 2005-01-11 Fernando Perez <fperez@colorado.edu>
3937 3947
3938 3948 * IPython/genutils.py (flag_calls): new utility to trap and flag
3939 3949 calls in functions. I need it to clean up matplotlib support.
3940 3950 Also removed some deprecated code in genutils.
3941 3951
3942 3952 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3943 3953 that matplotlib scripts called with %run, which don't call show()
3944 3954 themselves, still have their plotting windows open.
3945 3955
3946 3956 2005-01-05 Fernando Perez <fperez@colorado.edu>
3947 3957
3948 3958 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3949 3959 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3950 3960
3951 3961 2004-12-19 Fernando Perez <fperez@colorado.edu>
3952 3962
3953 3963 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3954 3964 parent_runcode, which was an eyesore. The same result can be
3955 3965 obtained with Python's regular superclass mechanisms.
3956 3966
3957 3967 2004-12-17 Fernando Perez <fperez@colorado.edu>
3958 3968
3959 3969 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3960 3970 reported by Prabhu.
3961 3971 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3962 3972 sys.stderr) instead of explicitly calling sys.stderr. This helps
3963 3973 maintain our I/O abstractions clean, for future GUI embeddings.
3964 3974
3965 3975 * IPython/genutils.py (info): added new utility for sys.stderr
3966 3976 unified info message handling (thin wrapper around warn()).
3967 3977
3968 3978 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3969 3979 composite (dotted) names on verbose exceptions.
3970 3980 (VerboseTB.nullrepr): harden against another kind of errors which
3971 3981 Python's inspect module can trigger, and which were crashing
3972 3982 IPython. Thanks to a report by Marco Lombardi
3973 3983 <mlombard-AT-ma010192.hq.eso.org>.
3974 3984
3975 3985 2004-12-13 *** Released version 0.6.6
3976 3986
3977 3987 2004-12-12 Fernando Perez <fperez@colorado.edu>
3978 3988
3979 3989 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3980 3990 generated by pygtk upon initialization if it was built without
3981 3991 threads (for matplotlib users). After a crash reported by
3982 3992 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3983 3993
3984 3994 * IPython/ipmaker.py (make_IPython): fix small bug in the
3985 3995 import_some parameter for multiple imports.
3986 3996
3987 3997 * IPython/iplib.py (ipmagic): simplified the interface of
3988 3998 ipmagic() to take a single string argument, just as it would be
3989 3999 typed at the IPython cmd line.
3990 4000 (ipalias): Added new ipalias() with an interface identical to
3991 4001 ipmagic(). This completes exposing a pure python interface to the
3992 4002 alias and magic system, which can be used in loops or more complex
3993 4003 code where IPython's automatic line mangling is not active.
3994 4004
3995 4005 * IPython/genutils.py (timing): changed interface of timing to
3996 4006 simply run code once, which is the most common case. timings()
3997 4007 remains unchanged, for the cases where you want multiple runs.
3998 4008
3999 4009 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
4000 4010 bug where Python2.2 crashes with exec'ing code which does not end
4001 4011 in a single newline. Python 2.3 is OK, so I hadn't noticed this
4002 4012 before.
4003 4013
4004 4014 2004-12-10 Fernando Perez <fperez@colorado.edu>
4005 4015
4006 4016 * IPython/Magic.py (Magic.magic_prun): changed name of option from
4007 4017 -t to -T, to accomodate the new -t flag in %run (the %run and
4008 4018 %prun options are kind of intermixed, and it's not easy to change
4009 4019 this with the limitations of python's getopt).
4010 4020
4011 4021 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
4012 4022 the execution of scripts. It's not as fine-tuned as timeit.py,
4013 4023 but it works from inside ipython (and under 2.2, which lacks
4014 4024 timeit.py). Optionally a number of runs > 1 can be given for
4015 4025 timing very short-running code.
4016 4026
4017 4027 * IPython/genutils.py (uniq_stable): new routine which returns a
4018 4028 list of unique elements in any iterable, but in stable order of
4019 4029 appearance. I needed this for the ultraTB fixes, and it's a handy
4020 4030 utility.
4021 4031
4022 4032 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
4023 4033 dotted names in Verbose exceptions. This had been broken since
4024 4034 the very start, now x.y will properly be printed in a Verbose
4025 4035 traceback, instead of x being shown and y appearing always as an
4026 4036 'undefined global'. Getting this to work was a bit tricky,
4027 4037 because by default python tokenizers are stateless. Saved by
4028 4038 python's ability to easily add a bit of state to an arbitrary
4029 4039 function (without needing to build a full-blown callable object).
4030 4040
4031 4041 Also big cleanup of this code, which had horrendous runtime
4032 4042 lookups of zillions of attributes for colorization. Moved all
4033 4043 this code into a few templates, which make it cleaner and quicker.
4034 4044
4035 4045 Printout quality was also improved for Verbose exceptions: one
4036 4046 variable per line, and memory addresses are printed (this can be
4037 4047 quite handy in nasty debugging situations, which is what Verbose
4038 4048 is for).
4039 4049
4040 4050 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
4041 4051 the command line as scripts to be loaded by embedded instances.
4042 4052 Doing so has the potential for an infinite recursion if there are
4043 4053 exceptions thrown in the process. This fixes a strange crash
4044 4054 reported by Philippe MULLER <muller-AT-irit.fr>.
4045 4055
4046 4056 2004-12-09 Fernando Perez <fperez@colorado.edu>
4047 4057
4048 4058 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
4049 4059 to reflect new names in matplotlib, which now expose the
4050 4060 matlab-compatible interface via a pylab module instead of the
4051 4061 'matlab' name. The new code is backwards compatible, so users of
4052 4062 all matplotlib versions are OK. Patch by J. Hunter.
4053 4063
4054 4064 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
4055 4065 of __init__ docstrings for instances (class docstrings are already
4056 4066 automatically printed). Instances with customized docstrings
4057 4067 (indep. of the class) are also recognized and all 3 separate
4058 4068 docstrings are printed (instance, class, constructor). After some
4059 4069 comments/suggestions by J. Hunter.
4060 4070
4061 4071 2004-12-05 Fernando Perez <fperez@colorado.edu>
4062 4072
4063 4073 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
4064 4074 warnings when tab-completion fails and triggers an exception.
4065 4075
4066 4076 2004-12-03 Fernando Perez <fperez@colorado.edu>
4067 4077
4068 4078 * IPython/Magic.py (magic_prun): Fix bug where an exception would
4069 4079 be triggered when using 'run -p'. An incorrect option flag was
4070 4080 being set ('d' instead of 'D').
4071 4081 (manpage): fix missing escaped \- sign.
4072 4082
4073 4083 2004-11-30 *** Released version 0.6.5
4074 4084
4075 4085 2004-11-30 Fernando Perez <fperez@colorado.edu>
4076 4086
4077 4087 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
4078 4088 setting with -d option.
4079 4089
4080 4090 * setup.py (docfiles): Fix problem where the doc glob I was using
4081 4091 was COMPLETELY BROKEN. It was giving the right files by pure
4082 4092 accident, but failed once I tried to include ipython.el. Note:
4083 4093 glob() does NOT allow you to do exclusion on multiple endings!
4084 4094
4085 4095 2004-11-29 Fernando Perez <fperez@colorado.edu>
4086 4096
4087 4097 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
4088 4098 the manpage as the source. Better formatting & consistency.
4089 4099
4090 4100 * IPython/Magic.py (magic_run): Added new -d option, to run
4091 4101 scripts under the control of the python pdb debugger. Note that
4092 4102 this required changing the %prun option -d to -D, to avoid a clash
4093 4103 (since %run must pass options to %prun, and getopt is too dumb to
4094 4104 handle options with string values with embedded spaces). Thanks
4095 4105 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
4096 4106 (magic_who_ls): added type matching to %who and %whos, so that one
4097 4107 can filter their output to only include variables of certain
4098 4108 types. Another suggestion by Matthew.
4099 4109 (magic_whos): Added memory summaries in kb and Mb for arrays.
4100 4110 (magic_who): Improve formatting (break lines every 9 vars).
4101 4111
4102 4112 2004-11-28 Fernando Perez <fperez@colorado.edu>
4103 4113
4104 4114 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
4105 4115 cache when empty lines were present.
4106 4116
4107 4117 2004-11-24 Fernando Perez <fperez@colorado.edu>
4108 4118
4109 4119 * IPython/usage.py (__doc__): document the re-activated threading
4110 4120 options for WX and GTK.
4111 4121
4112 4122 2004-11-23 Fernando Perez <fperez@colorado.edu>
4113 4123
4114 4124 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
4115 4125 the -wthread and -gthread options, along with a new -tk one to try
4116 4126 and coordinate Tk threading with wx/gtk. The tk support is very
4117 4127 platform dependent, since it seems to require Tcl and Tk to be
4118 4128 built with threads (Fedora1/2 appears NOT to have it, but in
4119 4129 Prabhu's Debian boxes it works OK). But even with some Tk
4120 4130 limitations, this is a great improvement.
4121 4131
4122 4132 * IPython/Prompts.py (prompt_specials_color): Added \t for time
4123 4133 info in user prompts. Patch by Prabhu.
4124 4134
4125 4135 2004-11-18 Fernando Perez <fperez@colorado.edu>
4126 4136
4127 4137 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
4128 4138 EOFErrors and bail, to avoid infinite loops if a non-terminating
4129 4139 file is fed into ipython. Patch submitted in issue 19 by user,
4130 4140 many thanks.
4131 4141
4132 4142 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
4133 4143 autoquote/parens in continuation prompts, which can cause lots of
4134 4144 problems. Closes roundup issue 20.
4135 4145
4136 4146 2004-11-17 Fernando Perez <fperez@colorado.edu>
4137 4147
4138 4148 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
4139 4149 reported as debian bug #280505. I'm not sure my local changelog
4140 4150 entry has the proper debian format (Jack?).
4141 4151
4142 4152 2004-11-08 *** Released version 0.6.4
4143 4153
4144 4154 2004-11-08 Fernando Perez <fperez@colorado.edu>
4145 4155
4146 4156 * IPython/iplib.py (init_readline): Fix exit message for Windows
4147 4157 when readline is active. Thanks to a report by Eric Jones
4148 4158 <eric-AT-enthought.com>.
4149 4159
4150 4160 2004-11-07 Fernando Perez <fperez@colorado.edu>
4151 4161
4152 4162 * IPython/genutils.py (page): Add a trap for OSError exceptions,
4153 4163 sometimes seen by win2k/cygwin users.
4154 4164
4155 4165 2004-11-06 Fernando Perez <fperez@colorado.edu>
4156 4166
4157 4167 * IPython/iplib.py (interact): Change the handling of %Exit from
4158 4168 trying to propagate a SystemExit to an internal ipython flag.
4159 4169 This is less elegant than using Python's exception mechanism, but
4160 4170 I can't get that to work reliably with threads, so under -pylab
4161 4171 %Exit was hanging IPython. Cross-thread exception handling is
4162 4172 really a bitch. Thaks to a bug report by Stephen Walton
4163 4173 <stephen.walton-AT-csun.edu>.
4164 4174
4165 4175 2004-11-04 Fernando Perez <fperez@colorado.edu>
4166 4176
4167 4177 * IPython/iplib.py (raw_input_original): store a pointer to the
4168 4178 true raw_input to harden against code which can modify it
4169 4179 (wx.py.PyShell does this and would otherwise crash ipython).
4170 4180 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
4171 4181
4172 4182 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
4173 4183 Ctrl-C problem, which does not mess up the input line.
4174 4184
4175 4185 2004-11-03 Fernando Perez <fperez@colorado.edu>
4176 4186
4177 4187 * IPython/Release.py: Changed licensing to BSD, in all files.
4178 4188 (name): lowercase name for tarball/RPM release.
4179 4189
4180 4190 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
4181 4191 use throughout ipython.
4182 4192
4183 4193 * IPython/Magic.py (Magic._ofind): Switch to using the new
4184 4194 OInspect.getdoc() function.
4185 4195
4186 4196 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
4187 4197 of the line currently being canceled via Ctrl-C. It's extremely
4188 4198 ugly, but I don't know how to do it better (the problem is one of
4189 4199 handling cross-thread exceptions).
4190 4200
4191 4201 2004-10-28 Fernando Perez <fperez@colorado.edu>
4192 4202
4193 4203 * IPython/Shell.py (signal_handler): add signal handlers to trap
4194 4204 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
4195 4205 report by Francesc Alted.
4196 4206
4197 4207 2004-10-21 Fernando Perez <fperez@colorado.edu>
4198 4208
4199 4209 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
4200 4210 to % for pysh syntax extensions.
4201 4211
4202 4212 2004-10-09 Fernando Perez <fperez@colorado.edu>
4203 4213
4204 4214 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
4205 4215 arrays to print a more useful summary, without calling str(arr).
4206 4216 This avoids the problem of extremely lengthy computations which
4207 4217 occur if arr is large, and appear to the user as a system lockup
4208 4218 with 100% cpu activity. After a suggestion by Kristian Sandberg
4209 4219 <Kristian.Sandberg@colorado.edu>.
4210 4220 (Magic.__init__): fix bug in global magic escapes not being
4211 4221 correctly set.
4212 4222
4213 4223 2004-10-08 Fernando Perez <fperez@colorado.edu>
4214 4224
4215 4225 * IPython/Magic.py (__license__): change to absolute imports of
4216 4226 ipython's own internal packages, to start adapting to the absolute
4217 4227 import requirement of PEP-328.
4218 4228
4219 4229 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
4220 4230 files, and standardize author/license marks through the Release
4221 4231 module instead of having per/file stuff (except for files with
4222 4232 particular licenses, like the MIT/PSF-licensed codes).
4223 4233
4224 4234 * IPython/Debugger.py: remove dead code for python 2.1
4225 4235
4226 4236 2004-10-04 Fernando Perez <fperez@colorado.edu>
4227 4237
4228 4238 * IPython/iplib.py (ipmagic): New function for accessing magics
4229 4239 via a normal python function call.
4230 4240
4231 4241 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
4232 4242 from '@' to '%', to accomodate the new @decorator syntax of python
4233 4243 2.4.
4234 4244
4235 4245 2004-09-29 Fernando Perez <fperez@colorado.edu>
4236 4246
4237 4247 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
4238 4248 matplotlib.use to prevent running scripts which try to switch
4239 4249 interactive backends from within ipython. This will just crash
4240 4250 the python interpreter, so we can't allow it (but a detailed error
4241 4251 is given to the user).
4242 4252
4243 4253 2004-09-28 Fernando Perez <fperez@colorado.edu>
4244 4254
4245 4255 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
4246 4256 matplotlib-related fixes so that using @run with non-matplotlib
4247 4257 scripts doesn't pop up spurious plot windows. This requires
4248 4258 matplotlib >= 0.63, where I had to make some changes as well.
4249 4259
4250 4260 * IPython/ipmaker.py (make_IPython): update version requirement to
4251 4261 python 2.2.
4252 4262
4253 4263 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
4254 4264 banner arg for embedded customization.
4255 4265
4256 4266 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
4257 4267 explicit uses of __IP as the IPython's instance name. Now things
4258 4268 are properly handled via the shell.name value. The actual code
4259 4269 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
4260 4270 is much better than before. I'll clean things completely when the
4261 4271 magic stuff gets a real overhaul.
4262 4272
4263 4273 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
4264 4274 minor changes to debian dir.
4265 4275
4266 4276 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
4267 4277 pointer to the shell itself in the interactive namespace even when
4268 4278 a user-supplied dict is provided. This is needed for embedding
4269 4279 purposes (found by tests with Michel Sanner).
4270 4280
4271 4281 2004-09-27 Fernando Perez <fperez@colorado.edu>
4272 4282
4273 4283 * IPython/UserConfig/ipythonrc: remove []{} from
4274 4284 readline_remove_delims, so that things like [modname.<TAB> do
4275 4285 proper completion. This disables [].TAB, but that's a less common
4276 4286 case than module names in list comprehensions, for example.
4277 4287 Thanks to a report by Andrea Riciputi.
4278 4288
4279 4289 2004-09-09 Fernando Perez <fperez@colorado.edu>
4280 4290
4281 4291 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
4282 4292 blocking problems in win32 and osx. Fix by John.
4283 4293
4284 4294 2004-09-08 Fernando Perez <fperez@colorado.edu>
4285 4295
4286 4296 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
4287 4297 for Win32 and OSX. Fix by John Hunter.
4288 4298
4289 4299 2004-08-30 *** Released version 0.6.3
4290 4300
4291 4301 2004-08-30 Fernando Perez <fperez@colorado.edu>
4292 4302
4293 4303 * setup.py (isfile): Add manpages to list of dependent files to be
4294 4304 updated.
4295 4305
4296 4306 2004-08-27 Fernando Perez <fperez@colorado.edu>
4297 4307
4298 4308 * IPython/Shell.py (start): I've disabled -wthread and -gthread
4299 4309 for now. They don't really work with standalone WX/GTK code
4300 4310 (though matplotlib IS working fine with both of those backends).
4301 4311 This will neeed much more testing. I disabled most things with
4302 4312 comments, so turning it back on later should be pretty easy.
4303 4313
4304 4314 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
4305 4315 autocalling of expressions like r'foo', by modifying the line
4306 4316 split regexp. Closes
4307 4317 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
4308 4318 Riley <ipythonbugs-AT-sabi.net>.
4309 4319 (InteractiveShell.mainloop): honor --nobanner with banner
4310 4320 extensions.
4311 4321
4312 4322 * IPython/Shell.py: Significant refactoring of all classes, so
4313 4323 that we can really support ALL matplotlib backends and threading
4314 4324 models (John spotted a bug with Tk which required this). Now we
4315 4325 should support single-threaded, WX-threads and GTK-threads, both
4316 4326 for generic code and for matplotlib.
4317 4327
4318 4328 * IPython/ipmaker.py (__call__): Changed -mpthread option to
4319 4329 -pylab, to simplify things for users. Will also remove the pylab
4320 4330 profile, since now all of matplotlib configuration is directly
4321 4331 handled here. This also reduces startup time.
4322 4332
4323 4333 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
4324 4334 shell wasn't being correctly called. Also in IPShellWX.
4325 4335
4326 4336 * IPython/iplib.py (InteractiveShell.__init__): Added option to
4327 4337 fine-tune banner.
4328 4338
4329 4339 * IPython/numutils.py (spike): Deprecate these spike functions,
4330 4340 delete (long deprecated) gnuplot_exec handler.
4331 4341
4332 4342 2004-08-26 Fernando Perez <fperez@colorado.edu>
4333 4343
4334 4344 * ipython.1: Update for threading options, plus some others which
4335 4345 were missing.
4336 4346
4337 4347 * IPython/ipmaker.py (__call__): Added -wthread option for
4338 4348 wxpython thread handling. Make sure threading options are only
4339 4349 valid at the command line.
4340 4350
4341 4351 * scripts/ipython: moved shell selection into a factory function
4342 4352 in Shell.py, to keep the starter script to a minimum.
4343 4353
4344 4354 2004-08-25 Fernando Perez <fperez@colorado.edu>
4345 4355
4346 4356 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
4347 4357 John. Along with some recent changes he made to matplotlib, the
4348 4358 next versions of both systems should work very well together.
4349 4359
4350 4360 2004-08-24 Fernando Perez <fperez@colorado.edu>
4351 4361
4352 4362 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
4353 4363 tried to switch the profiling to using hotshot, but I'm getting
4354 4364 strange errors from prof.runctx() there. I may be misreading the
4355 4365 docs, but it looks weird. For now the profiling code will
4356 4366 continue to use the standard profiler.
4357 4367
4358 4368 2004-08-23 Fernando Perez <fperez@colorado.edu>
4359 4369
4360 4370 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
4361 4371 threaded shell, by John Hunter. It's not quite ready yet, but
4362 4372 close.
4363 4373
4364 4374 2004-08-22 Fernando Perez <fperez@colorado.edu>
4365 4375
4366 4376 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
4367 4377 in Magic and ultraTB.
4368 4378
4369 4379 * ipython.1: document threading options in manpage.
4370 4380
4371 4381 * scripts/ipython: Changed name of -thread option to -gthread,
4372 4382 since this is GTK specific. I want to leave the door open for a
4373 4383 -wthread option for WX, which will most likely be necessary. This
4374 4384 change affects usage and ipmaker as well.
4375 4385
4376 4386 * IPython/Shell.py (matplotlib_shell): Add a factory function to
4377 4387 handle the matplotlib shell issues. Code by John Hunter
4378 4388 <jdhunter-AT-nitace.bsd.uchicago.edu>.
4379 4389 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
4380 4390 broken (and disabled for end users) for now, but it puts the
4381 4391 infrastructure in place.
4382 4392
4383 4393 2004-08-21 Fernando Perez <fperez@colorado.edu>
4384 4394
4385 4395 * ipythonrc-pylab: Add matplotlib support.
4386 4396
4387 4397 * matplotlib_config.py: new files for matplotlib support, part of
4388 4398 the pylab profile.
4389 4399
4390 4400 * IPython/usage.py (__doc__): documented the threading options.
4391 4401
4392 4402 2004-08-20 Fernando Perez <fperez@colorado.edu>
4393 4403
4394 4404 * ipython: Modified the main calling routine to handle the -thread
4395 4405 and -mpthread options. This needs to be done as a top-level hack,
4396 4406 because it determines which class to instantiate for IPython
4397 4407 itself.
4398 4408
4399 4409 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
4400 4410 classes to support multithreaded GTK operation without blocking,
4401 4411 and matplotlib with all backends. This is a lot of still very
4402 4412 experimental code, and threads are tricky. So it may still have a
4403 4413 few rough edges... This code owes a lot to
4404 4414 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
4405 4415 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
4406 4416 to John Hunter for all the matplotlib work.
4407 4417
4408 4418 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
4409 4419 options for gtk thread and matplotlib support.
4410 4420
4411 4421 2004-08-16 Fernando Perez <fperez@colorado.edu>
4412 4422
4413 4423 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
4414 4424 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
4415 4425 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
4416 4426
4417 4427 2004-08-11 Fernando Perez <fperez@colorado.edu>
4418 4428
4419 4429 * setup.py (isfile): Fix build so documentation gets updated for
4420 4430 rpms (it was only done for .tgz builds).
4421 4431
4422 4432 2004-08-10 Fernando Perez <fperez@colorado.edu>
4423 4433
4424 4434 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
4425 4435
4426 4436 * iplib.py : Silence syntax error exceptions in tab-completion.
4427 4437
4428 4438 2004-08-05 Fernando Perez <fperez@colorado.edu>
4429 4439
4430 4440 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
4431 4441 'color off' mark for continuation prompts. This was causing long
4432 4442 continuation lines to mis-wrap.
4433 4443
4434 4444 2004-08-01 Fernando Perez <fperez@colorado.edu>
4435 4445
4436 4446 * IPython/ipmaker.py (make_IPython): Allow the shell class used
4437 4447 for building ipython to be a parameter. All this is necessary
4438 4448 right now to have a multithreaded version, but this insane
4439 4449 non-design will be cleaned up soon. For now, it's a hack that
4440 4450 works.
4441 4451
4442 4452 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
4443 4453 args in various places. No bugs so far, but it's a dangerous
4444 4454 practice.
4445 4455
4446 4456 2004-07-31 Fernando Perez <fperez@colorado.edu>
4447 4457
4448 4458 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
4449 4459 fix completion of files with dots in their names under most
4450 4460 profiles (pysh was OK because the completion order is different).
4451 4461
4452 4462 2004-07-27 Fernando Perez <fperez@colorado.edu>
4453 4463
4454 4464 * IPython/iplib.py (InteractiveShell.__init__): build dict of
4455 4465 keywords manually, b/c the one in keyword.py was removed in python
4456 4466 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
4457 4467 This is NOT a bug under python 2.3 and earlier.
4458 4468
4459 4469 2004-07-26 Fernando Perez <fperez@colorado.edu>
4460 4470
4461 4471 * IPython/ultraTB.py (VerboseTB.text): Add another
4462 4472 linecache.checkcache() call to try to prevent inspect.py from
4463 4473 crashing under python 2.3. I think this fixes
4464 4474 http://www.scipy.net/roundup/ipython/issue17.
4465 4475
4466 4476 2004-07-26 *** Released version 0.6.2
4467 4477
4468 4478 2004-07-26 Fernando Perez <fperez@colorado.edu>
4469 4479
4470 4480 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4471 4481 fail for any number.
4472 4482 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4473 4483 empty bookmarks.
4474 4484
4475 4485 2004-07-26 *** Released version 0.6.1
4476 4486
4477 4487 2004-07-26 Fernando Perez <fperez@colorado.edu>
4478 4488
4479 4489 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4480 4490
4481 4491 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4482 4492 escaping '()[]{}' in filenames.
4483 4493
4484 4494 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4485 4495 Python 2.2 users who lack a proper shlex.split.
4486 4496
4487 4497 2004-07-19 Fernando Perez <fperez@colorado.edu>
4488 4498
4489 4499 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4490 4500 for reading readline's init file. I follow the normal chain:
4491 4501 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4492 4502 report by Mike Heeter. This closes
4493 4503 http://www.scipy.net/roundup/ipython/issue16.
4494 4504
4495 4505 2004-07-18 Fernando Perez <fperez@colorado.edu>
4496 4506
4497 4507 * IPython/iplib.py (__init__): Add better handling of '\' under
4498 4508 Win32 for filenames. After a patch by Ville.
4499 4509
4500 4510 2004-07-17 Fernando Perez <fperez@colorado.edu>
4501 4511
4502 4512 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4503 4513 autocalling would be triggered for 'foo is bar' if foo is
4504 4514 callable. I also cleaned up the autocall detection code to use a
4505 4515 regexp, which is faster. Bug reported by Alexander Schmolck.
4506 4516
4507 4517 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4508 4518 '?' in them would confuse the help system. Reported by Alex
4509 4519 Schmolck.
4510 4520
4511 4521 2004-07-16 Fernando Perez <fperez@colorado.edu>
4512 4522
4513 4523 * IPython/GnuplotInteractive.py (__all__): added plot2.
4514 4524
4515 4525 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4516 4526 plotting dictionaries, lists or tuples of 1d arrays.
4517 4527
4518 4528 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4519 4529 optimizations.
4520 4530
4521 4531 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4522 4532 the information which was there from Janko's original IPP code:
4523 4533
4524 4534 03.05.99 20:53 porto.ifm.uni-kiel.de
4525 4535 --Started changelog.
4526 4536 --make clear do what it say it does
4527 4537 --added pretty output of lines from inputcache
4528 4538 --Made Logger a mixin class, simplifies handling of switches
4529 4539 --Added own completer class. .string<TAB> expands to last history
4530 4540 line which starts with string. The new expansion is also present
4531 4541 with Ctrl-r from the readline library. But this shows, who this
4532 4542 can be done for other cases.
4533 4543 --Added convention that all shell functions should accept a
4534 4544 parameter_string This opens the door for different behaviour for
4535 4545 each function. @cd is a good example of this.
4536 4546
4537 4547 04.05.99 12:12 porto.ifm.uni-kiel.de
4538 4548 --added logfile rotation
4539 4549 --added new mainloop method which freezes first the namespace
4540 4550
4541 4551 07.05.99 21:24 porto.ifm.uni-kiel.de
4542 4552 --added the docreader classes. Now there is a help system.
4543 4553 -This is only a first try. Currently it's not easy to put new
4544 4554 stuff in the indices. But this is the way to go. Info would be
4545 4555 better, but HTML is every where and not everybody has an info
4546 4556 system installed and it's not so easy to change html-docs to info.
4547 4557 --added global logfile option
4548 4558 --there is now a hook for object inspection method pinfo needs to
4549 4559 be provided for this. Can be reached by two '??'.
4550 4560
4551 4561 08.05.99 20:51 porto.ifm.uni-kiel.de
4552 4562 --added a README
4553 4563 --bug in rc file. Something has changed so functions in the rc
4554 4564 file need to reference the shell and not self. Not clear if it's a
4555 4565 bug or feature.
4556 4566 --changed rc file for new behavior
4557 4567
4558 4568 2004-07-15 Fernando Perez <fperez@colorado.edu>
4559 4569
4560 4570 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4561 4571 cache was falling out of sync in bizarre manners when multi-line
4562 4572 input was present. Minor optimizations and cleanup.
4563 4573
4564 4574 (Logger): Remove old Changelog info for cleanup. This is the
4565 4575 information which was there from Janko's original code:
4566 4576
4567 4577 Changes to Logger: - made the default log filename a parameter
4568 4578
4569 4579 - put a check for lines beginning with !@? in log(). Needed
4570 4580 (even if the handlers properly log their lines) for mid-session
4571 4581 logging activation to work properly. Without this, lines logged
4572 4582 in mid session, which get read from the cache, would end up
4573 4583 'bare' (with !@? in the open) in the log. Now they are caught
4574 4584 and prepended with a #.
4575 4585
4576 4586 * IPython/iplib.py (InteractiveShell.init_readline): added check
4577 4587 in case MagicCompleter fails to be defined, so we don't crash.
4578 4588
4579 4589 2004-07-13 Fernando Perez <fperez@colorado.edu>
4580 4590
4581 4591 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4582 4592 of EPS if the requested filename ends in '.eps'.
4583 4593
4584 4594 2004-07-04 Fernando Perez <fperez@colorado.edu>
4585 4595
4586 4596 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4587 4597 escaping of quotes when calling the shell.
4588 4598
4589 4599 2004-07-02 Fernando Perez <fperez@colorado.edu>
4590 4600
4591 4601 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4592 4602 gettext not working because we were clobbering '_'. Fixes
4593 4603 http://www.scipy.net/roundup/ipython/issue6.
4594 4604
4595 4605 2004-07-01 Fernando Perez <fperez@colorado.edu>
4596 4606
4597 4607 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4598 4608 into @cd. Patch by Ville.
4599 4609
4600 4610 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4601 4611 new function to store things after ipmaker runs. Patch by Ville.
4602 4612 Eventually this will go away once ipmaker is removed and the class
4603 4613 gets cleaned up, but for now it's ok. Key functionality here is
4604 4614 the addition of the persistent storage mechanism, a dict for
4605 4615 keeping data across sessions (for now just bookmarks, but more can
4606 4616 be implemented later).
4607 4617
4608 4618 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4609 4619 persistent across sections. Patch by Ville, I modified it
4610 4620 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4611 4621 added a '-l' option to list all bookmarks.
4612 4622
4613 4623 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4614 4624 center for cleanup. Registered with atexit.register(). I moved
4615 4625 here the old exit_cleanup(). After a patch by Ville.
4616 4626
4617 4627 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4618 4628 characters in the hacked shlex_split for python 2.2.
4619 4629
4620 4630 * IPython/iplib.py (file_matches): more fixes to filenames with
4621 4631 whitespace in them. It's not perfect, but limitations in python's
4622 4632 readline make it impossible to go further.
4623 4633
4624 4634 2004-06-29 Fernando Perez <fperez@colorado.edu>
4625 4635
4626 4636 * IPython/iplib.py (file_matches): escape whitespace correctly in
4627 4637 filename completions. Bug reported by Ville.
4628 4638
4629 4639 2004-06-28 Fernando Perez <fperez@colorado.edu>
4630 4640
4631 4641 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4632 4642 the history file will be called 'history-PROFNAME' (or just
4633 4643 'history' if no profile is loaded). I was getting annoyed at
4634 4644 getting my Numerical work history clobbered by pysh sessions.
4635 4645
4636 4646 * IPython/iplib.py (InteractiveShell.__init__): Internal
4637 4647 getoutputerror() function so that we can honor the system_verbose
4638 4648 flag for _all_ system calls. I also added escaping of #
4639 4649 characters here to avoid confusing Itpl.
4640 4650
4641 4651 * IPython/Magic.py (shlex_split): removed call to shell in
4642 4652 parse_options and replaced it with shlex.split(). The annoying
4643 4653 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4644 4654 to backport it from 2.3, with several frail hacks (the shlex
4645 4655 module is rather limited in 2.2). Thanks to a suggestion by Ville
4646 4656 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4647 4657 problem.
4648 4658
4649 4659 (Magic.magic_system_verbose): new toggle to print the actual
4650 4660 system calls made by ipython. Mainly for debugging purposes.
4651 4661
4652 4662 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4653 4663 doesn't support persistence. Reported (and fix suggested) by
4654 4664 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4655 4665
4656 4666 2004-06-26 Fernando Perez <fperez@colorado.edu>
4657 4667
4658 4668 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4659 4669 continue prompts.
4660 4670
4661 4671 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4662 4672 function (basically a big docstring) and a few more things here to
4663 4673 speedup startup. pysh.py is now very lightweight. We want because
4664 4674 it gets execfile'd, while InterpreterExec gets imported, so
4665 4675 byte-compilation saves time.
4666 4676
4667 4677 2004-06-25 Fernando Perez <fperez@colorado.edu>
4668 4678
4669 4679 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4670 4680 -NUM', which was recently broken.
4671 4681
4672 4682 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4673 4683 in multi-line input (but not !!, which doesn't make sense there).
4674 4684
4675 4685 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4676 4686 It's just too useful, and people can turn it off in the less
4677 4687 common cases where it's a problem.
4678 4688
4679 4689 2004-06-24 Fernando Perez <fperez@colorado.edu>
4680 4690
4681 4691 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4682 4692 special syntaxes (like alias calling) is now allied in multi-line
4683 4693 input. This is still _very_ experimental, but it's necessary for
4684 4694 efficient shell usage combining python looping syntax with system
4685 4695 calls. For now it's restricted to aliases, I don't think it
4686 4696 really even makes sense to have this for magics.
4687 4697
4688 4698 2004-06-23 Fernando Perez <fperez@colorado.edu>
4689 4699
4690 4700 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4691 4701 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4692 4702
4693 4703 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4694 4704 extensions under Windows (after code sent by Gary Bishop). The
4695 4705 extensions considered 'executable' are stored in IPython's rc
4696 4706 structure as win_exec_ext.
4697 4707
4698 4708 * IPython/genutils.py (shell): new function, like system() but
4699 4709 without return value. Very useful for interactive shell work.
4700 4710
4701 4711 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4702 4712 delete aliases.
4703 4713
4704 4714 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4705 4715 sure that the alias table doesn't contain python keywords.
4706 4716
4707 4717 2004-06-21 Fernando Perez <fperez@colorado.edu>
4708 4718
4709 4719 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4710 4720 non-existent items are found in $PATH. Reported by Thorsten.
4711 4721
4712 4722 2004-06-20 Fernando Perez <fperez@colorado.edu>
4713 4723
4714 4724 * IPython/iplib.py (complete): modified the completer so that the
4715 4725 order of priorities can be easily changed at runtime.
4716 4726
4717 4727 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4718 4728 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4719 4729
4720 4730 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4721 4731 expand Python variables prepended with $ in all system calls. The
4722 4732 same was done to InteractiveShell.handle_shell_escape. Now all
4723 4733 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4724 4734 expansion of python variables and expressions according to the
4725 4735 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4726 4736
4727 4737 Though PEP-215 has been rejected, a similar (but simpler) one
4728 4738 seems like it will go into Python 2.4, PEP-292 -
4729 4739 http://www.python.org/peps/pep-0292.html.
4730 4740
4731 4741 I'll keep the full syntax of PEP-215, since IPython has since the
4732 4742 start used Ka-Ping Yee's reference implementation discussed there
4733 4743 (Itpl), and I actually like the powerful semantics it offers.
4734 4744
4735 4745 In order to access normal shell variables, the $ has to be escaped
4736 4746 via an extra $. For example:
4737 4747
4738 4748 In [7]: PATH='a python variable'
4739 4749
4740 4750 In [8]: !echo $PATH
4741 4751 a python variable
4742 4752
4743 4753 In [9]: !echo $$PATH
4744 4754 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4745 4755
4746 4756 (Magic.parse_options): escape $ so the shell doesn't evaluate
4747 4757 things prematurely.
4748 4758
4749 4759 * IPython/iplib.py (InteractiveShell.call_alias): added the
4750 4760 ability for aliases to expand python variables via $.
4751 4761
4752 4762 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4753 4763 system, now there's a @rehash/@rehashx pair of magics. These work
4754 4764 like the csh rehash command, and can be invoked at any time. They
4755 4765 build a table of aliases to everything in the user's $PATH
4756 4766 (@rehash uses everything, @rehashx is slower but only adds
4757 4767 executable files). With this, the pysh.py-based shell profile can
4758 4768 now simply call rehash upon startup, and full access to all
4759 4769 programs in the user's path is obtained.
4760 4770
4761 4771 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4762 4772 functionality is now fully in place. I removed the old dynamic
4763 4773 code generation based approach, in favor of a much lighter one
4764 4774 based on a simple dict. The advantage is that this allows me to
4765 4775 now have thousands of aliases with negligible cost (unthinkable
4766 4776 with the old system).
4767 4777
4768 4778 2004-06-19 Fernando Perez <fperez@colorado.edu>
4769 4779
4770 4780 * IPython/iplib.py (__init__): extended MagicCompleter class to
4771 4781 also complete (last in priority) on user aliases.
4772 4782
4773 4783 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4774 4784 call to eval.
4775 4785 (ItplNS.__init__): Added a new class which functions like Itpl,
4776 4786 but allows configuring the namespace for the evaluation to occur
4777 4787 in.
4778 4788
4779 4789 2004-06-18 Fernando Perez <fperez@colorado.edu>
4780 4790
4781 4791 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4782 4792 better message when 'exit' or 'quit' are typed (a common newbie
4783 4793 confusion).
4784 4794
4785 4795 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4786 4796 check for Windows users.
4787 4797
4788 4798 * IPython/iplib.py (InteractiveShell.user_setup): removed
4789 4799 disabling of colors for Windows. I'll test at runtime and issue a
4790 4800 warning if Gary's readline isn't found, as to nudge users to
4791 4801 download it.
4792 4802
4793 4803 2004-06-16 Fernando Perez <fperez@colorado.edu>
4794 4804
4795 4805 * IPython/genutils.py (Stream.__init__): changed to print errors
4796 4806 to sys.stderr. I had a circular dependency here. Now it's
4797 4807 possible to run ipython as IDLE's shell (consider this pre-alpha,
4798 4808 since true stdout things end up in the starting terminal instead
4799 4809 of IDLE's out).
4800 4810
4801 4811 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4802 4812 users who haven't # updated their prompt_in2 definitions. Remove
4803 4813 eventually.
4804 4814 (multiple_replace): added credit to original ASPN recipe.
4805 4815
4806 4816 2004-06-15 Fernando Perez <fperez@colorado.edu>
4807 4817
4808 4818 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4809 4819 list of auto-defined aliases.
4810 4820
4811 4821 2004-06-13 Fernando Perez <fperez@colorado.edu>
4812 4822
4813 4823 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4814 4824 install was really requested (so setup.py can be used for other
4815 4825 things under Windows).
4816 4826
4817 4827 2004-06-10 Fernando Perez <fperez@colorado.edu>
4818 4828
4819 4829 * IPython/Logger.py (Logger.create_log): Manually remove any old
4820 4830 backup, since os.remove may fail under Windows. Fixes bug
4821 4831 reported by Thorsten.
4822 4832
4823 4833 2004-06-09 Fernando Perez <fperez@colorado.edu>
4824 4834
4825 4835 * examples/example-embed.py: fixed all references to %n (replaced
4826 4836 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4827 4837 for all examples and the manual as well.
4828 4838
4829 4839 2004-06-08 Fernando Perez <fperez@colorado.edu>
4830 4840
4831 4841 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4832 4842 alignment and color management. All 3 prompt subsystems now
4833 4843 inherit from BasePrompt.
4834 4844
4835 4845 * tools/release: updates for windows installer build and tag rpms
4836 4846 with python version (since paths are fixed).
4837 4847
4838 4848 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4839 4849 which will become eventually obsolete. Also fixed the default
4840 4850 prompt_in2 to use \D, so at least new users start with the correct
4841 4851 defaults.
4842 4852 WARNING: Users with existing ipythonrc files will need to apply
4843 4853 this fix manually!
4844 4854
4845 4855 * setup.py: make windows installer (.exe). This is finally the
4846 4856 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4847 4857 which I hadn't included because it required Python 2.3 (or recent
4848 4858 distutils).
4849 4859
4850 4860 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4851 4861 usage of new '\D' escape.
4852 4862
4853 4863 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4854 4864 lacks os.getuid())
4855 4865 (CachedOutput.set_colors): Added the ability to turn coloring
4856 4866 on/off with @colors even for manually defined prompt colors. It
4857 4867 uses a nasty global, but it works safely and via the generic color
4858 4868 handling mechanism.
4859 4869 (Prompt2.__init__): Introduced new escape '\D' for continuation
4860 4870 prompts. It represents the counter ('\#') as dots.
4861 4871 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4862 4872 need to update their ipythonrc files and replace '%n' with '\D' in
4863 4873 their prompt_in2 settings everywhere. Sorry, but there's
4864 4874 otherwise no clean way to get all prompts to properly align. The
4865 4875 ipythonrc shipped with IPython has been updated.
4866 4876
4867 4877 2004-06-07 Fernando Perez <fperez@colorado.edu>
4868 4878
4869 4879 * setup.py (isfile): Pass local_icons option to latex2html, so the
4870 4880 resulting HTML file is self-contained. Thanks to
4871 4881 dryice-AT-liu.com.cn for the tip.
4872 4882
4873 4883 * pysh.py: I created a new profile 'shell', which implements a
4874 4884 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4875 4885 system shell, nor will it become one anytime soon. It's mainly
4876 4886 meant to illustrate the use of the new flexible bash-like prompts.
4877 4887 I guess it could be used by hardy souls for true shell management,
4878 4888 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4879 4889 profile. This uses the InterpreterExec extension provided by
4880 4890 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4881 4891
4882 4892 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4883 4893 auto-align itself with the length of the previous input prompt
4884 4894 (taking into account the invisible color escapes).
4885 4895 (CachedOutput.__init__): Large restructuring of this class. Now
4886 4896 all three prompts (primary1, primary2, output) are proper objects,
4887 4897 managed by the 'parent' CachedOutput class. The code is still a
4888 4898 bit hackish (all prompts share state via a pointer to the cache),
4889 4899 but it's overall far cleaner than before.
4890 4900
4891 4901 * IPython/genutils.py (getoutputerror): modified to add verbose,
4892 4902 debug and header options. This makes the interface of all getout*
4893 4903 functions uniform.
4894 4904 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4895 4905
4896 4906 * IPython/Magic.py (Magic.default_option): added a function to
4897 4907 allow registering default options for any magic command. This
4898 4908 makes it easy to have profiles which customize the magics globally
4899 4909 for a certain use. The values set through this function are
4900 4910 picked up by the parse_options() method, which all magics should
4901 4911 use to parse their options.
4902 4912
4903 4913 * IPython/genutils.py (warn): modified the warnings framework to
4904 4914 use the Term I/O class. I'm trying to slowly unify all of
4905 4915 IPython's I/O operations to pass through Term.
4906 4916
4907 4917 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4908 4918 the secondary prompt to correctly match the length of the primary
4909 4919 one for any prompt. Now multi-line code will properly line up
4910 4920 even for path dependent prompts, such as the new ones available
4911 4921 via the prompt_specials.
4912 4922
4913 4923 2004-06-06 Fernando Perez <fperez@colorado.edu>
4914 4924
4915 4925 * IPython/Prompts.py (prompt_specials): Added the ability to have
4916 4926 bash-like special sequences in the prompts, which get
4917 4927 automatically expanded. Things like hostname, current working
4918 4928 directory and username are implemented already, but it's easy to
4919 4929 add more in the future. Thanks to a patch by W.J. van der Laan
4920 4930 <gnufnork-AT-hetdigitalegat.nl>
4921 4931 (prompt_specials): Added color support for prompt strings, so
4922 4932 users can define arbitrary color setups for their prompts.
4923 4933
4924 4934 2004-06-05 Fernando Perez <fperez@colorado.edu>
4925 4935
4926 4936 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4927 4937 code to load Gary Bishop's readline and configure it
4928 4938 automatically. Thanks to Gary for help on this.
4929 4939
4930 4940 2004-06-01 Fernando Perez <fperez@colorado.edu>
4931 4941
4932 4942 * IPython/Logger.py (Logger.create_log): fix bug for logging
4933 4943 with no filename (previous fix was incomplete).
4934 4944
4935 4945 2004-05-25 Fernando Perez <fperez@colorado.edu>
4936 4946
4937 4947 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4938 4948 parens would get passed to the shell.
4939 4949
4940 4950 2004-05-20 Fernando Perez <fperez@colorado.edu>
4941 4951
4942 4952 * IPython/Magic.py (Magic.magic_prun): changed default profile
4943 4953 sort order to 'time' (the more common profiling need).
4944 4954
4945 4955 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4946 4956 so that source code shown is guaranteed in sync with the file on
4947 4957 disk (also changed in psource). Similar fix to the one for
4948 4958 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4949 4959 <yann.ledu-AT-noos.fr>.
4950 4960
4951 4961 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4952 4962 with a single option would not be correctly parsed. Closes
4953 4963 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4954 4964 introduced in 0.6.0 (on 2004-05-06).
4955 4965
4956 4966 2004-05-13 *** Released version 0.6.0
4957 4967
4958 4968 2004-05-13 Fernando Perez <fperez@colorado.edu>
4959 4969
4960 4970 * debian/: Added debian/ directory to CVS, so that debian support
4961 4971 is publicly accessible. The debian package is maintained by Jack
4962 4972 Moffit <jack-AT-xiph.org>.
4963 4973
4964 4974 * Documentation: included the notes about an ipython-based system
4965 4975 shell (the hypothetical 'pysh') into the new_design.pdf document,
4966 4976 so that these ideas get distributed to users along with the
4967 4977 official documentation.
4968 4978
4969 4979 2004-05-10 Fernando Perez <fperez@colorado.edu>
4970 4980
4971 4981 * IPython/Logger.py (Logger.create_log): fix recently introduced
4972 4982 bug (misindented line) where logstart would fail when not given an
4973 4983 explicit filename.
4974 4984
4975 4985 2004-05-09 Fernando Perez <fperez@colorado.edu>
4976 4986
4977 4987 * IPython/Magic.py (Magic.parse_options): skip system call when
4978 4988 there are no options to look for. Faster, cleaner for the common
4979 4989 case.
4980 4990
4981 4991 * Documentation: many updates to the manual: describing Windows
4982 4992 support better, Gnuplot updates, credits, misc small stuff. Also
4983 4993 updated the new_design doc a bit.
4984 4994
4985 4995 2004-05-06 *** Released version 0.6.0.rc1
4986 4996
4987 4997 2004-05-06 Fernando Perez <fperez@colorado.edu>
4988 4998
4989 4999 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4990 5000 operations to use the vastly more efficient list/''.join() method.
4991 5001 (FormattedTB.text): Fix
4992 5002 http://www.scipy.net/roundup/ipython/issue12 - exception source
4993 5003 extract not updated after reload. Thanks to Mike Salib
4994 5004 <msalib-AT-mit.edu> for pinning the source of the problem.
4995 5005 Fortunately, the solution works inside ipython and doesn't require
4996 5006 any changes to python proper.
4997 5007
4998 5008 * IPython/Magic.py (Magic.parse_options): Improved to process the
4999 5009 argument list as a true shell would (by actually using the
5000 5010 underlying system shell). This way, all @magics automatically get
5001 5011 shell expansion for variables. Thanks to a comment by Alex
5002 5012 Schmolck.
5003 5013
5004 5014 2004-04-04 Fernando Perez <fperez@colorado.edu>
5005 5015
5006 5016 * IPython/iplib.py (InteractiveShell.interact): Added a special
5007 5017 trap for a debugger quit exception, which is basically impossible
5008 5018 to handle by normal mechanisms, given what pdb does to the stack.
5009 5019 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
5010 5020
5011 5021 2004-04-03 Fernando Perez <fperez@colorado.edu>
5012 5022
5013 5023 * IPython/genutils.py (Term): Standardized the names of the Term
5014 5024 class streams to cin/cout/cerr, following C++ naming conventions
5015 5025 (I can't use in/out/err because 'in' is not a valid attribute
5016 5026 name).
5017 5027
5018 5028 * IPython/iplib.py (InteractiveShell.interact): don't increment
5019 5029 the prompt if there's no user input. By Daniel 'Dang' Griffith
5020 5030 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
5021 5031 Francois Pinard.
5022 5032
5023 5033 2004-04-02 Fernando Perez <fperez@colorado.edu>
5024 5034
5025 5035 * IPython/genutils.py (Stream.__init__): Modified to survive at
5026 5036 least importing in contexts where stdin/out/err aren't true file
5027 5037 objects, such as PyCrust (they lack fileno() and mode). However,
5028 5038 the recovery facilities which rely on these things existing will
5029 5039 not work.
5030 5040
5031 5041 2004-04-01 Fernando Perez <fperez@colorado.edu>
5032 5042
5033 5043 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
5034 5044 use the new getoutputerror() function, so it properly
5035 5045 distinguishes stdout/err.
5036 5046
5037 5047 * IPython/genutils.py (getoutputerror): added a function to
5038 5048 capture separately the standard output and error of a command.
5039 5049 After a comment from dang on the mailing lists. This code is
5040 5050 basically a modified version of commands.getstatusoutput(), from
5041 5051 the standard library.
5042 5052
5043 5053 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
5044 5054 '!!' as a special syntax (shorthand) to access @sx.
5045 5055
5046 5056 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
5047 5057 command and return its output as a list split on '\n'.
5048 5058
5049 5059 2004-03-31 Fernando Perez <fperez@colorado.edu>
5050 5060
5051 5061 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
5052 5062 method to dictionaries used as FakeModule instances if they lack
5053 5063 it. At least pydoc in python2.3 breaks for runtime-defined
5054 5064 functions without this hack. At some point I need to _really_
5055 5065 understand what FakeModule is doing, because it's a gross hack.
5056 5066 But it solves Arnd's problem for now...
5057 5067
5058 5068 2004-02-27 Fernando Perez <fperez@colorado.edu>
5059 5069
5060 5070 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
5061 5071 mode would behave erratically. Also increased the number of
5062 5072 possible logs in rotate mod to 999. Thanks to Rod Holland
5063 5073 <rhh@StructureLABS.com> for the report and fixes.
5064 5074
5065 5075 2004-02-26 Fernando Perez <fperez@colorado.edu>
5066 5076
5067 5077 * IPython/genutils.py (page): Check that the curses module really
5068 5078 has the initscr attribute before trying to use it. For some
5069 5079 reason, the Solaris curses module is missing this. I think this
5070 5080 should be considered a Solaris python bug, but I'm not sure.
5071 5081
5072 5082 2004-01-17 Fernando Perez <fperez@colorado.edu>
5073 5083
5074 5084 * IPython/genutils.py (Stream.__init__): Changes to try to make
5075 5085 ipython robust against stdin/out/err being closed by the user.
5076 5086 This is 'user error' (and blocks a normal python session, at least
5077 5087 the stdout case). However, Ipython should be able to survive such
5078 5088 instances of abuse as gracefully as possible. To simplify the
5079 5089 coding and maintain compatibility with Gary Bishop's Term
5080 5090 contributions, I've made use of classmethods for this. I think
5081 5091 this introduces a dependency on python 2.2.
5082 5092
5083 5093 2004-01-13 Fernando Perez <fperez@colorado.edu>
5084 5094
5085 5095 * IPython/numutils.py (exp_safe): simplified the code a bit and
5086 5096 removed the need for importing the kinds module altogether.
5087 5097
5088 5098 2004-01-06 Fernando Perez <fperez@colorado.edu>
5089 5099
5090 5100 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
5091 5101 a magic function instead, after some community feedback. No
5092 5102 special syntax will exist for it, but its name is deliberately
5093 5103 very short.
5094 5104
5095 5105 2003-12-20 Fernando Perez <fperez@colorado.edu>
5096 5106
5097 5107 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
5098 5108 new functionality, to automagically assign the result of a shell
5099 5109 command to a variable. I'll solicit some community feedback on
5100 5110 this before making it permanent.
5101 5111
5102 5112 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
5103 5113 requested about callables for which inspect couldn't obtain a
5104 5114 proper argspec. Thanks to a crash report sent by Etienne
5105 5115 Posthumus <etienne-AT-apple01.cs.vu.nl>.
5106 5116
5107 5117 2003-12-09 Fernando Perez <fperez@colorado.edu>
5108 5118
5109 5119 * IPython/genutils.py (page): patch for the pager to work across
5110 5120 various versions of Windows. By Gary Bishop.
5111 5121
5112 5122 2003-12-04 Fernando Perez <fperez@colorado.edu>
5113 5123
5114 5124 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
5115 5125 Gnuplot.py version 1.7, whose internal names changed quite a bit.
5116 5126 While I tested this and it looks ok, there may still be corner
5117 5127 cases I've missed.
5118 5128
5119 5129 2003-12-01 Fernando Perez <fperez@colorado.edu>
5120 5130
5121 5131 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
5122 5132 where a line like 'p,q=1,2' would fail because the automagic
5123 5133 system would be triggered for @p.
5124 5134
5125 5135 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
5126 5136 cleanups, code unmodified.
5127 5137
5128 5138 * IPython/genutils.py (Term): added a class for IPython to handle
5129 5139 output. In most cases it will just be a proxy for stdout/err, but
5130 5140 having this allows modifications to be made for some platforms,
5131 5141 such as handling color escapes under Windows. All of this code
5132 5142 was contributed by Gary Bishop, with minor modifications by me.
5133 5143 The actual changes affect many files.
5134 5144
5135 5145 2003-11-30 Fernando Perez <fperez@colorado.edu>
5136 5146
5137 5147 * IPython/iplib.py (file_matches): new completion code, courtesy
5138 5148 of Jeff Collins. This enables filename completion again under
5139 5149 python 2.3, which disabled it at the C level.
5140 5150
5141 5151 2003-11-11 Fernando Perez <fperez@colorado.edu>
5142 5152
5143 5153 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
5144 5154 for Numeric.array(map(...)), but often convenient.
5145 5155
5146 5156 2003-11-05 Fernando Perez <fperez@colorado.edu>
5147 5157
5148 5158 * IPython/numutils.py (frange): Changed a call from int() to
5149 5159 int(round()) to prevent a problem reported with arange() in the
5150 5160 numpy list.
5151 5161
5152 5162 2003-10-06 Fernando Perez <fperez@colorado.edu>
5153 5163
5154 5164 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
5155 5165 prevent crashes if sys lacks an argv attribute (it happens with
5156 5166 embedded interpreters which build a bare-bones sys module).
5157 5167 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
5158 5168
5159 5169 2003-09-24 Fernando Perez <fperez@colorado.edu>
5160 5170
5161 5171 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
5162 5172 to protect against poorly written user objects where __getattr__
5163 5173 raises exceptions other than AttributeError. Thanks to a bug
5164 5174 report by Oliver Sander <osander-AT-gmx.de>.
5165 5175
5166 5176 * IPython/FakeModule.py (FakeModule.__repr__): this method was
5167 5177 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
5168 5178
5169 5179 2003-09-09 Fernando Perez <fperez@colorado.edu>
5170 5180
5171 5181 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
5172 5182 unpacking a list whith a callable as first element would
5173 5183 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
5174 5184 Collins.
5175 5185
5176 5186 2003-08-25 *** Released version 0.5.0
5177 5187
5178 5188 2003-08-22 Fernando Perez <fperez@colorado.edu>
5179 5189
5180 5190 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
5181 5191 improperly defined user exceptions. Thanks to feedback from Mark
5182 5192 Russell <mrussell-AT-verio.net>.
5183 5193
5184 5194 2003-08-20 Fernando Perez <fperez@colorado.edu>
5185 5195
5186 5196 * IPython/OInspect.py (Inspector.pinfo): changed String Form
5187 5197 printing so that it would print multi-line string forms starting
5188 5198 with a new line. This way the formatting is better respected for
5189 5199 objects which work hard to make nice string forms.
5190 5200
5191 5201 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
5192 5202 autocall would overtake data access for objects with both
5193 5203 __getitem__ and __call__.
5194 5204
5195 5205 2003-08-19 *** Released version 0.5.0-rc1
5196 5206
5197 5207 2003-08-19 Fernando Perez <fperez@colorado.edu>
5198 5208
5199 5209 * IPython/deep_reload.py (load_tail): single tiny change here
5200 5210 seems to fix the long-standing bug of dreload() failing to work
5201 5211 for dotted names. But this module is pretty tricky, so I may have
5202 5212 missed some subtlety. Needs more testing!.
5203 5213
5204 5214 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
5205 5215 exceptions which have badly implemented __str__ methods.
5206 5216 (VerboseTB.text): harden against inspect.getinnerframes crashing,
5207 5217 which I've been getting reports about from Python 2.3 users. I
5208 5218 wish I had a simple test case to reproduce the problem, so I could
5209 5219 either write a cleaner workaround or file a bug report if
5210 5220 necessary.
5211 5221
5212 5222 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
5213 5223 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
5214 5224 a bug report by Tjabo Kloppenburg.
5215 5225
5216 5226 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
5217 5227 crashes. Wrapped the pdb call in a blanket try/except, since pdb
5218 5228 seems rather unstable. Thanks to a bug report by Tjabo
5219 5229 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
5220 5230
5221 5231 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
5222 5232 this out soon because of the critical fixes in the inner loop for
5223 5233 generators.
5224 5234
5225 5235 * IPython/Magic.py (Magic.getargspec): removed. This (and
5226 5236 _get_def) have been obsoleted by OInspect for a long time, I
5227 5237 hadn't noticed that they were dead code.
5228 5238 (Magic._ofind): restored _ofind functionality for a few literals
5229 5239 (those in ["''",'""','[]','{}','()']). But it won't work anymore
5230 5240 for things like "hello".capitalize?, since that would require a
5231 5241 potentially dangerous eval() again.
5232 5242
5233 5243 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
5234 5244 logic a bit more to clean up the escapes handling and minimize the
5235 5245 use of _ofind to only necessary cases. The interactive 'feel' of
5236 5246 IPython should have improved quite a bit with the changes in
5237 5247 _prefilter and _ofind (besides being far safer than before).
5238 5248
5239 5249 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
5240 5250 obscure, never reported). Edit would fail to find the object to
5241 5251 edit under some circumstances.
5242 5252 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
5243 5253 which were causing double-calling of generators. Those eval calls
5244 5254 were _very_ dangerous, since code with side effects could be
5245 5255 triggered. As they say, 'eval is evil'... These were the
5246 5256 nastiest evals in IPython. Besides, _ofind is now far simpler,
5247 5257 and it should also be quite a bit faster. Its use of inspect is
5248 5258 also safer, so perhaps some of the inspect-related crashes I've
5249 5259 seen lately with Python 2.3 might be taken care of. That will
5250 5260 need more testing.
5251 5261
5252 5262 2003-08-17 Fernando Perez <fperez@colorado.edu>
5253 5263
5254 5264 * IPython/iplib.py (InteractiveShell._prefilter): significant
5255 5265 simplifications to the logic for handling user escapes. Faster
5256 5266 and simpler code.
5257 5267
5258 5268 2003-08-14 Fernando Perez <fperez@colorado.edu>
5259 5269
5260 5270 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
5261 5271 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
5262 5272 but it should be quite a bit faster. And the recursive version
5263 5273 generated O(log N) intermediate storage for all rank>1 arrays,
5264 5274 even if they were contiguous.
5265 5275 (l1norm): Added this function.
5266 5276 (norm): Added this function for arbitrary norms (including
5267 5277 l-infinity). l1 and l2 are still special cases for convenience
5268 5278 and speed.
5269 5279
5270 5280 2003-08-03 Fernando Perez <fperez@colorado.edu>
5271 5281
5272 5282 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
5273 5283 exceptions, which now raise PendingDeprecationWarnings in Python
5274 5284 2.3. There were some in Magic and some in Gnuplot2.
5275 5285
5276 5286 2003-06-30 Fernando Perez <fperez@colorado.edu>
5277 5287
5278 5288 * IPython/genutils.py (page): modified to call curses only for
5279 5289 terminals where TERM=='xterm'. After problems under many other
5280 5290 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
5281 5291
5282 5292 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
5283 5293 would be triggered when readline was absent. This was just an old
5284 5294 debugging statement I'd forgotten to take out.
5285 5295
5286 5296 2003-06-20 Fernando Perez <fperez@colorado.edu>
5287 5297
5288 5298 * IPython/genutils.py (clock): modified to return only user time
5289 5299 (not counting system time), after a discussion on scipy. While
5290 5300 system time may be a useful quantity occasionally, it may much
5291 5301 more easily be skewed by occasional swapping or other similar
5292 5302 activity.
5293 5303
5294 5304 2003-06-05 Fernando Perez <fperez@colorado.edu>
5295 5305
5296 5306 * IPython/numutils.py (identity): new function, for building
5297 5307 arbitrary rank Kronecker deltas (mostly backwards compatible with
5298 5308 Numeric.identity)
5299 5309
5300 5310 2003-06-03 Fernando Perez <fperez@colorado.edu>
5301 5311
5302 5312 * IPython/iplib.py (InteractiveShell.handle_magic): protect
5303 5313 arguments passed to magics with spaces, to allow trailing '\' to
5304 5314 work normally (mainly for Windows users).
5305 5315
5306 5316 2003-05-29 Fernando Perez <fperez@colorado.edu>
5307 5317
5308 5318 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
5309 5319 instead of pydoc.help. This fixes a bizarre behavior where
5310 5320 printing '%s' % locals() would trigger the help system. Now
5311 5321 ipython behaves like normal python does.
5312 5322
5313 5323 Note that if one does 'from pydoc import help', the bizarre
5314 5324 behavior returns, but this will also happen in normal python, so
5315 5325 it's not an ipython bug anymore (it has to do with how pydoc.help
5316 5326 is implemented).
5317 5327
5318 5328 2003-05-22 Fernando Perez <fperez@colorado.edu>
5319 5329
5320 5330 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
5321 5331 return [] instead of None when nothing matches, also match to end
5322 5332 of line. Patch by Gary Bishop.
5323 5333
5324 5334 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
5325 5335 protection as before, for files passed on the command line. This
5326 5336 prevents the CrashHandler from kicking in if user files call into
5327 5337 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
5328 5338 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
5329 5339
5330 5340 2003-05-20 *** Released version 0.4.0
5331 5341
5332 5342 2003-05-20 Fernando Perez <fperez@colorado.edu>
5333 5343
5334 5344 * setup.py: added support for manpages. It's a bit hackish b/c of
5335 5345 a bug in the way the bdist_rpm distutils target handles gzipped
5336 5346 manpages, but it works. After a patch by Jack.
5337 5347
5338 5348 2003-05-19 Fernando Perez <fperez@colorado.edu>
5339 5349
5340 5350 * IPython/numutils.py: added a mockup of the kinds module, since
5341 5351 it was recently removed from Numeric. This way, numutils will
5342 5352 work for all users even if they are missing kinds.
5343 5353
5344 5354 * IPython/Magic.py (Magic._ofind): Harden against an inspect
5345 5355 failure, which can occur with SWIG-wrapped extensions. After a
5346 5356 crash report from Prabhu.
5347 5357
5348 5358 2003-05-16 Fernando Perez <fperez@colorado.edu>
5349 5359
5350 5360 * IPython/iplib.py (InteractiveShell.excepthook): New method to
5351 5361 protect ipython from user code which may call directly
5352 5362 sys.excepthook (this looks like an ipython crash to the user, even
5353 5363 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5354 5364 This is especially important to help users of WxWindows, but may
5355 5365 also be useful in other cases.
5356 5366
5357 5367 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
5358 5368 an optional tb_offset to be specified, and to preserve exception
5359 5369 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
5360 5370
5361 5371 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
5362 5372
5363 5373 2003-05-15 Fernando Perez <fperez@colorado.edu>
5364 5374
5365 5375 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
5366 5376 installing for a new user under Windows.
5367 5377
5368 5378 2003-05-12 Fernando Perez <fperez@colorado.edu>
5369 5379
5370 5380 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
5371 5381 handler for Emacs comint-based lines. Currently it doesn't do
5372 5382 much (but importantly, it doesn't update the history cache). In
5373 5383 the future it may be expanded if Alex needs more functionality
5374 5384 there.
5375 5385
5376 5386 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
5377 5387 info to crash reports.
5378 5388
5379 5389 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
5380 5390 just like Python's -c. Also fixed crash with invalid -color
5381 5391 option value at startup. Thanks to Will French
5382 5392 <wfrench-AT-bestweb.net> for the bug report.
5383 5393
5384 5394 2003-05-09 Fernando Perez <fperez@colorado.edu>
5385 5395
5386 5396 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
5387 5397 to EvalDict (it's a mapping, after all) and simplified its code
5388 5398 quite a bit, after a nice discussion on c.l.py where Gustavo
5389 5399 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
5390 5400
5391 5401 2003-04-30 Fernando Perez <fperez@colorado.edu>
5392 5402
5393 5403 * IPython/genutils.py (timings_out): modified it to reduce its
5394 5404 overhead in the common reps==1 case.
5395 5405
5396 5406 2003-04-29 Fernando Perez <fperez@colorado.edu>
5397 5407
5398 5408 * IPython/genutils.py (timings_out): Modified to use the resource
5399 5409 module, which avoids the wraparound problems of time.clock().
5400 5410
5401 5411 2003-04-17 *** Released version 0.2.15pre4
5402 5412
5403 5413 2003-04-17 Fernando Perez <fperez@colorado.edu>
5404 5414
5405 5415 * setup.py (scriptfiles): Split windows-specific stuff over to a
5406 5416 separate file, in an attempt to have a Windows GUI installer.
5407 5417 That didn't work, but part of the groundwork is done.
5408 5418
5409 5419 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
5410 5420 indent/unindent with 4 spaces. Particularly useful in combination
5411 5421 with the new auto-indent option.
5412 5422
5413 5423 2003-04-16 Fernando Perez <fperez@colorado.edu>
5414 5424
5415 5425 * IPython/Magic.py: various replacements of self.rc for
5416 5426 self.shell.rc. A lot more remains to be done to fully disentangle
5417 5427 this class from the main Shell class.
5418 5428
5419 5429 * IPython/GnuplotRuntime.py: added checks for mouse support so
5420 5430 that we don't try to enable it if the current gnuplot doesn't
5421 5431 really support it. Also added checks so that we don't try to
5422 5432 enable persist under Windows (where Gnuplot doesn't recognize the
5423 5433 option).
5424 5434
5425 5435 * IPython/iplib.py (InteractiveShell.interact): Added optional
5426 5436 auto-indenting code, after a patch by King C. Shu
5427 5437 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
5428 5438 get along well with pasting indented code. If I ever figure out
5429 5439 how to make that part go well, it will become on by default.
5430 5440
5431 5441 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
5432 5442 crash ipython if there was an unmatched '%' in the user's prompt
5433 5443 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5434 5444
5435 5445 * IPython/iplib.py (InteractiveShell.interact): removed the
5436 5446 ability to ask the user whether he wants to crash or not at the
5437 5447 'last line' exception handler. Calling functions at that point
5438 5448 changes the stack, and the error reports would have incorrect
5439 5449 tracebacks.
5440 5450
5441 5451 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
5442 5452 pass through a peger a pretty-printed form of any object. After a
5443 5453 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
5444 5454
5445 5455 2003-04-14 Fernando Perez <fperez@colorado.edu>
5446 5456
5447 5457 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
5448 5458 all files in ~ would be modified at first install (instead of
5449 5459 ~/.ipython). This could be potentially disastrous, as the
5450 5460 modification (make line-endings native) could damage binary files.
5451 5461
5452 5462 2003-04-10 Fernando Perez <fperez@colorado.edu>
5453 5463
5454 5464 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
5455 5465 handle only lines which are invalid python. This now means that
5456 5466 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
5457 5467 for the bug report.
5458 5468
5459 5469 2003-04-01 Fernando Perez <fperez@colorado.edu>
5460 5470
5461 5471 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5462 5472 where failing to set sys.last_traceback would crash pdb.pm().
5463 5473 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5464 5474 report.
5465 5475
5466 5476 2003-03-25 Fernando Perez <fperez@colorado.edu>
5467 5477
5468 5478 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5469 5479 before printing it (it had a lot of spurious blank lines at the
5470 5480 end).
5471 5481
5472 5482 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5473 5483 output would be sent 21 times! Obviously people don't use this
5474 5484 too often, or I would have heard about it.
5475 5485
5476 5486 2003-03-24 Fernando Perez <fperez@colorado.edu>
5477 5487
5478 5488 * setup.py (scriptfiles): renamed the data_files parameter from
5479 5489 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5480 5490 for the patch.
5481 5491
5482 5492 2003-03-20 Fernando Perez <fperez@colorado.edu>
5483 5493
5484 5494 * IPython/genutils.py (error): added error() and fatal()
5485 5495 functions.
5486 5496
5487 5497 2003-03-18 *** Released version 0.2.15pre3
5488 5498
5489 5499 2003-03-18 Fernando Perez <fperez@colorado.edu>
5490 5500
5491 5501 * setupext/install_data_ext.py
5492 5502 (install_data_ext.initialize_options): Class contributed by Jack
5493 5503 Moffit for fixing the old distutils hack. He is sending this to
5494 5504 the distutils folks so in the future we may not need it as a
5495 5505 private fix.
5496 5506
5497 5507 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5498 5508 changes for Debian packaging. See his patch for full details.
5499 5509 The old distutils hack of making the ipythonrc* files carry a
5500 5510 bogus .py extension is gone, at last. Examples were moved to a
5501 5511 separate subdir under doc/, and the separate executable scripts
5502 5512 now live in their own directory. Overall a great cleanup. The
5503 5513 manual was updated to use the new files, and setup.py has been
5504 5514 fixed for this setup.
5505 5515
5506 5516 * IPython/PyColorize.py (Parser.usage): made non-executable and
5507 5517 created a pycolor wrapper around it to be included as a script.
5508 5518
5509 5519 2003-03-12 *** Released version 0.2.15pre2
5510 5520
5511 5521 2003-03-12 Fernando Perez <fperez@colorado.edu>
5512 5522
5513 5523 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5514 5524 long-standing problem with garbage characters in some terminals.
5515 5525 The issue was really that the \001 and \002 escapes must _only_ be
5516 5526 passed to input prompts (which call readline), but _never_ to
5517 5527 normal text to be printed on screen. I changed ColorANSI to have
5518 5528 two classes: TermColors and InputTermColors, each with the
5519 5529 appropriate escapes for input prompts or normal text. The code in
5520 5530 Prompts.py got slightly more complicated, but this very old and
5521 5531 annoying bug is finally fixed.
5522 5532
5523 5533 All the credit for nailing down the real origin of this problem
5524 5534 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5525 5535 *Many* thanks to him for spending quite a bit of effort on this.
5526 5536
5527 5537 2003-03-05 *** Released version 0.2.15pre1
5528 5538
5529 5539 2003-03-03 Fernando Perez <fperez@colorado.edu>
5530 5540
5531 5541 * IPython/FakeModule.py: Moved the former _FakeModule to a
5532 5542 separate file, because it's also needed by Magic (to fix a similar
5533 5543 pickle-related issue in @run).
5534 5544
5535 5545 2003-03-02 Fernando Perez <fperez@colorado.edu>
5536 5546
5537 5547 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5538 5548 the autocall option at runtime.
5539 5549 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5540 5550 across Magic.py to start separating Magic from InteractiveShell.
5541 5551 (Magic._ofind): Fixed to return proper namespace for dotted
5542 5552 names. Before, a dotted name would always return 'not currently
5543 5553 defined', because it would find the 'parent'. s.x would be found,
5544 5554 but since 'x' isn't defined by itself, it would get confused.
5545 5555 (Magic.magic_run): Fixed pickling problems reported by Ralf
5546 5556 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5547 5557 that I'd used when Mike Heeter reported similar issues at the
5548 5558 top-level, but now for @run. It boils down to injecting the
5549 5559 namespace where code is being executed with something that looks
5550 5560 enough like a module to fool pickle.dump(). Since a pickle stores
5551 5561 a named reference to the importing module, we need this for
5552 5562 pickles to save something sensible.
5553 5563
5554 5564 * IPython/ipmaker.py (make_IPython): added an autocall option.
5555 5565
5556 5566 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5557 5567 the auto-eval code. Now autocalling is an option, and the code is
5558 5568 also vastly safer. There is no more eval() involved at all.
5559 5569
5560 5570 2003-03-01 Fernando Perez <fperez@colorado.edu>
5561 5571
5562 5572 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5563 5573 dict with named keys instead of a tuple.
5564 5574
5565 5575 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5566 5576
5567 5577 * setup.py (make_shortcut): Fixed message about directories
5568 5578 created during Windows installation (the directories were ok, just
5569 5579 the printed message was misleading). Thanks to Chris Liechti
5570 5580 <cliechti-AT-gmx.net> for the heads up.
5571 5581
5572 5582 2003-02-21 Fernando Perez <fperez@colorado.edu>
5573 5583
5574 5584 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5575 5585 of ValueError exception when checking for auto-execution. This
5576 5586 one is raised by things like Numeric arrays arr.flat when the
5577 5587 array is non-contiguous.
5578 5588
5579 5589 2003-01-31 Fernando Perez <fperez@colorado.edu>
5580 5590
5581 5591 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5582 5592 not return any value at all (even though the command would get
5583 5593 executed).
5584 5594 (xsys): Flush stdout right after printing the command to ensure
5585 5595 proper ordering of commands and command output in the total
5586 5596 output.
5587 5597 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5588 5598 system/getoutput as defaults. The old ones are kept for
5589 5599 compatibility reasons, so no code which uses this library needs
5590 5600 changing.
5591 5601
5592 5602 2003-01-27 *** Released version 0.2.14
5593 5603
5594 5604 2003-01-25 Fernando Perez <fperez@colorado.edu>
5595 5605
5596 5606 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5597 5607 functions defined in previous edit sessions could not be re-edited
5598 5608 (because the temp files were immediately removed). Now temp files
5599 5609 are removed only at IPython's exit.
5600 5610 (Magic.magic_run): Improved @run to perform shell-like expansions
5601 5611 on its arguments (~users and $VARS). With this, @run becomes more
5602 5612 like a normal command-line.
5603 5613
5604 5614 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5605 5615 bugs related to embedding and cleaned up that code. A fairly
5606 5616 important one was the impossibility to access the global namespace
5607 5617 through the embedded IPython (only local variables were visible).
5608 5618
5609 5619 2003-01-14 Fernando Perez <fperez@colorado.edu>
5610 5620
5611 5621 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5612 5622 auto-calling to be a bit more conservative. Now it doesn't get
5613 5623 triggered if any of '!=()<>' are in the rest of the input line, to
5614 5624 allow comparing callables. Thanks to Alex for the heads up.
5615 5625
5616 5626 2003-01-07 Fernando Perez <fperez@colorado.edu>
5617 5627
5618 5628 * IPython/genutils.py (page): fixed estimation of the number of
5619 5629 lines in a string to be paged to simply count newlines. This
5620 5630 prevents over-guessing due to embedded escape sequences. A better
5621 5631 long-term solution would involve stripping out the control chars
5622 5632 for the count, but it's potentially so expensive I just don't
5623 5633 think it's worth doing.
5624 5634
5625 5635 2002-12-19 *** Released version 0.2.14pre50
5626 5636
5627 5637 2002-12-19 Fernando Perez <fperez@colorado.edu>
5628 5638
5629 5639 * tools/release (version): Changed release scripts to inform
5630 5640 Andrea and build a NEWS file with a list of recent changes.
5631 5641
5632 5642 * IPython/ColorANSI.py (__all__): changed terminal detection
5633 5643 code. Seems to work better for xterms without breaking
5634 5644 konsole. Will need more testing to determine if WinXP and Mac OSX
5635 5645 also work ok.
5636 5646
5637 5647 2002-12-18 *** Released version 0.2.14pre49
5638 5648
5639 5649 2002-12-18 Fernando Perez <fperez@colorado.edu>
5640 5650
5641 5651 * Docs: added new info about Mac OSX, from Andrea.
5642 5652
5643 5653 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5644 5654 allow direct plotting of python strings whose format is the same
5645 5655 of gnuplot data files.
5646 5656
5647 5657 2002-12-16 Fernando Perez <fperez@colorado.edu>
5648 5658
5649 5659 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5650 5660 value of exit question to be acknowledged.
5651 5661
5652 5662 2002-12-03 Fernando Perez <fperez@colorado.edu>
5653 5663
5654 5664 * IPython/ipmaker.py: removed generators, which had been added
5655 5665 by mistake in an earlier debugging run. This was causing trouble
5656 5666 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5657 5667 for pointing this out.
5658 5668
5659 5669 2002-11-17 Fernando Perez <fperez@colorado.edu>
5660 5670
5661 5671 * Manual: updated the Gnuplot section.
5662 5672
5663 5673 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5664 5674 a much better split of what goes in Runtime and what goes in
5665 5675 Interactive.
5666 5676
5667 5677 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5668 5678 being imported from iplib.
5669 5679
5670 5680 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5671 5681 for command-passing. Now the global Gnuplot instance is called
5672 5682 'gp' instead of 'g', which was really a far too fragile and
5673 5683 common name.
5674 5684
5675 5685 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5676 5686 bounding boxes generated by Gnuplot for square plots.
5677 5687
5678 5688 * IPython/genutils.py (popkey): new function added. I should
5679 5689 suggest this on c.l.py as a dict method, it seems useful.
5680 5690
5681 5691 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5682 5692 to transparently handle PostScript generation. MUCH better than
5683 5693 the previous plot_eps/replot_eps (which I removed now). The code
5684 5694 is also fairly clean and well documented now (including
5685 5695 docstrings).
5686 5696
5687 5697 2002-11-13 Fernando Perez <fperez@colorado.edu>
5688 5698
5689 5699 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5690 5700 (inconsistent with options).
5691 5701
5692 5702 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5693 5703 manually disabled, I don't know why. Fixed it.
5694 5704 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5695 5705 eps output.
5696 5706
5697 5707 2002-11-12 Fernando Perez <fperez@colorado.edu>
5698 5708
5699 5709 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5700 5710 don't propagate up to caller. Fixes crash reported by François
5701 5711 Pinard.
5702 5712
5703 5713 2002-11-09 Fernando Perez <fperez@colorado.edu>
5704 5714
5705 5715 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5706 5716 history file for new users.
5707 5717 (make_IPython): fixed bug where initial install would leave the
5708 5718 user running in the .ipython dir.
5709 5719 (make_IPython): fixed bug where config dir .ipython would be
5710 5720 created regardless of the given -ipythondir option. Thanks to Cory
5711 5721 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5712 5722
5713 5723 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5714 5724 type confirmations. Will need to use it in all of IPython's code
5715 5725 consistently.
5716 5726
5717 5727 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5718 5728 context to print 31 lines instead of the default 5. This will make
5719 5729 the crash reports extremely detailed in case the problem is in
5720 5730 libraries I don't have access to.
5721 5731
5722 5732 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5723 5733 line of defense' code to still crash, but giving users fair
5724 5734 warning. I don't want internal errors to go unreported: if there's
5725 5735 an internal problem, IPython should crash and generate a full
5726 5736 report.
5727 5737
5728 5738 2002-11-08 Fernando Perez <fperez@colorado.edu>
5729 5739
5730 5740 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5731 5741 otherwise uncaught exceptions which can appear if people set
5732 5742 sys.stdout to something badly broken. Thanks to a crash report
5733 5743 from henni-AT-mail.brainbot.com.
5734 5744
5735 5745 2002-11-04 Fernando Perez <fperez@colorado.edu>
5736 5746
5737 5747 * IPython/iplib.py (InteractiveShell.interact): added
5738 5748 __IPYTHON__active to the builtins. It's a flag which goes on when
5739 5749 the interaction starts and goes off again when it stops. This
5740 5750 allows embedding code to detect being inside IPython. Before this
5741 5751 was done via __IPYTHON__, but that only shows that an IPython
5742 5752 instance has been created.
5743 5753
5744 5754 * IPython/Magic.py (Magic.magic_env): I realized that in a
5745 5755 UserDict, instance.data holds the data as a normal dict. So I
5746 5756 modified @env to return os.environ.data instead of rebuilding a
5747 5757 dict by hand.
5748 5758
5749 5759 2002-11-02 Fernando Perez <fperez@colorado.edu>
5750 5760
5751 5761 * IPython/genutils.py (warn): changed so that level 1 prints no
5752 5762 header. Level 2 is now the default (with 'WARNING' header, as
5753 5763 before). I think I tracked all places where changes were needed in
5754 5764 IPython, but outside code using the old level numbering may have
5755 5765 broken.
5756 5766
5757 5767 * IPython/iplib.py (InteractiveShell.runcode): added this to
5758 5768 handle the tracebacks in SystemExit traps correctly. The previous
5759 5769 code (through interact) was printing more of the stack than
5760 5770 necessary, showing IPython internal code to the user.
5761 5771
5762 5772 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5763 5773 default. Now that the default at the confirmation prompt is yes,
5764 5774 it's not so intrusive. François' argument that ipython sessions
5765 5775 tend to be complex enough not to lose them from an accidental C-d,
5766 5776 is a valid one.
5767 5777
5768 5778 * IPython/iplib.py (InteractiveShell.interact): added a
5769 5779 showtraceback() call to the SystemExit trap, and modified the exit
5770 5780 confirmation to have yes as the default.
5771 5781
5772 5782 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5773 5783 this file. It's been gone from the code for a long time, this was
5774 5784 simply leftover junk.
5775 5785
5776 5786 2002-11-01 Fernando Perez <fperez@colorado.edu>
5777 5787
5778 5788 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5779 5789 added. If set, IPython now traps EOF and asks for
5780 5790 confirmation. After a request by François Pinard.
5781 5791
5782 5792 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5783 5793 of @abort, and with a new (better) mechanism for handling the
5784 5794 exceptions.
5785 5795
5786 5796 2002-10-27 Fernando Perez <fperez@colorado.edu>
5787 5797
5788 5798 * IPython/usage.py (__doc__): updated the --help information and
5789 5799 the ipythonrc file to indicate that -log generates
5790 5800 ./ipython.log. Also fixed the corresponding info in @logstart.
5791 5801 This and several other fixes in the manuals thanks to reports by
5792 5802 François Pinard <pinard-AT-iro.umontreal.ca>.
5793 5803
5794 5804 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5795 5805 refer to @logstart (instead of @log, which doesn't exist).
5796 5806
5797 5807 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5798 5808 AttributeError crash. Thanks to Christopher Armstrong
5799 5809 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5800 5810 introduced recently (in 0.2.14pre37) with the fix to the eval
5801 5811 problem mentioned below.
5802 5812
5803 5813 2002-10-17 Fernando Perez <fperez@colorado.edu>
5804 5814
5805 5815 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5806 5816 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5807 5817
5808 5818 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5809 5819 this function to fix a problem reported by Alex Schmolck. He saw
5810 5820 it with list comprehensions and generators, which were getting
5811 5821 called twice. The real problem was an 'eval' call in testing for
5812 5822 automagic which was evaluating the input line silently.
5813 5823
5814 5824 This is a potentially very nasty bug, if the input has side
5815 5825 effects which must not be repeated. The code is much cleaner now,
5816 5826 without any blanket 'except' left and with a regexp test for
5817 5827 actual function names.
5818 5828
5819 5829 But an eval remains, which I'm not fully comfortable with. I just
5820 5830 don't know how to find out if an expression could be a callable in
5821 5831 the user's namespace without doing an eval on the string. However
5822 5832 that string is now much more strictly checked so that no code
5823 5833 slips by, so the eval should only happen for things that can
5824 5834 really be only function/method names.
5825 5835
5826 5836 2002-10-15 Fernando Perez <fperez@colorado.edu>
5827 5837
5828 5838 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5829 5839 OSX information to main manual, removed README_Mac_OSX file from
5830 5840 distribution. Also updated credits for recent additions.
5831 5841
5832 5842 2002-10-10 Fernando Perez <fperez@colorado.edu>
5833 5843
5834 5844 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5835 5845 terminal-related issues. Many thanks to Andrea Riciputi
5836 5846 <andrea.riciputi-AT-libero.it> for writing it.
5837 5847
5838 5848 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5839 5849 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5840 5850
5841 5851 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5842 5852 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5843 5853 <syver-en-AT-online.no> who both submitted patches for this problem.
5844 5854
5845 5855 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5846 5856 global embedding to make sure that things don't overwrite user
5847 5857 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5848 5858
5849 5859 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5850 5860 compatibility. Thanks to Hayden Callow
5851 5861 <h.callow-AT-elec.canterbury.ac.nz>
5852 5862
5853 5863 2002-10-04 Fernando Perez <fperez@colorado.edu>
5854 5864
5855 5865 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5856 5866 Gnuplot.File objects.
5857 5867
5858 5868 2002-07-23 Fernando Perez <fperez@colorado.edu>
5859 5869
5860 5870 * IPython/genutils.py (timing): Added timings() and timing() for
5861 5871 quick access to the most commonly needed data, the execution
5862 5872 times. Old timing() renamed to timings_out().
5863 5873
5864 5874 2002-07-18 Fernando Perez <fperez@colorado.edu>
5865 5875
5866 5876 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5867 5877 bug with nested instances disrupting the parent's tab completion.
5868 5878
5869 5879 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5870 5880 all_completions code to begin the emacs integration.
5871 5881
5872 5882 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5873 5883 argument to allow titling individual arrays when plotting.
5874 5884
5875 5885 2002-07-15 Fernando Perez <fperez@colorado.edu>
5876 5886
5877 5887 * setup.py (make_shortcut): changed to retrieve the value of
5878 5888 'Program Files' directory from the registry (this value changes in
5879 5889 non-english versions of Windows). Thanks to Thomas Fanslau
5880 5890 <tfanslau-AT-gmx.de> for the report.
5881 5891
5882 5892 2002-07-10 Fernando Perez <fperez@colorado.edu>
5883 5893
5884 5894 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5885 5895 a bug in pdb, which crashes if a line with only whitespace is
5886 5896 entered. Bug report submitted to sourceforge.
5887 5897
5888 5898 2002-07-09 Fernando Perez <fperez@colorado.edu>
5889 5899
5890 5900 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5891 5901 reporting exceptions (it's a bug in inspect.py, I just set a
5892 5902 workaround).
5893 5903
5894 5904 2002-07-08 Fernando Perez <fperez@colorado.edu>
5895 5905
5896 5906 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5897 5907 __IPYTHON__ in __builtins__ to show up in user_ns.
5898 5908
5899 5909 2002-07-03 Fernando Perez <fperez@colorado.edu>
5900 5910
5901 5911 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5902 5912 name from @gp_set_instance to @gp_set_default.
5903 5913
5904 5914 * IPython/ipmaker.py (make_IPython): default editor value set to
5905 5915 '0' (a string), to match the rc file. Otherwise will crash when
5906 5916 .strip() is called on it.
5907 5917
5908 5918
5909 5919 2002-06-28 Fernando Perez <fperez@colorado.edu>
5910 5920
5911 5921 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5912 5922 of files in current directory when a file is executed via
5913 5923 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5914 5924
5915 5925 * setup.py (manfiles): fix for rpm builds, submitted by RA
5916 5926 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5917 5927
5918 5928 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5919 5929 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5920 5930 string!). A. Schmolck caught this one.
5921 5931
5922 5932 2002-06-27 Fernando Perez <fperez@colorado.edu>
5923 5933
5924 5934 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5925 5935 defined files at the cmd line. __name__ wasn't being set to
5926 5936 __main__.
5927 5937
5928 5938 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5929 5939 regular lists and tuples besides Numeric arrays.
5930 5940
5931 5941 * IPython/Prompts.py (CachedOutput.__call__): Added output
5932 5942 supression for input ending with ';'. Similar to Mathematica and
5933 5943 Matlab. The _* vars and Out[] list are still updated, just like
5934 5944 Mathematica behaves.
5935 5945
5936 5946 2002-06-25 Fernando Perez <fperez@colorado.edu>
5937 5947
5938 5948 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5939 5949 .ini extensions for profiels under Windows.
5940 5950
5941 5951 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5942 5952 string form. Fix contributed by Alexander Schmolck
5943 5953 <a.schmolck-AT-gmx.net>
5944 5954
5945 5955 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5946 5956 pre-configured Gnuplot instance.
5947 5957
5948 5958 2002-06-21 Fernando Perez <fperez@colorado.edu>
5949 5959
5950 5960 * IPython/numutils.py (exp_safe): new function, works around the
5951 5961 underflow problems in Numeric.
5952 5962 (log2): New fn. Safe log in base 2: returns exact integer answer
5953 5963 for exact integer powers of 2.
5954 5964
5955 5965 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5956 5966 properly.
5957 5967
5958 5968 2002-06-20 Fernando Perez <fperez@colorado.edu>
5959 5969
5960 5970 * IPython/genutils.py (timing): new function like
5961 5971 Mathematica's. Similar to time_test, but returns more info.
5962 5972
5963 5973 2002-06-18 Fernando Perez <fperez@colorado.edu>
5964 5974
5965 5975 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5966 5976 according to Mike Heeter's suggestions.
5967 5977
5968 5978 2002-06-16 Fernando Perez <fperez@colorado.edu>
5969 5979
5970 5980 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5971 5981 system. GnuplotMagic is gone as a user-directory option. New files
5972 5982 make it easier to use all the gnuplot stuff both from external
5973 5983 programs as well as from IPython. Had to rewrite part of
5974 5984 hardcopy() b/c of a strange bug: often the ps files simply don't
5975 5985 get created, and require a repeat of the command (often several
5976 5986 times).
5977 5987
5978 5988 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5979 5989 resolve output channel at call time, so that if sys.stderr has
5980 5990 been redirected by user this gets honored.
5981 5991
5982 5992 2002-06-13 Fernando Perez <fperez@colorado.edu>
5983 5993
5984 5994 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5985 5995 IPShell. Kept a copy with the old names to avoid breaking people's
5986 5996 embedded code.
5987 5997
5988 5998 * IPython/ipython: simplified it to the bare minimum after
5989 5999 Holger's suggestions. Added info about how to use it in
5990 6000 PYTHONSTARTUP.
5991 6001
5992 6002 * IPython/Shell.py (IPythonShell): changed the options passing
5993 6003 from a string with funky %s replacements to a straight list. Maybe
5994 6004 a bit more typing, but it follows sys.argv conventions, so there's
5995 6005 less special-casing to remember.
5996 6006
5997 6007 2002-06-12 Fernando Perez <fperez@colorado.edu>
5998 6008
5999 6009 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
6000 6010 command. Thanks to a suggestion by Mike Heeter.
6001 6011 (Magic.magic_pfile): added behavior to look at filenames if given
6002 6012 arg is not a defined object.
6003 6013 (Magic.magic_save): New @save function to save code snippets. Also
6004 6014 a Mike Heeter idea.
6005 6015
6006 6016 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
6007 6017 plot() and replot(). Much more convenient now, especially for
6008 6018 interactive use.
6009 6019
6010 6020 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
6011 6021 filenames.
6012 6022
6013 6023 2002-06-02 Fernando Perez <fperez@colorado.edu>
6014 6024
6015 6025 * IPython/Struct.py (Struct.__init__): modified to admit
6016 6026 initialization via another struct.
6017 6027
6018 6028 * IPython/genutils.py (SystemExec.__init__): New stateful
6019 6029 interface to xsys and bq. Useful for writing system scripts.
6020 6030
6021 6031 2002-05-30 Fernando Perez <fperez@colorado.edu>
6022 6032
6023 6033 * MANIFEST.in: Changed docfile selection to exclude all the lyx
6024 6034 documents. This will make the user download smaller (it's getting
6025 6035 too big).
6026 6036
6027 6037 2002-05-29 Fernando Perez <fperez@colorado.edu>
6028 6038
6029 6039 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
6030 6040 fix problems with shelve and pickle. Seems to work, but I don't
6031 6041 know if corner cases break it. Thanks to Mike Heeter
6032 6042 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
6033 6043
6034 6044 2002-05-24 Fernando Perez <fperez@colorado.edu>
6035 6045
6036 6046 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
6037 6047 macros having broken.
6038 6048
6039 6049 2002-05-21 Fernando Perez <fperez@colorado.edu>
6040 6050
6041 6051 * IPython/Magic.py (Magic.magic_logstart): fixed recently
6042 6052 introduced logging bug: all history before logging started was
6043 6053 being written one character per line! This came from the redesign
6044 6054 of the input history as a special list which slices to strings,
6045 6055 not to lists.
6046 6056
6047 6057 2002-05-20 Fernando Perez <fperez@colorado.edu>
6048 6058
6049 6059 * IPython/Prompts.py (CachedOutput.__init__): made the color table
6050 6060 be an attribute of all classes in this module. The design of these
6051 6061 classes needs some serious overhauling.
6052 6062
6053 6063 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
6054 6064 which was ignoring '_' in option names.
6055 6065
6056 6066 * IPython/ultraTB.py (FormattedTB.__init__): Changed
6057 6067 'Verbose_novars' to 'Context' and made it the new default. It's a
6058 6068 bit more readable and also safer than verbose.
6059 6069
6060 6070 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
6061 6071 triple-quoted strings.
6062 6072
6063 6073 * IPython/OInspect.py (__all__): new module exposing the object
6064 6074 introspection facilities. Now the corresponding magics are dummy
6065 6075 wrappers around this. Having this module will make it much easier
6066 6076 to put these functions into our modified pdb.
6067 6077 This new object inspector system uses the new colorizing module,
6068 6078 so source code and other things are nicely syntax highlighted.
6069 6079
6070 6080 2002-05-18 Fernando Perez <fperez@colorado.edu>
6071 6081
6072 6082 * IPython/ColorANSI.py: Split the coloring tools into a separate
6073 6083 module so I can use them in other code easier (they were part of
6074 6084 ultraTB).
6075 6085
6076 6086 2002-05-17 Fernando Perez <fperez@colorado.edu>
6077 6087
6078 6088 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6079 6089 fixed it to set the global 'g' also to the called instance, as
6080 6090 long as 'g' was still a gnuplot instance (so it doesn't overwrite
6081 6091 user's 'g' variables).
6082 6092
6083 6093 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
6084 6094 global variables (aliases to _ih,_oh) so that users which expect
6085 6095 In[5] or Out[7] to work aren't unpleasantly surprised.
6086 6096 (InputList.__getslice__): new class to allow executing slices of
6087 6097 input history directly. Very simple class, complements the use of
6088 6098 macros.
6089 6099
6090 6100 2002-05-16 Fernando Perez <fperez@colorado.edu>
6091 6101
6092 6102 * setup.py (docdirbase): make doc directory be just doc/IPython
6093 6103 without version numbers, it will reduce clutter for users.
6094 6104
6095 6105 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
6096 6106 execfile call to prevent possible memory leak. See for details:
6097 6107 http://mail.python.org/pipermail/python-list/2002-February/088476.html
6098 6108
6099 6109 2002-05-15 Fernando Perez <fperez@colorado.edu>
6100 6110
6101 6111 * IPython/Magic.py (Magic.magic_psource): made the object
6102 6112 introspection names be more standard: pdoc, pdef, pfile and
6103 6113 psource. They all print/page their output, and it makes
6104 6114 remembering them easier. Kept old names for compatibility as
6105 6115 aliases.
6106 6116
6107 6117 2002-05-14 Fernando Perez <fperez@colorado.edu>
6108 6118
6109 6119 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
6110 6120 what the mouse problem was. The trick is to use gnuplot with temp
6111 6121 files and NOT with pipes (for data communication), because having
6112 6122 both pipes and the mouse on is bad news.
6113 6123
6114 6124 2002-05-13 Fernando Perez <fperez@colorado.edu>
6115 6125
6116 6126 * IPython/Magic.py (Magic._ofind): fixed namespace order search
6117 6127 bug. Information would be reported about builtins even when
6118 6128 user-defined functions overrode them.
6119 6129
6120 6130 2002-05-11 Fernando Perez <fperez@colorado.edu>
6121 6131
6122 6132 * IPython/__init__.py (__all__): removed FlexCompleter from
6123 6133 __all__ so that things don't fail in platforms without readline.
6124 6134
6125 6135 2002-05-10 Fernando Perez <fperez@colorado.edu>
6126 6136
6127 6137 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
6128 6138 it requires Numeric, effectively making Numeric a dependency for
6129 6139 IPython.
6130 6140
6131 6141 * Released 0.2.13
6132 6142
6133 6143 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
6134 6144 profiler interface. Now all the major options from the profiler
6135 6145 module are directly supported in IPython, both for single
6136 6146 expressions (@prun) and for full programs (@run -p).
6137 6147
6138 6148 2002-05-09 Fernando Perez <fperez@colorado.edu>
6139 6149
6140 6150 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
6141 6151 magic properly formatted for screen.
6142 6152
6143 6153 * setup.py (make_shortcut): Changed things to put pdf version in
6144 6154 doc/ instead of doc/manual (had to change lyxport a bit).
6145 6155
6146 6156 * IPython/Magic.py (Profile.string_stats): made profile runs go
6147 6157 through pager (they are long and a pager allows searching, saving,
6148 6158 etc.)
6149 6159
6150 6160 2002-05-08 Fernando Perez <fperez@colorado.edu>
6151 6161
6152 6162 * Released 0.2.12
6153 6163
6154 6164 2002-05-06 Fernando Perez <fperez@colorado.edu>
6155 6165
6156 6166 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
6157 6167 introduced); 'hist n1 n2' was broken.
6158 6168 (Magic.magic_pdb): added optional on/off arguments to @pdb
6159 6169 (Magic.magic_run): added option -i to @run, which executes code in
6160 6170 the IPython namespace instead of a clean one. Also added @irun as
6161 6171 an alias to @run -i.
6162 6172
6163 6173 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
6164 6174 fixed (it didn't really do anything, the namespaces were wrong).
6165 6175
6166 6176 * IPython/Debugger.py (__init__): Added workaround for python 2.1
6167 6177
6168 6178 * IPython/__init__.py (__all__): Fixed package namespace, now
6169 6179 'import IPython' does give access to IPython.<all> as
6170 6180 expected. Also renamed __release__ to Release.
6171 6181
6172 6182 * IPython/Debugger.py (__license__): created new Pdb class which
6173 6183 functions like a drop-in for the normal pdb.Pdb but does NOT
6174 6184 import readline by default. This way it doesn't muck up IPython's
6175 6185 readline handling, and now tab-completion finally works in the
6176 6186 debugger -- sort of. It completes things globally visible, but the
6177 6187 completer doesn't track the stack as pdb walks it. That's a bit
6178 6188 tricky, and I'll have to implement it later.
6179 6189
6180 6190 2002-05-05 Fernando Perez <fperez@colorado.edu>
6181 6191
6182 6192 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
6183 6193 magic docstrings when printed via ? (explicit \'s were being
6184 6194 printed).
6185 6195
6186 6196 * IPython/ipmaker.py (make_IPython): fixed namespace
6187 6197 identification bug. Now variables loaded via logs or command-line
6188 6198 files are recognized in the interactive namespace by @who.
6189 6199
6190 6200 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
6191 6201 log replay system stemming from the string form of Structs.
6192 6202
6193 6203 * IPython/Magic.py (Macro.__init__): improved macros to properly
6194 6204 handle magic commands in them.
6195 6205 (Magic.magic_logstart): usernames are now expanded so 'logstart
6196 6206 ~/mylog' now works.
6197 6207
6198 6208 * IPython/iplib.py (complete): fixed bug where paths starting with
6199 6209 '/' would be completed as magic names.
6200 6210
6201 6211 2002-05-04 Fernando Perez <fperez@colorado.edu>
6202 6212
6203 6213 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
6204 6214 allow running full programs under the profiler's control.
6205 6215
6206 6216 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
6207 6217 mode to report exceptions verbosely but without formatting
6208 6218 variables. This addresses the issue of ipython 'freezing' (it's
6209 6219 not frozen, but caught in an expensive formatting loop) when huge
6210 6220 variables are in the context of an exception.
6211 6221 (VerboseTB.text): Added '--->' markers at line where exception was
6212 6222 triggered. Much clearer to read, especially in NoColor modes.
6213 6223
6214 6224 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
6215 6225 implemented in reverse when changing to the new parse_options().
6216 6226
6217 6227 2002-05-03 Fernando Perez <fperez@colorado.edu>
6218 6228
6219 6229 * IPython/Magic.py (Magic.parse_options): new function so that
6220 6230 magics can parse options easier.
6221 6231 (Magic.magic_prun): new function similar to profile.run(),
6222 6232 suggested by Chris Hart.
6223 6233 (Magic.magic_cd): fixed behavior so that it only changes if
6224 6234 directory actually is in history.
6225 6235
6226 6236 * IPython/usage.py (__doc__): added information about potential
6227 6237 slowness of Verbose exception mode when there are huge data
6228 6238 structures to be formatted (thanks to Archie Paulson).
6229 6239
6230 6240 * IPython/ipmaker.py (make_IPython): Changed default logging
6231 6241 (when simply called with -log) to use curr_dir/ipython.log in
6232 6242 rotate mode. Fixed crash which was occuring with -log before
6233 6243 (thanks to Jim Boyle).
6234 6244
6235 6245 2002-05-01 Fernando Perez <fperez@colorado.edu>
6236 6246
6237 6247 * Released 0.2.11 for these fixes (mainly the ultraTB one which
6238 6248 was nasty -- though somewhat of a corner case).
6239 6249
6240 6250 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
6241 6251 text (was a bug).
6242 6252
6243 6253 2002-04-30 Fernando Perez <fperez@colorado.edu>
6244 6254
6245 6255 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
6246 6256 a print after ^D or ^C from the user so that the In[] prompt
6247 6257 doesn't over-run the gnuplot one.
6248 6258
6249 6259 2002-04-29 Fernando Perez <fperez@colorado.edu>
6250 6260
6251 6261 * Released 0.2.10
6252 6262
6253 6263 * IPython/__release__.py (version): get date dynamically.
6254 6264
6255 6265 * Misc. documentation updates thanks to Arnd's comments. Also ran
6256 6266 a full spellcheck on the manual (hadn't been done in a while).
6257 6267
6258 6268 2002-04-27 Fernando Perez <fperez@colorado.edu>
6259 6269
6260 6270 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
6261 6271 starting a log in mid-session would reset the input history list.
6262 6272
6263 6273 2002-04-26 Fernando Perez <fperez@colorado.edu>
6264 6274
6265 6275 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
6266 6276 all files were being included in an update. Now anything in
6267 6277 UserConfig that matches [A-Za-z]*.py will go (this excludes
6268 6278 __init__.py)
6269 6279
6270 6280 2002-04-25 Fernando Perez <fperez@colorado.edu>
6271 6281
6272 6282 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
6273 6283 to __builtins__ so that any form of embedded or imported code can
6274 6284 test for being inside IPython.
6275 6285
6276 6286 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
6277 6287 changed to GnuplotMagic because it's now an importable module,
6278 6288 this makes the name follow that of the standard Gnuplot module.
6279 6289 GnuplotMagic can now be loaded at any time in mid-session.
6280 6290
6281 6291 2002-04-24 Fernando Perez <fperez@colorado.edu>
6282 6292
6283 6293 * IPython/numutils.py: removed SIUnits. It doesn't properly set
6284 6294 the globals (IPython has its own namespace) and the
6285 6295 PhysicalQuantity stuff is much better anyway.
6286 6296
6287 6297 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
6288 6298 embedding example to standard user directory for
6289 6299 distribution. Also put it in the manual.
6290 6300
6291 6301 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
6292 6302 instance as first argument (so it doesn't rely on some obscure
6293 6303 hidden global).
6294 6304
6295 6305 * IPython/UserConfig/ipythonrc.py: put () back in accepted
6296 6306 delimiters. While it prevents ().TAB from working, it allows
6297 6307 completions in open (... expressions. This is by far a more common
6298 6308 case.
6299 6309
6300 6310 2002-04-23 Fernando Perez <fperez@colorado.edu>
6301 6311
6302 6312 * IPython/Extensions/InterpreterPasteInput.py: new
6303 6313 syntax-processing module for pasting lines with >>> or ... at the
6304 6314 start.
6305 6315
6306 6316 * IPython/Extensions/PhysicalQ_Interactive.py
6307 6317 (PhysicalQuantityInteractive.__int__): fixed to work with either
6308 6318 Numeric or math.
6309 6319
6310 6320 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
6311 6321 provided profiles. Now we have:
6312 6322 -math -> math module as * and cmath with its own namespace.
6313 6323 -numeric -> Numeric as *, plus gnuplot & grace
6314 6324 -physics -> same as before
6315 6325
6316 6326 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
6317 6327 user-defined magics wouldn't be found by @magic if they were
6318 6328 defined as class methods. Also cleaned up the namespace search
6319 6329 logic and the string building (to use %s instead of many repeated
6320 6330 string adds).
6321 6331
6322 6332 * IPython/UserConfig/example-magic.py (magic_foo): updated example
6323 6333 of user-defined magics to operate with class methods (cleaner, in
6324 6334 line with the gnuplot code).
6325 6335
6326 6336 2002-04-22 Fernando Perez <fperez@colorado.edu>
6327 6337
6328 6338 * setup.py: updated dependency list so that manual is updated when
6329 6339 all included files change.
6330 6340
6331 6341 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
6332 6342 the delimiter removal option (the fix is ugly right now).
6333 6343
6334 6344 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
6335 6345 all of the math profile (quicker loading, no conflict between
6336 6346 g-9.8 and g-gnuplot).
6337 6347
6338 6348 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
6339 6349 name of post-mortem files to IPython_crash_report.txt.
6340 6350
6341 6351 * Cleanup/update of the docs. Added all the new readline info and
6342 6352 formatted all lists as 'real lists'.
6343 6353
6344 6354 * IPython/ipmaker.py (make_IPython): removed now-obsolete
6345 6355 tab-completion options, since the full readline parse_and_bind is
6346 6356 now accessible.
6347 6357
6348 6358 * IPython/iplib.py (InteractiveShell.init_readline): Changed
6349 6359 handling of readline options. Now users can specify any string to
6350 6360 be passed to parse_and_bind(), as well as the delimiters to be
6351 6361 removed.
6352 6362 (InteractiveShell.__init__): Added __name__ to the global
6353 6363 namespace so that things like Itpl which rely on its existence
6354 6364 don't crash.
6355 6365 (InteractiveShell._prefilter): Defined the default with a _ so
6356 6366 that prefilter() is easier to override, while the default one
6357 6367 remains available.
6358 6368
6359 6369 2002-04-18 Fernando Perez <fperez@colorado.edu>
6360 6370
6361 6371 * Added information about pdb in the docs.
6362 6372
6363 6373 2002-04-17 Fernando Perez <fperez@colorado.edu>
6364 6374
6365 6375 * IPython/ipmaker.py (make_IPython): added rc_override option to
6366 6376 allow passing config options at creation time which may override
6367 6377 anything set in the config files or command line. This is
6368 6378 particularly useful for configuring embedded instances.
6369 6379
6370 6380 2002-04-15 Fernando Perez <fperez@colorado.edu>
6371 6381
6372 6382 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
6373 6383 crash embedded instances because of the input cache falling out of
6374 6384 sync with the output counter.
6375 6385
6376 6386 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
6377 6387 mode which calls pdb after an uncaught exception in IPython itself.
6378 6388
6379 6389 2002-04-14 Fernando Perez <fperez@colorado.edu>
6380 6390
6381 6391 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
6382 6392 readline, fix it back after each call.
6383 6393
6384 6394 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
6385 6395 method to force all access via __call__(), which guarantees that
6386 6396 traceback references are properly deleted.
6387 6397
6388 6398 * IPython/Prompts.py (CachedOutput._display): minor fixes to
6389 6399 improve printing when pprint is in use.
6390 6400
6391 6401 2002-04-13 Fernando Perez <fperez@colorado.edu>
6392 6402
6393 6403 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
6394 6404 exceptions aren't caught anymore. If the user triggers one, he
6395 6405 should know why he's doing it and it should go all the way up,
6396 6406 just like any other exception. So now @abort will fully kill the
6397 6407 embedded interpreter and the embedding code (unless that happens
6398 6408 to catch SystemExit).
6399 6409
6400 6410 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
6401 6411 and a debugger() method to invoke the interactive pdb debugger
6402 6412 after printing exception information. Also added the corresponding
6403 6413 -pdb option and @pdb magic to control this feature, and updated
6404 6414 the docs. After a suggestion from Christopher Hart
6405 6415 (hart-AT-caltech.edu).
6406 6416
6407 6417 2002-04-12 Fernando Perez <fperez@colorado.edu>
6408 6418
6409 6419 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
6410 6420 the exception handlers defined by the user (not the CrashHandler)
6411 6421 so that user exceptions don't trigger an ipython bug report.
6412 6422
6413 6423 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
6414 6424 configurable (it should have always been so).
6415 6425
6416 6426 2002-03-26 Fernando Perez <fperez@colorado.edu>
6417 6427
6418 6428 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
6419 6429 and there to fix embedding namespace issues. This should all be
6420 6430 done in a more elegant way.
6421 6431
6422 6432 2002-03-25 Fernando Perez <fperez@colorado.edu>
6423 6433
6424 6434 * IPython/genutils.py (get_home_dir): Try to make it work under
6425 6435 win9x also.
6426 6436
6427 6437 2002-03-20 Fernando Perez <fperez@colorado.edu>
6428 6438
6429 6439 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
6430 6440 sys.displayhook untouched upon __init__.
6431 6441
6432 6442 2002-03-19 Fernando Perez <fperez@colorado.edu>
6433 6443
6434 6444 * Released 0.2.9 (for embedding bug, basically).
6435 6445
6436 6446 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
6437 6447 exceptions so that enclosing shell's state can be restored.
6438 6448
6439 6449 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
6440 6450 naming conventions in the .ipython/ dir.
6441 6451
6442 6452 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
6443 6453 from delimiters list so filenames with - in them get expanded.
6444 6454
6445 6455 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
6446 6456 sys.displayhook not being properly restored after an embedded call.
6447 6457
6448 6458 2002-03-18 Fernando Perez <fperez@colorado.edu>
6449 6459
6450 6460 * Released 0.2.8
6451 6461
6452 6462 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
6453 6463 some files weren't being included in a -upgrade.
6454 6464 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
6455 6465 on' so that the first tab completes.
6456 6466 (InteractiveShell.handle_magic): fixed bug with spaces around
6457 6467 quotes breaking many magic commands.
6458 6468
6459 6469 * setup.py: added note about ignoring the syntax error messages at
6460 6470 installation.
6461 6471
6462 6472 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6463 6473 streamlining the gnuplot interface, now there's only one magic @gp.
6464 6474
6465 6475 2002-03-17 Fernando Perez <fperez@colorado.edu>
6466 6476
6467 6477 * IPython/UserConfig/magic_gnuplot.py: new name for the
6468 6478 example-magic_pm.py file. Much enhanced system, now with a shell
6469 6479 for communicating directly with gnuplot, one command at a time.
6470 6480
6471 6481 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6472 6482 setting __name__=='__main__'.
6473 6483
6474 6484 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6475 6485 mini-shell for accessing gnuplot from inside ipython. Should
6476 6486 extend it later for grace access too. Inspired by Arnd's
6477 6487 suggestion.
6478 6488
6479 6489 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6480 6490 calling magic functions with () in their arguments. Thanks to Arnd
6481 6491 Baecker for pointing this to me.
6482 6492
6483 6493 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6484 6494 infinitely for integer or complex arrays (only worked with floats).
6485 6495
6486 6496 2002-03-16 Fernando Perez <fperez@colorado.edu>
6487 6497
6488 6498 * setup.py: Merged setup and setup_windows into a single script
6489 6499 which properly handles things for windows users.
6490 6500
6491 6501 2002-03-15 Fernando Perez <fperez@colorado.edu>
6492 6502
6493 6503 * Big change to the manual: now the magics are all automatically
6494 6504 documented. This information is generated from their docstrings
6495 6505 and put in a latex file included by the manual lyx file. This way
6496 6506 we get always up to date information for the magics. The manual
6497 6507 now also has proper version information, also auto-synced.
6498 6508
6499 6509 For this to work, an undocumented --magic_docstrings option was added.
6500 6510
6501 6511 2002-03-13 Fernando Perez <fperez@colorado.edu>
6502 6512
6503 6513 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6504 6514 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6505 6515
6506 6516 2002-03-12 Fernando Perez <fperez@colorado.edu>
6507 6517
6508 6518 * IPython/ultraTB.py (TermColors): changed color escapes again to
6509 6519 fix the (old, reintroduced) line-wrapping bug. Basically, if
6510 6520 \001..\002 aren't given in the color escapes, lines get wrapped
6511 6521 weirdly. But giving those screws up old xterms and emacs terms. So
6512 6522 I added some logic for emacs terms to be ok, but I can't identify old
6513 6523 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6514 6524
6515 6525 2002-03-10 Fernando Perez <fperez@colorado.edu>
6516 6526
6517 6527 * IPython/usage.py (__doc__): Various documentation cleanups and
6518 6528 updates, both in usage docstrings and in the manual.
6519 6529
6520 6530 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6521 6531 handling of caching. Set minimum acceptabe value for having a
6522 6532 cache at 20 values.
6523 6533
6524 6534 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6525 6535 install_first_time function to a method, renamed it and added an
6526 6536 'upgrade' mode. Now people can update their config directory with
6527 6537 a simple command line switch (-upgrade, also new).
6528 6538
6529 6539 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6530 6540 @file (convenient for automagic users under Python >= 2.2).
6531 6541 Removed @files (it seemed more like a plural than an abbrev. of
6532 6542 'file show').
6533 6543
6534 6544 * IPython/iplib.py (install_first_time): Fixed crash if there were
6535 6545 backup files ('~') in .ipython/ install directory.
6536 6546
6537 6547 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6538 6548 system. Things look fine, but these changes are fairly
6539 6549 intrusive. Test them for a few days.
6540 6550
6541 6551 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6542 6552 the prompts system. Now all in/out prompt strings are user
6543 6553 controllable. This is particularly useful for embedding, as one
6544 6554 can tag embedded instances with particular prompts.
6545 6555
6546 6556 Also removed global use of sys.ps1/2, which now allows nested
6547 6557 embeddings without any problems. Added command-line options for
6548 6558 the prompt strings.
6549 6559
6550 6560 2002-03-08 Fernando Perez <fperez@colorado.edu>
6551 6561
6552 6562 * IPython/UserConfig/example-embed-short.py (ipshell): added
6553 6563 example file with the bare minimum code for embedding.
6554 6564
6555 6565 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6556 6566 functionality for the embeddable shell to be activated/deactivated
6557 6567 either globally or at each call.
6558 6568
6559 6569 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6560 6570 rewriting the prompt with '--->' for auto-inputs with proper
6561 6571 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6562 6572 this is handled by the prompts class itself, as it should.
6563 6573
6564 6574 2002-03-05 Fernando Perez <fperez@colorado.edu>
6565 6575
6566 6576 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6567 6577 @logstart to avoid name clashes with the math log function.
6568 6578
6569 6579 * Big updates to X/Emacs section of the manual.
6570 6580
6571 6581 * Removed ipython_emacs. Milan explained to me how to pass
6572 6582 arguments to ipython through Emacs. Some day I'm going to end up
6573 6583 learning some lisp...
6574 6584
6575 6585 2002-03-04 Fernando Perez <fperez@colorado.edu>
6576 6586
6577 6587 * IPython/ipython_emacs: Created script to be used as the
6578 6588 py-python-command Emacs variable so we can pass IPython
6579 6589 parameters. I can't figure out how to tell Emacs directly to pass
6580 6590 parameters to IPython, so a dummy shell script will do it.
6581 6591
6582 6592 Other enhancements made for things to work better under Emacs'
6583 6593 various types of terminals. Many thanks to Milan Zamazal
6584 6594 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6585 6595
6586 6596 2002-03-01 Fernando Perez <fperez@colorado.edu>
6587 6597
6588 6598 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6589 6599 that loading of readline is now optional. This gives better
6590 6600 control to emacs users.
6591 6601
6592 6602 * IPython/ultraTB.py (__date__): Modified color escape sequences
6593 6603 and now things work fine under xterm and in Emacs' term buffers
6594 6604 (though not shell ones). Well, in emacs you get colors, but all
6595 6605 seem to be 'light' colors (no difference between dark and light
6596 6606 ones). But the garbage chars are gone, and also in xterms. It
6597 6607 seems that now I'm using 'cleaner' ansi sequences.
6598 6608
6599 6609 2002-02-21 Fernando Perez <fperez@colorado.edu>
6600 6610
6601 6611 * Released 0.2.7 (mainly to publish the scoping fix).
6602 6612
6603 6613 * IPython/Logger.py (Logger.logstate): added. A corresponding
6604 6614 @logstate magic was created.
6605 6615
6606 6616 * IPython/Magic.py: fixed nested scoping problem under Python
6607 6617 2.1.x (automagic wasn't working).
6608 6618
6609 6619 2002-02-20 Fernando Perez <fperez@colorado.edu>
6610 6620
6611 6621 * Released 0.2.6.
6612 6622
6613 6623 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6614 6624 option so that logs can come out without any headers at all.
6615 6625
6616 6626 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6617 6627 SciPy.
6618 6628
6619 6629 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6620 6630 that embedded IPython calls don't require vars() to be explicitly
6621 6631 passed. Now they are extracted from the caller's frame (code
6622 6632 snatched from Eric Jones' weave). Added better documentation to
6623 6633 the section on embedding and the example file.
6624 6634
6625 6635 * IPython/genutils.py (page): Changed so that under emacs, it just
6626 6636 prints the string. You can then page up and down in the emacs
6627 6637 buffer itself. This is how the builtin help() works.
6628 6638
6629 6639 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6630 6640 macro scoping: macros need to be executed in the user's namespace
6631 6641 to work as if they had been typed by the user.
6632 6642
6633 6643 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6634 6644 execute automatically (no need to type 'exec...'). They then
6635 6645 behave like 'true macros'. The printing system was also modified
6636 6646 for this to work.
6637 6647
6638 6648 2002-02-19 Fernando Perez <fperez@colorado.edu>
6639 6649
6640 6650 * IPython/genutils.py (page_file): new function for paging files
6641 6651 in an OS-independent way. Also necessary for file viewing to work
6642 6652 well inside Emacs buffers.
6643 6653 (page): Added checks for being in an emacs buffer.
6644 6654 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6645 6655 same bug in iplib.
6646 6656
6647 6657 2002-02-18 Fernando Perez <fperez@colorado.edu>
6648 6658
6649 6659 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6650 6660 of readline so that IPython can work inside an Emacs buffer.
6651 6661
6652 6662 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6653 6663 method signatures (they weren't really bugs, but it looks cleaner
6654 6664 and keeps PyChecker happy).
6655 6665
6656 6666 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6657 6667 for implementing various user-defined hooks. Currently only
6658 6668 display is done.
6659 6669
6660 6670 * IPython/Prompts.py (CachedOutput._display): changed display
6661 6671 functions so that they can be dynamically changed by users easily.
6662 6672
6663 6673 * IPython/Extensions/numeric_formats.py (num_display): added an
6664 6674 extension for printing NumPy arrays in flexible manners. It
6665 6675 doesn't do anything yet, but all the structure is in
6666 6676 place. Ultimately the plan is to implement output format control
6667 6677 like in Octave.
6668 6678
6669 6679 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6670 6680 methods are found at run-time by all the automatic machinery.
6671 6681
6672 6682 2002-02-17 Fernando Perez <fperez@colorado.edu>
6673 6683
6674 6684 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6675 6685 whole file a little.
6676 6686
6677 6687 * ToDo: closed this document. Now there's a new_design.lyx
6678 6688 document for all new ideas. Added making a pdf of it for the
6679 6689 end-user distro.
6680 6690
6681 6691 * IPython/Logger.py (Logger.switch_log): Created this to replace
6682 6692 logon() and logoff(). It also fixes a nasty crash reported by
6683 6693 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6684 6694
6685 6695 * IPython/iplib.py (complete): got auto-completion to work with
6686 6696 automagic (I had wanted this for a long time).
6687 6697
6688 6698 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6689 6699 to @file, since file() is now a builtin and clashes with automagic
6690 6700 for @file.
6691 6701
6692 6702 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6693 6703 of this was previously in iplib, which had grown to more than 2000
6694 6704 lines, way too long. No new functionality, but it makes managing
6695 6705 the code a bit easier.
6696 6706
6697 6707 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6698 6708 information to crash reports.
6699 6709
6700 6710 2002-02-12 Fernando Perez <fperez@colorado.edu>
6701 6711
6702 6712 * Released 0.2.5.
6703 6713
6704 6714 2002-02-11 Fernando Perez <fperez@colorado.edu>
6705 6715
6706 6716 * Wrote a relatively complete Windows installer. It puts
6707 6717 everything in place, creates Start Menu entries and fixes the
6708 6718 color issues. Nothing fancy, but it works.
6709 6719
6710 6720 2002-02-10 Fernando Perez <fperez@colorado.edu>
6711 6721
6712 6722 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6713 6723 os.path.expanduser() call so that we can type @run ~/myfile.py and
6714 6724 have thigs work as expected.
6715 6725
6716 6726 * IPython/genutils.py (page): fixed exception handling so things
6717 6727 work both in Unix and Windows correctly. Quitting a pager triggers
6718 6728 an IOError/broken pipe in Unix, and in windows not finding a pager
6719 6729 is also an IOError, so I had to actually look at the return value
6720 6730 of the exception, not just the exception itself. Should be ok now.
6721 6731
6722 6732 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6723 6733 modified to allow case-insensitive color scheme changes.
6724 6734
6725 6735 2002-02-09 Fernando Perez <fperez@colorado.edu>
6726 6736
6727 6737 * IPython/genutils.py (native_line_ends): new function to leave
6728 6738 user config files with os-native line-endings.
6729 6739
6730 6740 * README and manual updates.
6731 6741
6732 6742 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6733 6743 instead of StringType to catch Unicode strings.
6734 6744
6735 6745 * IPython/genutils.py (filefind): fixed bug for paths with
6736 6746 embedded spaces (very common in Windows).
6737 6747
6738 6748 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6739 6749 files under Windows, so that they get automatically associated
6740 6750 with a text editor. Windows makes it a pain to handle
6741 6751 extension-less files.
6742 6752
6743 6753 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6744 6754 warning about readline only occur for Posix. In Windows there's no
6745 6755 way to get readline, so why bother with the warning.
6746 6756
6747 6757 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6748 6758 for __str__ instead of dir(self), since dir() changed in 2.2.
6749 6759
6750 6760 * Ported to Windows! Tested on XP, I suspect it should work fine
6751 6761 on NT/2000, but I don't think it will work on 98 et al. That
6752 6762 series of Windows is such a piece of junk anyway that I won't try
6753 6763 porting it there. The XP port was straightforward, showed a few
6754 6764 bugs here and there (fixed all), in particular some string
6755 6765 handling stuff which required considering Unicode strings (which
6756 6766 Windows uses). This is good, but hasn't been too tested :) No
6757 6767 fancy installer yet, I'll put a note in the manual so people at
6758 6768 least make manually a shortcut.
6759 6769
6760 6770 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6761 6771 into a single one, "colors". This now controls both prompt and
6762 6772 exception color schemes, and can be changed both at startup
6763 6773 (either via command-line switches or via ipythonrc files) and at
6764 6774 runtime, with @colors.
6765 6775 (Magic.magic_run): renamed @prun to @run and removed the old
6766 6776 @run. The two were too similar to warrant keeping both.
6767 6777
6768 6778 2002-02-03 Fernando Perez <fperez@colorado.edu>
6769 6779
6770 6780 * IPython/iplib.py (install_first_time): Added comment on how to
6771 6781 configure the color options for first-time users. Put a <return>
6772 6782 request at the end so that small-terminal users get a chance to
6773 6783 read the startup info.
6774 6784
6775 6785 2002-01-23 Fernando Perez <fperez@colorado.edu>
6776 6786
6777 6787 * IPython/iplib.py (CachedOutput.update): Changed output memory
6778 6788 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6779 6789 input history we still use _i. Did this b/c these variable are
6780 6790 very commonly used in interactive work, so the less we need to
6781 6791 type the better off we are.
6782 6792 (Magic.magic_prun): updated @prun to better handle the namespaces
6783 6793 the file will run in, including a fix for __name__ not being set
6784 6794 before.
6785 6795
6786 6796 2002-01-20 Fernando Perez <fperez@colorado.edu>
6787 6797
6788 6798 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6789 6799 extra garbage for Python 2.2. Need to look more carefully into
6790 6800 this later.
6791 6801
6792 6802 2002-01-19 Fernando Perez <fperez@colorado.edu>
6793 6803
6794 6804 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6795 6805 display SyntaxError exceptions properly formatted when they occur
6796 6806 (they can be triggered by imported code).
6797 6807
6798 6808 2002-01-18 Fernando Perez <fperez@colorado.edu>
6799 6809
6800 6810 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6801 6811 SyntaxError exceptions are reported nicely formatted, instead of
6802 6812 spitting out only offset information as before.
6803 6813 (Magic.magic_prun): Added the @prun function for executing
6804 6814 programs with command line args inside IPython.
6805 6815
6806 6816 2002-01-16 Fernando Perez <fperez@colorado.edu>
6807 6817
6808 6818 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6809 6819 to *not* include the last item given in a range. This brings their
6810 6820 behavior in line with Python's slicing:
6811 6821 a[n1:n2] -> a[n1]...a[n2-1]
6812 6822 It may be a bit less convenient, but I prefer to stick to Python's
6813 6823 conventions *everywhere*, so users never have to wonder.
6814 6824 (Magic.magic_macro): Added @macro function to ease the creation of
6815 6825 macros.
6816 6826
6817 6827 2002-01-05 Fernando Perez <fperez@colorado.edu>
6818 6828
6819 6829 * Released 0.2.4.
6820 6830
6821 6831 * IPython/iplib.py (Magic.magic_pdef):
6822 6832 (InteractiveShell.safe_execfile): report magic lines and error
6823 6833 lines without line numbers so one can easily copy/paste them for
6824 6834 re-execution.
6825 6835
6826 6836 * Updated manual with recent changes.
6827 6837
6828 6838 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6829 6839 docstring printing when class? is called. Very handy for knowing
6830 6840 how to create class instances (as long as __init__ is well
6831 6841 documented, of course :)
6832 6842 (Magic.magic_doc): print both class and constructor docstrings.
6833 6843 (Magic.magic_pdef): give constructor info if passed a class and
6834 6844 __call__ info for callable object instances.
6835 6845
6836 6846 2002-01-04 Fernando Perez <fperez@colorado.edu>
6837 6847
6838 6848 * Made deep_reload() off by default. It doesn't always work
6839 6849 exactly as intended, so it's probably safer to have it off. It's
6840 6850 still available as dreload() anyway, so nothing is lost.
6841 6851
6842 6852 2002-01-02 Fernando Perez <fperez@colorado.edu>
6843 6853
6844 6854 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6845 6855 so I wanted an updated release).
6846 6856
6847 6857 2001-12-27 Fernando Perez <fperez@colorado.edu>
6848 6858
6849 6859 * IPython/iplib.py (InteractiveShell.interact): Added the original
6850 6860 code from 'code.py' for this module in order to change the
6851 6861 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6852 6862 the history cache would break when the user hit Ctrl-C, and
6853 6863 interact() offers no way to add any hooks to it.
6854 6864
6855 6865 2001-12-23 Fernando Perez <fperez@colorado.edu>
6856 6866
6857 6867 * setup.py: added check for 'MANIFEST' before trying to remove
6858 6868 it. Thanks to Sean Reifschneider.
6859 6869
6860 6870 2001-12-22 Fernando Perez <fperez@colorado.edu>
6861 6871
6862 6872 * Released 0.2.2.
6863 6873
6864 6874 * Finished (reasonably) writing the manual. Later will add the
6865 6875 python-standard navigation stylesheets, but for the time being
6866 6876 it's fairly complete. Distribution will include html and pdf
6867 6877 versions.
6868 6878
6869 6879 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6870 6880 (MayaVi author).
6871 6881
6872 6882 2001-12-21 Fernando Perez <fperez@colorado.edu>
6873 6883
6874 6884 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6875 6885 good public release, I think (with the manual and the distutils
6876 6886 installer). The manual can use some work, but that can go
6877 6887 slowly. Otherwise I think it's quite nice for end users. Next
6878 6888 summer, rewrite the guts of it...
6879 6889
6880 6890 * Changed format of ipythonrc files to use whitespace as the
6881 6891 separator instead of an explicit '='. Cleaner.
6882 6892
6883 6893 2001-12-20 Fernando Perez <fperez@colorado.edu>
6884 6894
6885 6895 * Started a manual in LyX. For now it's just a quick merge of the
6886 6896 various internal docstrings and READMEs. Later it may grow into a
6887 6897 nice, full-blown manual.
6888 6898
6889 6899 * Set up a distutils based installer. Installation should now be
6890 6900 trivially simple for end-users.
6891 6901
6892 6902 2001-12-11 Fernando Perez <fperez@colorado.edu>
6893 6903
6894 6904 * Released 0.2.0. First public release, announced it at
6895 6905 comp.lang.python. From now on, just bugfixes...
6896 6906
6897 6907 * Went through all the files, set copyright/license notices and
6898 6908 cleaned up things. Ready for release.
6899 6909
6900 6910 2001-12-10 Fernando Perez <fperez@colorado.edu>
6901 6911
6902 6912 * Changed the first-time installer not to use tarfiles. It's more
6903 6913 robust now and less unix-dependent. Also makes it easier for
6904 6914 people to later upgrade versions.
6905 6915
6906 6916 * Changed @exit to @abort to reflect the fact that it's pretty
6907 6917 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6908 6918 becomes significant only when IPyhton is embedded: in that case,
6909 6919 C-D closes IPython only, but @abort kills the enclosing program
6910 6920 too (unless it had called IPython inside a try catching
6911 6921 SystemExit).
6912 6922
6913 6923 * Created Shell module which exposes the actuall IPython Shell
6914 6924 classes, currently the normal and the embeddable one. This at
6915 6925 least offers a stable interface we won't need to change when
6916 6926 (later) the internals are rewritten. That rewrite will be confined
6917 6927 to iplib and ipmaker, but the Shell interface should remain as is.
6918 6928
6919 6929 * Added embed module which offers an embeddable IPShell object,
6920 6930 useful to fire up IPython *inside* a running program. Great for
6921 6931 debugging or dynamical data analysis.
6922 6932
6923 6933 2001-12-08 Fernando Perez <fperez@colorado.edu>
6924 6934
6925 6935 * Fixed small bug preventing seeing info from methods of defined
6926 6936 objects (incorrect namespace in _ofind()).
6927 6937
6928 6938 * Documentation cleanup. Moved the main usage docstrings to a
6929 6939 separate file, usage.py (cleaner to maintain, and hopefully in the
6930 6940 future some perlpod-like way of producing interactive, man and
6931 6941 html docs out of it will be found).
6932 6942
6933 6943 * Added @profile to see your profile at any time.
6934 6944
6935 6945 * Added @p as an alias for 'print'. It's especially convenient if
6936 6946 using automagic ('p x' prints x).
6937 6947
6938 6948 * Small cleanups and fixes after a pychecker run.
6939 6949
6940 6950 * Changed the @cd command to handle @cd - and @cd -<n> for
6941 6951 visiting any directory in _dh.
6942 6952
6943 6953 * Introduced _dh, a history of visited directories. @dhist prints
6944 6954 it out with numbers.
6945 6955
6946 6956 2001-12-07 Fernando Perez <fperez@colorado.edu>
6947 6957
6948 6958 * Released 0.1.22
6949 6959
6950 6960 * Made initialization a bit more robust against invalid color
6951 6961 options in user input (exit, not traceback-crash).
6952 6962
6953 6963 * Changed the bug crash reporter to write the report only in the
6954 6964 user's .ipython directory. That way IPython won't litter people's
6955 6965 hard disks with crash files all over the place. Also print on
6956 6966 screen the necessary mail command.
6957 6967
6958 6968 * With the new ultraTB, implemented LightBG color scheme for light
6959 6969 background terminals. A lot of people like white backgrounds, so I
6960 6970 guess we should at least give them something readable.
6961 6971
6962 6972 2001-12-06 Fernando Perez <fperez@colorado.edu>
6963 6973
6964 6974 * Modified the structure of ultraTB. Now there's a proper class
6965 6975 for tables of color schemes which allow adding schemes easily and
6966 6976 switching the active scheme without creating a new instance every
6967 6977 time (which was ridiculous). The syntax for creating new schemes
6968 6978 is also cleaner. I think ultraTB is finally done, with a clean
6969 6979 class structure. Names are also much cleaner (now there's proper
6970 6980 color tables, no need for every variable to also have 'color' in
6971 6981 its name).
6972 6982
6973 6983 * Broke down genutils into separate files. Now genutils only
6974 6984 contains utility functions, and classes have been moved to their
6975 6985 own files (they had enough independent functionality to warrant
6976 6986 it): ConfigLoader, OutputTrap, Struct.
6977 6987
6978 6988 2001-12-05 Fernando Perez <fperez@colorado.edu>
6979 6989
6980 6990 * IPython turns 21! Released version 0.1.21, as a candidate for
6981 6991 public consumption. If all goes well, release in a few days.
6982 6992
6983 6993 * Fixed path bug (files in Extensions/ directory wouldn't be found
6984 6994 unless IPython/ was explicitly in sys.path).
6985 6995
6986 6996 * Extended the FlexCompleter class as MagicCompleter to allow
6987 6997 completion of @-starting lines.
6988 6998
6989 6999 * Created __release__.py file as a central repository for release
6990 7000 info that other files can read from.
6991 7001
6992 7002 * Fixed small bug in logging: when logging was turned on in
6993 7003 mid-session, old lines with special meanings (!@?) were being
6994 7004 logged without the prepended comment, which is necessary since
6995 7005 they are not truly valid python syntax. This should make session
6996 7006 restores produce less errors.
6997 7007
6998 7008 * The namespace cleanup forced me to make a FlexCompleter class
6999 7009 which is nothing but a ripoff of rlcompleter, but with selectable
7000 7010 namespace (rlcompleter only works in __main__.__dict__). I'll try
7001 7011 to submit a note to the authors to see if this change can be
7002 7012 incorporated in future rlcompleter releases (Dec.6: done)
7003 7013
7004 7014 * More fixes to namespace handling. It was a mess! Now all
7005 7015 explicit references to __main__.__dict__ are gone (except when
7006 7016 really needed) and everything is handled through the namespace
7007 7017 dicts in the IPython instance. We seem to be getting somewhere
7008 7018 with this, finally...
7009 7019
7010 7020 * Small documentation updates.
7011 7021
7012 7022 * Created the Extensions directory under IPython (with an
7013 7023 __init__.py). Put the PhysicalQ stuff there. This directory should
7014 7024 be used for all special-purpose extensions.
7015 7025
7016 7026 * File renaming:
7017 7027 ipythonlib --> ipmaker
7018 7028 ipplib --> iplib
7019 7029 This makes a bit more sense in terms of what these files actually do.
7020 7030
7021 7031 * Moved all the classes and functions in ipythonlib to ipplib, so
7022 7032 now ipythonlib only has make_IPython(). This will ease up its
7023 7033 splitting in smaller functional chunks later.
7024 7034
7025 7035 * Cleaned up (done, I think) output of @whos. Better column
7026 7036 formatting, and now shows str(var) for as much as it can, which is
7027 7037 typically what one gets with a 'print var'.
7028 7038
7029 7039 2001-12-04 Fernando Perez <fperez@colorado.edu>
7030 7040
7031 7041 * Fixed namespace problems. Now builtin/IPyhton/user names get
7032 7042 properly reported in their namespace. Internal namespace handling
7033 7043 is finally getting decent (not perfect yet, but much better than
7034 7044 the ad-hoc mess we had).
7035 7045
7036 7046 * Removed -exit option. If people just want to run a python
7037 7047 script, that's what the normal interpreter is for. Less
7038 7048 unnecessary options, less chances for bugs.
7039 7049
7040 7050 * Added a crash handler which generates a complete post-mortem if
7041 7051 IPython crashes. This will help a lot in tracking bugs down the
7042 7052 road.
7043 7053
7044 7054 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
7045 7055 which were boud to functions being reassigned would bypass the
7046 7056 logger, breaking the sync of _il with the prompt counter. This
7047 7057 would then crash IPython later when a new line was logged.
7048 7058
7049 7059 2001-12-02 Fernando Perez <fperez@colorado.edu>
7050 7060
7051 7061 * Made IPython a package. This means people don't have to clutter
7052 7062 their sys.path with yet another directory. Changed the INSTALL
7053 7063 file accordingly.
7054 7064
7055 7065 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
7056 7066 sorts its output (so @who shows it sorted) and @whos formats the
7057 7067 table according to the width of the first column. Nicer, easier to
7058 7068 read. Todo: write a generic table_format() which takes a list of
7059 7069 lists and prints it nicely formatted, with optional row/column
7060 7070 separators and proper padding and justification.
7061 7071
7062 7072 * Released 0.1.20
7063 7073
7064 7074 * Fixed bug in @log which would reverse the inputcache list (a
7065 7075 copy operation was missing).
7066 7076
7067 7077 * Code cleanup. @config was changed to use page(). Better, since
7068 7078 its output is always quite long.
7069 7079
7070 7080 * Itpl is back as a dependency. I was having too many problems
7071 7081 getting the parametric aliases to work reliably, and it's just
7072 7082 easier to code weird string operations with it than playing %()s
7073 7083 games. It's only ~6k, so I don't think it's too big a deal.
7074 7084
7075 7085 * Found (and fixed) a very nasty bug with history. !lines weren't
7076 7086 getting cached, and the out of sync caches would crash
7077 7087 IPython. Fixed it by reorganizing the prefilter/handlers/logger
7078 7088 division of labor a bit better. Bug fixed, cleaner structure.
7079 7089
7080 7090 2001-12-01 Fernando Perez <fperez@colorado.edu>
7081 7091
7082 7092 * Released 0.1.19
7083 7093
7084 7094 * Added option -n to @hist to prevent line number printing. Much
7085 7095 easier to copy/paste code this way.
7086 7096
7087 7097 * Created global _il to hold the input list. Allows easy
7088 7098 re-execution of blocks of code by slicing it (inspired by Janko's
7089 7099 comment on 'macros').
7090 7100
7091 7101 * Small fixes and doc updates.
7092 7102
7093 7103 * Rewrote @history function (was @h). Renamed it to @hist, @h is
7094 7104 much too fragile with automagic. Handles properly multi-line
7095 7105 statements and takes parameters.
7096 7106
7097 7107 2001-11-30 Fernando Perez <fperez@colorado.edu>
7098 7108
7099 7109 * Version 0.1.18 released.
7100 7110
7101 7111 * Fixed nasty namespace bug in initial module imports.
7102 7112
7103 7113 * Added copyright/license notes to all code files (except
7104 7114 DPyGetOpt). For the time being, LGPL. That could change.
7105 7115
7106 7116 * Rewrote a much nicer README, updated INSTALL, cleaned up
7107 7117 ipythonrc-* samples.
7108 7118
7109 7119 * Overall code/documentation cleanup. Basically ready for
7110 7120 release. Only remaining thing: licence decision (LGPL?).
7111 7121
7112 7122 * Converted load_config to a class, ConfigLoader. Now recursion
7113 7123 control is better organized. Doesn't include the same file twice.
7114 7124
7115 7125 2001-11-29 Fernando Perez <fperez@colorado.edu>
7116 7126
7117 7127 * Got input history working. Changed output history variables from
7118 7128 _p to _o so that _i is for input and _o for output. Just cleaner
7119 7129 convention.
7120 7130
7121 7131 * Implemented parametric aliases. This pretty much allows the
7122 7132 alias system to offer full-blown shell convenience, I think.
7123 7133
7124 7134 * Version 0.1.17 released, 0.1.18 opened.
7125 7135
7126 7136 * dot_ipython/ipythonrc (alias): added documentation.
7127 7137 (xcolor): Fixed small bug (xcolors -> xcolor)
7128 7138
7129 7139 * Changed the alias system. Now alias is a magic command to define
7130 7140 aliases just like the shell. Rationale: the builtin magics should
7131 7141 be there for things deeply connected to IPython's
7132 7142 architecture. And this is a much lighter system for what I think
7133 7143 is the really important feature: allowing users to define quickly
7134 7144 magics that will do shell things for them, so they can customize
7135 7145 IPython easily to match their work habits. If someone is really
7136 7146 desperate to have another name for a builtin alias, they can
7137 7147 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
7138 7148 works.
7139 7149
7140 7150 2001-11-28 Fernando Perez <fperez@colorado.edu>
7141 7151
7142 7152 * Changed @file so that it opens the source file at the proper
7143 7153 line. Since it uses less, if your EDITOR environment is
7144 7154 configured, typing v will immediately open your editor of choice
7145 7155 right at the line where the object is defined. Not as quick as
7146 7156 having a direct @edit command, but for all intents and purposes it
7147 7157 works. And I don't have to worry about writing @edit to deal with
7148 7158 all the editors, less does that.
7149 7159
7150 7160 * Version 0.1.16 released, 0.1.17 opened.
7151 7161
7152 7162 * Fixed some nasty bugs in the page/page_dumb combo that could
7153 7163 crash IPython.
7154 7164
7155 7165 2001-11-27 Fernando Perez <fperez@colorado.edu>
7156 7166
7157 7167 * Version 0.1.15 released, 0.1.16 opened.
7158 7168
7159 7169 * Finally got ? and ?? to work for undefined things: now it's
7160 7170 possible to type {}.get? and get information about the get method
7161 7171 of dicts, or os.path? even if only os is defined (so technically
7162 7172 os.path isn't). Works at any level. For example, after import os,
7163 7173 os?, os.path?, os.path.abspath? all work. This is great, took some
7164 7174 work in _ofind.
7165 7175
7166 7176 * Fixed more bugs with logging. The sanest way to do it was to add
7167 7177 to @log a 'mode' parameter. Killed two in one shot (this mode
7168 7178 option was a request of Janko's). I think it's finally clean
7169 7179 (famous last words).
7170 7180
7171 7181 * Added a page_dumb() pager which does a decent job of paging on
7172 7182 screen, if better things (like less) aren't available. One less
7173 7183 unix dependency (someday maybe somebody will port this to
7174 7184 windows).
7175 7185
7176 7186 * Fixed problem in magic_log: would lock of logging out if log
7177 7187 creation failed (because it would still think it had succeeded).
7178 7188
7179 7189 * Improved the page() function using curses to auto-detect screen
7180 7190 size. Now it can make a much better decision on whether to print
7181 7191 or page a string. Option screen_length was modified: a value 0
7182 7192 means auto-detect, and that's the default now.
7183 7193
7184 7194 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
7185 7195 go out. I'll test it for a few days, then talk to Janko about
7186 7196 licences and announce it.
7187 7197
7188 7198 * Fixed the length of the auto-generated ---> prompt which appears
7189 7199 for auto-parens and auto-quotes. Getting this right isn't trivial,
7190 7200 with all the color escapes, different prompt types and optional
7191 7201 separators. But it seems to be working in all the combinations.
7192 7202
7193 7203 2001-11-26 Fernando Perez <fperez@colorado.edu>
7194 7204
7195 7205 * Wrote a regexp filter to get option types from the option names
7196 7206 string. This eliminates the need to manually keep two duplicate
7197 7207 lists.
7198 7208
7199 7209 * Removed the unneeded check_option_names. Now options are handled
7200 7210 in a much saner manner and it's easy to visually check that things
7201 7211 are ok.
7202 7212
7203 7213 * Updated version numbers on all files I modified to carry a
7204 7214 notice so Janko and Nathan have clear version markers.
7205 7215
7206 7216 * Updated docstring for ultraTB with my changes. I should send
7207 7217 this to Nathan.
7208 7218
7209 7219 * Lots of small fixes. Ran everything through pychecker again.
7210 7220
7211 7221 * Made loading of deep_reload an cmd line option. If it's not too
7212 7222 kosher, now people can just disable it. With -nodeep_reload it's
7213 7223 still available as dreload(), it just won't overwrite reload().
7214 7224
7215 7225 * Moved many options to the no| form (-opt and -noopt
7216 7226 accepted). Cleaner.
7217 7227
7218 7228 * Changed magic_log so that if called with no parameters, it uses
7219 7229 'rotate' mode. That way auto-generated logs aren't automatically
7220 7230 over-written. For normal logs, now a backup is made if it exists
7221 7231 (only 1 level of backups). A new 'backup' mode was added to the
7222 7232 Logger class to support this. This was a request by Janko.
7223 7233
7224 7234 * Added @logoff/@logon to stop/restart an active log.
7225 7235
7226 7236 * Fixed a lot of bugs in log saving/replay. It was pretty
7227 7237 broken. Now special lines (!@,/) appear properly in the command
7228 7238 history after a log replay.
7229 7239
7230 7240 * Tried and failed to implement full session saving via pickle. My
7231 7241 idea was to pickle __main__.__dict__, but modules can't be
7232 7242 pickled. This would be a better alternative to replaying logs, but
7233 7243 seems quite tricky to get to work. Changed -session to be called
7234 7244 -logplay, which more accurately reflects what it does. And if we
7235 7245 ever get real session saving working, -session is now available.
7236 7246
7237 7247 * Implemented color schemes for prompts also. As for tracebacks,
7238 7248 currently only NoColor and Linux are supported. But now the
7239 7249 infrastructure is in place, based on a generic ColorScheme
7240 7250 class. So writing and activating new schemes both for the prompts
7241 7251 and the tracebacks should be straightforward.
7242 7252
7243 7253 * Version 0.1.13 released, 0.1.14 opened.
7244 7254
7245 7255 * Changed handling of options for output cache. Now counter is
7246 7256 hardwired starting at 1 and one specifies the maximum number of
7247 7257 entries *in the outcache* (not the max prompt counter). This is
7248 7258 much better, since many statements won't increase the cache
7249 7259 count. It also eliminated some confusing options, now there's only
7250 7260 one: cache_size.
7251 7261
7252 7262 * Added 'alias' magic function and magic_alias option in the
7253 7263 ipythonrc file. Now the user can easily define whatever names he
7254 7264 wants for the magic functions without having to play weird
7255 7265 namespace games. This gives IPython a real shell-like feel.
7256 7266
7257 7267 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
7258 7268 @ or not).
7259 7269
7260 7270 This was one of the last remaining 'visible' bugs (that I know
7261 7271 of). I think if I can clean up the session loading so it works
7262 7272 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
7263 7273 about licensing).
7264 7274
7265 7275 2001-11-25 Fernando Perez <fperez@colorado.edu>
7266 7276
7267 7277 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
7268 7278 there's a cleaner distinction between what ? and ?? show.
7269 7279
7270 7280 * Added screen_length option. Now the user can define his own
7271 7281 screen size for page() operations.
7272 7282
7273 7283 * Implemented magic shell-like functions with automatic code
7274 7284 generation. Now adding another function is just a matter of adding
7275 7285 an entry to a dict, and the function is dynamically generated at
7276 7286 run-time. Python has some really cool features!
7277 7287
7278 7288 * Renamed many options to cleanup conventions a little. Now all
7279 7289 are lowercase, and only underscores where needed. Also in the code
7280 7290 option name tables are clearer.
7281 7291
7282 7292 * Changed prompts a little. Now input is 'In [n]:' instead of
7283 7293 'In[n]:='. This allows it the numbers to be aligned with the
7284 7294 Out[n] numbers, and removes usage of ':=' which doesn't exist in
7285 7295 Python (it was a Mathematica thing). The '...' continuation prompt
7286 7296 was also changed a little to align better.
7287 7297
7288 7298 * Fixed bug when flushing output cache. Not all _p<n> variables
7289 7299 exist, so their deletion needs to be wrapped in a try:
7290 7300
7291 7301 * Figured out how to properly use inspect.formatargspec() (it
7292 7302 requires the args preceded by *). So I removed all the code from
7293 7303 _get_pdef in Magic, which was just replicating that.
7294 7304
7295 7305 * Added test to prefilter to allow redefining magic function names
7296 7306 as variables. This is ok, since the @ form is always available,
7297 7307 but whe should allow the user to define a variable called 'ls' if
7298 7308 he needs it.
7299 7309
7300 7310 * Moved the ToDo information from README into a separate ToDo.
7301 7311
7302 7312 * General code cleanup and small bugfixes. I think it's close to a
7303 7313 state where it can be released, obviously with a big 'beta'
7304 7314 warning on it.
7305 7315
7306 7316 * Got the magic function split to work. Now all magics are defined
7307 7317 in a separate class. It just organizes things a bit, and now
7308 7318 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
7309 7319 was too long).
7310 7320
7311 7321 * Changed @clear to @reset to avoid potential confusions with
7312 7322 the shell command clear. Also renamed @cl to @clear, which does
7313 7323 exactly what people expect it to from their shell experience.
7314 7324
7315 7325 Added a check to the @reset command (since it's so
7316 7326 destructive, it's probably a good idea to ask for confirmation).
7317 7327 But now reset only works for full namespace resetting. Since the
7318 7328 del keyword is already there for deleting a few specific
7319 7329 variables, I don't see the point of having a redundant magic
7320 7330 function for the same task.
7321 7331
7322 7332 2001-11-24 Fernando Perez <fperez@colorado.edu>
7323 7333
7324 7334 * Updated the builtin docs (esp. the ? ones).
7325 7335
7326 7336 * Ran all the code through pychecker. Not terribly impressed with
7327 7337 it: lots of spurious warnings and didn't really find anything of
7328 7338 substance (just a few modules being imported and not used).
7329 7339
7330 7340 * Implemented the new ultraTB functionality into IPython. New
7331 7341 option: xcolors. This chooses color scheme. xmode now only selects
7332 7342 between Plain and Verbose. Better orthogonality.
7333 7343
7334 7344 * Large rewrite of ultraTB. Much cleaner now, with a separation of
7335 7345 mode and color scheme for the exception handlers. Now it's
7336 7346 possible to have the verbose traceback with no coloring.
7337 7347
7338 7348 2001-11-23 Fernando Perez <fperez@colorado.edu>
7339 7349
7340 7350 * Version 0.1.12 released, 0.1.13 opened.
7341 7351
7342 7352 * Removed option to set auto-quote and auto-paren escapes by
7343 7353 user. The chances of breaking valid syntax are just too high. If
7344 7354 someone *really* wants, they can always dig into the code.
7345 7355
7346 7356 * Made prompt separators configurable.
7347 7357
7348 7358 2001-11-22 Fernando Perez <fperez@colorado.edu>
7349 7359
7350 7360 * Small bugfixes in many places.
7351 7361
7352 7362 * Removed the MyCompleter class from ipplib. It seemed redundant
7353 7363 with the C-p,C-n history search functionality. Less code to
7354 7364 maintain.
7355 7365
7356 7366 * Moved all the original ipython.py code into ipythonlib.py. Right
7357 7367 now it's just one big dump into a function called make_IPython, so
7358 7368 no real modularity has been gained. But at least it makes the
7359 7369 wrapper script tiny, and since ipythonlib is a module, it gets
7360 7370 compiled and startup is much faster.
7361 7371
7362 7372 This is a reasobably 'deep' change, so we should test it for a
7363 7373 while without messing too much more with the code.
7364 7374
7365 7375 2001-11-21 Fernando Perez <fperez@colorado.edu>
7366 7376
7367 7377 * Version 0.1.11 released, 0.1.12 opened for further work.
7368 7378
7369 7379 * Removed dependency on Itpl. It was only needed in one place. It
7370 7380 would be nice if this became part of python, though. It makes life
7371 7381 *a lot* easier in some cases.
7372 7382
7373 7383 * Simplified the prefilter code a bit. Now all handlers are
7374 7384 expected to explicitly return a value (at least a blank string).
7375 7385
7376 7386 * Heavy edits in ipplib. Removed the help system altogether. Now
7377 7387 obj?/?? is used for inspecting objects, a magic @doc prints
7378 7388 docstrings, and full-blown Python help is accessed via the 'help'
7379 7389 keyword. This cleans up a lot of code (less to maintain) and does
7380 7390 the job. Since 'help' is now a standard Python component, might as
7381 7391 well use it and remove duplicate functionality.
7382 7392
7383 7393 Also removed the option to use ipplib as a standalone program. By
7384 7394 now it's too dependent on other parts of IPython to function alone.
7385 7395
7386 7396 * Fixed bug in genutils.pager. It would crash if the pager was
7387 7397 exited immediately after opening (broken pipe).
7388 7398
7389 7399 * Trimmed down the VerboseTB reporting a little. The header is
7390 7400 much shorter now and the repeated exception arguments at the end
7391 7401 have been removed. For interactive use the old header seemed a bit
7392 7402 excessive.
7393 7403
7394 7404 * Fixed small bug in output of @whos for variables with multi-word
7395 7405 types (only first word was displayed).
7396 7406
7397 7407 2001-11-17 Fernando Perez <fperez@colorado.edu>
7398 7408
7399 7409 * Version 0.1.10 released, 0.1.11 opened for further work.
7400 7410
7401 7411 * Modified dirs and friends. dirs now *returns* the stack (not
7402 7412 prints), so one can manipulate it as a variable. Convenient to
7403 7413 travel along many directories.
7404 7414
7405 7415 * Fixed bug in magic_pdef: would only work with functions with
7406 7416 arguments with default values.
7407 7417
7408 7418 2001-11-14 Fernando Perez <fperez@colorado.edu>
7409 7419
7410 7420 * Added the PhysicsInput stuff to dot_ipython so it ships as an
7411 7421 example with IPython. Various other minor fixes and cleanups.
7412 7422
7413 7423 * Version 0.1.9 released, 0.1.10 opened for further work.
7414 7424
7415 7425 * Added sys.path to the list of directories searched in the
7416 7426 execfile= option. It used to be the current directory and the
7417 7427 user's IPYTHONDIR only.
7418 7428
7419 7429 2001-11-13 Fernando Perez <fperez@colorado.edu>
7420 7430
7421 7431 * Reinstated the raw_input/prefilter separation that Janko had
7422 7432 initially. This gives a more convenient setup for extending the
7423 7433 pre-processor from the outside: raw_input always gets a string,
7424 7434 and prefilter has to process it. We can then redefine prefilter
7425 7435 from the outside and implement extensions for special
7426 7436 purposes.
7427 7437
7428 7438 Today I got one for inputting PhysicalQuantity objects
7429 7439 (from Scientific) without needing any function calls at
7430 7440 all. Extremely convenient, and it's all done as a user-level
7431 7441 extension (no IPython code was touched). Now instead of:
7432 7442 a = PhysicalQuantity(4.2,'m/s**2')
7433 7443 one can simply say
7434 7444 a = 4.2 m/s**2
7435 7445 or even
7436 7446 a = 4.2 m/s^2
7437 7447
7438 7448 I use this, but it's also a proof of concept: IPython really is
7439 7449 fully user-extensible, even at the level of the parsing of the
7440 7450 command line. It's not trivial, but it's perfectly doable.
7441 7451
7442 7452 * Added 'add_flip' method to inclusion conflict resolver. Fixes
7443 7453 the problem of modules being loaded in the inverse order in which
7444 7454 they were defined in
7445 7455
7446 7456 * Version 0.1.8 released, 0.1.9 opened for further work.
7447 7457
7448 7458 * Added magics pdef, source and file. They respectively show the
7449 7459 definition line ('prototype' in C), source code and full python
7450 7460 file for any callable object. The object inspector oinfo uses
7451 7461 these to show the same information.
7452 7462
7453 7463 * Version 0.1.7 released, 0.1.8 opened for further work.
7454 7464
7455 7465 * Separated all the magic functions into a class called Magic. The
7456 7466 InteractiveShell class was becoming too big for Xemacs to handle
7457 7467 (de-indenting a line would lock it up for 10 seconds while it
7458 7468 backtracked on the whole class!)
7459 7469
7460 7470 FIXME: didn't work. It can be done, but right now namespaces are
7461 7471 all messed up. Do it later (reverted it for now, so at least
7462 7472 everything works as before).
7463 7473
7464 7474 * Got the object introspection system (magic_oinfo) working! I
7465 7475 think this is pretty much ready for release to Janko, so he can
7466 7476 test it for a while and then announce it. Pretty much 100% of what
7467 7477 I wanted for the 'phase 1' release is ready. Happy, tired.
7468 7478
7469 7479 2001-11-12 Fernando Perez <fperez@colorado.edu>
7470 7480
7471 7481 * Version 0.1.6 released, 0.1.7 opened for further work.
7472 7482
7473 7483 * Fixed bug in printing: it used to test for truth before
7474 7484 printing, so 0 wouldn't print. Now checks for None.
7475 7485
7476 7486 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7477 7487 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7478 7488 reaches by hand into the outputcache. Think of a better way to do
7479 7489 this later.
7480 7490
7481 7491 * Various small fixes thanks to Nathan's comments.
7482 7492
7483 7493 * Changed magic_pprint to magic_Pprint. This way it doesn't
7484 7494 collide with pprint() and the name is consistent with the command
7485 7495 line option.
7486 7496
7487 7497 * Changed prompt counter behavior to be fully like
7488 7498 Mathematica's. That is, even input that doesn't return a result
7489 7499 raises the prompt counter. The old behavior was kind of confusing
7490 7500 (getting the same prompt number several times if the operation
7491 7501 didn't return a result).
7492 7502
7493 7503 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7494 7504
7495 7505 * Fixed -Classic mode (wasn't working anymore).
7496 7506
7497 7507 * Added colored prompts using Nathan's new code. Colors are
7498 7508 currently hardwired, they can be user-configurable. For
7499 7509 developers, they can be chosen in file ipythonlib.py, at the
7500 7510 beginning of the CachedOutput class def.
7501 7511
7502 7512 2001-11-11 Fernando Perez <fperez@colorado.edu>
7503 7513
7504 7514 * Version 0.1.5 released, 0.1.6 opened for further work.
7505 7515
7506 7516 * Changed magic_env to *return* the environment as a dict (not to
7507 7517 print it). This way it prints, but it can also be processed.
7508 7518
7509 7519 * Added Verbose exception reporting to interactive
7510 7520 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7511 7521 traceback. Had to make some changes to the ultraTB file. This is
7512 7522 probably the last 'big' thing in my mental todo list. This ties
7513 7523 in with the next entry:
7514 7524
7515 7525 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7516 7526 has to specify is Plain, Color or Verbose for all exception
7517 7527 handling.
7518 7528
7519 7529 * Removed ShellServices option. All this can really be done via
7520 7530 the magic system. It's easier to extend, cleaner and has automatic
7521 7531 namespace protection and documentation.
7522 7532
7523 7533 2001-11-09 Fernando Perez <fperez@colorado.edu>
7524 7534
7525 7535 * Fixed bug in output cache flushing (missing parameter to
7526 7536 __init__). Other small bugs fixed (found using pychecker).
7527 7537
7528 7538 * Version 0.1.4 opened for bugfixing.
7529 7539
7530 7540 2001-11-07 Fernando Perez <fperez@colorado.edu>
7531 7541
7532 7542 * Version 0.1.3 released, mainly because of the raw_input bug.
7533 7543
7534 7544 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7535 7545 and when testing for whether things were callable, a call could
7536 7546 actually be made to certain functions. They would get called again
7537 7547 once 'really' executed, with a resulting double call. A disaster
7538 7548 in many cases (list.reverse() would never work!).
7539 7549
7540 7550 * Removed prefilter() function, moved its code to raw_input (which
7541 7551 after all was just a near-empty caller for prefilter). This saves
7542 7552 a function call on every prompt, and simplifies the class a tiny bit.
7543 7553
7544 7554 * Fix _ip to __ip name in magic example file.
7545 7555
7546 7556 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7547 7557 work with non-gnu versions of tar.
7548 7558
7549 7559 2001-11-06 Fernando Perez <fperez@colorado.edu>
7550 7560
7551 7561 * Version 0.1.2. Just to keep track of the recent changes.
7552 7562
7553 7563 * Fixed nasty bug in output prompt routine. It used to check 'if
7554 7564 arg != None...'. Problem is, this fails if arg implements a
7555 7565 special comparison (__cmp__) which disallows comparing to
7556 7566 None. Found it when trying to use the PhysicalQuantity module from
7557 7567 ScientificPython.
7558 7568
7559 7569 2001-11-05 Fernando Perez <fperez@colorado.edu>
7560 7570
7561 7571 * Also added dirs. Now the pushd/popd/dirs family functions
7562 7572 basically like the shell, with the added convenience of going home
7563 7573 when called with no args.
7564 7574
7565 7575 * pushd/popd slightly modified to mimic shell behavior more
7566 7576 closely.
7567 7577
7568 7578 * Added env,pushd,popd from ShellServices as magic functions. I
7569 7579 think the cleanest will be to port all desired functions from
7570 7580 ShellServices as magics and remove ShellServices altogether. This
7571 7581 will provide a single, clean way of adding functionality
7572 7582 (shell-type or otherwise) to IP.
7573 7583
7574 7584 2001-11-04 Fernando Perez <fperez@colorado.edu>
7575 7585
7576 7586 * Added .ipython/ directory to sys.path. This way users can keep
7577 7587 customizations there and access them via import.
7578 7588
7579 7589 2001-11-03 Fernando Perez <fperez@colorado.edu>
7580 7590
7581 7591 * Opened version 0.1.1 for new changes.
7582 7592
7583 7593 * Changed version number to 0.1.0: first 'public' release, sent to
7584 7594 Nathan and Janko.
7585 7595
7586 7596 * Lots of small fixes and tweaks.
7587 7597
7588 7598 * Minor changes to whos format. Now strings are shown, snipped if
7589 7599 too long.
7590 7600
7591 7601 * Changed ShellServices to work on __main__ so they show up in @who
7592 7602
7593 7603 * Help also works with ? at the end of a line:
7594 7604 ?sin and sin?
7595 7605 both produce the same effect. This is nice, as often I use the
7596 7606 tab-complete to find the name of a method, but I used to then have
7597 7607 to go to the beginning of the line to put a ? if I wanted more
7598 7608 info. Now I can just add the ? and hit return. Convenient.
7599 7609
7600 7610 2001-11-02 Fernando Perez <fperez@colorado.edu>
7601 7611
7602 7612 * Python version check (>=2.1) added.
7603 7613
7604 7614 * Added LazyPython documentation. At this point the docs are quite
7605 7615 a mess. A cleanup is in order.
7606 7616
7607 7617 * Auto-installer created. For some bizarre reason, the zipfiles
7608 7618 module isn't working on my system. So I made a tar version
7609 7619 (hopefully the command line options in various systems won't kill
7610 7620 me).
7611 7621
7612 7622 * Fixes to Struct in genutils. Now all dictionary-like methods are
7613 7623 protected (reasonably).
7614 7624
7615 7625 * Added pager function to genutils and changed ? to print usage
7616 7626 note through it (it was too long).
7617 7627
7618 7628 * Added the LazyPython functionality. Works great! I changed the
7619 7629 auto-quote escape to ';', it's on home row and next to '. But
7620 7630 both auto-quote and auto-paren (still /) escapes are command-line
7621 7631 parameters.
7622 7632
7623 7633
7624 7634 2001-11-01 Fernando Perez <fperez@colorado.edu>
7625 7635
7626 7636 * Version changed to 0.0.7. Fairly large change: configuration now
7627 7637 is all stored in a directory, by default .ipython. There, all
7628 7638 config files have normal looking names (not .names)
7629 7639
7630 7640 * Version 0.0.6 Released first to Lucas and Archie as a test
7631 7641 run. Since it's the first 'semi-public' release, change version to
7632 7642 > 0.0.6 for any changes now.
7633 7643
7634 7644 * Stuff I had put in the ipplib.py changelog:
7635 7645
7636 7646 Changes to InteractiveShell:
7637 7647
7638 7648 - Made the usage message a parameter.
7639 7649
7640 7650 - Require the name of the shell variable to be given. It's a bit
7641 7651 of a hack, but allows the name 'shell' not to be hardwired in the
7642 7652 magic (@) handler, which is problematic b/c it requires
7643 7653 polluting the global namespace with 'shell'. This in turn is
7644 7654 fragile: if a user redefines a variable called shell, things
7645 7655 break.
7646 7656
7647 7657 - magic @: all functions available through @ need to be defined
7648 7658 as magic_<name>, even though they can be called simply as
7649 7659 @<name>. This allows the special command @magic to gather
7650 7660 information automatically about all existing magic functions,
7651 7661 even if they are run-time user extensions, by parsing the shell
7652 7662 instance __dict__ looking for special magic_ names.
7653 7663
7654 7664 - mainloop: added *two* local namespace parameters. This allows
7655 7665 the class to differentiate between parameters which were there
7656 7666 before and after command line initialization was processed. This
7657 7667 way, later @who can show things loaded at startup by the
7658 7668 user. This trick was necessary to make session saving/reloading
7659 7669 really work: ideally after saving/exiting/reloading a session,
7660 7670 *everything* should look the same, including the output of @who. I
7661 7671 was only able to make this work with this double namespace
7662 7672 trick.
7663 7673
7664 7674 - added a header to the logfile which allows (almost) full
7665 7675 session restoring.
7666 7676
7667 7677 - prepend lines beginning with @ or !, with a and log
7668 7678 them. Why? !lines: may be useful to know what you did @lines:
7669 7679 they may affect session state. So when restoring a session, at
7670 7680 least inform the user of their presence. I couldn't quite get
7671 7681 them to properly re-execute, but at least the user is warned.
7672 7682
7673 7683 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now