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