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