2008-05-31 *** Released version 0.8.4 2008-05-31 Fernando Perez * IPython/ipmaker.py (make_IPython): The -twisted option is fully disabled. * IPython/Shell.py (_select_shell): completely disable -twisted. This code is of dubious quality and normal users should not encounter it until we can clarify things further, even under win32. Since we need a quick emergency 0.8.4 release, it is now disabled completely. Users who want to run it can use the following command (it's easy to put it in an alias or script): python -c"from IPython import twshell;twshell.IPShellTwisted().mainloop()" 2008-05-30 Ville Vainio * shell.py: disable -twisted on non-win32 platforms. import sets module on python 2.3. * ipy_profile_sh.py: disable ipy_signals. Now, ipython is verified to work with python 2.3 * Release.py: update version to 0.8.4 for quick point fix 2008-05-28 *** Released version 0.8.3 2008-05-28 Fernando Perez * ../win32_manual_post_install.py (run): Fix the windows installer so the links to the docs are correct. * IPython/ultraTB.py: flush stderr after writing to it to fix problems with exception traceback ordering in some platforms. Thanks to a report/fix by Jie Tang . * IPython/Magic.py (magic_cpaste): add stripping of continuation prompts, feature requested by Stefan vdW. * ../setup.py: updates to build and release tools in preparation for 0.8.3 release. 2008-05-27 Ville Vainio * iplib.py, ipmaker.py: survive lack of doctest and site._Helper for minimal environments (e.g. Maemo sdk python) * Magic.py: cpaste strips whitespace before >>> (allow pasting doctests) * ipy_completers.py: cd completer now does recursive path expand (old behaviour is buggy on some readline versions) 2008-05-14 Ville Vainio * Extensions/ipy_greedycompleter.py: New extension that enables a bit more "relaxed" tab completer that evaluates code without safety checks (i.e. there can be side effects like function calls) 2008-04-20 Ville Vainio * Extensions/ipy_lookfor.py: add %lookfor magic command (search docstrings for words) by Pauli Virtanen. Close #245. * Extension/ipy_jot.py: %jot and %read magics, analogous to %store but you can specify some notes. Not read in automatically on startup, you need %read. Contributed by Yichun Wei. 2008-04-18 Fernando Perez * IPython/genutils.py (page): apply workaround to curses bug that can leave terminal corrupted after a call to initscr(). 2008-04-15 Ville Vainio * genutils.py: SList.grep supports 'field' argument * ipy_completers.py: module completer looks inside .egg zip files (patch by mc). Close #196. 2008-04-09 Ville Vainio * deep_reload.py: do not crash on from __future__ import absolute_import. Close #244. 2008-04-02 Ville Vainio * ipy_winpdb.py: New extension for winpdb integration. %wdb test.py is winpdb equivalent of %run -d test.py. winpdb is a crossplatform remote GUI debugger based on wxpython. 2008-03-29 Ville Vainio * ipython.rst, do_sphinx.py: New documentation base, based on reStucturedText and Sphinx (html/pdf generation). The old Lyx based documentation will not be updated anymore. * jobctrl.py: Use shell in Popen for 'start' command (in windows). 2008-03-24 Ville Vainio * ipython.rst, do_sphinx.py: New documentation base, based on reStucturedText and Sphinx (html/pdf generation). The old Lyx based documentation will not be updated anymore. ipython.rst has up to date documentation on matters that were not documented at all, and it also removes various misdocumented/deprecated features. 2008-03-22 Ville Vainio * Shell.py: Merge mtexp branch: https://code.launchpad.net/~ipython/ipython/mtexp Privides simpler and more robust MTInteractiveShell that won't deadlock, even when the worker thread (GUI) stops doing runcode() regularly. r71. 2008-03-20 Ville Vainio * twshell.py: New shell that runs IPython code in Twisted reactor. Launch by doing ipython -twisted. r67. 2008-03-19 Ville Vainio * Magic.py: %rehashx works correctly when shadowed system commands have upper case characters (e.g. Print.exe). r64. * ipy_bzr.py, ipy_app_completers.py: new bzr completer that also knows options to commands, based on bzrtools. Uses bzrlib directly. r66. 2008-03-16 Ville Vainio * make_tarball.py: Fixed for bzr. * ipapi.py: Better _ip.runlines() script cleanup. r56,r79. * ipy_vimserver.py, ipy.vim: New extension for vim server mode, by Erich Heine. 2008-03-12 Ville Vainio * ipmaker.py: Force (reload?) import of ipy_user_conf and ipy_profile_foo, so that embedded instances can be relaunched and configuration is still done. r50 * ipapi.py, test_embed.py: Allow specifying shell class in launch_new_instance & make_new instance. Use this in test_embed.py. r51. test_embed.py is also a good and simple demo of embedding IPython. 2008-03-10 Ville Vainio * tool/update_revnum.py: Change to bzr revisioning scheme in revision numbers. * Shell.py: Threading improvements: In multithreaded shells, do not hang on macros and o.autoexec commands (or anything executed with _ip.runlines()) anymore. Allow recursive execution of IPython code in MTInteractiveShell.runsource by checking if we are already in worker thread, and execute code directly if we are. r48. MTInteractiveShell.runsource: execute code directly if worker thread is not running yet (this is the case in config files). r49. 2008-03-09 Ville Vainio * ipy_profile_sh.py: You can now use $LA or LA() to refer to last argument of previous command in sh profile. Similar to bash '!$'. LA(3) or $LA(3) stands for last argument of input history command 3. * Shell.py: -pylab names don't clutter %whos listing. 2008-03-07 Ville Vainio * ipy_autoreload.py: new extension (by Pauli Virtanen) for autoreloading modules; try %autoreload and %aimport. Close #154. Uses the new pre_runcode_hook. 2008-02-24 Ville Vainio * platutils_posix.py: freeze_term_title works 2008-02-21 Ville Vainio * Magic.py: %quickref does not crash with empty docstring 2008-02-20 Ville Vainio * completer.py: do not treat [](){} as protectable chars anymore, close #233. * completer.py: do not treat [](){} as protectable chars anymore * magic.py, test_cpaste.py: Allow different prefix for pasting from email 2008-02-17 Ville Vainio * Switched over to Launchpad/bzr as primary VCS. 2008-02-14 Ville Vainio * ipapi.py: _ip.runlines() is now much more liberal about indentation - it cleans up the scripts it gets 2008-02-14 Ville Vainio * Extensions/ipy_leo.py: created 'ILeo' IPython-Leo bridge. Changes to it (later on) are too numerous to list in ChangeLog until it stabilizes 2008-02-07 Darren Dale * IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve interaction in the interpreter (like Tkinter does), but it seems to partially interfere with the IPython implementation and exec_() still seems to block. So we disable the PyQt implementation and stick with the IPython one for now. 2008-02-02 Walter Doerwald * ipipe.py: A new ipipe table has been added: ialias produces all entries from IPython's alias table. 2008-02-01 Fernando Perez * IPython/Shell.py (MTInteractiveShell.runcode): Improve handling of KBINT in threaded shells. After code provided by Marc in #212. 2008-01-30 Fernando Perez * IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock that could occur due to a race condition in threaded shells. Thanks to code provided by Marc, as #210. 2008-01-29 Fernando Perez * IPython/Magic.py (magic_doctest_mode): respect the user's settings for input separators rather than overriding them. After a report by Jeff Kowalczyk * IPython/history.py (magic_history): Add support for declaring an output file directly from the history command. 2008-01-21 Walter Doerwald * ipipe.py: Register ipipe's displayhooks via the generic function generics.result_display() instead of using ipapi.set_hook(). 2008-01-19 Walter Doerwald * ibrowse.py, igrid.py, ipipe.py: The input object can now be passed to the constructor of the display classes. This makes it possible to use them with objects that implement __or__. Use this constructor in the displayhook instead of piping. * ipipe.py: Importing astyle.py is done as late as possible to avoid problems with circular imports. 2008-01-19 Ville Vainio * hooks.py, iplib.py: Added 'shell_hook' to customize how IPython calls shell. * hooks.py, iplib.py: Added 'show_in_pager' hook to specify how IPython pages text (%page, %pycat, %pdoc etc.) * Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks' and '%kill' to kill hanging processes that won't obey ctrl+C. 2008-01-16 Ville Vainio * ipy_completers.py: pyw extension support for %run completer. 2008-01-11 Ville Vainio * iplib.py, ipmaker.py: new rc option - autoexec. It's a list of ipython commands to be run when IPython has started up (just before running the scripts and -c arg on command line). * ipy_user_conf.py: Added an example on how to change term colors in config file (through using autoexec). * completer.py, test_completer.py: Ability to specify custom get_endidx to replace readline.get_endidx. For emacs users. 2008-01-10 Ville Vainio * Prompts.py (set_p_str): do not crash on illegal prompt strings 2008-01-08 Ville Vainio * '%macro -r' (raw mode) is now default in sh profile. 2007-12-31 Ville Vainio * completer.py: custom completer matching is now case sensitive (#207). * ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in an attempt to prevent occasional crashes. * CrashHandler.py: Crash log dump now asks user to press enter before exiting. * Store _ip in user_ns instead of __builtin__, enabling safer coexistence of multiple IPython instances in the same python interpreter (#197). * Debugger.py, ipmaker.py: Need to add '-pydb' command line switch to enable pydb in post-mortem debugging and %run -d. 2007-12-28 Ville Vainio * ipy_server.py: TCP socket server for "remote control" of an IPython instance. * Debugger.py: Change to PSF license * simplegeneric.py: Add license & author notes. * ipy_fsops.py: Added PathObj and FileObj, an object-oriented way to navigate file system with a custom completer. Run ipy_fsops.test_pathobj() to play with it. 2007-12-28 Fernando Perez * IPython/dtutils.py: Add utilities for interactively running doctests. Still needs work to more easily handle the namespace of the package one may be working on, but the basics are in place. 2007-12-27 Ville Vainio * ipy_completers.py: Applied arno's patch to get proper list of packages in import completer. Closes #196. 2007-12-20 Ville Vainio * completer.py, generics.py(complete_object): Allow custom complers based on python objects via simplegeneric. See generics.py / my_demo_complete_object 2007-12-13 Fernando Perez * IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean behavior to prompt objects, useful for display hooks to adjust themselves depending on whether prompts will be there or not. 2007-12-13 Ville Vainio * iplib.py(raw_input): unix readline does not allow unicode in history, encode to normal string. After patch by Tiago. Close #201 2007-12-12 Ville Vainio * genutils.py (abbrev_cwd): Terminal title now shows 2 levels of current directory. 2007-12-12 Fernando Perez * IPython/Shell.py (_select_shell): add support for controlling the pylab threading mode directly at the command line, without having to modify MPL config files. Added unit tests for this feature, though manual/docs update is still pending, will do later. 2007-12-11 Ville Vainio * ext_rescapture.py: var = !cmd is no longer verbose (to facilitate use in scripts) 2007-12-07 Ville Vainio * iplib.py, ipy_profile_sh.py: Do not escape # on command lines anymore (to \#) - even if it is a comment char that is implicitly escaped in some unix shells in interactive mode, it is ok to leave it in IPython as such. 2007-12-01 Robert Kern * IPython/ultraTB.py (findsource): Improve the monkeypatch to inspect.findsource(). It can now find source lines inside zipped packages. * IPython/ultraTB.py: When constructing tracebacks, try to use __file__ in the frame's namespace before trusting the filename in the code object which created the frame. 2007-11-29 *** Released version 0.8.2 2007-11-25 Fernando Perez * IPython/Logger.py (Logger.logstop): add a proper logstop() method to fully stop the logger, along with a corresponding %logstop magic for interactive use. * IPython/Extensions/ipy_host_completers.py: added new host completers functionality, contributed by Gael Pasgrimaud . 2007-11-24 Fernando Perez * IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller , to fix deprecated string exceptions in options handling. Unicode fix in %whos (committed a while ago) was also contributed by Paul. 2007-11-23 Darren Dale * ipy_traits_completer.py: let traits_completer respect the user's readline_omit__names setting. 2007-11-08 Ville Vainio * ipy_completers.py (import completer): assume 'xml' module exists. Do not add every module twice anymore. Closes #196. * ipy_completers.py, ipy_app_completers.py: Add proper apt-get completer that uses apt-cache to search for existing packages. 2007-11-06 Ville Vainio * Prompts.py: Do not update _oh and _123 when do_full_cache is not true. Closes #194. 2007-11-01 Brian Granger * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython working with OS X 10.5 libedit implementation of readline. 2007-10-24 Ville Vainio * iplib.py(user_setup): To route around buggy installations where UserConfig is not available, create a minimal _ipython. * iplib.py: Unicode fixes from Jorgen. * genutils.py: Slist now has new method 'fields()' for extraction of whitespace-separated fields from line-oriented data. 2007-10-15 Fernando Perez * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise when querying objects with no __class__ attribute (such as f2py-generated modules). 2007-10-09 Fernando Perez * IPython/Magic.py (magic_time): track compilation time and report it if longer than 0.1s (fix done to %time and %timeit). After a SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632. 2007-09-18 Ville Vainio * genutils.py(make_quoted_expr): Do not use Itpl, it does not support unicode at the moment. Fixes (many) magic calls with special characters. 2007-09-14 Fernando Perez * IPython/genutils.py (doctest_reload): expose the doctest reloader to the user so that people can easily reset doctest while using it interactively. Fixes a problem reported by Jorgen. * IPython/iplib.py (InteractiveShell.__init__): protect the FakeModule instances used for __main__ in %run calls from deletion, so that user code defined in them isn't left with dangling references due to the Python module deletion machinery. This should fix the problems reported by Darren. 2007-09-10 Darren Dale * Cleanup of IPShellQt and IPShellQt4 2007-09-09 Fernando Perez * IPython/FakeModule.py (FakeModule.__init__): further fixes for doctest support. * IPython/iplib.py (safe_execfile): minor docstring improvements. 2007-09-08 Ville Vainio * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current* directory, not the target directory. * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight exception that won't print the tracebacks. Switched many magics to raise them on error situations, also GetoptError is not printed anymore. 2007-09-07 Ville Vainio * iplib.py: do not auto-alias "dir", it screws up other dir auto aliases. * genutils.py: SList.grep() implemented. * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors for easy "out of the box" setup of several common editors, so that e.g. '%edit os.path.isfile' will jump to the correct line automatically. Contributions for command lines of your favourite editors welcome. 2007-09-07 Fernando Perez * IPython/OInspect.py (Inspector.pinfo): fixed bug that was preventing source display in certain cases. In reality I think the problem is with Ubuntu's Python build, but this change works around the issue in some cases (not in all, unfortunately). I'd filed a Python bug on this with more details, but in the change of bug trackers it seems to have been lost. * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is not the same, it's not self-documenting, doesn't allow range selection, and sorts alphabetically instead of numerically. (magic_r): restore %r. No, "up + enter. One char magic" is not the same thing, since %r takes parameters to allow fast retrieval of old commands. I've received emails from users who use this a LOT, so it stays. (magic_automagic): restore %automagic. "use _ip.option.automagic" is not a valid replacement b/c it doesn't provide an complete explanation (which the automagic docstring does). (magic_autocall): restore %autocall, with improved docstring. Same argument as for others, "use _ip.options.autocall" is not a valid replacement. (magic_pdef): restore %pdef & friends. Used widely, mentioned in tutorials and online docs. 2007-09-06 Fernando Perez * IPython/usage.py (quick_reference): mention magics in quickref, modified main banner to mention %quickref. * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility. 2007-09-06 Ville Vainio * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py: Callable aliases now pass the _ip as first arg. This breaks compatibility with earlier 0.8.2.svn series! (though they should not have been in use yet outside these few extensions) 2007-09-05 Ville Vainio * external/mglob.py: expand('dirname') => ['dirname'], instead of ['dirname/foo','dirname/bar', ...]. * Extensions/ipy_fsops.py: added, has usefull shell utils for plain win32 installations: icp, imv, imkdir, igrep, irm, collect (collect is useful for others as well). * iplib.py: on callable aliases (as opposed to old style aliases), do var_expand() immediately, and use make_quoted_expr instead of hardcoded r""" * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32, if not available load ipy_fsops.py for cp, mv, etc. replacements * OInspect.py, ipy_which.py: improve %which and obj? for callable aliases 2007-09-04 Ville Vainio * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer. Relicensed under BSD with the authors approval. * ipmaker.py, usage.py: Remove %magic from default banner, improve %quickref 2007-09-03 Ville Vainio * Magic.py: %time now passes expression through prefilter, allowing IPython syntax. 2007-09-01 Ville Vainio * ipmaker.py: Always show full traceback when newstyle config fails 2007-08-27 Ville Vainio * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180 2007-08-26 Ville Vainio * ipmaker.py: Command line args have the highest priority again * iplib.py, ipmaker.py: -i command line argument now behaves as in normal python, i.e. leaves the IPython session running after -c command or running a batch file from command line. 2007-08-22 Ville Vainio * iplib.py: no extra empty (last) line in raw hist w/ multiline statements * logger.py: Fix bug where blank lines in history were not added until AFTER adding the current line; translated and raw history should finally be in sync with prompt now. * ipy_completers.py: quick_completer now makes it easy to create trivial custom completers * clearcmd.py: shadow history compression & erasing, fixed input hist clearing. * envpersist.py, history.py: %env (sh profile only), %hist completers * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and term title now include the drive letter, and always use / instead of os.sep (as per recommended approach for win32 ipython in general). * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running plain python scripts from ipykit command line by running "py myscript.py", even w/o installed python. 2007-08-21 Ville Vainio * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF. (for backwards compatibility) * history.py: switch back to %hist -t from %hist -r as default. At least until raw history is fixed for good. 2007-08-20 Ville Vainio * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch & locate alias redeclarations etc. Also, avoid handling _ip.IP.alias_table directly, prefer using _ip.defalias. 2007-08-15 Ville Vainio * prefilter.py: ! is now always served first 2007-08-15 Fernando Perez * IPython/iplib.py (safe_execfile): fix the SystemExit auto-suppression code to work in Python2.4 (the internal structure of that exception changed and I'd only tested the code with 2.5). Bug reported by a SciPy attendee. 2007-08-13 Ville Vainio * prefilter.py: reverted !c:/bin/foo fix, made % in multiline specials work again 2007-08-13 Ville Vainio * prefilter.py: Take more care to special-case !, so that !c:/bin/foo.exe works. * setup.py: if we are building eggs, strip all docs and examples (it doesn't make sense to bytecompile examples, and docs would be in an awkward place anyway). * Ryan Krauss' patch fixes start menu shortcuts when IPython is installed into a directory that has spaces in the name. 2007-08-13 Fernando Perez * IPython/Magic.py (magic_doctest_mode): fix prompt separators in doctest profile and %doctest_mode, so they actually generate the blank lines needed by doctest to separate individual tests. * IPython/iplib.py (safe_execfile): modify so that running code which calls sys.exit(0) (or equivalently, raise SystemExit(0)) doesn't get a printed traceback. Any other value in sys.exit(), including the empty call, still generates a traceback. This enables use of %run without having to pass '-e' for codes that correctly set the exit status flag. 2007-08-12 Fernando Perez * IPython/iplib.py (InteractiveShell.post_config_initialization): fix problems with doctests failing when run inside IPython due to IPython's modifications of sys.displayhook. 2007-8-9 Fernando Perez * IPython/ipapi.py (to_user_ns): update to accept a dict as well as a string with names. 2007-08-09 Fernando Perez * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode magic to toggle on/off the doctest pasting support without having to leave a session to switch to a separate profile. 2007-08-08 Fernando Perez * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to introduce a blank line between inputs, to conform to doctest requirements. * IPython/OInspect.py (Inspector.pinfo): fix another part where auto-generated docstrings for new-style classes were showing up. 2007-08-07 Fernando Perez * api_changes: Add new file to track backward-incompatible user-visible changes. 2007-08-06 Ville Vainio * ipmaker.py: fix bug where user_config_ns didn't exist at all before all the config files were handled. 2007-08-04 Fernando Perez * IPython/irunner.py (RunnerFactory): Add new factory class for creating reusable runners based on filenames. * IPython/Extensions/ipy_profile_doctest.py: New profile for doctest support. It sets prompts/exceptions as similar to standard Python as possible, so that ipython sessions in this profile can be easily pasted as doctests with minimal modifications. It also enables pasting of doctests from external sources (even if they have leading whitespace), so that you can rerun doctests from existing sources. * IPython/iplib.py (_prefilter): fix a buglet where after entering some whitespace, the prompt would become a continuation prompt with no way of exiting it other than Ctrl-C. This fix brings us into conformity with how the default python prompt works. * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste): Add support for pasting not only lines that start with '>>>', but also with ' >>>'. That is, arbitrary whitespace can now precede the prompts. This makes the system useful for pasting doctests from docstrings back into a normal session. 2007-08-02 Fernando Perez * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in r1357, which had killed multiple invocations of an embedded ipython (this means that example-embed has been broken for over 1 year!!!). Rather than possibly breaking the batch stuff for which the code in iplib.py/interact was introduced, I worked around the problem in the embedding class in Shell.py. We really need a bloody test suite for this code, I'm sick of finding stuff that used to work breaking left and right every time I use an old feature I hadn't touched in a few months. (kill_embedded): Add a new magic that only shows up in embedded mode, to allow users to permanently deactivate an embedded instance. 2007-08-01 Ville Vainio * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw history gets out of sync on runlines (e.g. when running macros). 2007-07-31 Fernando Perez * IPython/Magic.py (magic_colors): fix win32-related error message that could appear under *nix when readline was missing. Patch by Scott Jackson, closes #175. 2007-07-29 Fernando Perez * IPython/Extensions/ipy_traits_completer.py: Add a new custom completer that it traits-aware, so that traits objects don't show all of their internal attributes all the time. * IPython/genutils.py (dir2): moved this code from inside completer.py to expose it publicly, so I could use it in the wildcards bugfix. * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by Stefan with Traits. * IPython/completer.py (Completer.attr_matches): change internal var name from 'object' to 'obj', since 'object' is now a builtin and this can lead to weird bugs if reusing this code elsewhere. 2007-07-25 Fernando Perez * IPython/OInspect.py (Inspector.pinfo): fix small glitches in 'foo?' and update the code to prevent printing of default docstrings that started appearing after I added support for new-style classes. The approach I'm using isn't ideal (I just special-case those strings) but I'm not sure how to more robustly differentiate between truly user-written strings and Python's automatic ones. 2007-07-09 Ville Vainio * completer.py: Applied Matthew Neeley's patch: Dynamic attributes from trait_names and _getAttributeNames are added to the list of tab completions, but when this happens, the attribute list is turned into a set, so the attributes are unordered when printed, which makes it hard to find the right completion. This patch turns this set back into a list and sort it. 2007-07-06 Fernando Perez * IPython/OInspect.py (Inspector.pinfo): Add support for new-style classes in various inspector functions. 2007-06-28 Ville Vainio * shadowns.py, iplib.py, ipapi.py, OInspect.py: Implement "shadow" namespace, and callable aliases that reside there. Use them by: _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc foo hello world (gets translated to:) _sh.foo(r"""hello world""") In practice, this kind of alias can take the role of a magic function * New generic inspect_object, called on obj? and obj?? 2007-06-15 Fernando Perez * IPython/ultraTB.py (findsource): fix a problem with inspect.getfile that can cause crashes during traceback construction. 2007-06-14 Ville Vainio * iplib.py (handle_auto): Try to use ascii for printing "--->" autocall rewrite indication, becausesometimes unicode fails to print properly (and you get ' - - - '). Use plain uncoloured ---> for unicode. * shadow history. Usable through "%hist -g " and "%rep 0123". . pickleshare 'hash' commands (hget, hset, hcompress, hdict) for efficient shadow history storage. 2007-06-13 Ville Vainio * ipapi.py: _ip.to_user_ns(vars, interactive = True). Added kw arg 'interactive', tell whether vars should be visible with %whos. 2007-06-11 Ville Vainio * pspersistence.py, Magic.py, iplib.py: directory history now saved to db * iplib.py: "ipython -c " now passes the command through prefilter. Also, it exits IPython immediately after evaluating the command (just like std python) 2007-06-05 Walter Doerwald * IPython/Extensions/ipipe.py: Added a new table icap, which executes a Python string and captures the output. (Idea and original patch by Stefan van der Walt) 2007-06-01 Fernando Perez * IPython/ultraTB.py (VerboseTB.text): update printing of exception types for Python 2.5 (now all exceptions in the stdlib are new-style classes). 2007-05-31 Walter Doerwald * IPython/Extensions/igrid.py: Add new commands refresh and refresh_timer (mapped to "R"/"F5" and to the menu) which restarts the iterator once (refresh) or after every x seconds (refresh_timer). Add a working implementation of "searchexpression", where the text entered is not the text to search for, but an expression that must be true. Added display of shortcuts to the menu. Added commands "pickinput" and "pickinputattr" that put the object or attribute under the cursor in the input line. Split the statusbar to be able to display the currently active refresh interval. (Patch by Nik Tautenhahn) 2007-05-29 Jorgen Stenarson * fixing set_term_title to use ctypes as default * fixing set_term_title fallback to work when curent dir is on a windows network share 2007-05-28 Ville Vainio * %cpaste: strip + with > from left (diffs). * iplib.py: Fix crash when readline not installed 2007-05-26 Ville Vainio * generics.py: introduce easy to extend result_display generic function (using simplegeneric.py). * Fixed the append functionality of %set. 2007-05-25 Ville Vainio * New magic: %rep (fetch / run old commands from history) * New extension: mglob (%mglob magic), for powerful glob / find /filter like functionality % maghistory.py: %hist -g PATTERM greps the history for pattern 2007-05-24 Walter Doerwald * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to browse the IPython input history * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput (mapped to "i") can be used to put the object under the curser in the input line. pickinputattr (mapped to "I") does the same for the attribute under the cursor. 2007-05-24 Ville Vainio * Grand magic cleansing (changeset [2380]): * Introduce ipy_legacy.py where the following magics were moved: pdef pdoc psource pfile rehash dhist Quit p r automagic autocall If you need them, either use default profile or "import ipy_legacy" in your ipy_user_conf.py * Move sh and scipy profile to Extensions from UserConfig. this implies you should not edit them, but you don't need to run %upgrade when upgrading IPython anymore. * %hist/%history now operates in "raw" mode by default. To get the old behaviour, run '%hist -n' (native mode). * split ipy_stock_completers.py to ipy_stock_completers.py and ipy_app_completers.py. Stock completers (%cd, import, %run) are now installed as default. * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c handling. * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default") input if readline is available. 2007-05-23 Ville Vainio * macro.py: %store uses __getstate__ properly * exesetup.py: added new setup script for creating standalone IPython executables with py2exe (i.e. no python installation required). * Removed ipythonrc-scipy, ipy_profile_scipy.py takes its place. * rlineimpl.py, genutils.py (get_home_dir): py2exe support 2007-05-21 Ville Vainio * platutil_win32.py (set_term_title): handle failure of 'title' system call properly. 2007-05-17 Walter Doerwald * IPython/Extensions/ipipe.py: Fix xrepr for ifiles. (Bug detected by Paul Mueller). 2007-05-16 Ville Vainio * ipy_profile_sci.py, ipython_win_post_install.py: Create new "sci" profile, effectively a modern version of the old "scipy" profile (which is now slated for deprecation). 2007-05-15 Ville Vainio * pycolorize.py, pycolor.1: Paul Mueller's patches that make pycolorize read input from stdin when run without arguments. * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import it in sh profile (instead of ipy_system_conf.py). * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command aliases are now lower case on windows (MyCommand.exe => mycommand). * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul. Macros are now callable objects that inherit from ipapi.IPyAutocall, i.e. get autocalled regardless of system autocall setting. 2007-05-10 Fernando Perez * IPython/rlineimpl.py: check for clear_history in readline and make it a dummy no-op if not available. This function isn't guaranteed to be in the API and appeared in Python 2.4, so we need to check it ourselves. Also, clean up this file quite a bit. * ipython.1: update man page and full manual with information about threads (remove outdated warning). Closes #151. 2007-05-09 Fernando Perez * IPython/Extensions/ipy_constants.py: Add Gael's constants module in trunk (note that this made it into the 0.8.1 release already, but the changelogs didn't get coordinated). Many thanks to Gael Varoquaux 2007-05-09 *** Released version 0.8.1 2007-05-10 Walter Doerwald * IPython/Extensions/igrid.py: Incorporate html help into the module, so we don't have to search for the file. 2007-05-02 Fernando Perez * test/test_irunner.py (RunnerTestCase._test_runner): Close #147. 2007-04-30 Ville Vainio * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the user has illegal (non-ascii) home directory name 2007-04-27 Ville Vainio * platutils_win32.py: implement set_term_title for windows * Update version number * ipy_profile_sh.py: more informative prompt (2 dir levels) 2007-04-26 Walter Doerwald * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced when the igrid input raised an exception. (Patch by Nik Tautenhahn, bug discovered by Ville). 2007-04-26 Ville Vainio * Extensions/ipy_completers.py: Olivier's module completer now saves the list of root modules if it takes > 4 secs on the first run. * Magic.py (%rehashx): %rehashx now clears the completer cache 2007-04-26 Fernando Perez * ipython.el: fix incorrect color scheme, reported by Stefan. Closes #149. * IPython/PyColorize.py (Parser.format2): fix state-handling logic. I still don't like how that code handles state, but at least now it should be correct, if inelegant. Closes #146. 2007-04-25 Ville Vainio * Extensions/ipy_which.py: added extension for %which magic, works a lot like unix 'which' but also finds and expands aliases, and allows wildcards. * ipapi.py (expand_alias): Now actually *return* the expanded alias, as opposed to returning nothing. * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import ipy_stock_completers on default profile, do import on sh profile. 2007-04-22 Jorgen Stenarson * Fix bug in iplib.py/safe_execfile when launching ipython with a script like ipython.py foo.py which raised a IndexError. 2007-04-21 Ville Vainio * Extensions/ipy_extutil.py: added extension to manage other ipython extensions. Now only supports 'ls' == list extensions. 2007-04-20 Fernando Perez * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that would prevent use of the exception system outside of a running IPython instance. 2007-04-20 Ville Vainio * Extensions/ipy_render.py: added extension for easy interactive text template rendering (to clipboard). Uses Ka-Ping Yee's 'Iptl' template notation, * Extensions/ipy_completers.py: introduced Olivier Lauzanne's safer & faster 'import' completer. * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value) and _ip.defalias(name, command). * Extensions/ipy_exportdb.py: New extension for exporting all the %store'd data in a portable format (normal ipapi calls like defmacro() etc.) 2007-04-19 Ville Vainio * upgrade_dir.py: skip junk files like *.pyc * Release.py: version number to 0.8.1 2007-04-18 Ville Vainio * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1 and later on win32. 2007-04-16 Ville Vainio * iplib.py (showtraceback): Do not crash when running w/o readline. 2007-04-12 Walter Doerwald * IPython/Extensions/ipipe.py: (ils) Directoy listings are now sorted (case sensitive with files and dirs mixed). 2007-04-10 Fernando Perez * IPython/Release.py (version): Open trunk for 0.8.1 development. 2007-04-10 *** Released version 0.8.0 2007-04-07 Fernando Perez * Tag 0.8.0 for release. * IPython/iplib.py (reloadhist): add API function to cleanly reload the readline history, which was growing inappropriately on every %run call. * win32_manual_post_install.py (run): apply last part of Nicolas Pernetty's patch (I'd accidentally applied it in a different directory and this particular file didn't get patched). 2007-04-05 Fernando Perez * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to find the main thread id and use the proper API call. Thanks to Stefan for the fix. * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's unit tests to reflect fixed ticket #52, and add more tests sent by him. * IPython/iplib.py (raw_input): restore the readline completer state on every input, in case third-party code messed it up. (_prefilter): revert recent addition of early-escape checks which prevent many valid alias calls from working. * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking flag for sigint handler so we don't run a full signal() call on each runcode access. * IPython/Magic.py (magic_whos): small improvement to diagnostic message. 2007-04-04 Fernando Perez * IPython/Shell.py (sigint_handler): I *THINK* I finally got asynchronous exceptions working, i.e., Ctrl-C can actually interrupt long-running code in the multithreaded shells. This is using Tomer Filiba's great ctypes-based trick: http://sebulba.wikispaces.com/recipe+thread2. I'd already tried this in the past, but hadn't been able to make it work before. So far it looks like it's actually running, but this needs more testing. If it really works, I'll be *very* happy, and we'll owe a huge thank you to Tomer. My current implementation is ugly, hackish and uses nasty globals, but I don't want to try and clean anything up until we know if it actually works. NOTE: this feature needs ctypes to work. ctypes is included in Python2.5, but 2.4 users will need to manually install it. This feature makes multi-threaded shells so much more usable that it's a minor price to pay (ctypes is very easy to install, already a requirement for win32 and available in major linux distros). 2007-04-04 Ville Vainio * Extensions/ipy_completers.py, ipy_stock_completers.py: Moved implementations of 'bundled' completers to ipy_completers.py, they are only enabled in ipy_stock_completers.py. 2007-04-04 Fernando Perez * IPython/PyColorize.py (Parser.format2): Fix identation of colorzied output and return early if color scheme is NoColor, to avoid unnecessary and expensive tokenization. Closes #131. 2007-04-03 Fernando Perez * IPython/Debugger.py: disable the use of pydb version 1.17. It has a critical bug (a missing import that makes post-mortem not work at all). Unfortunately as of this time, this is the version shipped with Ubuntu Edgy, so quite a few people have this one. I hope Edgy will update to a more recent package. 2007-04-02 Fernando Perez * IPython/iplib.py (_prefilter): close #52, second part of a patch set by Stefan (only the first part had been applied before). * IPython/Extensions/ipy_stock_completers.py (module_completer): remove usage of the dangerous pkgutil.walk_packages(). See details in comments left in the code. * IPython/Magic.py (magic_whos): add support for numpy arrays similar to what we had for Numeric. * IPython/completer.py (IPCompleter.complete): extend the complete() call API to support completions by other mechanisms than readline. Closes #109. * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to protect against a bug in Python's execfile(). Closes #123. 2007-04-01 Fernando Perez * IPython/iplib.py (split_user_input): ensure that when splitting user input, the part that can be treated as a python name is pure ascii (Python identifiers MUST be pure ascii). Part of the ongoing Unicode support work. * IPython/Prompts.py (prompt_specials_color): Add \N for the actual prompt number, without any coloring. This allows users to produce numbered prompts with their own colors. Added after a report/request by Thorsten Kampe . 2007-03-31 Walter Doerwald * IPython/Extensions/igrid.py: Map the return key to enter() and shift-return to enterattr(). 2007-03-30 Fernando Perez * IPython/Magic.py (magic_psearch): add unicode support by encoding to ascii the input, since this routine also only deals with valid Python names. Fixes a bug reported by Stefan. 2007-03-29 Fernando Perez * IPython/Magic.py (_inspect): convert unicode input into ascii before trying to evaluate it as a Python identifier. This fixes a problem that the new unicode support had introduced when analyzing long definition lines for functions. 2007-03-24 Walter Doerwald * IPython/Extensions/igrid.py: Fix picking. Using igrid with wxPython 2.6 and -wthread should work now. igrid.display() simply tries to create a frame without an application. Only if this fails an application is created. 2007-03-23 Walter Doerwald * IPython/Extensions/path.py: Updated to version 2.2. 2007-03-23 Ville Vainio * iplib.py: recursive alias expansion now works better, so that cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top' doesn't trip up the process, if 'd' has been aliased to 'ls'. * Extensions/ipy_gnuglobal.py added, provides %global magic for users of http://www.gnu.org/software/global * iplib.py: '!command /?' now doesn't invoke IPython's help system. Closes #52. Patch by Stefan van der Walt. 2007-03-23 Fernando Perez * IPython/FakeModule.py (FakeModule.__init__): Small fix to respect the __file__ attribute when using %run. Thanks to a bug report by Sebastian Rooks . 2007-03-22 Fernando Perez * IPython/iplib.py (raw_input): Fix mishandling of unicode at input. Patch sent by Stefan. 2007-03-20 Jorgen Stenarson * IPython/Extensions/ipy_stock_completer.py shlex_split, fix bug in shlex_split. len function call was missing an if statement. Caused shlex_split to sometimes return "" as last element. 2007-03-18 Fernando Perez * IPython/completer.py (IPCompleter.file_matches.single_dir_expand): fix a problem reported by Stefan, where directories containign a single subdir would be completed too early. * IPython/Shell.py (_load_pylab): Make the execution of 'from pylab import *' when -pylab is given be optional. A new flag, pylab_import_all controls this behavior, the default is True for backwards compatibility. * IPython/ultraTB.py (_formatTracebackLines): Added (slightly modified) R. Bernstein's patch for fully syntax highlighted tracebacks. The functionality is also available under ultraTB for non-ipython users (someone using ultraTB but outside an ipython session). They can select the color scheme by setting the module-level global DEFAULT_SCHEME. The highlight functionality also works when debugging. * IPython/genutils.py (IOStream.close): small patch by R. Bernstein for improved pydb support. * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by DaveS to improve support of debugging under NTEmacs, including improved pydb behavior. * IPython/Magic.py (magic_prun): Fix saving of profile info for Python 2.5, where the stats object API changed a little. Thanks to a bug report by Paul Smith . * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas Pernetty's patch to improve support for (X)Emacs under Win32. 2007-03-17 Fernando Perez * IPython/Shell.py (hijack_wx): ipmort WX with current semantics to quiet a deprecation warning that fires with Wx 2.8. Thanks to a report by Nik Tautenhahn. 2007-03-16 Walter Doerwald * setup.py: Add the igrid help files to the list of data files to be installed alongside igrid. * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn) Show the input object of the igrid browser as the window tile. Show the object the cursor is on in the statusbar. 2007-03-15 Ville Vainio * Extensions/ipy_stock_completers.py: Fixed exception on mismatching quotes in %run completer. Patch by Jorgen Stenarson. Closes #127. 2007-03-14 Ville Vainio * Extensions/ext_rehashdir.py: Do not do auto_alias in %rehashdir, it clobbers %store'd aliases. * UserConfig/ipy_profile_sh.py: envpersist.py extension (beefed up %env) imported for sh profile. 2007-03-10 Walter Doerwald * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid as the default browser. * IPython/Extensions/igrid.py: Make a few igrid attributes private. As igrid displays all attributes it ever encounters, fetch() (which has been renamed to _fetch()) doesn't have to recalculate the display attributes every time a new item is fetched. This should speed up scrolling. 2007-03-10 Fernando Perez * IPython/iplib.py (InteractiveShell.__init__): fix for Alex Schmolck's recently reported tab-completion bug (my previous one had a problem). Patch by Dan Milstein . 2007-03-09 Walter Doerwald * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn: Close help window if exiting igrid. 2007-03-02 Jorgen Stenarson * IPython/Extensions/ipy_defaults.py: Check if readline is available before calling functions from readline. 2007-03-02 Walter Doerwald * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension. igrid is a wxPython-based display object for ipipe. If your system has wx installed igrid will be the default display. Without wx ipipe falls back to ibrowse (which needs curses). If no curses is installed ipipe falls back to idump. 2007-03-01 Fernando Perez * IPython/iplib.py (split_user_inputBROKEN): temporarily disable my changes from yesterday, they introduced bugs. Will reactivate once I get a correct solution, which will be much easier thanks to Dan Milstein's new prefilter test suite. 2007-02-28 Fernando Perez * IPython/iplib.py (split_user_input): fix input splitting so we don't attempt attribute accesses on things that can't possibly be valid Python attributes. After a bug report by Alex Schmolck. (InteractiveShell.__init__): brown-paper bag fix; regexp broke %magic with explicit % prefix. 2007-02-27 Fernando Perez * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to avoid a DeprecationWarning from GTK. 2007-02-22 Fernando Perez * IPython/genutils.py (clock): I modified clock() to return total time, user+system. This is a more commonly needed metric. I also introduced the new clocku/clocks to get only user/system time if one wants those instead. ***WARNING: API CHANGE*** clock() used to return only user time, so if you want exactly the same results as before, use clocku instead. 2007-02-22 Ville Vainio * IPython/Extensions/ipy_p4.py: Extension for improved p4 (perforce version control system) experience. Adds %p4 magic with p4 command completion and automatic -G argument (marshall output as python dict) 2007-02-19 Fernando Perez * IPython/demo.py (Demo.re_stop): make dashes optional in demo stop marks. (ClearingMixin): a simple mixin to easily make a Demo class clear the screen in between blocks and have empty marquees. The ClearDemo and ClearIPDemo classes that use it are included. 2007-02-18 Fernando Perez * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to protect against exceptions at Python shutdown time. Patch sumbmitted to upstream. 2007-02-14 Walter Doerwald * IPython/Extensions/ibrowse.py: If entering the first object level (i.e. the object for which the browser has been started) fails, now the error is raised directly (aborting the browser) instead of running into an empty levels list later. 2007-02-03 Walter Doerwald * IPython/Extensions/ipipe.py: Add an xrepr implementation for the noitem object. 2007-01-31 Fernando Perez * IPython/completer.py (Completer.attr_matches): Fix small tab-completion bug with Enthought Traits objects with units. Thanks to a bug report by Tom Denniston . 2007-01-27 Fernando Perez * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a bug where only .ipy or .py would be completed. Once the first argument to %run has been given, all completions are valid because they are the arguments to the script, which may well be non-python filenames. * IPython/irunner.py (InteractiveRunner.run_source): major updates to irunner to allow it to correctly support real doctesting of out-of-process ipython code. * IPython/Magic.py (magic_cd): Make the setting of the terminal title an option (-noterm_title) because it completely breaks doctesting. * IPython/demo.py: fix IPythonDemo class that was not actually working. 2007-01-24 Fernando Perez * IPython/irunner.py (main): fix small bug where extensions were not being correctly recognized. 2007-01-23 Walter Doerwald * IPython/Extensions/ipipe.py (xiter): Make sure that iterating a string containing a single line yields the string itself as the only item. * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an object if it's the same as the one on the last level (This avoids infinite recursion for one line strings). 2007-01-17 Fernando Perez * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush all output streams before printing tracebacks. This ensures that user output doesn't end up interleaved with traceback output. 2007-01-10 Ville Vainio * Extensions/envpersist.py: Turbocharged %env that remembers env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or "%env VISUAL=jed". 2007-01-05 Fernando Perez * IPython/iplib.py (showtraceback): ensure that we correctly call custom handlers in all cases (some with pdb were slipping through, but I'm not exactly sure why). * IPython/Debugger.py (Tracer.__init__): added new class to support set_trace-like usage of IPython's enhanced debugger. 2006-12-24 Ville Vainio * ipmaker.py: more informative message when ipy_user_conf import fails (suggest running %upgrade). * tools/run_ipy_in_profiler.py: Utility to see where the time during IPython startup is spent. 2006-12-20 Ville Vainio * 0.7.3 is out - merge all from 0.7.3 branch to trunk * ipapi.py: Add new ipapi method, expand_alias. * Release.py: Bump up version to 0.7.4.svn 2006-12-17 Ville Vainio * Extensions/jobctrl.py: Fixed &cmd arg arg... to work properly on posix too * Release.py: Update revnum (version is still just 0.7.3). 2006-12-15 Ville Vainio * scripts/ipython_win_post_install: create ipython.py in prefix + "/scripts". * Release.py: Update version to 0.7.3. 2006-12-14 Ville Vainio * scripts/ipython_win_post_install: Overwrite old shortcuts if they already exist * Release.py: release 0.7.3rc2 2006-12-13 Ville Vainio * Branch and update Release.py for 0.7.3rc1 2006-12-13 Fernando Perez * IPython/Shell.py (IPShellWX): update for current WX naming conventions, to avoid a deprecation warning with current WX versions. Thanks to a report by Danny Shevitz. 2006-12-12 Ville Vainio * ipmaker.py: apply david cournapeau's patch to make import_some work properly even when ipythonrc does import_some on empty list (it was an old bug!). * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc: Add deprecation note to ipythonrc and a url to wiki in ipy_user_conf.py * Magic.py (%run): %run myscript.ipy now runs myscript.ipy as if it was typed on IPython command prompt, i.e. as IPython script. * example-magic.py, magic_grepl.py: remove outdated examples 2006-12-11 Fernando Perez * IPython/iplib.py (debugger): prevent a nasty traceback if %debug is called before any exception has occurred. 2006-12-08 Ville Vainio * Extensions/ipy_stock_completers.py: fix cd completer to translate /'s to \'s again. * completer.py: prevent traceback on file completions w/ backslash. * Release.py: Update release number to 0.7.3b3 for release 2006-12-07 Ville Vainio * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process while executing external code. Provides more shell-like behaviour and overall better response to ctrl + C / ctrl + break. * tools/make_tarball.py: new script to create tarball straight from svn (setup.py sdist doesn't work on win32). * Extensions/ipy_stock_completers.py: fix cd completer to give up on dirnames with spaces and use the default completer instead. * Revision.py: Change version to 0.7.3b2 for release. 2006-12-05 Ville Vainio * Magic.py, iplib.py, completer.py: Apply R. Bernstein's pydb patch 4 (rm debug printing, py 2.5 checking) 2006-11-30 Walter Doerwald * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse: "refresh" (mapped to "r") refreshes the screen by restarting the iterator. "refreshfind" (mapped to "R") does the same but tries to go back to the same object the cursor was on before the refresh. The command "markrange" is mapped to "%" now. * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable. 2006-11-29 Fernando Perez * IPython/Magic.py (magic_debug): new %debug magic to activate the interactive debugger on the last traceback, without having to call %pdb and rerun your code. Made minor changes in various modules, should automatically recognize pydb if available. 2006-11-28 Ville Vainio * completer.py: If the text start with !, show file completions properly. This helps when trying to complete command name for shell escapes. 2006-11-27 Ville Vainio * ipy_stock_completers.py: bzr completer submitted by Stefan van der Walt. Clean up svn and hg completers by using a common vcs_completer. 2006-11-26 Ville Vainio * Remove ipconfig and %config; you should use _ip.options structure directly instead! * genutils.py: add wrap_deprecated function for deprecating callables * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and _ip.system instead. ipalias is redundant. * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on win32, but just 'cmdname'. Other extensions (non-'exe') are still made explicit. * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom completer. Try it by entering 'hg ' and pressing tab. * macro.py: Give Macro a useful __repr__ method * Magic.py: %whos abbreviates the typename of Macro for brevity. 2006-11-24 Walter Doerwald * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that we don't get a duplicate ipipe module, where registration of the xrepr implementation for Text is useless. * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils. * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command. 2006-11-24 Ville Vainio * Magic.py, manual_base.lyx: Kirill Smelkov patch: try to use "cProfile" instead of the slower pure python "profile" 2006-11-23 Ville Vainio * manual_base.lyx: Kirill Smelkov patch: Fix wrong Qt+IPython+Designer link in documentation. * Extensions/ipy_pydb.py: R. Bernstein's patch for passing correct Pdb object to %pydb. 2006-11-22 Walter Doerwald * IPython/Extensions/astyle.py: Text needs it's own implemenation of the generic xrepr(), otherwise the list implementation would kick in. 2006-11-21 Ville Vainio * upgrade_dir.py: Now actually overwrites a nonmodified user file with one from UserConfig. * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda, it was missing which broke the sh profile. * completer.py: file completer now uses explicit '/' instead of os.path.join, expansion of 'foo' was broken on win32 if there was one directory with name 'foobar'. * A bunch of patches from Kirill Smelkov: * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets. * [patch 7/9] Implement %page -r (page in raw mode) - * [patch 5/9] ScientificPython webpage has moved * [patch 4/9] The manual mentions %ds, should be %dhist * [patch 3/9] Kill old bits from %prun doc. * [patch 1/9] Fix typos here and there. 2006-11-08 Ville Vainio * completer.py (attr_matches): catch all exceptions raised by eval of expr with dots. 2006-11-07 Fernando Perez * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user input if it starts with whitespace. This allows you to paste indented input from any editor without manually having to type in the 'if 1:', which is convenient when working interactively. Slightly modifed version of a patch by Bo Peng . 2006-11-03 Fernando Perez * IPython/irunner.py (main): modified irunner so it automatically recognizes the right runner to use based on the extension (.py for python, .ipy for ipython and .sage for sage). * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also visible in ipapi as ip.config(), to programatically control the internal rc object. There's an accompanying %config magic for interactive use, which has been enhanced to match the funtionality in ipconfig. * IPython/Magic.py (magic_system_verbose): Change %system_verbose so it's not just a toggle, it now takes an argument. Add support for a customizable header when making system calls, as the new system_header variable in the ipythonrc file. 2006-11-03 Walter Doerwald * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now generic functions (using Philip J. Eby's simplegeneric package). This makes it possible to customize the display of third-party classes without having to monkeypatch them. xiter() no longer supports a mode argument and the XMode class has been removed. The same functionality can be implemented via IterAttributeDescriptor and IterMethodDescriptor. One consequence of the switch to generic functions is that xrepr() and xattrs() implementation must define the default value for the mode argument themselves and xattrs() implementations must return real descriptors. * IPython/external: This new subpackage will contain all third-party packages that are bundled with IPython. (The first one is simplegeneric). * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent directory which as been dropped in r1703. * IPython/Extensions/ipipe.py (iless): Fixed. * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3. 2006-11-03 Fernando Perez * IPython/iplib.py (InteractiveShell.var_expand): fix stack handling in variable expansion so that shells and magics recognize function local scopes correctly. Bug reported by Brian. * scripts/ipython: remove the very first entry in sys.path which Python auto-inserts for scripts, so that sys.path under IPython is as similar as possible to that under plain Python. * IPython/completer.py (IPCompleter.file_matches): Fix tab-completion so that quotes are not closed unless the completion is unambiguous. After a request by Stefan. Minor cleanups in ipy_stock_completers. 2006-11-02 Ville Vainio * ipy_stock_completers.py: Add %run and %cd completers. * completer.py: Try running custom completer for both "foo" and "%foo" if the command is just "foo". Ignore case when filtering possible completions. * UserConfig/ipy_user_conf.py: install stock completers as default * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py: simplified readline history save / restore through a wrapper function 2006-10-31 Ville Vainio * strdispatch.py, completer.py, ipy_stock_completers.py: Allow str_key ("command") in completer hooks. Implement trivial completer for 'import' (stdlib modules only). Rename ipy_linux_package_managers.py to ipy_stock_completers.py. SVN completer. * Extensions/ledit.py: %magic line editor for easily and incrementally manipulating lists of strings. The magic command name is %led. 2006-10-30 Ville Vainio * Debugger.py, iplib.py (debugger()): Add last set of Rocky Bernsteins's patches for pydb integration. http://bashdb.sourceforge.net/pydb/ * strdispatch.py, iplib.py, completer.py, IPython/__init__.py, Extensions/ipy_linux_package_managers.py, hooks.py: Implement custom completer hook to allow the users to implement their own completers. See ipy_linux_package_managers.py for example. The hook name is 'complete_command'. 2006-10-28 Fernando Perez * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old Numeric leftovers. * ipython.el (py-execute-region): apply Stefan's patch to fix garbled results if the python shell hasn't been previously started. * IPython/genutils.py (arg_split): moved to genutils, since it's a pretty generic function and useful for other things. * IPython/OInspect.py (getsource): Add customizable source extractor. After a request/patch form W. Stein (SAGE). * IPython/irunner.py (InteractiveRunner.run_source): reset tty window size to a more reasonable value from what pexpect does, since their choice causes wrapping bugs with long input lines. 2006-10-28 Ville Vainio * Magic.py (%run): Save and restore the readline history from file around %run commands to prevent side effects from %runned programs that might use readline (e.g. pydb). * extensions/ipy_pydb.py: Adds %pydb magic when imported, for invoking the pydb enhanced debugger. 2006-10-23 Walter Doerwald * IPython/Extensions/ipipe.py (ifile): Remove all methods that call the base class method and propagate the return value to ifile. This is now done by path itself. 2006-10-15 Fernando Perez * IPython/ipapi.py (IPApi.__init__): Added new entry to public api: set_crash_handler(), to expose the ability to change the internal crash handler. * IPython/CrashHandler.py (CrashHandler.__init__): abstract out the various parameters of the crash handler so that apps using IPython as their engine can customize crash handling. Ipmlemented at the request of SAGE. 2006-10-14 Ville Vainio * Magic.py, ipython.el: applied first "safe" part of Rocky Bernstein's patch set for pydb integration. * Magic.py (%unalias, %alias): %store'd aliases can now be removed with '%unalias'. %alias w/o args now shows most interesting (stored / manually defined) aliases last where they catch the eye w/o scrolling. * Magic.py (%rehashx), ext_rehashdir.py: files with 'py' extension are always considered executable, even when not in PATHEXT environment variable. 2006-10-12 Ville Vainio * jobctrl.py: Add new "jobctrl" extension for spawning background processes with "&find /". 'import jobctrl' to try it out. Requires 'subprocess' module, standard in python 2.4+. * iplib.py (expand_aliases, handle_alias): Aliases expand transitively, so if foo -> bar and bar -> baz, then foo -> baz. 2006-10-09 Fernando Perez * IPython/Magic.py (Magic.parse_options): add a new posix option to allow parsing of input args in magics that doesn't strip quotes (if posix=False). This also closes %timeit bug reported by Stefan. 2006-10-03 Ville Vainio * iplib.py (raw_input, interact): Return ValueError catching for raw_input. Fixes infinite loop for sys.stdin.close() or sys.stdout.close(). 2006-09-27 Fernando Perez * IPython/irunner.py (InteractiveRunner.run_source): small fixes to help in handling doctests. irunner is now pretty useful for running standalone scripts and simulate a full interactive session in a format that can be then pasted as a doctest. * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit on top of the default (useless) ones. This also fixes the nasty way in which 2.5's Quitter() exits (reverted [1785]). * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python 2.5. * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb color scheme is updated as well when color scheme is changed interactively. 2006-09-27 Ville Vainio * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid infinite loop and just exit. It's a hack, but will do for a while. 2006-08-25 Walter Doerwald * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to the constructor, this makes it possible to get a list of only directories or only files. 2006-08-12 Ville Vainio * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods, they broke unittest 2006-08-11 Ville Vainio * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch by resolving issue properly, i.e. by inheriting FakeModule from types.ModuleType. Pickling ipython interactive data should still work as usual (testing appreciated). 2006-08-09 Fernando Perez * IPython/OInspect.py: monkeypatch inspect from the stdlib if running under python 2.3 with code from 2.4 to fix a bug with help(). Reported by the Debian maintainers, Norbert Tretkowski and Alexandre Fayolle . 2006-08-04 Walter Doerwald * IPython/Extensions/ibrowse.py: Fixed the help message in the footer (which was displaying "quit" twice). 2006-07-28 Walter Doerwald * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using the mode argument). 2006-07-27 Walter Doerwald * IPython/Extensions/ipipe.py: Fix getglobals() if we're not running under IPython. * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail and make it iterable (iterating over the attribute itself). Add two new magic strings for __xattrs__(): If the string starts with "-", the attribute will not be displayed in ibrowse's detail view (but it can still be iterated over). This makes it possible to add attributes that are large lists or generator methods to the detail view. Replace magic attribute names and _attrname() and _getattr() with "descriptors": For each type of magic attribute name there's a subclass of Descriptor: None -> SelfDescriptor(); "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo"); "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo"); foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__() are still supported. * IPython/Extensions/ibrowse.py: If fetching the next row from the input fails in ibrowse.fetch(), the exception object is added as the last item and item fetching is canceled. This prevents ibrowse from aborting if e.g. a generator throws an exception midway through execution. * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and encoding into methods. 2006-07-26 Ville Vainio * iplib.py: history now stores multiline input as single history entries. Patch by Jorgen Cederlof. 2006-07-18 Walter Doerwald * IPython/Extensions/ibrowse.py: Make cursor visible over non existing attributes. 2006-07-14 Walter Doerwald * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the error output of the running command doesn't mess up the screen. 2006-07-13 Walter Doerwald * IPython/Extensions/ipipe.py (isort): Make isort usable without argument. This sorts the items themselves. 2006-07-12 Walter Doerwald * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval): Compile expression strings into code objects. This should speed up ifilter and friends somewhat. 2006-07-08 Ville Vainio * Magic.py: %cpaste now strips > from the beginning of lines to ease pasting quoted code from emails. Contributed by Stefan van der Walt. 2006-06-29 Ville Vainio * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab mode, patch contributed by Darren Dale. NEEDS TESTING! 2006-06-28 Walter Doerwald * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row a blue background. Fix fetching new display rows when the browser scrolls more than a screenful (e.g. by using the goto command). 2006-06-27 Ville Vainio * Magic.py (_inspect, _ofind) Apply David Huard's patch for displaying the correct docstring for 'property' attributes. 2006-06-23 Walter Doerwald * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard commands into the methods implementing them. 2006-06-22 Fernando Perez * ipython.el (ipython-indentation-hook): cleanup patch, submitted by Kov Chai . He notes that the original autoindent support was authored by Jin Liu. 2006-06-22 Walter Doerwald * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used for keymaps with a custom class that simplifies handling. 2006-06-19 Walter Doerwald * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal resizing. This requires Python 2.5 to work. 2006-06-16 Walter Doerwald * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse: "hideattr" (mapped to "h") hides the attribute under the cursor. "unhiderattrs" (mapped to "H") reveals all hidden attributes again. Remapped the help command to "?". Display keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e as keys for the "home" and "end" commands. Add three new commands to the input mode for "find" and friends: "delend" (CTRL-K) deletes to the end of line. "incsearchup" searches upwards in the command history for an input that starts with the text before the cursor. "incsearchdown" does the same downwards. Removed a bogus mapping of the x key to "delete". 2006-06-15 Ville Vainio * iplib.py, hooks.py: Added new generate_prompt hook that can be used to create prompts dynamically, instead of the "old" way of assigning "magic" strings to prompt_in1 and prompt_in2. The old way still works (it's invoked by the default hook), of course. * Prompts.py: added generate_output_prompt hook for altering output prompt * Release.py: Changed version string to 0.7.3.svn. 2006-06-15 Walter Doerwald * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that the call to fetch() always tries to fetch enough data for at least one full screen. This makes it possible to simply call moveto(0,0,True) in the constructor. Fix typos and removed the obsolete goto attribute. 2006-06-12 Ville Vainio * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for allowing $variable interpolation within multiline statements, though so far only with "sh" profile for a testing period. The patch also enables splitting long commands with \ but it doesn't work properly yet. 2006-06-12 Walter Doerwald * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the input history and the position of the cursor in the input history for the find, findbackwards and goto command. 2006-06-10 Walter Doerwald * IPython/Extensions/ibrowse.py: Add a class _CommandInput that implements the basic functionality of browser commands that require input. Reimplement the goto, find and findbackwards commands as subclasses of _CommandInput. Add an input history and keymaps to those commands. Add "\r" as a keyboard shortcut for the enterdefault and execute commands. 2006-06-07 Ville Vainio * iplib.py: ipython mybatch.ipy exits ipython immediately after running the batch files instead of leaving the session open. 2006-06-07 Fernando Perez * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as the original fix was incomplete. Patch submitted by W. Maier. 2006-06-07 Ville Vainio * iplib.py,Magic.py, ipmaker.py (magic_rehashx): Confirmation prompts can be supressed by 'quiet' option. _ip.options.quiet = 1 means "assume yes for all yes/no queries". 2006-06-06 *** Released version 0.7.2 2006-06-06 Fernando Perez * IPython/Release.py (version): Made 0.7.2 final for release. Repo tagged and release cut. 2006-06-05 Ville Vainio * Magic.py (magic_rehashx): Honor no_alias list earlier in %rehashx, to avoid clobbering builtins in ipy_profile_sh.py * upgrade_dir.py: try import 'path' module a bit harder (for %upgrade) 2006-06-03 Fernando Perez * IPython/genutils.py (ask_yes_no): treat EOF as a default answer instead of looping 20 times. * IPython/ipmaker.py (make_IPython): honor -ipythondir flag correctly at initialization time. Bug reported by Krishna Mohan Gundu on the user list. * IPython/Release.py (version): Mark 0.7.2 version to start testing for release on 06/06. 2006-05-31 Fernando Perez * scripts/irunner: thin script interface so users don't have to find the module and call it as an executable, since modules rarely live in people's PATH. * IPython/irunner.py (InteractiveRunner.__init__): added delaybeforesend attribute to control delays with newer versions of pexpect. Thanks to detailed help from pexpect's author, Noah Spurrier . Noted how to use the SAGE runner correctly (it works in NoColor mode). * IPython/iplib.py (handle_normal): fix nasty crash reported on SAGE list, from improper log() calls. 2006-05-31 Ville Vainio * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir with args in parens to work correctly with dirs that have spaces. 2006-05-30 Fernando Perez * IPython/Logger.py (Logger.logstart): add option to log raw input instead of the processed one. A -r flag was added to the %logstart magic used for controlling logging. 2006-05-29 Fernando Perez * IPython/iplib.py (InteractiveShell.__init__): add check for the *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't recognize the option. After a bug report by Will Maier. This closes #64 (will do it after confirmation from W. Maier). * IPython/irunner.py: New module to run scripts as if manually typed into an interactive environment, based on pexpect. After a submission by Ken Schutte on the ipython-user list. Simple unittests in the tests/ directory. * tools/release: add Will Maier, OpenBSD port maintainer, to recepients list. We are now officially part of the OpenBSD ports: http://www.openbsd.org/ports.html ! Many thanks to Will for the work. 2006-05-26 Fernando Perez * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below) so that it doesn't break tkinter apps. * IPython/iplib.py (_prefilter): fix bug where aliases would shadow variables when autocall was fully off. Reported by SAGE author William Stein. * IPython/OInspect.py (Inspector.__init__): add a flag to control at what detail level strings are computed when foo? is requested. This allows users to ask for example that the string form of an object is only computed when foo?? is called, or even never, by setting the object_info_string_level >= 2 in the configuration file. This new option has been added and documented. After a request by SAGE to be able to control the printing of very large objects more easily. 2006-05-25 Fernando Perez * IPython/ipmaker.py (make_IPython): remove the ipython call path from sys.argv, to be 100% consistent with how Python itself works (as seen for example with python -i file.py). After a bug report by Jeffrey Collins. * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix nasty bug which was preventing custom namespaces with -pylab, reported by M. Foord. Minor cleanup, remove old matplotlib.matlab compatibility (long gone from mpl). * IPython/ipapi.py (make_session): name change: create->make. We use make in other places (ipmaker,...), it's shorter and easier to type and say, etc. I'm trying to clean things before 0.7.2 so that I can keep things stable wrt to ipapi in the chainsaw branch. * ipython.el: fix the py-pdbtrack-input-prompt variable so that python-mode recognizes our debugger mode. Add support for autoindent inside (X)emacs. After a patch sent in by Jin Liu originally written by doxgen-AT-newsmth.net (with minor modifications for xemacs compatibility) * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of tracebacks when walking the stack so that the stack tracking system in emacs' python-mode can identify the frames correctly. * IPython/ipmaker.py (make_IPython): make the internal (and default config) autoedit_syntax value false by default. Too many users have complained to me (both on and off-list) about problems with this option being on by default, so I'm making it default to off. It can still be enabled by anyone via the usual mechanisms. * IPython/completer.py (Completer.attr_matches): add support for PyCrust-style _getAttributeNames magic method. Patch contributed by . Closes #50. * IPython/iplib.py (InteractiveShell.__init__): remove the deletion of exit/quit from __builtin__, which can break third-party tools like the Zope debugging console. The %exit/%quit magics remain. In general, it's probably a good idea not to delete anything from __builtin__, since we never know what that will break. In any case, python now (for 2.5) will support 'real' exit/quit, so this issue is moot. Closes #55. * IPython/genutils.py (with_obj): rename the 'with' function to 'withobj' to avoid incompatibilities with Python 2.5, where 'with' becomes a language keyword. Closes #53. * IPython/FakeModule.py (FakeModule.__init__): add a proper __file__ attribute to this so it fools more things into thinking it is a real module. Closes #59. * IPython/Magic.py (magic_edit): add -n option to open the editor at a specific line number. After a patch by Stefan van der Walt. 2006-05-23 Fernando Perez * IPython/iplib.py (edit_syntax_error): fix crash when for some reason the file could not be opened. After automatic crash reports sent by James Graham and Charles Dolan . (_should_recompile): Don't fire editor if using %bg, since there is no file in the first place. From the same report as above. (raw_input): protect against faulty third-party prefilters. After an automatic crash report sent by Dirk Laurie while running under SAGE. 2006-05-23 Ville Vainio * ipapi.py: Stripped down ip.to_user_ns() to work only as ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get() now returns None (again), unless dummy is specifically allowed by ipapi.get(allow_dummy=True). 2006-05-18 Fernando Perez * IPython: remove all 2.2-compatibility objects and hacks from everywhere, since we only support 2.3 at this point. Docs updated. * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters. Anything requiring extra validation can be turned into a Python property in the future. I used a property for the db one b/c there was a nasty circularity problem with the initialization order, which right now I don't have time to clean up. * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think, another locking bug reported by Jorgen. I'm not 100% sure though, so more testing is needed... 2006-05-17 Fernando Perez * IPython/ipapi.py (IPApi.to_user_ns): New function to inject local variables from any routine in user code (typically executed with %run) directly into the interactive namespace. Very useful when doing complex debugging. (IPythonNotRunning): Changed the default None object to a dummy whose attributes can be queried as well as called without exploding, to ease writing code which works transparently both in and out of ipython and uses some of this API. 2006-05-16 Fernando Perez * IPython/hooks.py (result_display): Fix the fact that our display hook was using str() instead of repr(), as the default python console does. This had gone unnoticed b/c it only happened if %Pprint was off, but the inconsistency was there. 2006-05-15 Ville Vainio * Oinspect.py: Only show docstring for nonexisting/binary files when doing object??, closing ticket #62 2006-05-13 Fernando Perez * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock was being released in a routine which hadn't checked if it had been the one to acquire it. 2006-05-07 Fernando Perez * IPython/Release.py (version): put out 0.7.2.rc1 for testing. 2006-04-11 Ville Vainio * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file" in command line. E.g. "ipython test.ipy" runs test.ipy with ipython prefilters, allowing stuff like magics and aliases in the file. * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic added. Supported now are "%clear in" and "%clear out" (clear input and output history, respectively). Also fixed CachedOutput.flush to properly flush the output cache. * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr" half-success (and fail explicitly). 2006-03-28 Ville Vainio * iplib.py: Fix quoting of aliases so that only argless ones are quoted 2006-03-28 Ville Vainio * iplib.py: Quote aliases with spaces in the name. "c:\program files\blah\bin" is now legal alias target. * ext_rehashdir.py: Space no longer allowed as arg separator, since space is legal in path names. 2006-03-16 Ville Vainio * upgrade_dir.py: Take path.py from Extensions, correcting %upgrade magic * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found. * hooks.py: Only enclose editor binary in quotes if legal and necessary (space in the name, and is an existing file). Fixes a bug reported by Zachary Pincus. 2006-03-13 Fernando Perez * Manual: thanks to a tip on proper color handling for Emacs, by Eric J Haywiser . * ipython.el: close http://www.scipy.net/roundup/ipython/issue57 by applying the provided patch. Thanks to Liu Jin for the contribution. No problems under XEmacs/Linux, I'm trusting the submitter that it actually helps under win32/GNU Emacs. Will revisit if any problems are reported. 2006-03-12 Fernando Perez * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py from SVN, thanks to a patch by Ryan Woodard . 2006-03-12 Ville Vainio * Magic.py (magic_timeit): Added %timeit magic, contributed by Torsten Marek. 2006-03-12 Fernando Perez * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for line ranges works again. 2006-03-11 Fernando Perez * IPython/iplib.py (showtraceback): add back sys.last_traceback and friends, after a discussion with Zach Pincus on ipython-user. I'm not 100% sure, but after thinking about it quite a bit, it may be OK. Testing with the multithreaded shells didn't reveal any problems, but let's keep an eye out. In the process, I fixed a few things which were calling self.InteractiveTB() directly (like safe_execfile), which is a mistake: ALL exception reporting should be done by calling self.showtraceback(), which handles state and tab-completion and more. 2006-03-01 Ville Vainio * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module. To use, do "from ipipe import *". 2006-02-24 Ville Vainio * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more "cleanly" and safely than the older upgrade mechanism. 2006-02-21 Ville Vainio * Magic.py: %save works again. 2006-02-15 Ville Vainio * Magic.py: %Pprint works again * Extensions/ipy_sane_defaults.py: Provide everything provided in default ipythonrc, to make it possible to have a completely empty ipythonrc (and thus completely rc-file free configuration) 2006-02-11 Fernando Perez * IPython/hooks.py (editor): quote the call to the editor command, to allow commands with spaces in them. Problem noted by watching Ian Oswald's video about textpad under win32 at http://showmedo.com/videoListPage?listKey=PythonIPythonSeries * IPython/UserConfig/ipythonrc: Replace @ signs with % when describing magics (we haven't used @ for a loong time). * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch contributed by marienz to close http://www.scipy.net/roundup/ipython/issue53. 2006-02-10 Ville Vainio * genutils.py: getoutput now works in win32 too * completer.py: alias and magic completion only invoked at the first "item" in the line, to avoid "cd %store" nonsense. 2006-02-09 Ville Vainio * test/*: Added a unit testing framework (finally). '%run runtests.py' to run test_*. * ipapi.py: Exposed runlines and set_custom_exc 2006-02-07 Ville Vainio * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall, instead use "f(1 2)" as before. 2006-02-05 Fernando Perez * IPython/demo.py (IPythonDemo): Add new classes to the demo facilities, for demos processed by the IPython input filter (IPythonDemo), and for running a script one-line-at-a-time as a demo, both for pure Python (LineDemo) and for IPython-processed input (IPythonLineDemo). After a request by Dave Kohel, from the SAGE team. (Demo.edit): added an edit() method to the demo objects, to edit the in-memory copy of the last executed block. * IPython/Magic.py (magic_edit): add '-r' option for 'raw' processing to %edit, %macro and %save. These commands can now be invoked on the unprocessed input as it was typed by the user (without any prefilters applied). After requests by the SAGE team at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html. 2006-02-01 Ville Vainio * setup.py, eggsetup.py: easy_install ipython==dev works correctly now (on Linux) * ipy_user_conf,ipmaker: user config changes, removed spurious warnings * iplib: if rc.banner is string, use it as is. * Magic: %pycat accepts a string argument and pages it's contents. 2006-01-30 Ville Vainio * pickleshare,pspersistence,ipapi,Magic: persistence overhaul. Now %store and bookmarks work through PickleShare, meaning that concurrent access is possible and all ipython sessions see the same database situation all the time, instead of snapshot of the situation when the session was started. Hence, %bookmark results are immediately accessible from othes sessions. The database is also available for use by user extensions. See: http://www.python.org/pypi/pickleshare * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'. * aliases can now be %store'd * path.py moved to Extensions so that pickleshare does not need IPython-specific import. Extensions added to pythonpath right at __init__. * iplib.py: ipalias deprecated/redundant; aliases are converted and called with _ip.system and the pre-transformed command string. 2006-01-29 Fernando Perez * IPython/iplib.py (interact): Fix that we were not catching KeyboardInterrupt exceptions properly. I'm not quite sure why the logic here had to change, but it's fixed now. 2006-01-29 Ville Vainio * iplib.py: Try to import pyreadline on Windows. 2006-01-27 Ville Vainio * iplib.py: Expose ipapi as _ip in builtin namespace. Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system) and ip_set_hook (-> _ip.set_hook) redundant. % and ! syntax now produce _ip.* variant of the commands. * "_ip.options().autoedit_syntax = 2" automatically throws user to editor for syntax error correction without prompting. 2006-01-27 Ville Vainio * ipmaker.py: Give "realistic" sys.argv for scripts (without 'ipython' at argv[0]) executed through command line. NOTE: this DEPRECATES calling ipython with multiple scripts ("ipython a.py b.py c.py") * iplib.py, hooks.py: Added configurable input prefilter, named 'input_prefilter'. See ext_rescapture.py for example usage. * ext_rescapture.py, Magic.py: Better system command output capture through 'var = !ls' (deprecates user-visible %sc). Same notation applies for magics, 'var = %alias' assigns alias list to var. * ipapi.py: added meta() for accessing extension-usable data store. * iplib.py: added InteractiveShell.getapi(). New magics should be written doing self.getapi() instead of using the shell directly. * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and %store foo >> ~/myfoo.txt to store variables to files (in clean textual form, not a restorable pickle). * ipmaker.py: now import ipy_profile_PROFILENAME automatically * usage.py, Magic.py: added %quickref * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2). * GetoptErrors when invoking magics etc. with wrong args are now more helpful: GetoptError: option -l not recognized (allowed: "qb" ) 2006-01-25 Fernando Perez * IPython/demo.py (Demo.show): Flush stdout after each block, so computationally intensive blocks don't appear to stall the demo. 2006-01-24 Ville Vainio * iplib.py, hooks.py: 'result_display' hook can return a non-None value to manipulate resulting history entry. * ipapi.py: Moved TryNext here from hooks.py. Moved functions to instance methods of IPApi class, to make extending an embedded IPython feasible. See ext_rehashdir.py for example usage. * Merged 1071-1076 from branches/0.7.1 2006-01-23 Fernando Perez * tools/release (daystamp): Fix build tools to use the new eggsetup.py script to build lightweight eggs. * Applied changesets 1062 and 1064 before 0.7.1 release. * IPython/Magic.py (magic_history): Add '-r' option to %hist, to see the raw input history (without conversions like %ls -> ipmagic("ls")). After a request from W. Stein, SAGE (http://modular.ucsd.edu/sage) developer. This information is stored in the input_hist_raw attribute of the IPython instance, so developers can access it if needed (it's an InputList instance). * Versionstring = 0.7.2.svn * eggsetup.py: A separate script for constructing eggs, creates proper launch scripts even on Windows (an .exe file in \python24\scripts). * ipapi.py: launch_new_instance, launch entry point needed for the egg. 2006-01-23 Ville Vainio * Added %cpaste magic for pasting python code 2006-01-22 Ville Vainio * Merge from branches/0.7.1 into trunk, revs 1052-1057 * Versionstring = 0.7.2.svn * eggsetup.py: A separate script for constructing eggs, creates proper launch scripts even on Windows (an .exe file in \python24\scripts). * ipapi.py: launch_new_instance, launch entry point needed for the egg. 2006-01-22 Fernando Perez * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or %pfile foo would print the file for foo even if it was a binary. Now, extensions '.so' and '.dll' are skipped. * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading bug, where macros would fail in all threaded modes. I'm not 100% sure, so I'm going to put out an rc instead of making a release today, and wait for feedback for at least a few days. * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt it...) the handling of pasting external code with autoindent on. To get out of a multiline input, the rule will appear for most users unchanged: two blank lines or change the indent level proposed by IPython. But there is a twist now: you can add/subtract only *one or two spaces*. If you add/subtract three or more (unless you completely delete the line), IPython will accept that line, and you'll need to enter a second one of pure whitespace. I know it sounds complicated, but I can't find a different solution that covers all the cases, with the right heuristics. Hopefully in actual use, nobody will really notice all these strange rules and things will 'just work'. 2006-01-21 Fernando Perez * IPython/iplib.py (interact): catch exceptions which can be triggered asynchronously by signal handlers. Thanks to an automatic crash report, submitted by Colin Kingsley . 2006-01-20 Ville Vainio * Ipython/Extensions/ext_rehashdir.py: Created a usable example (%rehashdir, very useful, try it out) of how to extend ipython with new magics. Also added Extensions dir to pythonpath to make importing extensions easy. * %store now complains when trying to store interactively declared classes / instances of those classes. * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py, ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported if they exist, and ipy_user_conf.py with some defaults is created for the user. * Startup rehashing done by the config file, not InterpreterExec. This means system commands are available even without selecting the pysh profile. It's the sensible default after all. 2006-01-20 Fernando Perez * IPython/iplib.py (raw_input): I _think_ I got the pasting of multiline code with autoindent on working. But I am really not sure, so this needs more testing. Will commit a debug-enabled version for now, while I test it some more, so that Ville and others may also catch any problems. Also made self.indent_current_str() a method, to ensure that there's no chance of the indent space count and the corresponding string falling out of sync. All code needing the string should just call the method. 2006-01-18 Fernando Perez * IPython/Magic.py (magic_edit): fix check for when users don't save their output files, the try/except was in the wrong section. 2006-01-17 Fernando Perez * IPython/Magic.py (magic_run): fix __file__ global missing from script's namespace when executed via %run. After a report by Vivian. * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d' when using python 2.4. The parent constructor changed in 2.4, and we need to track it directly (we can't call it, as it messes up readline and tab-completion inside our pdb would stop working). After a bug report by R. Bernstein . 2006-01-16 Ville Vainio * Ipython/magic.py: Reverted back to old %edit functionality that returns file contents on exit. * IPython/path.py: Added Jason Orendorff's "path" module to IPython tree, http://www.jorendorff.com/articles/python/path/. You can get path objects conveniently through %sc, and !!, e.g.: sc files=ls for p in files.paths: # or files.p print p,p.mtime * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall now work again without considering the exclusion regexp - hence, things like ',foo my/path' turn to 'foo("my/path")' instead of syntax error. 2006-01-14 Ville Vainio * IPython/ipapi.py (ashook, asmagic, options): Added convenience ipapi decorators for python 2.4 users, options() provides access to rc data. * IPython/Magic.py (magic_cd): %cd now accepts backslashes as path separators (even on Linux ;-). Space character after backslash (as yielded by tab completer) is still space; "%cd long\ name" works as expected. * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented as "chain of command", with priority. API stays the same, TryNext exception raised by a hook function signals that current hook failed and next hook should try handling it, as suggested by Walter Dörwald . Walter also requested configurable display hook, which is now implemented. 2006-01-13 Ville Vainio * IPython/platutils*.py: platform specific utility functions, so far only set_term_title is implemented (change terminal label in windowing systems). %cd now changes the title to current dir. * IPython/Release.py: Added myself to "authors" list, had to create new files. * IPython/iplib.py (handle_shell_escape): fixed logical flaw in shell escape; not a known bug but had potential to be one in the future. * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public" extension API for IPython! See the module for usage example. Fix OInspect for docstring-less magic functions. 2006-01-13 Fernando Perez * IPython/iplib.py (raw_input): temporarily deactivate all attempts at allowing pasting of code with autoindent on. It introduced bugs (reported by Prabhu) and I can't seem to find a robust combination which works in all cases. Will have to revisit later. * IPython/genutils.py: remove isspace() function. We've dropped 2.2 compatibility, so it's OK to use the string method. 2006-01-12 Fernando Perez * IPython/iplib.py (InteractiveShell.__init__): fix regexp matching what NOT to autocall on, to include all python binary operators (including things like 'and', 'or', 'is' and 'in'). Prompted by a bug report on 'foo & bar', but I realized we had many more potential bug cases with other operators. The regexp is self.re_exclude_auto, it's fairly commented. 2006-01-12 Ville Vainio * IPython/iplib.py (make_quoted_expr,handle_shell_escape): Prettified and hardened string/backslash quoting with ipsystem(), ipalias() and ipmagic(). Now even \ characters are passed to %magics, !shell escapes and aliases exactly as they are in the ipython command line. Should improve backslash experience, particularly in Windows (path delimiter for some commands that won't understand '/'), but Unix benefits as well (regexps). %cd magic still doesn't support backslash path delimiters, though. Also deleted all pretense of supporting multiline command strings in !system or %magic commands. Thanks to Jerry McRae for suggestions. * doc/build_doc_instructions.txt added. Documentation on how to use doc/update_manual.py, added yesterday. Both files contributed by Jörgen Stenarson . This slates doc/*.sh for deprecation at a later date. * /ipython.py Added ipython.py to root directory for zero-installation (tar xzvf ipython.tgz; cd ipython; python ipython.py) and development convenience (no need to keep doing "setup.py install" between changes). * Made ! and !! shell escapes work (again) in multiline expressions: if 1: !ls !!ls 2006-01-12 Fernando Perez * IPython/ipstruct.py (Struct): Rename IPython.Struct to IPython.ipstruct, to avoid local shadowing of the stdlib 'struct' module in case-insensitive installation. Was causing crashes under win32. Closes http://www.scipy.net/roundup/ipython/issue49. * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart , closes http://www.scipy.net/roundup/ipython/issue51. 2006-01-11 Fernando Perez * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the problem of excessive CPU usage under *nix and keyboard lag under win32. 2006-01-10 *** Released version 0.7.0 2006-01-10 Fernando Perez * IPython/Release.py (revision): tag version number to 0.7.0, ready for release. * IPython/Magic.py (magic_edit): Add print statement to %edit so it informs the user of the name of the temp. file used. This can help if you decide later to reuse that same file, so you know where to copy the info from. 2006-01-09 Fernando Perez * setup_bdist_egg.py: little script to build an egg. Added support in the release tools as well. 2006-01-08 Fernando Perez * IPython/Shell.py (IPShellWX.__init__): add support for WXPython version selection (new -wxversion command line and ipythonrc parameter). Patch contributed by Arnd Baecker . * IPython/iplib.py (embed_mainloop): fix tab-completion in embedded instances, for variables defined at the interactive prompt of the embedded ipython. Reported by Arnd. * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now it can be used as a (stateful) toggle, or with a direct parameter. * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which could be triggered in certain cases and cause the traceback printer not to work. 2006-01-07 Fernando Perez * IPython/iplib.py (_should_recompile): Small fix, closes http://www.scipy.net/roundup/ipython/issue48. Patch by Scott. 2006-01-04 Fernando Perez * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK backend for matplotlib (100% cpu utiliziation). Thanks to Charlie Moad for help with tracking it down. * IPython/iplib.py (handle_auto): fix autocall handling for objects which support BOTH __getitem__ and __call__ (so that f [x] is left alone, instead of becoming f([x]) automatically). * IPython/Magic.py (magic_cd): fix crash when cd -b was used. Ville's patch. 2006-01-03 Fernando Perez * IPython/iplib.py (handle_auto): changed autocall semantics to include 'smart' mode, where the autocall transformation is NOT applied if there are no arguments on the line. This allows you to just type 'foo' if foo is a callable to see its internal form, instead of having it called with no arguments (typically a mistake). The old 'full' autocall still exists: for that, you need to set the 'autocall' parameter to 2 in your ipythonrc file. * IPython/completer.py (Completer.attr_matches): add tab-completion support for Enthoughts' traits. After a report by Arnd and a patch by Prabhu. 2006-01-02 Fernando Perez * IPython/ultraTB.py (_fixed_getinnerframes): added Alex Schmolck's patch to fix inspect.getinnerframes(). * IPython/iplib.py (InteractiveShell.__init__): significant fixes for embedded instances, regarding handling of namespaces and items added to the __builtin__ one. Multiple embedded instances and recursive embeddings should work better now (though I'm not sure I've got all the corner cases fixed, that code is a bit of a brain twister). * IPython/Magic.py (magic_edit): added support to edit in-memory macros (automatically creates the necessary temp files). %edit also doesn't return the file contents anymore, it's just noise. * IPython/completer.py (Completer.attr_matches): revert change to complete only on attributes listed in __all__. I realized it cripples the tab-completion system as a tool for exploring the internals of unknown libraries (it renders any non-__all__ attribute off-limits). I got bit by this when trying to see something inside the dis module. 2005-12-31 Fernando Perez * IPython/iplib.py (InteractiveShell.__init__): add .meta namespace for users and extension writers to hold data in. This follows the discussion in http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython. * IPython/completer.py (IPCompleter.complete): small patch to help tab-completion under Emacs, after a suggestion by John Barnard . * IPython/Magic.py (Magic.extract_input_slices): added support for the slice notation in magics to use N-M to represent numbers N...M (closed endpoints). This is used by %macro and %save. * IPython/completer.py (Completer.attr_matches): for modules which define __all__, complete only on those. After a patch by Jeffrey Collins . Also, clean up and speed up this routine. * IPython/Logger.py (Logger.log): fix a history handling bug. I don't know if this is the end of it, but the behavior now is certainly much more correct. Note that coupled with macros, slightly surprising (at first) behavior may occur: a macro will in general expand to multiple lines of input, so upon exiting, the in/out counters will both be bumped by the corresponding amount (as if the macro's contents had been typed interactively). Typing %hist will reveal the intermediate (silently processed) lines. * IPython/Magic.py (magic_run): fix a subtle bug which could cause pickle to fail (%run was overwriting __main__ and not restoring it, but pickle relies on __main__ to operate). * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now using properties, but forgot to make the main InteractiveShell class a new-style class. Properties fail silently, and mysteriously, with old-style class (getters work, but setters don't do anything). 2005-12-30 Fernando Perez * IPython/Magic.py (magic_history): fix history reporting bug (I know some nasties are still there, I just can't seem to find a reproducible test case to track them down; the input history is falling out of sync...) * IPython/iplib.py (handle_shell_escape): fix bug where both aliases and system accesses where broken for indented code (such as loops). * IPython/genutils.py (shell): fix small but critical bug for win32 system access. 2005-12-29 Fernando Perez * IPython/iplib.py (showtraceback): remove use of the sys.last_{type/value/traceback} structures, which are non thread-safe. (_prefilter): change control flow to ensure that we NEVER introspect objects when autocall is off. This will guarantee that having an input line of the form 'x.y', where access to attribute 'y' has side effects, doesn't trigger the side effect TWICE. It is important to note that, with autocall on, these side effects can still happen. (ipsystem): new builtin, to complete the ip{magic/alias/system} trio. IPython offers these three kinds of special calls which are not python code, and it's a good thing to have their call method be accessible as pure python functions (not just special syntax at the command line). It gives us a better internal implementation structure, as well as exposing these for user scripting more cleanly. * IPython/macro.py (Macro.__init__): moved macros to a standalone file. Now that they'll be more likely to be used with the persistance system (%store), I want to make sure their module path doesn't change in the future, so that we don't break things for users' persisted data. * IPython/iplib.py (autoindent_update): move indentation management into the _text_ processing loop, not the keyboard interactive one. This is necessary to correctly process non-typed multiline input (such as macros). * IPython/Magic.py (Magic.format_latex): patch by Stefan van der Walt to fix latex formatting of docstrings, which was producing problems in the resulting manual. (magic_whos): improve reporting of instances (show their class, instead of simply printing 'instance' which isn't terribly informative). * IPython/genutils.py (shell): commit Jorgen Stenarson's patch (minor mods) to support network shares under win32. * IPython/winconsole.py (get_console_size): add new winconsole module and fixes to page_dumb() to improve its behavior under win32. Contributed by Alexander Belchenko . * IPython/Magic.py (Macro): simplified Macro class to just subclass list. We've had only 2.2 compatibility for a very long time, yet I was still avoiding subclassing the builtin types. No more (I'm also starting to use properties, though I won't shift to 2.3-specific features quite yet). (magic_store): added Ville's patch for lightweight variable persistence, after a request on the user list by Matt Wilkie . The new %store magic's docstring has full details. * IPython/iplib.py (InteractiveShell.post_config_initialization): changed the default logfile name from 'ipython.log' to 'ipython_log.py'. These logs are real python files, and now that we have much better multiline support, people are more likely to want to use them as such. Might as well name them correctly. * IPython/Magic.py: substantial cleanup. While we can't stop using magics as mixins, due to the existing customizations 'out there' which rely on the mixin naming conventions, at least I cleaned out all cross-class name usage. So once we are OK with breaking compatibility, the two systems can be separated. * IPython/Logger.py: major cleanup. This one is NOT a mixin anymore, and the class is a fair bit less hideous as well. New features were also introduced: timestamping of input, and logging of output results. These are user-visible with the -t and -o options to %logstart. Closes http://www.scipy.net/roundup/ipython/issue11 and a request by William Stein (SAGE developer - http://modular.ucsd.edu/sage). 2005-12-28 Fernando Perez * IPython/iplib.py (handle_shell_escape): add Ville's patch to better handle backslashes in paths. See the thread 'More Windows questions part 2 - \/ characters revisited' on the iypthon user list: http://scipy.net/pipermail/ipython-user/2005-June/000907.html (InteractiveShell.__init__): fix tab-completion bug in threaded shells. (InteractiveShell.__init__): change threaded shells to not use the ipython crash handler. This was causing more problems than not, as exceptions in the main thread (GUI code, typically) would always show up as a 'crash', when they really weren't. The colors and exception mode commands (%colors/%xmode) have been synchronized to also take this into account, so users can get verbose exceptions for their threaded code as well. I also added support for activating pdb inside this exception handler as well, so now GUI authors can use IPython's enhanced pdb at runtime. * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag true by default, and add it to the shipped ipythonrc file. Since this asks the user before proceeding, I think it's OK to make it true by default. * IPython/Magic.py (magic_exit): make new exit/quit magics instead of the previous special-casing of input in the eval loop. I think this is cleaner, as they really are commands and shouldn't have a special role in the middle of the core code. 2005-12-27 Fernando Perez * IPython/iplib.py (edit_syntax_error): added support for automatically reopening the editor if the file had a syntax error in it. Thanks to scottt who provided the patch at: http://www.scipy.net/roundup/ipython/issue36 (slightly modified version committed). * IPython/iplib.py (handle_normal): add suport for multi-line input with emtpy lines. This fixes http://www.scipy.net/roundup/ipython/issue43 and a similar discussion on the user list. WARNING: a behavior change is necessarily introduced to support blank lines: now a single blank line with whitespace does NOT break the input loop, which means that when autoindent is on, by default hitting return on the next (indented) line does NOT exit. Instead, to exit a multiline input you can either have: - TWO whitespace lines (just hit return again), or - a single whitespace line of a different length than provided by the autoindent (add or remove a space). * IPython/completer.py (MagicCompleter.__init__): new 'completer' module to better organize all readline-related functionality. I've deleted FlexCompleter and put all completion clases here. * IPython/iplib.py (raw_input): improve indentation management. It is now possible to paste indented code with autoindent on, and the code is interpreted correctly (though it still looks bad on screen, due to the line-oriented nature of ipython). (MagicCompleter.complete): change behavior so that a TAB key on an otherwise empty line actually inserts a tab, instead of completing on the entire global namespace. This makes it easier to use the TAB key for indentation. After a request by Hans Meine (_prefilter): add support so that typing plain 'exit' or 'quit' does a sensible thing. Originally I tried to deviate as little as possible from the default python behavior, but even that one may change in this direction (thread on python-dev to that effect). Regardless, ipython should do the right thing even if CPython's '>>>' prompt doesn't. (InteractiveShell): removed subclassing code.InteractiveConsole class. By now we'd overridden just about all of its methods: I've copied the remaining two over, and now ipython is a standalone class. This will provide a clearer picture for the chainsaw branch refactoring. 2005-12-26 Fernando Perez * IPython/ultraTB.py (VerboseTB.text): harden reporting against failures for objects which break when dir() is called on them. * IPython/FlexCompleter.py (Completer.__init__): Added support for distinct local and global namespaces in the completer API. This change allows us to properly handle completion with distinct scopes, including in embedded instances (this had never really worked correctly). Note: this introduces a change in the constructor for MagicCompleter, as a new global_namespace parameter is now the second argument (the others were bumped one position). 2005-12-25 Fernando Perez * IPython/iplib.py (embed_mainloop): fix tab-completion in embedded instances (which can be done now thanks to Vivian's frame-handling fixes for pdb). (InteractiveShell.__init__): Fix namespace handling problem in embedded instances. We were overwriting __main__ unconditionally, and this should only be done for 'full' (non-embedded) IPython; embedded instances must respect the caller's __main__. Thanks to a bug report by Yaroslav Bulatov 2005-12-24 Fernando Perez * setup.py: added download_url to setup(). This registers the download address at PyPI, which is not only useful to humans browsing the site, but is also picked up by setuptools (the Eggs machinery). Thanks to Ville and R. Kern for the info/discussion on this. 2005-12-23 Fernando Perez * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements. This brings a lot of nice functionality to the pdb mode, which now has tab-completion, syntax highlighting, and better stack handling than before. Many thanks to Vivian De Smedt for the original patches. 2005-12-08 Fernando Perez * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling sequence to consistently accept the banner argument. The inconsistency was tripping SAGE, thanks to Gary Zablackis for the report. 2005-11-15 Fernando Perez * IPython/iplib.py (InteractiveShell.post_config_initialization): Fix bug where a naked 'alias' call in the ipythonrc file would cause a crash. Bug reported by Jorgen Stenarson. 2005-11-15 Fernando Perez * IPython/ipmaker.py (make_IPython): cleanups which should improve startup time. * IPython/iplib.py (runcode): my globals 'fix' for embedded instances had introduced a bug with globals in normal code. Now it's working in all cases. * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and API changes. A new ipytonrc option, 'wildcards_case_sensitive' has been introduced to set the default case sensitivity of the searches. Users can still select either mode at runtime on a per-search basis. 2005-11-13 Fernando Perez * IPython/wildcard.py (NameSpace.__init__): fix resolution of attributes in wildcard searches for subclasses. Modified version of a patch by Jorgen. 2005-11-12 Fernando Perez * IPython/iplib.py (embed_mainloop): Fix handling of globals for embedded instances. I added a user_global_ns attribute to the InteractiveShell class to handle this. 2005-10-31 Fernando Perez * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to idle_add, which fixes horrible keyboard lag problems under gtk 2.6 (reported under win32, but may happen also in other platforms). Bug report and fix courtesy of Sean Moore 2005-10-15 Fernando Perez * IPython/Magic.py (magic_psearch): new support for wildcard patterns. Now, typing ?a*b will list all names which begin with a and end in b, for example. The %psearch magic has full docstrings. Many thanks to Jörgen Stenarson , author of the patches implementing this functionality. 2005-09-27 Fernando Perez * Manual: fixed long-standing annoyance of double-dashes (as in --prefix=~, for example) being stripped in the HTML version. This is a latex2html bug, but a workaround was provided. Many thanks to George K. Thiruvathukal for the detailed help, and Michael Tobis for getting the ball rolling. This seemingly small issue had tripped a number of users when first installing, so I'm glad to see it gone. 2005-09-27 Fernando Perez * IPython/Extensions/numeric_formats.py: fix missing import, reported by Stephen Walton. 2005-09-24 Fernando Perez * IPython/demo.py: finish demo module, fully documented now. * IPython/genutils.py (file_read): simple little utility to read a file and ensure it's closed afterwards. 2005-09-23 Fernando Perez * IPython/demo.py (Demo.__init__): added support for individually tagging blocks for automatic execution. * IPython/Magic.py (magic_pycat): new %pycat magic for showing syntax-highlighted python sources, requested by John. 2005-09-22 Fernando Perez * IPython/demo.py (Demo.again): fix bug where again() blocks after finishing. * IPython/genutils.py (shlex_split): moved from Magic to here, where all 2.2 compatibility stuff lives. I needed it for demo.py. * IPython/demo.py (Demo.__init__): added support for silent blocks, improved marks as regexps, docstrings written. (Demo.__init__): better docstring, added support for sys.argv. * IPython/genutils.py (marquee): little utility used by the demo code, handy in general. * IPython/demo.py (Demo.__init__): new class for interactive demos. Not documented yet, I just wrote it in a hurry for scipy'05. Will docstring later. 2005-09-20 Fernando Perez * IPython/Shell.py (sigint_handler): Drastic simplification which also seems to make Ctrl-C work correctly across threads! This is so simple, that I can't beleive I'd missed it before. Needs more testing, though. (KBINT): Never mind, revert changes. I'm sure I'd tried something like this before... * IPython/genutils.py (get_home_dir): add protection against non-dirs in win32 registry. * IPython/iplib.py (InteractiveShell.alias_table_validate): fix bug where dict was mutated while iterating (pysh crash). 2005-09-06 Fernando Perez * IPython/iplib.py (handle_auto): Fix inconsistency arising from spurious newlines added by this routine. After a report by F. Mantegazza. 2005-09-05 Fernando Perez * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0") calls. These were a leftover from the GTK 1.x days, and can cause problems in certain cases (after a report by John Hunter). * IPython/iplib.py (InteractiveShell.__init__): Trap exception if os.getcwd() fails at init time. Thanks to patch from David Remahl . (InteractiveShell.__init__): prevent certain special magics from being shadowed by aliases. Closes http://www.scipy.net/roundup/ipython/issue41. 2005-08-31 Fernando Perez * IPython/iplib.py (InteractiveShell.complete): Added new top-level completion method to expose the completion mechanism beyond readline-based environments. 2005-08-19 Fernando Perez * tools/ipsvnc (svnversion): fix svnversion capture. * IPython/iplib.py (InteractiveShell.__init__): Add has_readline attribute to self, which was missing. Before, it was set by a routine which in certain cases wasn't being called, so the instance could end up missing the attribute. This caused a crash. Closes http://www.scipy.net/roundup/ipython/issue40. 2005-08-16 Fernando Perez * IPython/ultraTB.py (VerboseTB.text): don't crash if object contains non-string attribute. Closes http://www.scipy.net/roundup/ipython/issue38. 2005-08-14 Fernando Perez * tools/ipsvnc: Minor improvements, to add changeset info. 2005-08-12 Fernando Perez * IPython/iplib.py (runsource): remove self.code_to_run_src attribute. I realized this is nothing more than '\n'.join(self.buffer), and having the same data in two different places is just asking for synchronization bugs. This may impact people who have custom exception handlers, so I need to warn ipython-dev about it (F. Mantegazza may use them). 2005-07-29 Fernando Perez * IPython/genutils.py: fix 2.2 compatibility (generators) 2005-07-18 Fernando Perez * IPython/genutils.py (get_home_dir): fix to help users with invalid $HOME under win32. 2005-07-17 Fernando Perez * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove some old hacks and clean up a bit other routines; code should be simpler and a bit faster. * IPython/iplib.py (interact): removed some last-resort attempts to survive broken stdout/stderr. That code was only making it harder to abstract out the i/o (necessary for gui integration), and the crashes it could prevent were extremely rare in practice (besides being fully user-induced in a pretty violent manner). * IPython/genutils.py (IOStream.__init__): Simplify