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