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