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