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