diff --git a/docs/Makefile b/docs/Makefile index 49886b1..1ab181b 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -19,14 +19,15 @@ default: html help: @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " pickle to make pickle files (usable by e.g. sphinx-web)" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " changes to make an overview over all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" + @echo " html standalone HTML files" + @echo " html_noapi same as above, without the time consuming API docs" + @echo " pickle pickle files (usable by e.g. sphinx-web)" + @echo " htmlhelp HTML files and a HTML help project" + @echo " latex LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " texinfo Texinfo files" + @echo " info Texinfo files and run them through makeinfo" + @echo " changes an overview over all changed/added/deprecated items" + @echo " linkcheck check all external links for integrity (takes a long time)" @echo @echo "Compound utility targets:" @echo "pdf latex and then runs the PDF generation" diff --git a/docs/README.rst b/docs/README.rst index 6a6745a..f0391fc 100644 --- a/docs/README.rst +++ b/docs/README.rst @@ -1,14 +1,32 @@ -Current version information ---------------------------- +IPython Documentation +--------------------- -Please open manual.pdf for a PDF version of IPython's user manual, or go to -the manual/ directory for an HTML version. +This directory contains the majority of the documentation for IPython. + +Requirements +------------ +The following tools are needed to build the documentation: + +sphinx + +On Debian-based systems, you should be able to run:: + + sudo apt-get install sphinx + +The documentation gets built using ``make``, and comes in several flavors. + +``make html`` - build the API and narrative documentation web pages, this +is the the default ``make`` target, so running just ``make`` is equivalent to +``make html``. + +``make html_noapi`` - same as above, but without running the auto-generated +API docs. When you are working on the narrative documentation, the most time +consuming portion of the build process is the processing and rending of the +API documentation. This build target skips that. + +``make pdf`` will compile a pdf from the documentation. + +You can run ``make help`` to see information on all possible make targets. -Bugs and future developments ----------------------------- -The new_design.pdf document is a description of the goals for IPython's future -development. It includes a TODO/bugs section listing all currently known bugs -in IPython. Please report any bug you encounter if it is not already listed -there. diff --git a/docs/attic/COPYING b/docs/attic/COPYING deleted file mode 100644 index 78bb2f4..0000000 --- a/docs/attic/COPYING +++ /dev/null @@ -1,52 +0,0 @@ -IPython copyright and licensing notes -===================================== - -Unless indicated otherwise, files in this project are covered by a BSD-type -license, included below. - -Individual authors are the holders of the copyright for their code and are -listed in each file. - -Some files (DPyGetOpt.py, for example) may be licensed under different -conditions. Ultimately each file indicates clearly the conditions under which -its author/authors have decided to publish the code. - - -IPython license ---------------- - -IPython is released under a BSD-type license. - -Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez . - -Copyright (c) 2001 Janko Hauser and Nathaniel Gray -. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - a. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - b. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - c. Neither the name of the copyright holders nor the names of any - contributors to this software may be used to endorse or promote products - derived from this software without specific prior written permission. - - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. diff --git a/docs/attic/ChangeLog b/docs/attic/ChangeLog deleted file mode 100644 index 34023ce..0000000 --- a/docs/attic/ChangeLog +++ /dev/null @@ -1,7683 +0,0 @@ -2008-06-09 Ville Vainio - - * Extensions/ipy_autoreload.py: Apply Pauli Virtanen's patch - to autoreloading that also replaces the changed code objects - with new versions - - * pspersistence.py: report UsageError on %store -w w/o arg, - and other usage pattern errors. Bug report by Johann Cohen-Tanugi. - - -2008-06-03 Ville Vainio - - * ipython.rst, ipython.1: remove -twisted from man page, - add -pydb to both man page and manual. - - * pspersistence.py: report UsageError on %store -w w/o arg, - and other usage pattern errors. Bug report by Johann Cohen-Tanugi. - -2008-06-02 Fernando Perez - - * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): add - numpy/np/pyplot/plt imports according to new conventions we're - trying to standardize on. This only affects the -pylab mode. - -2008-05-31 Fernando Perez - - * IPython/ipmaker.py (make_IPython): The -twisted option is fully - disabled. - -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 the i/o stuff. - Nothing major yet, but the code is simpler to read; this should - make it easier to do more serious modifications in the future. - - * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh, - which broke in .15 (thanks to a report by Ville). - - * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not - be quite correct, I know next to nothing about unicode). This - will allow unicode strings to be used in prompts, amongst other - cases. It also will prevent ipython from crashing when unicode - shows up unexpectedly in many places. If ascii encoding fails, we - assume utf_8. Currently the encoding is not a user-visible - setting, though it could be made so if there is demand for it. - - * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack. - - * IPython/Struct.py (Struct.merge): switch keys() to iterator. - - * IPython/background_jobs.py: moved 2.2 compatibility to genutils. - - * IPython/genutils.py: Add 2.2 compatibility here, so all other - code can work transparently for 2.2/2.3. - -2005-07-16 Fernando Perez - - * IPython/ultraTB.py (ExceptionColors): Make a global variable - out of the color scheme table used for coloring exception - tracebacks. This allows user code to add new schemes at runtime. - This is a minimally modified version of the patch at - http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw - for the contribution. - - * IPython/FlexCompleter.py (Completer.attr_matches): Add a - slightly modified version of the patch in - http://www.scipy.net/roundup/ipython/issue34, which also allows me - to remove the previous try/except solution (which was costlier). - Thanks to Gaetan Lehmann for the fix. - -2005-06-08 Fernando Perez - - * IPython/iplib.py (write/write_err): Add methods to abstract all - I/O a bit more. - - * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation - warning, reported by Aric Hagberg, fix by JD Hunter. - -2005-06-02 *** Released version 0.6.15 - -2005-06-01 Fernando Perez - - * IPython/iplib.py (MagicCompleter.file_matches): Fix - tab-completion of filenames within open-quoted strings. Note that - this requires that in ~/.ipython/ipythonrc, users change the - readline delimiters configuration to read: - - readline_remove_delims -/~ - - -2005-05-31 *** Released version 0.6.14 - -2005-05-29 Fernando Perez - - * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks - with files not on the filesystem. Reported by Eliyahu Sandler - - -2005-05-22 Fernando Perez - - * IPython/iplib.py: Fix a few crashes in the --upgrade option. - After an initial report by LUK ShunTim . - -2005-05-19 Fernando Perez - - * IPython/iplib.py (safe_execfile): close a file which could be - left open (causing problems in win32, which locks open files). - Thanks to a bug report by D Brown . - -2005-05-18 Fernando Perez - - * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all - keyword arguments correctly to safe_execfile(). - -2005-05-13 Fernando Perez - - * ipython.1: Added info about Qt to manpage, and threads warning - to usage page (invoked with --help). - - * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added - new matcher (it goes at the end of the priority list) to do - tab-completion on named function arguments. Submitted by George - Sakkis . See the thread at - http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html - for more details. - - * IPython/Magic.py (magic_run): Added new -e flag to ignore - SystemExit exceptions in the script being run. Thanks to a report - by danny shevitz , about this - producing very annoying behavior when running unit tests. - -2005-05-12 Fernando Perez - - * IPython/iplib.py (handle_auto): fixed auto-quoting and parens, - which I'd broken (again) due to a changed regexp. In the process, - added ';' as an escape to auto-quote the whole line without - splitting its arguments. Thanks to a report by Jerry McRae - . - - * IPython/ultraTB.py (VerboseTB.text): protect against rare but - possible crashes caused by a TokenError. Reported by Ed Schofield - . - -2005-05-06 Fernando Perez - - * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6. - -2005-04-29 Fernando Perez - - * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière - , Yann Cointepas and Benjamin - Thyreau , we now have a -qthread option - which provides support for Qt interactive usage (similar to the - existing one for WX and GTK). This had been often requested. - -2005-04-14 *** Released version 0.6.13 - -2005-04-08 Fernando Perez - - * IPython/Magic.py (Magic._ofind): remove docstring evaluation - from _ofind, which gets called on almost every input line. Now, - we only try to get docstrings if they are actually going to be - used (the overhead of fetching unnecessary docstrings can be - noticeable for certain objects, such as Pyro proxies). - - * IPython/iplib.py (MagicCompleter.python_matches): Change the API - for completers. For some reason I had been passing them the state - variable, which completers never actually need, and was in - conflict with the rlcompleter API. Custom completers ONLY need to - take the text parameter. - - * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics - work correctly in pysh. I've also moved all the logic which used - to be in pysh.py here, which will prevent problems with future - upgrades. However, this time I must warn users to update their - pysh profile to include the line - - import_all IPython.Extensions.InterpreterExec - - because otherwise things won't work for them. They MUST also - delete pysh.py and the line - - execfile pysh.py - - from their ipythonrc-pysh. - - * IPython/FlexCompleter.py (Completer.attr_matches): Make more - robust in the face of objects whose dir() returns non-strings - (which it shouldn't, but some broken libs like ITK do). Thanks to - a patch by John Hunter (implemented differently, though). Also - minor improvements by using .extend instead of + on lists. - - * pysh.py: - -2005-04-06 Fernando Perez - - * IPython/ipmaker.py (make_IPython): Make multi_line_specials on - by default, so that all users benefit from it. Those who don't - want it can still turn it off. - - * IPython/UserConfig/ipythonrc: Add multi_line_specials to the - config file, I'd forgotten about this, so users were getting it - off by default. - - * IPython/iplib.py (ipmagic): big overhaul of the magic system for - consistency. Now magics can be called in multiline statements, - and python variables can be expanded in magic calls via $var. - This makes the magic system behave just like aliases or !system - calls. - -2005-03-28 Fernando Perez - - * IPython/iplib.py (handle_auto): cleanup to use %s instead of - expensive string additions for building command. Add support for - trailing ';' when autocall is used. - -2005-03-26 Fernando Perez - - * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31. - Bugfix by A. Schmolck, the ipython.el maintainer. Also make - ipython.el robust against prompts with any number of spaces - (including 0) after the ':' character. - - * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in - continuation prompt, which misled users to think the line was - already indented. Closes debian Bug#300847, reported to me by - Norbert Tretkowski . - -2005-03-23 Fernando Perez - - * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are - properly aligned if they have embedded newlines. - - * IPython/iplib.py (runlines): Add a public method to expose - IPython's code execution machinery, so that users can run strings - as if they had been typed at the prompt interactively. - (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__ - methods which can call the system shell, but with python variable - expansion. The three such methods are: __IPYTHON__.system, - .getoutput and .getoutputerror. These need to be documented in a - 'public API' section (to be written) of the manual. - -2005-03-20 Fernando Perez - - * IPython/iplib.py (InteractiveShell.set_custom_exc): new system - for custom exception handling. This is quite powerful, and it - allows for user-installable exception handlers which can trap - custom exceptions at runtime and treat them separately from - IPython's default mechanisms. At the request of Frédéric - Mantegazza . - (InteractiveShell.set_custom_completer): public API function to - add new completers at runtime. - -2005-03-19 Fernando Perez - - * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to - allow objects which provide their docstrings via non-standard - mechanisms (like Pyro proxies) to still be inspected by ipython's - ? system. - - * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e - automatic capture system. I tried quite hard to make it work - reliably, and simply failed. I tried many combinations with the - subprocess module, but eventually nothing worked in all needed - cases (not blocking stdin for the child, duplicating stdout - without blocking, etc). The new %sc/%sx still do capture to these - magical list/string objects which make shell use much more - conveninent, so not all is lost. - - XXX - FIX MANUAL for the change above! - - (runsource): I copied code.py's runsource() into ipython to modify - it a bit. Now the code object and source to be executed are - stored in ipython. This makes this info accessible to third-party - tools, like custom exception handlers. After a request by Frédéric - Mantegazza . - - * IPython/UserConfig/ipythonrc: Add up/down arrow keys to - history-search via readline (like C-p/C-n). I'd wanted this for a - long time, but only recently found out how to do it. For users - who already have their ipythonrc files made and want this, just - add: - - readline_parse_and_bind "\e[A": history-search-backward - readline_parse_and_bind "\e[B": history-search-forward - -2005-03-18 Fernando Perez - - * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy - LSString and SList classes which allow transparent conversions - between list mode and whitespace-separated string. - (magic_r): Fix recursion problem in %r. - - * IPython/genutils.py (LSString): New class to be used for - automatic storage of the results of all alias/system calls in _o - and _e (stdout/err). These provide a .l/.list attribute which - does automatic splitting on newlines. This means that for most - uses, you'll never need to do capturing of output with %sc/%sx - anymore, since ipython keeps this always done for you. Note that - only the LAST results are stored, the _o/e variables are - overwritten on each call. If you need to save their contents - further, simply bind them to any other name. - -2005-03-17 Fernando Perez - - * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for - prompt namespace handling. - -2005-03-16 Fernando Perez - - * IPython/Prompts.py (CachedOutput.__init__): Fix default and - classic prompts to be '>>> ' (final space was missing, and it - trips the emacs python mode). - (BasePrompt.__str__): Added safe support for dynamic prompt - strings. Now you can set your prompt string to be '$x', and the - value of x will be printed from your interactive namespace. The - interpolation syntax includes the full Itpl support, so - ${foo()+x+bar()} is a valid prompt string now, and the function - calls will be made at runtime. - -2005-03-15 Fernando Perez - - * IPython/Magic.py (magic_history): renamed %hist to %history, to - avoid name clashes in pylab. %hist still works, it just forwards - the call to %history. - -2005-03-02 *** Released version 0.6.12 - -2005-03-02 Fernando Perez - - * IPython/iplib.py (handle_magic): log magic calls properly as - ipmagic() function calls. - - * IPython/Magic.py (magic_time): Improved %time to support - statements and provide wall-clock as well as CPU time. - -2005-02-27 Fernando Perez - - * IPython/hooks.py: New hooks module, to expose user-modifiable - IPython functionality in a clean manner. For now only the editor - hook is actually written, and other thigns which I intend to turn - into proper hooks aren't yet there. The display and prefilter - stuff, for example, should be hooks. But at least now the - framework is in place, and the rest can be moved here with more - time later. IPython had had a .hooks variable for a long time for - this purpose, but I'd never actually used it for anything. - -2005-02-26 Fernando Perez - - * IPython/ipmaker.py (make_IPython): make the default ipython - directory be called _ipython under win32, to follow more the - naming peculiarities of that platform (where buggy software like - Visual Sourcesafe breaks with .named directories). Reported by - Ville Vainio. - -2005-02-23 Fernando Perez - - * IPython/iplib.py (InteractiveShell.__init__): removed a few - auto_aliases for win32 which were causing problems. Users can - define the ones they personally like. - -2005-02-21 Fernando Perez - - * IPython/Magic.py (magic_time): new magic to time execution of - expressions. After a request by Charles Moad . - -2005-02-19 Fernando Perez - - * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings - into keys (for prompts, for example). - - * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty - prompts in case users want them. This introduces a small behavior - change: ipython does not automatically add a space to all prompts - anymore. To get the old prompts with a space, users should add it - manually to their ipythonrc file, so for example prompt_in1 should - now read 'In [\#]: ' instead of 'In [\#]:'. - (BasePrompt.__init__): New option prompts_pad_left (only in rc - file) to control left-padding of secondary prompts. - - * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if - the profiler can't be imported. Fix for Debian, which removed - profile.py because of License issues. I applied a slightly - modified version of the original Debian patch at - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500. - -2005-02-17 Fernando Perez - - * IPython/genutils.py (native_line_ends): Fix bug which would - cause improper line-ends under win32 b/c I was not opening files - in binary mode. Bug report and fix thanks to Ville. - - * IPython/iplib.py (handle_auto): Fix bug which I introduced when - trying to catch spurious foo[1] autocalls. My fix actually broke - ',/' autoquote/call with explicit escape (bad regexp). - -2005-02-15 *** Released version 0.6.11 - -2005-02-14 Fernando Perez - - * IPython/background_jobs.py: New background job management - subsystem. This is implemented via a new set of classes, and - IPython now provides a builtin 'jobs' object for background job - execution. A convenience %bg magic serves as a lightweight - frontend for starting the more common type of calls. This was - inspired by discussions with B. Granger and the BackgroundCommand - class described in the book Python Scripting for Computational - Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting - (although ultimately no code from this text was used, as IPython's - system is a separate implementation). - - * IPython/iplib.py (MagicCompleter.python_matches): add new option - to control the completion of single/double underscore names - separately. As documented in the example ipytonrc file, the - readline_omit__names variable can now be set to 2, to omit even - single underscore names. Thanks to a patch by Brian Wong - . - (InteractiveShell.__init__): Fix bug which would cause foo[1] to - be autocalled as foo([1]) if foo were callable. A problem for - things which are both callable and implement __getitem__. - (init_readline): Fix autoindentation for win32. Thanks to a patch - by Vivian De Smedt . - -2005-02-12 Fernando Perez - - * IPython/ipmaker.py (make_IPython): Disabled the stout traps - which I had written long ago to sort out user error messages which - may occur during startup. This seemed like a good idea initially, - but it has proven a disaster in retrospect. I don't want to - change much code for now, so my fix is to set the internal 'debug' - flag to true everywhere, whose only job was precisely to control - this subsystem. This closes issue 28 (as well as avoiding all - sorts of strange hangups which occur from time to time). - -2005-02-07 Fernando Perez - - * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the - previous call produced a syntax error. - - * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting - classes without constructor. - -2005-02-06 Fernando Perez - - * IPython/iplib.py (MagicCompleter.complete): Extend the list of - completions with the results of each matcher, so we return results - to the user from all namespaces. This breaks with ipython - tradition, but I think it's a nicer behavior. Now you get all - possible completions listed, from all possible namespaces (python, - filesystem, magics...) After a request by John Hunter - . - -2005-02-05 Fernando Perez - - * IPython/Magic.py (magic_prun): Fix bug where prun would fail if - the call had quote characters in it (the quotes were stripped). - -2005-01-31 Fernando Perez - - * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on - Itpl.itpl() to make the code more robust against psyco - optimizations. - - * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead - of causing an exception. Quicker, cleaner. - -2005-01-28 Fernando Perez - - * scripts/ipython_win_post_install.py (install): hardcode - sys.prefix+'python.exe' as the executable path. It turns out that - during the post-installation run, sys.executable resolves to the - name of the binary installer! I should report this as a distutils - bug, I think. I updated the .10 release with this tiny fix, to - avoid annoying the lists further. - -2005-01-27 *** Released version 0.6.10 - -2005-01-27 Fernando Perez - - * IPython/numutils.py (norm): Added 'inf' as optional name for - L-infinity norm, included references to mathworld.com for vector - norm definitions. - (amin/amax): added amin/amax for array min/max. Similar to what - pylab ships with after the recent reorganization of names. - (spike/spike_odd): removed deprecated spike/spike_odd functions. - - * ipython.el: committed Alex's recent fixes and improvements. - Tested with python-mode from CVS, and it looks excellent. Since - python-mode hasn't released anything in a while, I'm temporarily - putting a copy of today's CVS (v 4.70) of python-mode in: - http://ipython.scipy.org/tmp/python-mode.el - - * scripts/ipython_win_post_install.py (install): Win32 fix to use - sys.executable for the executable name, instead of assuming it's - called 'python.exe' (the post-installer would have produced broken - setups on systems with a differently named python binary). - - * IPython/PyColorize.py (Parser.__call__): change explicit '\n' - references to os.linesep, to make the code more - platform-independent. This is also part of the win32 coloring - fixes. - - * IPython/genutils.py (page_dumb): Remove attempts to chop long - lines, which actually cause coloring bugs because the length of - the line is very difficult to correctly compute with embedded - escapes. This was the source of all the coloring problems under - Win32. I think that _finally_, Win32 users have a properly - working ipython in all respects. This would never have happened - if not for Gary Bishop and Viktor Ransmayr's great help and work. - -2005-01-26 *** Released version 0.6.9 - -2005-01-25 Fernando Perez - - * setup.py: finally, we have a true Windows installer, thanks to - the excellent work of Viktor Ransmayr - . The docs have been updated for - Windows users. The setup routine is quite a bit cleaner thanks to - this, and the post-install script uses the proper functions to - allow a clean de-installation using the standard Windows Control - Panel. - - * IPython/genutils.py (get_home_dir): changed to use the $HOME - environment variable under all OSes (including win32) if - available. This will give consistency to win32 users who have set - this variable for any reason. If os.environ['HOME'] fails, the - previous policy of using HOMEDRIVE\HOMEPATH kicks in. - -2005-01-24 Fernando Perez - - * IPython/numutils.py (empty_like): add empty_like(), similar to - zeros_like() but taking advantage of the new empty() Numeric routine. - -2005-01-23 *** Released version 0.6.8 - -2005-01-22 Fernando Perez - - * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the - automatic show() calls. After discussing things with JDH, it - turns out there are too many corner cases where this can go wrong. - It's best not to try to be 'too smart', and simply have ipython - reproduce as much as possible the default behavior of a normal - python shell. - - * IPython/iplib.py (InteractiveShell.__init__): Modified the - line-splitting regexp and _prefilter() to avoid calling getattr() - on assignments. This closes - http://www.scipy.net/roundup/ipython/issue24. Note that Python's - readline uses getattr(), so a simple keypress is still - enough to trigger getattr() calls on an object. - -2005-01-21 Fernando Perez - - * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run - docstring under pylab so it doesn't mask the original. - -2005-01-21 *** Released version 0.6.7 - -2005-01-21 Fernando Perez - - * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with - signal handling for win32 users in multithreaded mode. - -2005-01-17 Fernando Perez - - * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting - instances with no __init__. After a crash report by Norbert Nemec - . - -2005-01-14 Fernando Perez - - * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of - names for verbose exceptions, when multiple dotted names and the - 'parent' object were present on the same line. - -2005-01-11 Fernando Perez - - * IPython/genutils.py (flag_calls): new utility to trap and flag - calls in functions. I need it to clean up matplotlib support. - Also removed some deprecated code in genutils. - - * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so - that matplotlib scripts called with %run, which don't call show() - themselves, still have their plotting windows open. - -2005-01-05 Fernando Perez - - * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw - , to fix gtk deprecation warnings. - -2004-12-19 Fernando Perez - - * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of - parent_runcode, which was an eyesore. The same result can be - obtained with Python's regular superclass mechanisms. - -2004-12-17 Fernando Perez - - * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem - reported by Prabhu. - (Magic.magic_sx): direct all errors to Term.cerr (defaults to - sys.stderr) instead of explicitly calling sys.stderr. This helps - maintain our I/O abstractions clean, for future GUI embeddings. - - * IPython/genutils.py (info): added new utility for sys.stderr - unified info message handling (thin wrapper around warn()). - - * IPython/ultraTB.py (VerboseTB.text): Fix misreported global - composite (dotted) names on verbose exceptions. - (VerboseTB.nullrepr): harden against another kind of errors which - Python's inspect module can trigger, and which were crashing - IPython. Thanks to a report by Marco Lombardi - . - -2004-12-13 *** Released version 0.6.6 - -2004-12-12 Fernando Perez - - * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors - generated by pygtk upon initialization if it was built without - threads (for matplotlib users). After a crash reported by - Leguijt, Jaap J SIEP-EPT-RES . - - * IPython/ipmaker.py (make_IPython): fix small bug in the - import_some parameter for multiple imports. - - * IPython/iplib.py (ipmagic): simplified the interface of - ipmagic() to take a single string argument, just as it would be - typed at the IPython cmd line. - (ipalias): Added new ipalias() with an interface identical to - ipmagic(). This completes exposing a pure python interface to the - alias and magic system, which can be used in loops or more complex - code where IPython's automatic line mangling is not active. - - * IPython/genutils.py (timing): changed interface of timing to - simply run code once, which is the most common case. timings() - remains unchanged, for the cases where you want multiple runs. - - * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a - bug where Python2.2 crashes with exec'ing code which does not end - in a single newline. Python 2.3 is OK, so I hadn't noticed this - before. - -2004-12-10 Fernando Perez - - * IPython/Magic.py (Magic.magic_prun): changed name of option from - -t to -T, to accomodate the new -t flag in %run (the %run and - %prun options are kind of intermixed, and it's not easy to change - this with the limitations of python's getopt). - - * IPython/Magic.py (Magic.magic_run): Added new -t option to time - the execution of scripts. It's not as fine-tuned as timeit.py, - but it works from inside ipython (and under 2.2, which lacks - timeit.py). Optionally a number of runs > 1 can be given for - timing very short-running code. - - * IPython/genutils.py (uniq_stable): new routine which returns a - list of unique elements in any iterable, but in stable order of - appearance. I needed this for the ultraTB fixes, and it's a handy - utility. - - * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of - dotted names in Verbose exceptions. This had been broken since - the very start, now x.y will properly be printed in a Verbose - traceback, instead of x being shown and y appearing always as an - 'undefined global'. Getting this to work was a bit tricky, - because by default python tokenizers are stateless. Saved by - python's ability to easily add a bit of state to an arbitrary - function (without needing to build a full-blown callable object). - - Also big cleanup of this code, which had horrendous runtime - lookups of zillions of attributes for colorization. Moved all - this code into a few templates, which make it cleaner and quicker. - - Printout quality was also improved for Verbose exceptions: one - variable per line, and memory addresses are printed (this can be - quite handy in nasty debugging situations, which is what Verbose - is for). - - * IPython/ipmaker.py (make_IPython): Do NOT execute files named in - the command line as scripts to be loaded by embedded instances. - Doing so has the potential for an infinite recursion if there are - exceptions thrown in the process. This fixes a strange crash - reported by Philippe MULLER . - -2004-12-09 Fernando Perez - - * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support - to reflect new names in matplotlib, which now expose the - matlab-compatible interface via a pylab module instead of the - 'matlab' name. The new code is backwards compatible, so users of - all matplotlib versions are OK. Patch by J. Hunter. - - * IPython/OInspect.py (Inspector.pinfo): Add to object? printing - of __init__ docstrings for instances (class docstrings are already - automatically printed). Instances with customized docstrings - (indep. of the class) are also recognized and all 3 separate - docstrings are printed (instance, class, constructor). After some - comments/suggestions by J. Hunter. - -2004-12-05 Fernando Perez - - * IPython/iplib.py (MagicCompleter.complete): Remove annoying - warnings when tab-completion fails and triggers an exception. - -2004-12-03 Fernando Perez - - * IPython/Magic.py (magic_prun): Fix bug where an exception would - be triggered when using 'run -p'. An incorrect option flag was - being set ('d' instead of 'D'). - (manpage): fix missing escaped \- sign. - -2004-11-30 *** Released version 0.6.5 - -2004-11-30 Fernando Perez - - * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint - setting with -d option. - - * setup.py (docfiles): Fix problem where the doc glob I was using - was COMPLETELY BROKEN. It was giving the right files by pure - accident, but failed once I tried to include ipython.el. Note: - glob() does NOT allow you to do exclusion on multiple endings! - -2004-11-29 Fernando Perez - - * IPython/usage.py (__doc__): cleaned up usage docstring, by using - the manpage as the source. Better formatting & consistency. - - * IPython/Magic.py (magic_run): Added new -d option, to run - scripts under the control of the python pdb debugger. Note that - this required changing the %prun option -d to -D, to avoid a clash - (since %run must pass options to %prun, and getopt is too dumb to - handle options with string values with embedded spaces). Thanks - to a suggestion by Matthew Arnison . - (magic_who_ls): added type matching to %who and %whos, so that one - can filter their output to only include variables of certain - types. Another suggestion by Matthew. - (magic_whos): Added memory summaries in kb and Mb for arrays. - (magic_who): Improve formatting (break lines every 9 vars). - -2004-11-28 Fernando Perez - - * IPython/Logger.py (Logger.log): Fix bug in syncing the input - cache when empty lines were present. - -2004-11-24 Fernando Perez - - * IPython/usage.py (__doc__): document the re-activated threading - options for WX and GTK. - -2004-11-23 Fernando Perez - - * IPython/Shell.py (start): Added Prabhu's big patch to reactivate - the -wthread and -gthread options, along with a new -tk one to try - and coordinate Tk threading with wx/gtk. The tk support is very - platform dependent, since it seems to require Tcl and Tk to be - built with threads (Fedora1/2 appears NOT to have it, but in - Prabhu's Debian boxes it works OK). But even with some Tk - limitations, this is a great improvement. - - * IPython/Prompts.py (prompt_specials_color): Added \t for time - info in user prompts. Patch by Prabhu. - -2004-11-18 Fernando Perez - - * IPython/genutils.py (ask_yes_no): Add check for a max of 20 - EOFErrors and bail, to avoid infinite loops if a non-terminating - file is fed into ipython. Patch submitted in issue 19 by user, - many thanks. - - * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger - autoquote/parens in continuation prompts, which can cause lots of - problems. Closes roundup issue 20. - -2004-11-17 Fernando Perez - - * debian/control (Build-Depends-Indep): Fix dpatch dependency, - reported as debian bug #280505. I'm not sure my local changelog - entry has the proper debian format (Jack?). - -2004-11-08 *** Released version 0.6.4 - -2004-11-08 Fernando Perez - - * IPython/iplib.py (init_readline): Fix exit message for Windows - when readline is active. Thanks to a report by Eric Jones - . - -2004-11-07 Fernando Perez - - * IPython/genutils.py (page): Add a trap for OSError exceptions, - sometimes seen by win2k/cygwin users. - -2004-11-06 Fernando Perez - - * IPython/iplib.py (interact): Change the handling of %Exit from - trying to propagate a SystemExit to an internal ipython flag. - This is less elegant than using Python's exception mechanism, but - I can't get that to work reliably with threads, so under -pylab - %Exit was hanging IPython. Cross-thread exception handling is - really a bitch. Thaks to a bug report by Stephen Walton - . - -2004-11-04 Fernando Perez - - * IPython/iplib.py (raw_input_original): store a pointer to the - true raw_input to harden against code which can modify it - (wx.py.PyShell does this and would otherwise crash ipython). - Thanks to a bug report by Jim Flowers . - - * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for - Ctrl-C problem, which does not mess up the input line. - -2004-11-03 Fernando Perez - - * IPython/Release.py: Changed licensing to BSD, in all files. - (name): lowercase name for tarball/RPM release. - - * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for - use throughout ipython. - - * IPython/Magic.py (Magic._ofind): Switch to using the new - OInspect.getdoc() function. - - * IPython/Shell.py (sigint_handler): Hack to ignore the execution - of the line currently being canceled via Ctrl-C. It's extremely - ugly, but I don't know how to do it better (the problem is one of - handling cross-thread exceptions). - -2004-10-28 Fernando Perez - - * IPython/Shell.py (signal_handler): add signal handlers to trap - SIGINT and SIGSEGV in threaded code properly. Thanks to a bug - report by Francesc Alted. - -2004-10-21 Fernando Perez - - * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @ - to % for pysh syntax extensions. - -2004-10-09 Fernando Perez - - * IPython/Magic.py (Magic.magic_whos): modify output of Numeric - arrays to print a more useful summary, without calling str(arr). - This avoids the problem of extremely lengthy computations which - occur if arr is large, and appear to the user as a system lockup - with 100% cpu activity. After a suggestion by Kristian Sandberg - . - (Magic.__init__): fix bug in global magic escapes not being - correctly set. - -2004-10-08 Fernando Perez - - * IPython/Magic.py (__license__): change to absolute imports of - ipython's own internal packages, to start adapting to the absolute - import requirement of PEP-328. - - * IPython/genutils.py (__author__): Fix coding to utf-8 on all - files, and standardize author/license marks through the Release - module instead of having per/file stuff (except for files with - particular licenses, like the MIT/PSF-licensed codes). - - * IPython/Debugger.py: remove dead code for python 2.1 - -2004-10-04 Fernando Perez - - * IPython/iplib.py (ipmagic): New function for accessing magics - via a normal python function call. - - * IPython/Magic.py (Magic.magic_magic): Change the magic escape - from '@' to '%', to accomodate the new @decorator syntax of python - 2.4. - -2004-09-29 Fernando Perez - - * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to - matplotlib.use to prevent running scripts which try to switch - interactive backends from within ipython. This will just crash - the python interpreter, so we can't allow it (but a detailed error - is given to the user). - -2004-09-28 Fernando Perez - - * IPython/Shell.py (MatplotlibShellBase.mplot_exec): - matplotlib-related fixes so that using @run with non-matplotlib - scripts doesn't pop up spurious plot windows. This requires - matplotlib >= 0.63, where I had to make some changes as well. - - * IPython/ipmaker.py (make_IPython): update version requirement to - python 2.2. - - * IPython/iplib.py (InteractiveShell.mainloop): Add an optional - banner arg for embedded customization. - - * IPython/Magic.py (Magic.__init__): big cleanup to remove all - explicit uses of __IP as the IPython's instance name. Now things - are properly handled via the shell.name value. The actual code - is a bit ugly b/c I'm doing it via a global in Magic.py, but this - is much better than before. I'll clean things completely when the - magic stuff gets a real overhaul. - - * ipython.1: small fixes, sent in by Jack Moffit. He also sent in - minor changes to debian dir. - - * IPython/iplib.py (InteractiveShell.__init__): Fix adding a - pointer to the shell itself in the interactive namespace even when - a user-supplied dict is provided. This is needed for embedding - purposes (found by tests with Michel Sanner). - -2004-09-27 Fernando Perez - - * IPython/UserConfig/ipythonrc: remove []{} from - readline_remove_delims, so that things like [modname. do - proper completion. This disables [].TAB, but that's a less common - case than module names in list comprehensions, for example. - Thanks to a report by Andrea Riciputi. - -2004-09-09 Fernando Perez - - * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid - blocking problems in win32 and osx. Fix by John. - -2004-09-08 Fernando Perez - - * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug - for Win32 and OSX. Fix by John Hunter. - -2004-08-30 *** Released version 0.6.3 - -2004-08-30 Fernando Perez - - * setup.py (isfile): Add manpages to list of dependent files to be - updated. - -2004-08-27 Fernando Perez - - * IPython/Shell.py (start): I've disabled -wthread and -gthread - for now. They don't really work with standalone WX/GTK code - (though matplotlib IS working fine with both of those backends). - This will neeed much more testing. I disabled most things with - comments, so turning it back on later should be pretty easy. - - * IPython/iplib.py (InteractiveShell.__init__): Fix accidental - autocalling of expressions like r'foo', by modifying the line - split regexp. Closes - http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas - Riley . - (InteractiveShell.mainloop): honor --nobanner with banner - extensions. - - * IPython/Shell.py: Significant refactoring of all classes, so - that we can really support ALL matplotlib backends and threading - models (John spotted a bug with Tk which required this). Now we - should support single-threaded, WX-threads and GTK-threads, both - for generic code and for matplotlib. - - * IPython/ipmaker.py (__call__): Changed -mpthread option to - -pylab, to simplify things for users. Will also remove the pylab - profile, since now all of matplotlib configuration is directly - handled here. This also reduces startup time. - - * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of - shell wasn't being correctly called. Also in IPShellWX. - - * IPython/iplib.py (InteractiveShell.__init__): Added option to - fine-tune banner. - - * IPython/numutils.py (spike): Deprecate these spike functions, - delete (long deprecated) gnuplot_exec handler. - -2004-08-26 Fernando Perez - - * ipython.1: Update for threading options, plus some others which - were missing. - - * IPython/ipmaker.py (__call__): Added -wthread option for - wxpython thread handling. Make sure threading options are only - valid at the command line. - - * scripts/ipython: moved shell selection into a factory function - in Shell.py, to keep the starter script to a minimum. - -2004-08-25 Fernando Perez - - * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by - John. Along with some recent changes he made to matplotlib, the - next versions of both systems should work very well together. - -2004-08-24 Fernando Perez - - * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I - tried to switch the profiling to using hotshot, but I'm getting - strange errors from prof.runctx() there. I may be misreading the - docs, but it looks weird. For now the profiling code will - continue to use the standard profiler. - -2004-08-23 Fernando Perez - - * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX - threaded shell, by John Hunter. It's not quite ready yet, but - close. - -2004-08-22 Fernando Perez - - * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also - in Magic and ultraTB. - - * ipython.1: document threading options in manpage. - - * scripts/ipython: Changed name of -thread option to -gthread, - since this is GTK specific. I want to leave the door open for a - -wthread option for WX, which will most likely be necessary. This - change affects usage and ipmaker as well. - - * IPython/Shell.py (matplotlib_shell): Add a factory function to - handle the matplotlib shell issues. Code by John Hunter - . - (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's - broken (and disabled for end users) for now, but it puts the - infrastructure in place. - -2004-08-21 Fernando Perez - - * ipythonrc-pylab: Add matplotlib support. - - * matplotlib_config.py: new files for matplotlib support, part of - the pylab profile. - - * IPython/usage.py (__doc__): documented the threading options. - -2004-08-20 Fernando Perez - - * ipython: Modified the main calling routine to handle the -thread - and -mpthread options. This needs to be done as a top-level hack, - because it determines which class to instantiate for IPython - itself. - - * IPython/Shell.py (MTInteractiveShell.__init__): New set of - classes to support multithreaded GTK operation without blocking, - and matplotlib with all backends. This is a lot of still very - experimental code, and threads are tricky. So it may still have a - few rough edges... This code owes a lot to - http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by - Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and - to John Hunter for all the matplotlib work. - - * IPython/ipmaker.py (__call__): Added -thread and -mpthread - options for gtk thread and matplotlib support. - -2004-08-16 Fernando Perez - - * IPython/iplib.py (InteractiveShell.__init__): don't trigger - autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug - reported by Stephen Walton . - -2004-08-11 Fernando Perez - - * setup.py (isfile): Fix build so documentation gets updated for - rpms (it was only done for .tgz builds). - -2004-08-10 Fernando Perez - - * genutils.py (Term): Fix misspell of stdin stream (sin->cin). - - * iplib.py : Silence syntax error exceptions in tab-completion. - -2004-08-05 Fernando Perez - - * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set - 'color off' mark for continuation prompts. This was causing long - continuation lines to mis-wrap. - -2004-08-01 Fernando Perez - - * IPython/ipmaker.py (make_IPython): Allow the shell class used - for building ipython to be a parameter. All this is necessary - right now to have a multithreaded version, but this insane - non-design will be cleaned up soon. For now, it's a hack that - works. - - * IPython/Shell.py (IPShell.__init__): Stop using mutable default - args in various places. No bugs so far, but it's a dangerous - practice. - -2004-07-31 Fernando Perez - - * IPython/iplib.py (complete): ignore SyntaxError exceptions to - fix completion of files with dots in their names under most - profiles (pysh was OK because the completion order is different). - -2004-07-27 Fernando Perez - - * IPython/iplib.py (InteractiveShell.__init__): build dict of - keywords manually, b/c the one in keyword.py was removed in python - 2.4. Patch by Anakim Border . - This is NOT a bug under python 2.3 and earlier. - -2004-07-26 Fernando Perez - - * IPython/ultraTB.py (VerboseTB.text): Add another - linecache.checkcache() call to try to prevent inspect.py from - crashing under python 2.3. I think this fixes - http://www.scipy.net/roundup/ipython/issue17. - -2004-07-26 *** Released version 0.6.2 - -2004-07-26 Fernando Perez - - * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would - fail for any number. - (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for - empty bookmarks. - -2004-07-26 *** Released version 0.6.1 - -2004-07-26 Fernando Perez - - * ipython_win_post_install.py (run): Added pysh shortcut for Windows. - - * IPython/iplib.py (protect_filename): Applied Ville's patch for - escaping '()[]{}' in filenames. - - * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for - Python 2.2 users who lack a proper shlex.split. - -2004-07-19 Fernando Perez - - * IPython/iplib.py (InteractiveShell.init_readline): Add support - for reading readline's init file. I follow the normal chain: - $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a - report by Mike Heeter. This closes - http://www.scipy.net/roundup/ipython/issue16. - -2004-07-18 Fernando Perez - - * IPython/iplib.py (__init__): Add better handling of '\' under - Win32 for filenames. After a patch by Ville. - -2004-07-17 Fernando Perez - - * IPython/iplib.py (InteractiveShell._prefilter): fix bug where - autocalling would be triggered for 'foo is bar' if foo is - callable. I also cleaned up the autocall detection code to use a - regexp, which is faster. Bug reported by Alexander Schmolck. - - * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with - '?' in them would confuse the help system. Reported by Alex - Schmolck. - -2004-07-16 Fernando Perez - - * IPython/GnuplotInteractive.py (__all__): added plot2. - - * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for - plotting dictionaries, lists or tuples of 1d arrays. - - * IPython/Magic.py (Magic.magic_hist): small clenaups and - optimizations. - - * IPython/iplib.py:Remove old Changelog info for cleanup. This is - the information which was there from Janko's original IPP code: - - 03.05.99 20:53 porto.ifm.uni-kiel.de - --Started changelog. - --make clear do what it say it does - --added pretty output of lines from inputcache - --Made Logger a mixin class, simplifies handling of switches - --Added own completer class. .string expands to last history - line which starts with string. The new expansion is also present - with Ctrl-r from the readline library. But this shows, who this - can be done for other cases. - --Added convention that all shell functions should accept a - parameter_string This opens the door for different behaviour for - each function. @cd is a good example of this. - - 04.05.99 12:12 porto.ifm.uni-kiel.de - --added logfile rotation - --added new mainloop method which freezes first the namespace - - 07.05.99 21:24 porto.ifm.uni-kiel.de - --added the docreader classes. Now there is a help system. - -This is only a first try. Currently it's not easy to put new - stuff in the indices. But this is the way to go. Info would be - better, but HTML is every where and not everybody has an info - system installed and it's not so easy to change html-docs to info. - --added global logfile option - --there is now a hook for object inspection method pinfo needs to - be provided for this. Can be reached by two '??'. - - 08.05.99 20:51 porto.ifm.uni-kiel.de - --added a README - --bug in rc file. Something has changed so functions in the rc - file need to reference the shell and not self. Not clear if it's a - bug or feature. - --changed rc file for new behavior - -2004-07-15 Fernando Perez - - * IPython/Logger.py (Logger.log): fixed recent bug where the input - cache was falling out of sync in bizarre manners when multi-line - input was present. Minor optimizations and cleanup. - - (Logger): Remove old Changelog info for cleanup. This is the - information which was there from Janko's original code: - - Changes to Logger: - made the default log filename a parameter - - - put a check for lines beginning with !@? in log(). Needed - (even if the handlers properly log their lines) for mid-session - logging activation to work properly. Without this, lines logged - in mid session, which get read from the cache, would end up - 'bare' (with !@? in the open) in the log. Now they are caught - and prepended with a #. - - * IPython/iplib.py (InteractiveShell.init_readline): added check - in case MagicCompleter fails to be defined, so we don't crash. - -2004-07-13 Fernando Perez - - * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation - of EPS if the requested filename ends in '.eps'. - -2004-07-04 Fernando Perez - - * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix - escaping of quotes when calling the shell. - -2004-07-02 Fernando Perez - - * IPython/Prompts.py (CachedOutput.update): Fix problem with - gettext not working because we were clobbering '_'. Fixes - http://www.scipy.net/roundup/ipython/issue6. - -2004-07-01 Fernando Perez - - * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling - into @cd. Patch by Ville. - - * IPython/iplib.py (InteractiveShell.post_config_initialization): - new function to store things after ipmaker runs. Patch by Ville. - Eventually this will go away once ipmaker is removed and the class - gets cleaned up, but for now it's ok. Key functionality here is - the addition of the persistent storage mechanism, a dict for - keeping data across sessions (for now just bookmarks, but more can - be implemented later). - - * IPython/Magic.py (Magic.magic_bookmark): New bookmark system, - persistent across sections. Patch by Ville, I modified it - soemwhat to allow bookmarking arbitrary dirs other than CWD. Also - added a '-l' option to list all bookmarks. - - * IPython/iplib.py (InteractiveShell.atexit_operations): new - center for cleanup. Registered with atexit.register(). I moved - here the old exit_cleanup(). After a patch by Ville. - - * IPython/Magic.py (get_py_filename): added '~' to the accepted - characters in the hacked shlex_split for python 2.2. - - * IPython/iplib.py (file_matches): more fixes to filenames with - whitespace in them. It's not perfect, but limitations in python's - readline make it impossible to go further. - -2004-06-29 Fernando Perez - - * IPython/iplib.py (file_matches): escape whitespace correctly in - filename completions. Bug reported by Ville. - -2004-06-28 Fernando Perez - - * IPython/ipmaker.py (__call__): Added per-profile histories. Now - the history file will be called 'history-PROFNAME' (or just - 'history' if no profile is loaded). I was getting annoyed at - getting my Numerical work history clobbered by pysh sessions. - - * IPython/iplib.py (InteractiveShell.__init__): Internal - getoutputerror() function so that we can honor the system_verbose - flag for _all_ system calls. I also added escaping of # - characters here to avoid confusing Itpl. - - * IPython/Magic.py (shlex_split): removed call to shell in - parse_options and replaced it with shlex.split(). The annoying - part was that in Python 2.2, shlex.split() doesn't exist, so I had - to backport it from 2.3, with several frail hacks (the shlex - module is rather limited in 2.2). Thanks to a suggestion by Ville - Vainio . For Python 2.3 there should be no - problem. - - (Magic.magic_system_verbose): new toggle to print the actual - system calls made by ipython. Mainly for debugging purposes. - - * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which - doesn't support persistence. Reported (and fix suggested) by - Travis Caldwell . - -2004-06-26 Fernando Perez - - * IPython/Logger.py (Logger.log): fix to handle correctly empty - continue prompts. - - * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh() - function (basically a big docstring) and a few more things here to - speedup startup. pysh.py is now very lightweight. We want because - it gets execfile'd, while InterpreterExec gets imported, so - byte-compilation saves time. - -2004-06-25 Fernando Perez - - * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd - -NUM', which was recently broken. - - * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow ! - in multi-line input (but not !!, which doesn't make sense there). - - * IPython/UserConfig/ipythonrc: made autoindent on by default. - It's just too useful, and people can turn it off in the less - common cases where it's a problem. - -2004-06-24 Fernando Perez - - * IPython/iplib.py (InteractiveShell._prefilter): big change - - special syntaxes (like alias calling) is now allied in multi-line - input. This is still _very_ experimental, but it's necessary for - efficient shell usage combining python looping syntax with system - calls. For now it's restricted to aliases, I don't think it - really even makes sense to have this for magics. - -2004-06-23 Fernando Perez - - * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added - $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd. - - * IPython/Magic.py (Magic.magic_rehashx): modified to handle - extensions under Windows (after code sent by Gary Bishop). The - extensions considered 'executable' are stored in IPython's rc - structure as win_exec_ext. - - * IPython/genutils.py (shell): new function, like system() but - without return value. Very useful for interactive shell work. - - * IPython/Magic.py (Magic.magic_unalias): New @unalias function to - delete aliases. - - * IPython/iplib.py (InteractiveShell.alias_table_update): make - sure that the alias table doesn't contain python keywords. - -2004-06-21 Fernando Perez - - * IPython/Magic.py (Magic.magic_rehash): Fix crash when - non-existent items are found in $PATH. Reported by Thorsten. - -2004-06-20 Fernando Perez - - * IPython/iplib.py (complete): modified the completer so that the - order of priorities can be easily changed at runtime. - - * IPython/Extensions/InterpreterExec.py (prefilter_shell): - Modified to auto-execute all lines beginning with '~', '/' or '.'. - - * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to - expand Python variables prepended with $ in all system calls. The - same was done to InteractiveShell.handle_shell_escape. Now all - system access mechanisms (!, !!, @sc, @sx and aliases) allow the - expansion of python variables and expressions according to the - syntax of PEP-215 - http://www.python.org/peps/pep-0215.html. - - Though PEP-215 has been rejected, a similar (but simpler) one - seems like it will go into Python 2.4, PEP-292 - - http://www.python.org/peps/pep-0292.html. - - I'll keep the full syntax of PEP-215, since IPython has since the - start used Ka-Ping Yee's reference implementation discussed there - (Itpl), and I actually like the powerful semantics it offers. - - In order to access normal shell variables, the $ has to be escaped - via an extra $. For example: - - In [7]: PATH='a python variable' - - In [8]: !echo $PATH - a python variable - - In [9]: !echo $$PATH - /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:... - - (Magic.parse_options): escape $ so the shell doesn't evaluate - things prematurely. - - * IPython/iplib.py (InteractiveShell.call_alias): added the - ability for aliases to expand python variables via $. - - * IPython/Magic.py (Magic.magic_rehash): based on the new alias - system, now there's a @rehash/@rehashx pair of magics. These work - like the csh rehash command, and can be invoked at any time. They - build a table of aliases to everything in the user's $PATH - (@rehash uses everything, @rehashx is slower but only adds - executable files). With this, the pysh.py-based shell profile can - now simply call rehash upon startup, and full access to all - programs in the user's path is obtained. - - * IPython/iplib.py (InteractiveShell.call_alias): The new alias - functionality is now fully in place. I removed the old dynamic - code generation based approach, in favor of a much lighter one - based on a simple dict. The advantage is that this allows me to - now have thousands of aliases with negligible cost (unthinkable - with the old system). - -2004-06-19 Fernando Perez - - * IPython/iplib.py (__init__): extended MagicCompleter class to - also complete (last in priority) on user aliases. - - * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in - call to eval. - (ItplNS.__init__): Added a new class which functions like Itpl, - but allows configuring the namespace for the evaluation to occur - in. - -2004-06-18 Fernando Perez - - * IPython/iplib.py (InteractiveShell.runcode): modify to print a - better message when 'exit' or 'quit' are typed (a common newbie - confusion). - - * IPython/Magic.py (Magic.magic_colors): Added the runtime color - check for Windows users. - - * IPython/iplib.py (InteractiveShell.user_setup): removed - disabling of colors for Windows. I'll test at runtime and issue a - warning if Gary's readline isn't found, as to nudge users to - download it. - -2004-06-16 Fernando Perez - - * IPython/genutils.py (Stream.__init__): changed to print errors - to sys.stderr. I had a circular dependency here. Now it's - possible to run ipython as IDLE's shell (consider this pre-alpha, - since true stdout things end up in the starting terminal instead - of IDLE's out). - - * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for - users who haven't # updated their prompt_in2 definitions. Remove - eventually. - (multiple_replace): added credit to original ASPN recipe. - -2004-06-15 Fernando Perez - - * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the - list of auto-defined aliases. - -2004-06-13 Fernando Perez - - * setup.py (scriptfiles): Don't trigger win_post_install unless an - install was really requested (so setup.py can be used for other - things under Windows). - -2004-06-10 Fernando Perez - - * IPython/Logger.py (Logger.create_log): Manually remove any old - backup, since os.remove may fail under Windows. Fixes bug - reported by Thorsten. - -2004-06-09 Fernando Perez - - * examples/example-embed.py: fixed all references to %n (replaced - with \\# for ps1/out prompts and with \\D for ps2 prompts). Done - for all examples and the manual as well. - -2004-06-08 Fernando Perez - - * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt - alignment and color management. All 3 prompt subsystems now - inherit from BasePrompt. - - * tools/release: updates for windows installer build and tag rpms - with python version (since paths are fixed). - - * IPython/UserConfig/ipythonrc: modified to use \# instead of %n, - which will become eventually obsolete. Also fixed the default - prompt_in2 to use \D, so at least new users start with the correct - defaults. - WARNING: Users with existing ipythonrc files will need to apply - this fix manually! - - * setup.py: make windows installer (.exe). This is finally the - integration of an old patch by Cory Dodt , - which I hadn't included because it required Python 2.3 (or recent - distutils). - - * IPython/usage.py (__doc__): update docs (and manpage) to reflect - usage of new '\D' escape. - - * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which - lacks os.getuid()) - (CachedOutput.set_colors): Added the ability to turn coloring - on/off with @colors even for manually defined prompt colors. It - uses a nasty global, but it works safely and via the generic color - handling mechanism. - (Prompt2.__init__): Introduced new escape '\D' for continuation - prompts. It represents the counter ('\#') as dots. - *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will - need to update their ipythonrc files and replace '%n' with '\D' in - their prompt_in2 settings everywhere. Sorry, but there's - otherwise no clean way to get all prompts to properly align. The - ipythonrc shipped with IPython has been updated. - -2004-06-07 Fernando Perez - - * setup.py (isfile): Pass local_icons option to latex2html, so the - resulting HTML file is self-contained. Thanks to - dryice-AT-liu.com.cn for the tip. - - * pysh.py: I created a new profile 'shell', which implements a - _rudimentary_ IPython-based shell. This is in NO WAY a realy - system shell, nor will it become one anytime soon. It's mainly - meant to illustrate the use of the new flexible bash-like prompts. - I guess it could be used by hardy souls for true shell management, - but it's no tcsh/bash... pysh.py is loaded by the 'shell' - profile. This uses the InterpreterExec extension provided by - W.J. van der Laan - - * IPython/Prompts.py (PromptOut.__str__): now it will correctly - auto-align itself with the length of the previous input prompt - (taking into account the invisible color escapes). - (CachedOutput.__init__): Large restructuring of this class. Now - all three prompts (primary1, primary2, output) are proper objects, - managed by the 'parent' CachedOutput class. The code is still a - bit hackish (all prompts share state via a pointer to the cache), - but it's overall far cleaner than before. - - * IPython/genutils.py (getoutputerror): modified to add verbose, - debug and header options. This makes the interface of all getout* - functions uniform. - (SystemExec.getoutputerror): added getoutputerror to SystemExec. - - * IPython/Magic.py (Magic.default_option): added a function to - allow registering default options for any magic command. This - makes it easy to have profiles which customize the magics globally - for a certain use. The values set through this function are - picked up by the parse_options() method, which all magics should - use to parse their options. - - * IPython/genutils.py (warn): modified the warnings framework to - use the Term I/O class. I'm trying to slowly unify all of - IPython's I/O operations to pass through Term. - - * IPython/Prompts.py (Prompt2._str_other): Added functionality in - the secondary prompt to correctly match the length of the primary - one for any prompt. Now multi-line code will properly line up - even for path dependent prompts, such as the new ones available - via the prompt_specials. - -2004-06-06 Fernando Perez - - * IPython/Prompts.py (prompt_specials): Added the ability to have - bash-like special sequences in the prompts, which get - automatically expanded. Things like hostname, current working - directory and username are implemented already, but it's easy to - add more in the future. Thanks to a patch by W.J. van der Laan - - (prompt_specials): Added color support for prompt strings, so - users can define arbitrary color setups for their prompts. - -2004-06-05 Fernando Perez - - * IPython/genutils.py (Term.reopen_all): Added Windows-specific - code to load Gary Bishop's readline and configure it - automatically. Thanks to Gary for help on this. - -2004-06-01 Fernando Perez - - * IPython/Logger.py (Logger.create_log): fix bug for logging - with no filename (previous fix was incomplete). - -2004-05-25 Fernando Perez - - * IPython/Magic.py (Magic.parse_options): fix bug where naked - parens would get passed to the shell. - -2004-05-20 Fernando Perez - - * IPython/Magic.py (Magic.magic_prun): changed default profile - sort order to 'time' (the more common profiling need). - - * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache - so that source code shown is guaranteed in sync with the file on - disk (also changed in psource). Similar fix to the one for - ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du - . - - * IPython/Magic.py (Magic.parse_options): Fixed bug where commands - with a single option would not be correctly parsed. Closes - http://www.scipy.net/roundup/ipython/issue14. This bug had been - introduced in 0.6.0 (on 2004-05-06). - -2004-05-13 *** Released version 0.6.0 - -2004-05-13 Fernando Perez - - * debian/: Added debian/ directory to CVS, so that debian support - is publicly accessible. The debian package is maintained by Jack - Moffit . - - * Documentation: included the notes about an ipython-based system - shell (the hypothetical 'pysh') into the new_design.pdf document, - so that these ideas get distributed to users along with the - official documentation. - -2004-05-10 Fernando Perez - - * IPython/Logger.py (Logger.create_log): fix recently introduced - bug (misindented line) where logstart would fail when not given an - explicit filename. - -2004-05-09 Fernando Perez - - * IPython/Magic.py (Magic.parse_options): skip system call when - there are no options to look for. Faster, cleaner for the common - case. - - * Documentation: many updates to the manual: describing Windows - support better, Gnuplot updates, credits, misc small stuff. Also - updated the new_design doc a bit. - -2004-05-06 *** Released version 0.6.0.rc1 - -2004-05-06 Fernando Perez - - * IPython/ultraTB.py (ListTB.text): modified a ton of string += - operations to use the vastly more efficient list/''.join() method. - (FormattedTB.text): Fix - http://www.scipy.net/roundup/ipython/issue12 - exception source - extract not updated after reload. Thanks to Mike Salib - for pinning the source of the problem. - Fortunately, the solution works inside ipython and doesn't require - any changes to python proper. - - * IPython/Magic.py (Magic.parse_options): Improved to process the - argument list as a true shell would (by actually using the - underlying system shell). This way, all @magics automatically get - shell expansion for variables. Thanks to a comment by Alex - Schmolck. - -2004-04-04 Fernando Perez - - * IPython/iplib.py (InteractiveShell.interact): Added a special - trap for a debugger quit exception, which is basically impossible - to handle by normal mechanisms, given what pdb does to the stack. - This fixes a crash reported by . - -2004-04-03 Fernando Perez - - * IPython/genutils.py (Term): Standardized the names of the Term - class streams to cin/cout/cerr, following C++ naming conventions - (I can't use in/out/err because 'in' is not a valid attribute - name). - - * IPython/iplib.py (InteractiveShell.interact): don't increment - the prompt if there's no user input. By Daniel 'Dang' Griffith - , after a suggestion from - Francois Pinard. - -2004-04-02 Fernando Perez - - * IPython/genutils.py (Stream.__init__): Modified to survive at - least importing in contexts where stdin/out/err aren't true file - objects, such as PyCrust (they lack fileno() and mode). However, - the recovery facilities which rely on these things existing will - not work. - -2004-04-01 Fernando Perez - - * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to - use the new getoutputerror() function, so it properly - distinguishes stdout/err. - - * IPython/genutils.py (getoutputerror): added a function to - capture separately the standard output and error of a command. - After a comment from dang on the mailing lists. This code is - basically a modified version of commands.getstatusoutput(), from - the standard library. - - * IPython/iplib.py (InteractiveShell.handle_shell_escape): added - '!!' as a special syntax (shorthand) to access @sx. - - * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell - command and return its output as a list split on '\n'. - -2004-03-31 Fernando Perez - - * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__ - method to dictionaries used as FakeModule instances if they lack - it. At least pydoc in python2.3 breaks for runtime-defined - functions without this hack. At some point I need to _really_ - understand what FakeModule is doing, because it's a gross hack. - But it solves Arnd's problem for now... - -2004-02-27 Fernando Perez - - * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate' - mode would behave erratically. Also increased the number of - possible logs in rotate mod to 999. Thanks to Rod Holland - for the report and fixes. - -2004-02-26 Fernando Perez - - * IPython/genutils.py (page): Check that the curses module really - has the initscr attribute before trying to use it. For some - reason, the Solaris curses module is missing this. I think this - should be considered a Solaris python bug, but I'm not sure. - -2004-01-17 Fernando Perez - - * IPython/genutils.py (Stream.__init__): Changes to try to make - ipython robust against stdin/out/err being closed by the user. - This is 'user error' (and blocks a normal python session, at least - the stdout case). However, Ipython should be able to survive such - instances of abuse as gracefully as possible. To simplify the - coding and maintain compatibility with Gary Bishop's Term - contributions, I've made use of classmethods for this. I think - this introduces a dependency on python 2.2. - -2004-01-13 Fernando Perez - - * IPython/numutils.py (exp_safe): simplified the code a bit and - removed the need for importing the kinds module altogether. - -2004-01-06 Fernando Perez - - * IPython/Magic.py (Magic.magic_sc): Made the shell capture system - a magic function instead, after some community feedback. No - special syntax will exist for it, but its name is deliberately - very short. - -2003-12-20 Fernando Perez - - * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added - new functionality, to automagically assign the result of a shell - command to a variable. I'll solicit some community feedback on - this before making it permanent. - - * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was - requested about callables for which inspect couldn't obtain a - proper argspec. Thanks to a crash report sent by Etienne - Posthumus . - -2003-12-09 Fernando Perez - - * IPython/genutils.py (page): patch for the pager to work across - various versions of Windows. By Gary Bishop. - -2003-12-04 Fernando Perez - - * IPython/Gnuplot2.py (PlotItems): Fixes for working with - Gnuplot.py version 1.7, whose internal names changed quite a bit. - While I tested this and it looks ok, there may still be corner - cases I've missed. - -2003-12-01 Fernando Perez - - * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug - where a line like 'p,q=1,2' would fail because the automagic - system would be triggered for @p. - - * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related - cleanups, code unmodified. - - * IPython/genutils.py (Term): added a class for IPython to handle - output. In most cases it will just be a proxy for stdout/err, but - having this allows modifications to be made for some platforms, - such as handling color escapes under Windows. All of this code - was contributed by Gary Bishop, with minor modifications by me. - The actual changes affect many files. - -2003-11-30 Fernando Perez - - * IPython/iplib.py (file_matches): new completion code, courtesy - of Jeff Collins. This enables filename completion again under - python 2.3, which disabled it at the C level. - -2003-11-11 Fernando Perez - - * IPython/numutils.py (amap): Added amap() fn. Simple shorthand - for Numeric.array(map(...)), but often convenient. - -2003-11-05 Fernando Perez - - * IPython/numutils.py (frange): Changed a call from int() to - int(round()) to prevent a problem reported with arange() in the - numpy list. - -2003-10-06 Fernando Perez - - * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to - prevent crashes if sys lacks an argv attribute (it happens with - embedded interpreters which build a bare-bones sys module). - Thanks to a report/bugfix by Adam Hupp . - -2003-09-24 Fernando Perez - - * IPython/Magic.py (Magic._ofind): blanket except around getattr() - to protect against poorly written user objects where __getattr__ - raises exceptions other than AttributeError. Thanks to a bug - report by Oliver Sander . - - * IPython/FakeModule.py (FakeModule.__repr__): this method was - missing. Thanks to bug report by Ralf Schmitt . - -2003-09-09 Fernando Perez - - * IPython/iplib.py (InteractiveShell._prefilter): fix bug where - unpacking a list whith a callable as first element would - mistakenly trigger autocalling. Thanks to a bug report by Jeffery - Collins. - -2003-08-25 *** Released version 0.5.0 - -2003-08-22 Fernando Perez - - * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of - improperly defined user exceptions. Thanks to feedback from Mark - Russell . - -2003-08-20 Fernando Perez - - * IPython/OInspect.py (Inspector.pinfo): changed String Form - printing so that it would print multi-line string forms starting - with a new line. This way the formatting is better respected for - objects which work hard to make nice string forms. - - * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where - autocall would overtake data access for objects with both - __getitem__ and __call__. - -2003-08-19 *** Released version 0.5.0-rc1 - -2003-08-19 Fernando Perez - - * IPython/deep_reload.py (load_tail): single tiny change here - seems to fix the long-standing bug of dreload() failing to work - for dotted names. But this module is pretty tricky, so I may have - missed some subtlety. Needs more testing!. - - * IPython/ultraTB.py (VerboseTB.linereader): harden against user - exceptions which have badly implemented __str__ methods. - (VerboseTB.text): harden against inspect.getinnerframes crashing, - which I've been getting reports about from Python 2.3 users. I - wish I had a simple test case to reproduce the problem, so I could - either write a cleaner workaround or file a bug report if - necessary. - - * IPython/Magic.py (Magic.magic_edit): fixed bug where after - making a class 'foo', file 'foo.py' couldn't be edited. Thanks to - a bug report by Tjabo Kloppenburg. - - * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb - crashes. Wrapped the pdb call in a blanket try/except, since pdb - seems rather unstable. Thanks to a bug report by Tjabo - Kloppenburg . - - * IPython/Release.py (version): release 0.5.0-rc1. I want to put - this out soon because of the critical fixes in the inner loop for - generators. - - * IPython/Magic.py (Magic.getargspec): removed. This (and - _get_def) have been obsoleted by OInspect for a long time, I - hadn't noticed that they were dead code. - (Magic._ofind): restored _ofind functionality for a few literals - (those in ["''",'""','[]','{}','()']). But it won't work anymore - for things like "hello".capitalize?, since that would require a - potentially dangerous eval() again. - - * IPython/iplib.py (InteractiveShell._prefilter): reorganized the - logic a bit more to clean up the escapes handling and minimize the - use of _ofind to only necessary cases. The interactive 'feel' of - IPython should have improved quite a bit with the changes in - _prefilter and _ofind (besides being far safer than before). - - * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather - obscure, never reported). Edit would fail to find the object to - edit under some circumstances. - (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls - which were causing double-calling of generators. Those eval calls - were _very_ dangerous, since code with side effects could be - triggered. As they say, 'eval is evil'... These were the - nastiest evals in IPython. Besides, _ofind is now far simpler, - and it should also be quite a bit faster. Its use of inspect is - also safer, so perhaps some of the inspect-related crashes I've - seen lately with Python 2.3 might be taken care of. That will - need more testing. - -2003-08-17 Fernando Perez - - * IPython/iplib.py (InteractiveShell._prefilter): significant - simplifications to the logic for handling user escapes. Faster - and simpler code. - -2003-08-14 Fernando Perez - - * IPython/numutils.py (sum_flat): rewrote to be non-recursive. - Now it requires O(N) storage (N=size(a)) for non-contiguous input, - but it should be quite a bit faster. And the recursive version - generated O(log N) intermediate storage for all rank>1 arrays, - even if they were contiguous. - (l1norm): Added this function. - (norm): Added this function for arbitrary norms (including - l-infinity). l1 and l2 are still special cases for convenience - and speed. - -2003-08-03 Fernando Perez - - * IPython/Magic.py (Magic.magic_edit): Removed all remaining string - exceptions, which now raise PendingDeprecationWarnings in Python - 2.3. There were some in Magic and some in Gnuplot2. - -2003-06-30 Fernando Perez - - * IPython/genutils.py (page): modified to call curses only for - terminals where TERM=='xterm'. After problems under many other - terminals were reported by Keith Beattie . - - * IPython/iplib.py (complete): removed spurious 'print "IE"' which - would be triggered when readline was absent. This was just an old - debugging statement I'd forgotten to take out. - -2003-06-20 Fernando Perez - - * IPython/genutils.py (clock): modified to return only user time - (not counting system time), after a discussion on scipy. While - system time may be a useful quantity occasionally, it may much - more easily be skewed by occasional swapping or other similar - activity. - -2003-06-05 Fernando Perez - - * IPython/numutils.py (identity): new function, for building - arbitrary rank Kronecker deltas (mostly backwards compatible with - Numeric.identity) - -2003-06-03 Fernando Perez - - * IPython/iplib.py (InteractiveShell.handle_magic): protect - arguments passed to magics with spaces, to allow trailing '\' to - work normally (mainly for Windows users). - -2003-05-29 Fernando Perez - - * IPython/ipmaker.py (make_IPython): Load site._Helper() as help - instead of pydoc.help. This fixes a bizarre behavior where - printing '%s' % locals() would trigger the help system. Now - ipython behaves like normal python does. - - Note that if one does 'from pydoc import help', the bizarre - behavior returns, but this will also happen in normal python, so - it's not an ipython bug anymore (it has to do with how pydoc.help - is implemented). - -2003-05-22 Fernando Perez - - * IPython/FlexCompleter.py (Completer.attr_matches): fixed to - return [] instead of None when nothing matches, also match to end - of line. Patch by Gary Bishop. - - * IPython/ipmaker.py (make_IPython): Added same sys.excepthook - protection as before, for files passed on the command line. This - prevents the CrashHandler from kicking in if user files call into - sys.excepthook (such as PyQt and WxWindows have a nasty habit of - doing). After a report by Kasper Souren - -2003-05-20 *** Released version 0.4.0 - -2003-05-20 Fernando Perez - - * setup.py: added support for manpages. It's a bit hackish b/c of - a bug in the way the bdist_rpm distutils target handles gzipped - manpages, but it works. After a patch by Jack. - -2003-05-19 Fernando Perez - - * IPython/numutils.py: added a mockup of the kinds module, since - it was recently removed from Numeric. This way, numutils will - work for all users even if they are missing kinds. - - * IPython/Magic.py (Magic._ofind): Harden against an inspect - failure, which can occur with SWIG-wrapped extensions. After a - crash report from Prabhu. - -2003-05-16 Fernando Perez - - * IPython/iplib.py (InteractiveShell.excepthook): New method to - protect ipython from user code which may call directly - sys.excepthook (this looks like an ipython crash to the user, even - when it isn't). After a patch by Gary Bishop . - This is especially important to help users of WxWindows, but may - also be useful in other cases. - - * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow - an optional tb_offset to be specified, and to preserve exception - info if given. After a patch by Gary Bishop . - - * ipython.1 (Default): Thanks to Jack's work, we now have manpages! - -2003-05-15 Fernando Perez - - * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when - installing for a new user under Windows. - -2003-05-12 Fernando Perez - - * IPython/iplib.py (InteractiveShell.handle_emacs): New line - handler for Emacs comint-based lines. Currently it doesn't do - much (but importantly, it doesn't update the history cache). In - the future it may be expanded if Alex needs more functionality - there. - - * IPython/CrashHandler.py (CrashHandler.__call__): Added platform - info to crash reports. - - * IPython/iplib.py (InteractiveShell.mainloop): Added -c option, - just like Python's -c. Also fixed crash with invalid -color - option value at startup. Thanks to Will French - for the bug report. - -2003-05-09 Fernando Perez - - * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString - to EvalDict (it's a mapping, after all) and simplified its code - quite a bit, after a nice discussion on c.l.py where Gustavo - Córdova suggested the new version. - -2003-04-30 Fernando Perez - - * IPython/genutils.py (timings_out): modified it to reduce its - overhead in the common reps==1 case. - -2003-04-29 Fernando Perez - - * IPython/genutils.py (timings_out): Modified to use the resource - module, which avoids the wraparound problems of time.clock(). - -2003-04-17 *** Released version 0.2.15pre4 - -2003-04-17 Fernando Perez - - * setup.py (scriptfiles): Split windows-specific stuff over to a - separate file, in an attempt to have a Windows GUI installer. - That didn't work, but part of the groundwork is done. - - * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for - indent/unindent with 4 spaces. Particularly useful in combination - with the new auto-indent option. - -2003-04-16 Fernando Perez - - * IPython/Magic.py: various replacements of self.rc for - self.shell.rc. A lot more remains to be done to fully disentangle - this class from the main Shell class. - - * IPython/GnuplotRuntime.py: added checks for mouse support so - that we don't try to enable it if the current gnuplot doesn't - really support it. Also added checks so that we don't try to - enable persist under Windows (where Gnuplot doesn't recognize the - option). - - * IPython/iplib.py (InteractiveShell.interact): Added optional - auto-indenting code, after a patch by King C. Shu - . It's off by default because it doesn't - get along well with pasting indented code. If I ever figure out - how to make that part go well, it will become on by default. - - * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would - crash ipython if there was an unmatched '%' in the user's prompt - string. Reported by Thorsten Kampe . - - * IPython/iplib.py (InteractiveShell.interact): removed the - ability to ask the user whether he wants to crash or not at the - 'last line' exception handler. Calling functions at that point - changes the stack, and the error reports would have incorrect - tracebacks. - - * IPython/Magic.py (Magic.magic_page): Added new @page magic, to - pass through a peger a pretty-printed form of any object. After a - contribution by Olivier Aubert - -2003-04-14 Fernando Perez - - * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where - all files in ~ would be modified at first install (instead of - ~/.ipython). This could be potentially disastrous, as the - modification (make line-endings native) could damage binary files. - -2003-04-10 Fernando Perez - - * IPython/iplib.py (InteractiveShell.handle_help): Modified to - handle only lines which are invalid python. This now means that - lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins - for the bug report. - -2003-04-01 Fernando Perez - - * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug - where failing to set sys.last_traceback would crash pdb.pm(). - Thanks to Jeffery D. Collins for the bug - report. - -2003-03-25 Fernando Perez - - * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler - before printing it (it had a lot of spurious blank lines at the - end). - - * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr - output would be sent 21 times! Obviously people don't use this - too often, or I would have heard about it. - -2003-03-24 Fernando Perez - - * setup.py (scriptfiles): renamed the data_files parameter from - 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink - for the patch. - -2003-03-20 Fernando Perez - - * IPython/genutils.py (error): added error() and fatal() - functions. - -2003-03-18 *** Released version 0.2.15pre3 - -2003-03-18 Fernando Perez - - * setupext/install_data_ext.py - (install_data_ext.initialize_options): Class contributed by Jack - Moffit for fixing the old distutils hack. He is sending this to - the distutils folks so in the future we may not need it as a - private fix. - - * MANIFEST.in: Extensive reorganization, based on Jack Moffit's - changes for Debian packaging. See his patch for full details. - The old distutils hack of making the ipythonrc* files carry a - bogus .py extension is gone, at last. Examples were moved to a - separate subdir under doc/, and the separate executable scripts - now live in their own directory. Overall a great cleanup. The - manual was updated to use the new files, and setup.py has been - fixed for this setup. - - * IPython/PyColorize.py (Parser.usage): made non-executable and - created a pycolor wrapper around it to be included as a script. - -2003-03-12 *** Released version 0.2.15pre2 - -2003-03-12 Fernando Perez - - * IPython/ColorANSI.py (make_color_table): Finally fixed the - long-standing problem with garbage characters in some terminals. - The issue was really that the \001 and \002 escapes must _only_ be - passed to input prompts (which call readline), but _never_ to - normal text to be printed on screen. I changed ColorANSI to have - two classes: TermColors and InputTermColors, each with the - appropriate escapes for input prompts or normal text. The code in - Prompts.py got slightly more complicated, but this very old and - annoying bug is finally fixed. - - All the credit for nailing down the real origin of this problem - and the correct solution goes to Jack Moffit . - *Many* thanks to him for spending quite a bit of effort on this. - -2003-03-05 *** Released version 0.2.15pre1 - -2003-03-03 Fernando Perez - - * IPython/FakeModule.py: Moved the former _FakeModule to a - separate file, because it's also needed by Magic (to fix a similar - pickle-related issue in @run). - -2003-03-02 Fernando Perez - - * IPython/Magic.py (Magic.magic_autocall): new magic to control - the autocall option at runtime. - (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns - across Magic.py to start separating Magic from InteractiveShell. - (Magic._ofind): Fixed to return proper namespace for dotted - names. Before, a dotted name would always return 'not currently - defined', because it would find the 'parent'. s.x would be found, - but since 'x' isn't defined by itself, it would get confused. - (Magic.magic_run): Fixed pickling problems reported by Ralf - Ahlbrink . The fix was similar to - that I'd used when Mike Heeter reported similar issues at the - top-level, but now for @run. It boils down to injecting the - namespace where code is being executed with something that looks - enough like a module to fool pickle.dump(). Since a pickle stores - a named reference to the importing module, we need this for - pickles to save something sensible. - - * IPython/ipmaker.py (make_IPython): added an autocall option. - - * IPython/iplib.py (InteractiveShell._prefilter): reordered all of - the auto-eval code. Now autocalling is an option, and the code is - also vastly safer. There is no more eval() involved at all. - -2003-03-01 Fernando Perez - - * IPython/Magic.py (Magic._ofind): Changed interface to return a - dict with named keys instead of a tuple. - - * IPython: Started using CVS for IPython as of 0.2.15pre1. - - * setup.py (make_shortcut): Fixed message about directories - created during Windows installation (the directories were ok, just - the printed message was misleading). Thanks to Chris Liechti - for the heads up. - -2003-02-21 Fernando Perez - - * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching - of ValueError exception when checking for auto-execution. This - one is raised by things like Numeric arrays arr.flat when the - array is non-contiguous. - -2003-01-31 Fernando Perez - - * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would - not return any value at all (even though the command would get - executed). - (xsys): Flush stdout right after printing the command to ensure - proper ordering of commands and command output in the total - output. - (SystemExec/xsys/bq): Switched the names of xsys/bq and - system/getoutput as defaults. The old ones are kept for - compatibility reasons, so no code which uses this library needs - changing. - -2003-01-27 *** Released version 0.2.14 - -2003-01-25 Fernando Perez - - * IPython/Magic.py (Magic.magic_edit): Fixed problem where - functions defined in previous edit sessions could not be re-edited - (because the temp files were immediately removed). Now temp files - are removed only at IPython's exit. - (Magic.magic_run): Improved @run to perform shell-like expansions - on its arguments (~users and $VARS). With this, @run becomes more - like a normal command-line. - - * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small - bugs related to embedding and cleaned up that code. A fairly - important one was the impossibility to access the global namespace - through the embedded IPython (only local variables were visible). - -2003-01-14 Fernando Perez - - * IPython/iplib.py (InteractiveShell._prefilter): Fixed - auto-calling to be a bit more conservative. Now it doesn't get - triggered if any of '!=()<>' are in the rest of the input line, to - allow comparing callables. Thanks to Alex for the heads up. - -2003-01-07 Fernando Perez - - * IPython/genutils.py (page): fixed estimation of the number of - lines in a string to be paged to simply count newlines. This - prevents over-guessing due to embedded escape sequences. A better - long-term solution would involve stripping out the control chars - for the count, but it's potentially so expensive I just don't - think it's worth doing. - -2002-12-19 *** Released version 0.2.14pre50 - -2002-12-19 Fernando Perez - - * tools/release (version): Changed release scripts to inform - Andrea and build a NEWS file with a list of recent changes. - - * IPython/ColorANSI.py (__all__): changed terminal detection - code. Seems to work better for xterms without breaking - konsole. Will need more testing to determine if WinXP and Mac OSX - also work ok. - -2002-12-18 *** Released version 0.2.14pre49 - -2002-12-18 Fernando Perez - - * Docs: added new info about Mac OSX, from Andrea. - - * IPython/Gnuplot2.py (String): Added a String PlotItem class to - allow direct plotting of python strings whose format is the same - of gnuplot data files. - -2002-12-16 Fernando Perez - - * IPython/iplib.py (InteractiveShell.interact): fixed default (y) - value of exit question to be acknowledged. - -2002-12-03 Fernando Perez - - * IPython/ipmaker.py: removed generators, which had been added - by mistake in an earlier debugging run. This was causing trouble - to users of python 2.1.x. Thanks to Abel Daniel - for pointing this out. - -2002-11-17 Fernando Perez - - * Manual: updated the Gnuplot section. - - * IPython/GnuplotRuntime.py: refactored a lot all this code, with - a much better split of what goes in Runtime and what goes in - Interactive. - - * IPython/ipmaker.py: fixed bug where import_fail_info wasn't - being imported from iplib. - - * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc - for command-passing. Now the global Gnuplot instance is called - 'gp' instead of 'g', which was really a far too fragile and - common name. - - * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken - bounding boxes generated by Gnuplot for square plots. - - * IPython/genutils.py (popkey): new function added. I should - suggest this on c.l.py as a dict method, it seems useful. - - * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot - to transparently handle PostScript generation. MUCH better than - the previous plot_eps/replot_eps (which I removed now). The code - is also fairly clean and well documented now (including - docstrings). - -2002-11-13 Fernando Perez - - * IPython/Magic.py (Magic.magic_edit): fixed docstring - (inconsistent with options). - - * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been - manually disabled, I don't know why. Fixed it. - (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly - eps output. - -2002-11-12 Fernando Perez - - * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they - don't propagate up to caller. Fixes crash reported by François - Pinard. - -2002-11-09 Fernando Perez - - * IPython/ipmaker.py (make_IPython): fixed problem with writing - history file for new users. - (make_IPython): fixed bug where initial install would leave the - user running in the .ipython dir. - (make_IPython): fixed bug where config dir .ipython would be - created regardless of the given -ipythondir option. Thanks to Cory - Dodt for the bug report. - - * IPython/genutils.py (ask_yes_no): new function for asking yes/no - type confirmations. Will need to use it in all of IPython's code - consistently. - - * IPython/CrashHandler.py (CrashHandler.__call__): changed the - context to print 31 lines instead of the default 5. This will make - the crash reports extremely detailed in case the problem is in - libraries I don't have access to. - - * IPython/iplib.py (InteractiveShell.interact): changed the 'last - line of defense' code to still crash, but giving users fair - warning. I don't want internal errors to go unreported: if there's - an internal problem, IPython should crash and generate a full - report. - -2002-11-08 Fernando Perez - - * IPython/iplib.py (InteractiveShell.interact): added code to trap - otherwise uncaught exceptions which can appear if people set - sys.stdout to something badly broken. Thanks to a crash report - from henni-AT-mail.brainbot.com. - -2002-11-04 Fernando Perez - - * IPython/iplib.py (InteractiveShell.interact): added - __IPYTHON__active to the builtins. It's a flag which goes on when - the interaction starts and goes off again when it stops. This - allows embedding code to detect being inside IPython. Before this - was done via __IPYTHON__, but that only shows that an IPython - instance has been created. - - * IPython/Magic.py (Magic.magic_env): I realized that in a - UserDict, instance.data holds the data as a normal dict. So I - modified @env to return os.environ.data instead of rebuilding a - dict by hand. - -2002-11-02 Fernando Perez - - * IPython/genutils.py (warn): changed so that level 1 prints no - header. Level 2 is now the default (with 'WARNING' header, as - before). I think I tracked all places where changes were needed in - IPython, but outside code using the old level numbering may have - broken. - - * IPython/iplib.py (InteractiveShell.runcode): added this to - handle the tracebacks in SystemExit traps correctly. The previous - code (through interact) was printing more of the stack than - necessary, showing IPython internal code to the user. - - * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by - default. Now that the default at the confirmation prompt is yes, - it's not so intrusive. François' argument that ipython sessions - tend to be complex enough not to lose them from an accidental C-d, - is a valid one. - - * IPython/iplib.py (InteractiveShell.interact): added a - showtraceback() call to the SystemExit trap, and modified the exit - confirmation to have yes as the default. - - * IPython/UserConfig/ipythonrc.py: removed 'session' option from - this file. It's been gone from the code for a long time, this was - simply leftover junk. - -2002-11-01 Fernando Perez - - * IPython/UserConfig/ipythonrc.py: new confirm_exit option - added. If set, IPython now traps EOF and asks for - confirmation. After a request by François Pinard. - - * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead - of @abort, and with a new (better) mechanism for handling the - exceptions. - -2002-10-27 Fernando Perez - - * IPython/usage.py (__doc__): updated the --help information and - the ipythonrc file to indicate that -log generates - ./ipython.log. Also fixed the corresponding info in @logstart. - This and several other fixes in the manuals thanks to reports by - François Pinard . - - * IPython/Logger.py (Logger.switch_log): Fixed error message to - refer to @logstart (instead of @log, which doesn't exist). - - * IPython/iplib.py (InteractiveShell._prefilter): fixed - AttributeError crash. Thanks to Christopher Armstrong - for the report/fix. This bug had been - introduced recently (in 0.2.14pre37) with the fix to the eval - problem mentioned below. - -2002-10-17 Fernando Perez - - * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows - installation. Thanks to Leonardo Santagada . - - * IPython/iplib.py (InteractiveShell._prefilter): Many changes to - this function to fix a problem reported by Alex Schmolck. He saw - it with list comprehensions and generators, which were getting - called twice. The real problem was an 'eval' call in testing for - automagic which was evaluating the input line silently. - - This is a potentially very nasty bug, if the input has side - effects which must not be repeated. The code is much cleaner now, - without any blanket 'except' left and with a regexp test for - actual function names. - - But an eval remains, which I'm not fully comfortable with. I just - don't know how to find out if an expression could be a callable in - the user's namespace without doing an eval on the string. However - that string is now much more strictly checked so that no code - slips by, so the eval should only happen for things that can - really be only function/method names. - -2002-10-15 Fernando Perez - - * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac - OSX information to main manual, removed README_Mac_OSX file from - distribution. Also updated credits for recent additions. - -2002-10-10 Fernando Perez - - * README_Mac_OSX: Added a README for Mac OSX users for fixing - terminal-related issues. Many thanks to Andrea Riciputi - for writing it. - - * IPython/UserConfig/ipythonrc.py: Fixes to various small issues, - thanks to Thorsten Kampe . - - * setup.py (make_shortcut): Fixes for Windows installation. Thanks - to Fredrik Kant and Syver Enstad - who both submitted patches for this problem. - - * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for - global embedding to make sure that things don't overwrite user - globals accidentally. Thanks to Richard - - * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6 - compatibility. Thanks to Hayden Callow - - -2002-10-04 Fernando Perez - - * IPython/Gnuplot2.py (PlotItem): Added 'index' option for - Gnuplot.File objects. - -2002-07-23 Fernando Perez - - * IPython/genutils.py (timing): Added timings() and timing() for - quick access to the most commonly needed data, the execution - times. Old timing() renamed to timings_out(). - -2002-07-18 Fernando Perez - - * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed - bug with nested instances disrupting the parent's tab completion. - - * IPython/iplib.py (all_completions): Added Alex Schmolck's - all_completions code to begin the emacs integration. - - * IPython/Gnuplot2.py (zip_items): Added optional 'titles' - argument to allow titling individual arrays when plotting. - -2002-07-15 Fernando Perez - - * setup.py (make_shortcut): changed to retrieve the value of - 'Program Files' directory from the registry (this value changes in - non-english versions of Windows). Thanks to Thomas Fanslau - for the report. - -2002-07-10 Fernando Perez - - * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for - a bug in pdb, which crashes if a line with only whitespace is - entered. Bug report submitted to sourceforge. - -2002-07-09 Fernando Perez - - * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when - reporting exceptions (it's a bug in inspect.py, I just set a - workaround). - -2002-07-08 Fernando Perez - - * IPython/iplib.py (InteractiveShell.__init__): fixed reference to - __IPYTHON__ in __builtins__ to show up in user_ns. - -2002-07-03 Fernando Perez - - * IPython/GnuplotInteractive.py (magic_gp_set_default): changed - name from @gp_set_instance to @gp_set_default. - - * IPython/ipmaker.py (make_IPython): default editor value set to - '0' (a string), to match the rc file. Otherwise will crash when - .strip() is called on it. - - -2002-06-28 Fernando Perez - - * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing - of files in current directory when a file is executed via - @run. Patch also by RA . - - * setup.py (manfiles): fix for rpm builds, submitted by RA - . Now we have RPMs! - - * IPython/ipmaker.py (make_IPython): fixed lookup of default - editor when set to '0'. Problem was, '0' evaluates to True (it's a - string!). A. Schmolck caught this one. - -2002-06-27 Fernando Perez - - * IPython/ipmaker.py (make_IPython): fixed bug when running user - defined files at the cmd line. __name__ wasn't being set to - __main__. - - * IPython/Gnuplot2.py (zip_items): improved it so it can plot also - regular lists and tuples besides Numeric arrays. - - * IPython/Prompts.py (CachedOutput.__call__): Added output - supression for input ending with ';'. Similar to Mathematica and - Matlab. The _* vars and Out[] list are still updated, just like - Mathematica behaves. - -2002-06-25 Fernando Perez - - * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of - .ini extensions for profiels under Windows. - - * IPython/OInspect.py (Inspector.pinfo): improved alignment of - string form. Fix contributed by Alexander Schmolck - - - * IPython/GnuplotRuntime.py (gp_new): new function. Returns a - pre-configured Gnuplot instance. - -2002-06-21 Fernando Perez - - * IPython/numutils.py (exp_safe): new function, works around the - underflow problems in Numeric. - (log2): New fn. Safe log in base 2: returns exact integer answer - for exact integer powers of 2. - - * IPython/Magic.py (get_py_filename): fixed it not expanding '~' - properly. - -2002-06-20 Fernando Perez - - * IPython/genutils.py (timing): new function like - Mathematica's. Similar to time_test, but returns more info. - -2002-06-18 Fernando Perez - - * IPython/Magic.py (Magic.magic_save): modified @save and @r - according to Mike Heeter's suggestions. - -2002-06-16 Fernando Perez - - * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot - system. GnuplotMagic is gone as a user-directory option. New files - make it easier to use all the gnuplot stuff both from external - programs as well as from IPython. Had to rewrite part of - hardcopy() b/c of a strange bug: often the ps files simply don't - get created, and require a repeat of the command (often several - times). - - * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to - resolve output channel at call time, so that if sys.stderr has - been redirected by user this gets honored. - -2002-06-13 Fernando Perez - - * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to - IPShell. Kept a copy with the old names to avoid breaking people's - embedded code. - - * IPython/ipython: simplified it to the bare minimum after - Holger's suggestions. Added info about how to use it in - PYTHONSTARTUP. - - * IPython/Shell.py (IPythonShell): changed the options passing - from a string with funky %s replacements to a straight list. Maybe - a bit more typing, but it follows sys.argv conventions, so there's - less special-casing to remember. - -2002-06-12 Fernando Perez - - * IPython/Magic.py (Magic.magic_r): new magic auto-repeat - command. Thanks to a suggestion by Mike Heeter. - (Magic.magic_pfile): added behavior to look at filenames if given - arg is not a defined object. - (Magic.magic_save): New @save function to save code snippets. Also - a Mike Heeter idea. - - * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to - plot() and replot(). Much more convenient now, especially for - interactive use. - - * IPython/Magic.py (Magic.magic_run): Added .py automatically to - filenames. - -2002-06-02 Fernando Perez - - * IPython/Struct.py (Struct.__init__): modified to admit - initialization via another struct. - - * IPython/genutils.py (SystemExec.__init__): New stateful - interface to xsys and bq. Useful for writing system scripts. - -2002-05-30 Fernando Perez - - * MANIFEST.in: Changed docfile selection to exclude all the lyx - documents. This will make the user download smaller (it's getting - too big). - -2002-05-29 Fernando Perez - - * IPython/iplib.py (_FakeModule.__init__): New class introduced to - fix problems with shelve and pickle. Seems to work, but I don't - know if corner cases break it. Thanks to Mike Heeter - for the bug reports and test cases. - -2002-05-24 Fernando Perez - - * IPython/Magic.py (Macro.__init__): fixed magics embedded in - macros having broken. - -2002-05-21 Fernando Perez - - * IPython/Magic.py (Magic.magic_logstart): fixed recently - introduced logging bug: all history before logging started was - being written one character per line! This came from the redesign - of the input history as a special list which slices to strings, - not to lists. - -2002-05-20 Fernando Perez - - * IPython/Prompts.py (CachedOutput.__init__): made the color table - be an attribute of all classes in this module. The design of these - classes needs some serious overhauling. - - * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug - which was ignoring '_' in option names. - - * IPython/ultraTB.py (FormattedTB.__init__): Changed - 'Verbose_novars' to 'Context' and made it the new default. It's a - bit more readable and also safer than verbose. - - * IPython/PyColorize.py (Parser.__call__): Fixed coloring of - triple-quoted strings. - - * IPython/OInspect.py (__all__): new module exposing the object - introspection facilities. Now the corresponding magics are dummy - wrappers around this. Having this module will make it much easier - to put these functions into our modified pdb. - This new object inspector system uses the new colorizing module, - so source code and other things are nicely syntax highlighted. - -2002-05-18 Fernando Perez - - * IPython/ColorANSI.py: Split the coloring tools into a separate - module so I can use them in other code easier (they were part of - ultraTB). - -2002-05-17 Fernando Perez - - * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance): - fixed it to set the global 'g' also to the called instance, as - long as 'g' was still a gnuplot instance (so it doesn't overwrite - user's 'g' variables). - - * IPython/iplib.py (InteractiveShell.__init__): Added In/Out - global variables (aliases to _ih,_oh) so that users which expect - In[5] or Out[7] to work aren't unpleasantly surprised. - (InputList.__getslice__): new class to allow executing slices of - input history directly. Very simple class, complements the use of - macros. - -2002-05-16 Fernando Perez - - * setup.py (docdirbase): make doc directory be just doc/IPython - without version numbers, it will reduce clutter for users. - - * IPython/Magic.py (Magic.magic_run): Add explicit local dict to - execfile call to prevent possible memory leak. See for details: - http://mail.python.org/pipermail/python-list/2002-February/088476.html - -2002-05-15 Fernando Perez - - * IPython/Magic.py (Magic.magic_psource): made the object - introspection names be more standard: pdoc, pdef, pfile and - psource. They all print/page their output, and it makes - remembering them easier. Kept old names for compatibility as - aliases. - -2002-05-14 Fernando Perez - - * IPython/UserConfig/GnuplotMagic.py: I think I finally understood - what the mouse problem was. The trick is to use gnuplot with temp - files and NOT with pipes (for data communication), because having - both pipes and the mouse on is bad news. - -2002-05-13 Fernando Perez - - * IPython/Magic.py (Magic._ofind): fixed namespace order search - bug. Information would be reported about builtins even when - user-defined functions overrode them. - -2002-05-11 Fernando Perez - - * IPython/__init__.py (__all__): removed FlexCompleter from - __all__ so that things don't fail in platforms without readline. - -2002-05-10 Fernando Perez - - * IPython/__init__.py (__all__): removed numutils from __all__ b/c - it requires Numeric, effectively making Numeric a dependency for - IPython. - - * Released 0.2.13 - - * IPython/Magic.py (Magic.magic_prun): big overhaul to the - profiler interface. Now all the major options from the profiler - module are directly supported in IPython, both for single - expressions (@prun) and for full programs (@run -p). - -2002-05-09 Fernando Perez - - * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of - magic properly formatted for screen. - - * setup.py (make_shortcut): Changed things to put pdf version in - doc/ instead of doc/manual (had to change lyxport a bit). - - * IPython/Magic.py (Profile.string_stats): made profile runs go - through pager (they are long and a pager allows searching, saving, - etc.) - -2002-05-08 Fernando Perez - - * Released 0.2.12 - -2002-05-06 Fernando Perez - - * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently - introduced); 'hist n1 n2' was broken. - (Magic.magic_pdb): added optional on/off arguments to @pdb - (Magic.magic_run): added option -i to @run, which executes code in - the IPython namespace instead of a clean one. Also added @irun as - an alias to @run -i. - - * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance): - fixed (it didn't really do anything, the namespaces were wrong). - - * IPython/Debugger.py (__init__): Added workaround for python 2.1 - - * IPython/__init__.py (__all__): Fixed package namespace, now - 'import IPython' does give access to IPython. as - expected. Also renamed __release__ to Release. - - * IPython/Debugger.py (__license__): created new Pdb class which - functions like a drop-in for the normal pdb.Pdb but does NOT - import readline by default. This way it doesn't muck up IPython's - readline handling, and now tab-completion finally works in the - debugger -- sort of. It completes things globally visible, but the - completer doesn't track the stack as pdb walks it. That's a bit - tricky, and I'll have to implement it later. - -2002-05-05 Fernando Perez - - * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for - magic docstrings when printed via ? (explicit \'s were being - printed). - - * IPython/ipmaker.py (make_IPython): fixed namespace - identification bug. Now variables loaded via logs or command-line - files are recognized in the interactive namespace by @who. - - * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in - log replay system stemming from the string form of Structs. - - * IPython/Magic.py (Macro.__init__): improved macros to properly - handle magic commands in them. - (Magic.magic_logstart): usernames are now expanded so 'logstart - ~/mylog' now works. - - * IPython/iplib.py (complete): fixed bug where paths starting with - '/' would be completed as magic names. - -2002-05-04 Fernando Perez - - * IPython/Magic.py (Magic.magic_run): added options -p and -f to - allow running full programs under the profiler's control. - - * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars - mode to report exceptions verbosely but without formatting - variables. This addresses the issue of ipython 'freezing' (it's - not frozen, but caught in an expensive formatting loop) when huge - variables are in the context of an exception. - (VerboseTB.text): Added '--->' markers at line where exception was - triggered. Much clearer to read, especially in NoColor modes. - - * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been - implemented in reverse when changing to the new parse_options(). - -2002-05-03 Fernando Perez - - * IPython/Magic.py (Magic.parse_options): new function so that - magics can parse options easier. - (Magic.magic_prun): new function similar to profile.run(), - suggested by Chris Hart. - (Magic.magic_cd): fixed behavior so that it only changes if - directory actually is in history. - - * IPython/usage.py (__doc__): added information about potential - slowness of Verbose exception mode when there are huge data - structures to be formatted (thanks to Archie Paulson). - - * IPython/ipmaker.py (make_IPython): Changed default logging - (when simply called with -log) to use curr_dir/ipython.log in - rotate mode. Fixed crash which was occuring with -log before - (thanks to Jim Boyle). - -2002-05-01 Fernando Perez - - * Released 0.2.11 for these fixes (mainly the ultraTB one which - was nasty -- though somewhat of a corner case). - - * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to - text (was a bug). - -2002-04-30 Fernando Perez - - * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add - a print after ^D or ^C from the user so that the In[] prompt - doesn't over-run the gnuplot one. - -2002-04-29 Fernando Perez - - * Released 0.2.10 - - * IPython/__release__.py (version): get date dynamically. - - * Misc. documentation updates thanks to Arnd's comments. Also ran - a full spellcheck on the manual (hadn't been done in a while). - -2002-04-27 Fernando Perez - - * IPython/Magic.py (Magic.magic_logstart): Fixed bug where - starting a log in mid-session would reset the input history list. - -2002-04-26 Fernando Perez - - * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not - all files were being included in an update. Now anything in - UserConfig that matches [A-Za-z]*.py will go (this excludes - __init__.py) - -2002-04-25 Fernando Perez - - * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__ - to __builtins__ so that any form of embedded or imported code can - test for being inside IPython. - - * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance): - changed to GnuplotMagic because it's now an importable module, - this makes the name follow that of the standard Gnuplot module. - GnuplotMagic can now be loaded at any time in mid-session. - -2002-04-24 Fernando Perez - - * IPython/numutils.py: removed SIUnits. It doesn't properly set - the globals (IPython has its own namespace) and the - PhysicalQuantity stuff is much better anyway. - - * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot - embedding example to standard user directory for - distribution. Also put it in the manual. - - * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot - instance as first argument (so it doesn't rely on some obscure - hidden global). - - * IPython/UserConfig/ipythonrc.py: put () back in accepted - delimiters. While it prevents ().TAB from working, it allows - completions in open (... expressions. This is by far a more common - case. - -2002-04-23 Fernando Perez - - * IPython/Extensions/InterpreterPasteInput.py: new - syntax-processing module for pasting lines with >>> or ... at the - start. - - * IPython/Extensions/PhysicalQ_Interactive.py - (PhysicalQuantityInteractive.__int__): fixed to work with either - Numeric or math. - - * IPython/UserConfig/ipythonrc-numeric.py: reorganized the - provided profiles. Now we have: - -math -> math module as * and cmath with its own namespace. - -numeric -> Numeric as *, plus gnuplot & grace - -physics -> same as before - - * IPython/Magic.py (Magic.magic_magic): Fixed bug where - user-defined magics wouldn't be found by @magic if they were - defined as class methods. Also cleaned up the namespace search - logic and the string building (to use %s instead of many repeated - string adds). - - * IPython/UserConfig/example-magic.py (magic_foo): updated example - of user-defined magics to operate with class methods (cleaner, in - line with the gnuplot code). - -2002-04-22 Fernando Perez - - * setup.py: updated dependency list so that manual is updated when - all included files change. - - * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring - the delimiter removal option (the fix is ugly right now). - - * IPython/UserConfig/ipythonrc-physics.py: simplified not to load - all of the math profile (quicker loading, no conflict between - g-9.8 and g-gnuplot). - - * IPython/CrashHandler.py (CrashHandler.__call__): changed default - name of post-mortem files to IPython_crash_report.txt. - - * Cleanup/update of the docs. Added all the new readline info and - formatted all lists as 'real lists'. - - * IPython/ipmaker.py (make_IPython): removed now-obsolete - tab-completion options, since the full readline parse_and_bind is - now accessible. - - * IPython/iplib.py (InteractiveShell.init_readline): Changed - handling of readline options. Now users can specify any string to - be passed to parse_and_bind(), as well as the delimiters to be - removed. - (InteractiveShell.__init__): Added __name__ to the global - namespace so that things like Itpl which rely on its existence - don't crash. - (InteractiveShell._prefilter): Defined the default with a _ so - that prefilter() is easier to override, while the default one - remains available. - -2002-04-18 Fernando Perez - - * Added information about pdb in the docs. - -2002-04-17 Fernando Perez - - * IPython/ipmaker.py (make_IPython): added rc_override option to - allow passing config options at creation time which may override - anything set in the config files or command line. This is - particularly useful for configuring embedded instances. - -2002-04-15 Fernando Perez - - * IPython/Logger.py (Logger.log): Fixed a nasty bug which could - crash embedded instances because of the input cache falling out of - sync with the output counter. - - * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug - mode which calls pdb after an uncaught exception in IPython itself. - -2002-04-14 Fernando Perez - - * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up - readline, fix it back after each call. - - * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private - method to force all access via __call__(), which guarantees that - traceback references are properly deleted. - - * IPython/Prompts.py (CachedOutput._display): minor fixes to - improve printing when pprint is in use. - -2002-04-13 Fernando Perez - - * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit - exceptions aren't caught anymore. If the user triggers one, he - should know why he's doing it and it should go all the way up, - just like any other exception. So now @abort will fully kill the - embedded interpreter and the embedding code (unless that happens - to catch SystemExit). - - * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag - and a debugger() method to invoke the interactive pdb debugger - after printing exception information. Also added the corresponding - -pdb option and @pdb magic to control this feature, and updated - the docs. After a suggestion from Christopher Hart - (hart-AT-caltech.edu). - -2002-04-12 Fernando Perez - - * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use - the exception handlers defined by the user (not the CrashHandler) - so that user exceptions don't trigger an ipython bug report. - - * IPython/ultraTB.py (ColorTB.__init__): made the color scheme - configurable (it should have always been so). - -2002-03-26 Fernando Perez - - * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here - and there to fix embedding namespace issues. This should all be - done in a more elegant way. - -2002-03-25 Fernando Perez - - * IPython/genutils.py (get_home_dir): Try to make it work under - win9x also. - -2002-03-20 Fernando Perez - - * IPython/Shell.py (IPythonShellEmbed.__init__): leave - sys.displayhook untouched upon __init__. - -2002-03-19 Fernando Perez - - * Released 0.2.9 (for embedding bug, basically). - - * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit - exceptions so that enclosing shell's state can be restored. - - * Changed magic_gnuplot.py to magic-gnuplot.py to standardize - naming conventions in the .ipython/ dir. - - * IPython/iplib.py (InteractiveShell.init_readline): removed '-' - from delimiters list so filenames with - in them get expanded. - - * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with - sys.displayhook not being properly restored after an embedded call. - - 2002-03-18 Fernando Perez - - * Released 0.2.8 - - * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where - some files weren't being included in a -upgrade. - (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous - on' so that the first tab completes. - (InteractiveShell.handle_magic): fixed bug with spaces around - quotes breaking many magic commands. - - * setup.py: added note about ignoring the syntax error messages at - installation. - - * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished - streamlining the gnuplot interface, now there's only one magic @gp. - -2002-03-17 Fernando Perez - - * IPython/UserConfig/magic_gnuplot.py: new name for the - example-magic_pm.py file. Much enhanced system, now with a shell - for communicating directly with gnuplot, one command at a time. - - * IPython/Magic.py (Magic.magic_run): added option -n to prevent - setting __name__=='__main__'. - - * IPython/UserConfig/example-magic_pm.py (magic_pm): Added - mini-shell for accessing gnuplot from inside ipython. Should - extend it later for grace access too. Inspired by Arnd's - suggestion. - - * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when - calling magic functions with () in their arguments. Thanks to Arnd - Baecker for pointing this to me. - - * IPython/numutils.py (sum_flat): fixed bug. Would recurse - infinitely for integer or complex arrays (only worked with floats). - -2002-03-16 Fernando Perez - - * setup.py: Merged setup and setup_windows into a single script - which properly handles things for windows users. - -2002-03-15 Fernando Perez - - * Big change to the manual: now the magics are all automatically - documented. This information is generated from their docstrings - and put in a latex file included by the manual lyx file. This way - we get always up to date information for the magics. The manual - now also has proper version information, also auto-synced. - - For this to work, an undocumented --magic_docstrings option was added. - -2002-03-13 Fernando Perez - - * IPython/ultraTB.py (TermColors): fixed problem with dark colors - under CDE terminals. An explicit ;2 color reset is needed in the escapes. - -2002-03-12 Fernando Perez - - * IPython/ultraTB.py (TermColors): changed color escapes again to - fix the (old, reintroduced) line-wrapping bug. Basically, if - \001..\002 aren't given in the color escapes, lines get wrapped - weirdly. But giving those screws up old xterms and emacs terms. So - I added some logic for emacs terms to be ok, but I can't identify old - xterms separately ($TERM=='xterm' for many terminals, like konsole). - -2002-03-10 Fernando Perez - - * IPython/usage.py (__doc__): Various documentation cleanups and - updates, both in usage docstrings and in the manual. - - * IPython/Prompts.py (CachedOutput.set_colors): cleanups for - handling of caching. Set minimum acceptabe value for having a - cache at 20 values. - - * IPython/iplib.py (InteractiveShell.user_setup): moved the - install_first_time function to a method, renamed it and added an - 'upgrade' mode. Now people can update their config directory with - a simple command line switch (-upgrade, also new). - - * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to - @file (convenient for automagic users under Python >= 2.2). - Removed @files (it seemed more like a plural than an abbrev. of - 'file show'). - - * IPython/iplib.py (install_first_time): Fixed crash if there were - backup files ('~') in .ipython/ install directory. - - * IPython/ipmaker.py (make_IPython): fixes for new prompt - system. Things look fine, but these changes are fairly - intrusive. Test them for a few days. - - * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of - the prompts system. Now all in/out prompt strings are user - controllable. This is particularly useful for embedding, as one - can tag embedded instances with particular prompts. - - Also removed global use of sys.ps1/2, which now allows nested - embeddings without any problems. Added command-line options for - the prompt strings. - -2002-03-08 Fernando Perez - - * IPython/UserConfig/example-embed-short.py (ipshell): added - example file with the bare minimum code for embedding. - - * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added - functionality for the embeddable shell to be activated/deactivated - either globally or at each call. - - * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of - rewriting the prompt with '--->' for auto-inputs with proper - coloring. Now the previous UGLY hack in handle_auto() is gone, and - this is handled by the prompts class itself, as it should. - -2002-03-05 Fernando Perez - - * IPython/Magic.py (Magic.magic_logstart): Changed @log to - @logstart to avoid name clashes with the math log function. - - * Big updates to X/Emacs section of the manual. - - * Removed ipython_emacs. Milan explained to me how to pass - arguments to ipython through Emacs. Some day I'm going to end up - learning some lisp... - -2002-03-04 Fernando Perez - - * IPython/ipython_emacs: Created script to be used as the - py-python-command Emacs variable so we can pass IPython - parameters. I can't figure out how to tell Emacs directly to pass - parameters to IPython, so a dummy shell script will do it. - - Other enhancements made for things to work better under Emacs' - various types of terminals. Many thanks to Milan Zamazal - for all the suggestions and pointers. - -2002-03-01 Fernando Perez - - * IPython/ipmaker.py (make_IPython): added a --readline! option so - that loading of readline is now optional. This gives better - control to emacs users. - - * IPython/ultraTB.py (__date__): Modified color escape sequences - and now things work fine under xterm and in Emacs' term buffers - (though not shell ones). Well, in emacs you get colors, but all - seem to be 'light' colors (no difference between dark and light - ones). But the garbage chars are gone, and also in xterms. It - seems that now I'm using 'cleaner' ansi sequences. - -2002-02-21 Fernando Perez - - * Released 0.2.7 (mainly to publish the scoping fix). - - * IPython/Logger.py (Logger.logstate): added. A corresponding - @logstate magic was created. - - * IPython/Magic.py: fixed nested scoping problem under Python - 2.1.x (automagic wasn't working). - -2002-02-20 Fernando Perez - - * Released 0.2.6. - - * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet' - option so that logs can come out without any headers at all. - - * IPython/UserConfig/ipythonrc-scipy.py: created a profile for - SciPy. - - * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so - that embedded IPython calls don't require vars() to be explicitly - passed. Now they are extracted from the caller's frame (code - snatched from Eric Jones' weave). Added better documentation to - the section on embedding and the example file. - - * IPython/genutils.py (page): Changed so that under emacs, it just - prints the string. You can then page up and down in the emacs - buffer itself. This is how the builtin help() works. - - * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with - macro scoping: macros need to be executed in the user's namespace - to work as if they had been typed by the user. - - * IPython/Magic.py (Magic.magic_macro): Changed macros so they - execute automatically (no need to type 'exec...'). They then - behave like 'true macros'. The printing system was also modified - for this to work. - -2002-02-19 Fernando Perez - - * IPython/genutils.py (page_file): new function for paging files - in an OS-independent way. Also necessary for file viewing to work - well inside Emacs buffers. - (page): Added checks for being in an emacs buffer. - (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed - same bug in iplib. - -2002-02-18 Fernando Perez - - * IPython/iplib.py (InteractiveShell.init_readline): modified use - of readline so that IPython can work inside an Emacs buffer. - - * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to - method signatures (they weren't really bugs, but it looks cleaner - and keeps PyChecker happy). - - * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP - for implementing various user-defined hooks. Currently only - display is done. - - * IPython/Prompts.py (CachedOutput._display): changed display - functions so that they can be dynamically changed by users easily. - - * IPython/Extensions/numeric_formats.py (num_display): added an - extension for printing NumPy arrays in flexible manners. It - doesn't do anything yet, but all the structure is in - place. Ultimately the plan is to implement output format control - like in Octave. - - * IPython/Magic.py (Magic.lsmagic): changed so that bound magic - methods are found at run-time by all the automatic machinery. - -2002-02-17 Fernando Perez - - * setup_Windows.py (make_shortcut): documented. Cleaned up the - whole file a little. - - * ToDo: closed this document. Now there's a new_design.lyx - document for all new ideas. Added making a pdf of it for the - end-user distro. - - * IPython/Logger.py (Logger.switch_log): Created this to replace - logon() and logoff(). It also fixes a nasty crash reported by - Philip Hisley . Many thanks to him. - - * IPython/iplib.py (complete): got auto-completion to work with - automagic (I had wanted this for a long time). - - * IPython/Magic.py (Magic.magic_files): Added @files as an alias - to @file, since file() is now a builtin and clashes with automagic - for @file. - - * Made some new files: Prompts, CrashHandler, Magic, Logger. All - of this was previously in iplib, which had grown to more than 2000 - lines, way too long. No new functionality, but it makes managing - the code a bit easier. - - * IPython/iplib.py (IPythonCrashHandler.__call__): Added version - information to crash reports. - -2002-02-12 Fernando Perez - - * Released 0.2.5. - -2002-02-11 Fernando Perez - - * Wrote a relatively complete Windows installer. It puts - everything in place, creates Start Menu entries and fixes the - color issues. Nothing fancy, but it works. - -2002-02-10 Fernando Perez - - * IPython/iplib.py (InteractiveShell.safe_execfile): added an - os.path.expanduser() call so that we can type @run ~/myfile.py and - have thigs work as expected. - - * IPython/genutils.py (page): fixed exception handling so things - work both in Unix and Windows correctly. Quitting a pager triggers - an IOError/broken pipe in Unix, and in windows not finding a pager - is also an IOError, so I had to actually look at the return value - of the exception, not just the exception itself. Should be ok now. - - * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme): - modified to allow case-insensitive color scheme changes. - -2002-02-09 Fernando Perez - - * IPython/genutils.py (native_line_ends): new function to leave - user config files with os-native line-endings. - - * README and manual updates. - - * IPython/genutils.py: fixed unicode bug: use types.StringTypes - instead of StringType to catch Unicode strings. - - * IPython/genutils.py (filefind): fixed bug for paths with - embedded spaces (very common in Windows). - - * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc - files under Windows, so that they get automatically associated - with a text editor. Windows makes it a pain to handle - extension-less files. - - * IPython/iplib.py (InteractiveShell.init_readline): Made the - warning about readline only occur for Posix. In Windows there's no - way to get readline, so why bother with the warning. - - * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__ - for __str__ instead of dir(self), since dir() changed in 2.2. - - * Ported to Windows! Tested on XP, I suspect it should work fine - on NT/2000, but I don't think it will work on 98 et al. That - series of Windows is such a piece of junk anyway that I won't try - porting it there. The XP port was straightforward, showed a few - bugs here and there (fixed all), in particular some string - handling stuff which required considering Unicode strings (which - Windows uses). This is good, but hasn't been too tested :) No - fancy installer yet, I'll put a note in the manual so people at - least make manually a shortcut. - - * IPython/iplib.py (Magic.magic_colors): Unified the color options - into a single one, "colors". This now controls both prompt and - exception color schemes, and can be changed both at startup - (either via command-line switches or via ipythonrc files) and at - runtime, with @colors. - (Magic.magic_run): renamed @prun to @run and removed the old - @run. The two were too similar to warrant keeping both. - -2002-02-03 Fernando Perez - - * IPython/iplib.py (install_first_time): Added comment on how to - configure the color options for first-time users. Put a - request at the end so that small-terminal users get a chance to - read the startup info. - -2002-01-23 Fernando Perez - - * IPython/iplib.py (CachedOutput.update): Changed output memory - variable names from _o,_oo,_ooo,_o to simply _,__,___,_. For - input history we still use _i. Did this b/c these variable are - very commonly used in interactive work, so the less we need to - type the better off we are. - (Magic.magic_prun): updated @prun to better handle the namespaces - the file will run in, including a fix for __name__ not being set - before. - -2002-01-20 Fernando Perez - - * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of - extra garbage for Python 2.2. Need to look more carefully into - this later. - -2002-01-19 Fernando Perez - - * IPython/iplib.py (InteractiveShell.showtraceback): fixed to - display SyntaxError exceptions properly formatted when they occur - (they can be triggered by imported code). - -2002-01-18 Fernando Perez - - * IPython/iplib.py (InteractiveShell.safe_execfile): now - SyntaxError exceptions are reported nicely formatted, instead of - spitting out only offset information as before. - (Magic.magic_prun): Added the @prun function for executing - programs with command line args inside IPython. - -2002-01-16 Fernando Perez - - * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist - to *not* include the last item given in a range. This brings their - behavior in line with Python's slicing: - a[n1:n2] -> a[n1]...a[n2-1] - It may be a bit less convenient, but I prefer to stick to Python's - conventions *everywhere*, so users never have to wonder. - (Magic.magic_macro): Added @macro function to ease the creation of - macros. - -2002-01-05 Fernando Perez - - * Released 0.2.4. - - * IPython/iplib.py (Magic.magic_pdef): - (InteractiveShell.safe_execfile): report magic lines and error - lines without line numbers so one can easily copy/paste them for - re-execution. - - * Updated manual with recent changes. - - * IPython/iplib.py (Magic.magic_oinfo): added constructor - docstring printing when class? is called. Very handy for knowing - how to create class instances (as long as __init__ is well - documented, of course :) - (Magic.magic_doc): print both class and constructor docstrings. - (Magic.magic_pdef): give constructor info if passed a class and - __call__ info for callable object instances. - -2002-01-04 Fernando Perez - - * Made deep_reload() off by default. It doesn't always work - exactly as intended, so it's probably safer to have it off. It's - still available as dreload() anyway, so nothing is lost. - -2002-01-02 Fernando Perez - - * Released 0.2.3 (contacted R.Singh at CU about biopython course, - so I wanted an updated release). - -2001-12-27 Fernando Perez - - * IPython/iplib.py (InteractiveShell.interact): Added the original - code from 'code.py' for this module in order to change the - handling of a KeyboardInterrupt. This was necessary b/c otherwise - the history cache would break when the user hit Ctrl-C, and - interact() offers no way to add any hooks to it. - -2001-12-23 Fernando Perez - - * setup.py: added check for 'MANIFEST' before trying to remove - it. Thanks to Sean Reifschneider. - -2001-12-22 Fernando Perez - - * Released 0.2.2. - - * Finished (reasonably) writing the manual. Later will add the - python-standard navigation stylesheets, but for the time being - it's fairly complete. Distribution will include html and pdf - versions. - - * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu - (MayaVi author). - -2001-12-21 Fernando Perez - - * Released 0.2.1. Barring any nasty bugs, this is it as far as a - good public release, I think (with the manual and the distutils - installer). The manual can use some work, but that can go - slowly. Otherwise I think it's quite nice for end users. Next - summer, rewrite the guts of it... - - * Changed format of ipythonrc files to use whitespace as the - separator instead of an explicit '='. Cleaner. - -2001-12-20 Fernando Perez - - * Started a manual in LyX. For now it's just a quick merge of the - various internal docstrings and READMEs. Later it may grow into a - nice, full-blown manual. - - * Set up a distutils based installer. Installation should now be - trivially simple for end-users. - -2001-12-11 Fernando Perez - - * Released 0.2.0. First public release, announced it at - comp.lang.python. From now on, just bugfixes... - - * Went through all the files, set copyright/license notices and - cleaned up things. Ready for release. - -2001-12-10 Fernando Perez - - * Changed the first-time installer not to use tarfiles. It's more - robust now and less unix-dependent. Also makes it easier for - people to later upgrade versions. - - * Changed @exit to @abort to reflect the fact that it's pretty - brutal (a sys.exit()). The difference between @abort and Ctrl-D - becomes significant only when IPython is embedded: in that case, - C-D closes IPython only, but @abort kills the enclosing program - too (unless it had called IPython inside a try catching - SystemExit). - - * Created Shell module which exposes the actuall IPython Shell - classes, currently the normal and the embeddable one. This at - least offers a stable interface we won't need to change when - (later) the internals are rewritten. That rewrite will be confined - to iplib and ipmaker, but the Shell interface should remain as is. - - * Added embed module which offers an embeddable IPShell object, - useful to fire up IPython *inside* a running program. Great for - debugging or dynamical data analysis. - -2001-12-08 Fernando Perez - - * Fixed small bug preventing seeing info from methods of defined - objects (incorrect namespace in _ofind()). - - * Documentation cleanup. Moved the main usage docstrings to a - separate file, usage.py (cleaner to maintain, and hopefully in the - future some perlpod-like way of producing interactive, man and - html docs out of it will be found). - - * Added @profile to see your profile at any time. - - * Added @p as an alias for 'print'. It's especially convenient if - using automagic ('p x' prints x). - - * Small cleanups and fixes after a pychecker run. - - * Changed the @cd command to handle @cd - and @cd - for - visiting any directory in _dh. - - * Introduced _dh, a history of visited directories. @dhist prints - it out with numbers. - -2001-12-07 Fernando Perez - - * Released 0.1.22 - - * Made initialization a bit more robust against invalid color - options in user input (exit, not traceback-crash). - - * Changed the bug crash reporter to write the report only in the - user's .ipython directory. That way IPython won't litter people's - hard disks with crash files all over the place. Also print on - screen the necessary mail command. - - * With the new ultraTB, implemented LightBG color scheme for light - background terminals. A lot of people like white backgrounds, so I - guess we should at least give them something readable. - -2001-12-06 Fernando Perez - - * Modified the structure of ultraTB. Now there's a proper class - for tables of color schemes which allow adding schemes easily and - switching the active scheme without creating a new instance every - time (which was ridiculous). The syntax for creating new schemes - is also cleaner. I think ultraTB is finally done, with a clean - class structure. Names are also much cleaner (now there's proper - color tables, no need for every variable to also have 'color' in - its name). - - * Broke down genutils into separate files. Now genutils only - contains utility functions, and classes have been moved to their - own files (they had enough independent functionality to warrant - it): ConfigLoader, OutputTrap, Struct. - -2001-12-05 Fernando Perez - - * IPython turns 21! Released version 0.1.21, as a candidate for - public consumption. If all goes well, release in a few days. - - * Fixed path bug (files in Extensions/ directory wouldn't be found - unless IPython/ was explicitly in sys.path). - - * Extended the FlexCompleter class as MagicCompleter to allow - completion of @-starting lines. - - * Created __release__.py file as a central repository for release - info that other files can read from. - - * Fixed small bug in logging: when logging was turned on in - mid-session, old lines with special meanings (!@?) were being - logged without the prepended comment, which is necessary since - they are not truly valid python syntax. This should make session - restores produce less errors. - - * The namespace cleanup forced me to make a FlexCompleter class - which is nothing but a ripoff of rlcompleter, but with selectable - namespace (rlcompleter only works in __main__.__dict__). I'll try - to submit a note to the authors to see if this change can be - incorporated in future rlcompleter releases (Dec.6: done) - - * More fixes to namespace handling. It was a mess! Now all - explicit references to __main__.__dict__ are gone (except when - really needed) and everything is handled through the namespace - dicts in the IPython instance. We seem to be getting somewhere - with this, finally... - - * Small documentation updates. - - * Created the Extensions directory under IPython (with an - __init__.py). Put the PhysicalQ stuff there. This directory should - be used for all special-purpose extensions. - - * File renaming: - ipythonlib --> ipmaker - ipplib --> iplib - This makes a bit more sense in terms of what these files actually do. - - * Moved all the classes and functions in ipythonlib to ipplib, so - now ipythonlib only has make_IPython(). This will ease up its - splitting in smaller functional chunks later. - - * Cleaned up (done, I think) output of @whos. Better column - formatting, and now shows str(var) for as much as it can, which is - typically what one gets with a 'print var'. - -2001-12-04 Fernando Perez - - * Fixed namespace problems. Now builtin/IPython/user names get - properly reported in their namespace. Internal namespace handling - is finally getting decent (not perfect yet, but much better than - the ad-hoc mess we had). - - * Removed -exit option. If people just want to run a python - script, that's what the normal interpreter is for. Less - unnecessary options, less chances for bugs. - - * Added a crash handler which generates a complete post-mortem if - IPython crashes. This will help a lot in tracking bugs down the - road. - - * Fixed nasty bug in auto-evaluation part of prefilter(). Names - which were boud to functions being reassigned would bypass the - logger, breaking the sync of _il with the prompt counter. This - would then crash IPython later when a new line was logged. - -2001-12-02 Fernando Perez - - * Made IPython a package. This means people don't have to clutter - their sys.path with yet another directory. Changed the INSTALL - file accordingly. - - * Cleaned up the output of @who_ls, @who and @whos. @who_ls now - sorts its output (so @who shows it sorted) and @whos formats the - table according to the width of the first column. Nicer, easier to - read. Todo: write a generic table_format() which takes a list of - lists and prints it nicely formatted, with optional row/column - separators and proper padding and justification. - - * Released 0.1.20 - - * Fixed bug in @log which would reverse the inputcache list (a - copy operation was missing). - - * Code cleanup. @config was changed to use page(). Better, since - its output is always quite long. - - * Itpl is back as a dependency. I was having too many problems - getting the parametric aliases to work reliably, and it's just - easier to code weird string operations with it than playing %()s - games. It's only ~6k, so I don't think it's too big a deal. - - * Found (and fixed) a very nasty bug with history. !lines weren't - getting cached, and the out of sync caches would crash - IPython. Fixed it by reorganizing the prefilter/handlers/logger - division of labor a bit better. Bug fixed, cleaner structure. - -2001-12-01 Fernando Perez - - * Released 0.1.19 - - * Added option -n to @hist to prevent line number printing. Much - easier to copy/paste code this way. - - * Created global _il to hold the input list. Allows easy - re-execution of blocks of code by slicing it (inspired by Janko's - comment on 'macros'). - - * Small fixes and doc updates. - - * Rewrote @history function (was @h). Renamed it to @hist, @h is - much too fragile with automagic. Handles properly multi-line - statements and takes parameters. - -2001-11-30 Fernando Perez - - * Version 0.1.18 released. - - * Fixed nasty namespace bug in initial module imports. - - * Added copyright/license notes to all code files (except - DPyGetOpt). For the time being, LGPL. That could change. - - * Rewrote a much nicer README, updated INSTALL, cleaned up - ipythonrc-* samples. - - * Overall code/documentation cleanup. Basically ready for - release. Only remaining thing: licence decision (LGPL?). - - * Converted load_config to a class, ConfigLoader. Now recursion - control is better organized. Doesn't include the same file twice. - -2001-11-29 Fernando Perez - - * Got input history working. Changed output history variables from - _p to _o so that _i is for input and _o for output. Just cleaner - convention. - - * Implemented parametric aliases. This pretty much allows the - alias system to offer full-blown shell convenience, I think. - - * Version 0.1.17 released, 0.1.18 opened. - - * dot_ipython/ipythonrc (alias): added documentation. - (xcolor): Fixed small bug (xcolors -> xcolor) - - * Changed the alias system. Now alias is a magic command to define - aliases just like the shell. Rationale: the builtin magics should - be there for things deeply connected to IPython's - architecture. And this is a much lighter system for what I think - is the really important feature: allowing users to define quickly - magics that will do shell things for them, so they can customize - IPython easily to match their work habits. If someone is really - desperate to have another name for a builtin alias, they can - always use __IP.magic_newname = __IP.magic_oldname. Hackish but - works. - -2001-11-28 Fernando Perez - - * Changed @file so that it opens the source file at the proper - line. Since it uses less, if your EDITOR environment is - configured, typing v will immediately open your editor of choice - right at the line where the object is defined. Not as quick as - having a direct @edit command, but for all intents and purposes it - works. And I don't have to worry about writing @edit to deal with - all the editors, less does that. - - * Version 0.1.16 released, 0.1.17 opened. - - * Fixed some nasty bugs in the page/page_dumb combo that could - crash IPython. - -2001-11-27 Fernando Perez - - * Version 0.1.15 released, 0.1.16 opened. - - * Finally got ? and ?? to work for undefined things: now it's - possible to type {}.get? and get information about the get method - of dicts, or os.path? even if only os is defined (so technically - os.path isn't). Works at any level. For example, after import os, - os?, os.path?, os.path.abspath? all work. This is great, took some - work in _ofind. - - * Fixed more bugs with logging. The sanest way to do it was to add - to @log a 'mode' parameter. Killed two in one shot (this mode - option was a request of Janko's). I think it's finally clean - (famous last words). - - * Added a page_dumb() pager which does a decent job of paging on - screen, if better things (like less) aren't available. One less - unix dependency (someday maybe somebody will port this to - windows). - - * Fixed problem in magic_log: would lock of logging out if log - creation failed (because it would still think it had succeeded). - - * Improved the page() function using curses to auto-detect screen - size. Now it can make a much better decision on whether to print - or page a string. Option screen_length was modified: a value 0 - means auto-detect, and that's the default now. - - * Version 0.1.14 released, 0.1.15 opened. I think this is ready to - go out. I'll test it for a few days, then talk to Janko about - licences and announce it. - - * Fixed the length of the auto-generated ---> prompt which appears - for auto-parens and auto-quotes. Getting this right isn't trivial, - with all the color escapes, different prompt types and optional - separators. But it seems to be working in all the combinations. - -2001-11-26 Fernando Perez - - * Wrote a regexp filter to get option types from the option names - string. This eliminates the need to manually keep two duplicate - lists. - - * Removed the unneeded check_option_names. Now options are handled - in a much saner manner and it's easy to visually check that things - are ok. - - * Updated version numbers on all files I modified to carry a - notice so Janko and Nathan have clear version markers. - - * Updated docstring for ultraTB with my changes. I should send - this to Nathan. - - * Lots of small fixes. Ran everything through pychecker again. - - * Made loading of deep_reload an cmd line option. If it's not too - kosher, now people can just disable it. With -nodeep_reload it's - still available as dreload(), it just won't overwrite reload(). - - * Moved many options to the no| form (-opt and -noopt - accepted). Cleaner. - - * Changed magic_log so that if called with no parameters, it uses - 'rotate' mode. That way auto-generated logs aren't automatically - over-written. For normal logs, now a backup is made if it exists - (only 1 level of backups). A new 'backup' mode was added to the - Logger class to support this. This was a request by Janko. - - * Added @logoff/@logon to stop/restart an active log. - - * Fixed a lot of bugs in log saving/replay. It was pretty - broken. Now special lines (!@,/) appear properly in the command - history after a log replay. - - * Tried and failed to implement full session saving via pickle. My - idea was to pickle __main__.__dict__, but modules can't be - pickled. This would be a better alternative to replaying logs, but - seems quite tricky to get to work. Changed -session to be called - -logplay, which more accurately reflects what it does. And if we - ever get real session saving working, -session is now available. - - * Implemented color schemes for prompts also. As for tracebacks, - currently only NoColor and Linux are supported. But now the - infrastructure is in place, based on a generic ColorScheme - class. So writing and activating new schemes both for the prompts - and the tracebacks should be straightforward. - - * Version 0.1.13 released, 0.1.14 opened. - - * Changed handling of options for output cache. Now counter is - hardwired starting at 1 and one specifies the maximum number of - entries *in the outcache* (not the max prompt counter). This is - much better, since many statements won't increase the cache - count. It also eliminated some confusing options, now there's only - one: cache_size. - - * Added 'alias' magic function and magic_alias option in the - ipythonrc file. Now the user can easily define whatever names he - wants for the magic functions without having to play weird - namespace games. This gives IPython a real shell-like feel. - - * Fixed doc/?/?? for magics. Now all work, in all forms (explicit - @ or not). - - This was one of the last remaining 'visible' bugs (that I know - of). I think if I can clean up the session loading so it works - 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first - about licensing). - -2001-11-25 Fernando Perez - - * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and - there's a cleaner distinction between what ? and ?? show. - - * Added screen_length option. Now the user can define his own - screen size for page() operations. - - * Implemented magic shell-like functions with automatic code - generation. Now adding another function is just a matter of adding - an entry to a dict, and the function is dynamically generated at - run-time. Python has some really cool features! - - * Renamed many options to cleanup conventions a little. Now all - are lowercase, and only underscores where needed. Also in the code - option name tables are clearer. - - * Changed prompts a little. Now input is 'In [n]:' instead of - 'In[n]:='. This allows it the numbers to be aligned with the - Out[n] numbers, and removes usage of ':=' which doesn't exist in - Python (it was a Mathematica thing). The '...' continuation prompt - was also changed a little to align better. - - * Fixed bug when flushing output cache. Not all _p variables - exist, so their deletion needs to be wrapped in a try: - - * Figured out how to properly use inspect.formatargspec() (it - requires the args preceded by *). So I removed all the code from - _get_pdef in Magic, which was just replicating that. - - * Added test to prefilter to allow redefining magic function names - as variables. This is ok, since the @ form is always available, - but whe should allow the user to define a variable called 'ls' if - he needs it. - - * Moved the ToDo information from README into a separate ToDo. - - * General code cleanup and small bugfixes. I think it's close to a - state where it can be released, obviously with a big 'beta' - warning on it. - - * Got the magic function split to work. Now all magics are defined - in a separate class. It just organizes things a bit, and now - Xemacs behaves nicer (it was choking on InteractiveShell b/c it - was too long). - - * Changed @clear to @reset to avoid potential confusions with - the shell command clear. Also renamed @cl to @clear, which does - exactly what people expect it to from their shell experience. - - Added a check to the @reset command (since it's so - destructive, it's probably a good idea to ask for confirmation). - But now reset only works for full namespace resetting. Since the - del keyword is already there for deleting a few specific - variables, I don't see the point of having a redundant magic - function for the same task. - -2001-11-24 Fernando Perez - - * Updated the builtin docs (esp. the ? ones). - - * Ran all the code through pychecker. Not terribly impressed with - it: lots of spurious warnings and didn't really find anything of - substance (just a few modules being imported and not used). - - * Implemented the new ultraTB functionality into IPython. New - option: xcolors. This chooses color scheme. xmode now only selects - between Plain and Verbose. Better orthogonality. - - * Large rewrite of ultraTB. Much cleaner now, with a separation of - mode and color scheme for the exception handlers. Now it's - possible to have the verbose traceback with no coloring. - -2001-11-23 Fernando Perez - - * Version 0.1.12 released, 0.1.13 opened. - - * Removed option to set auto-quote and auto-paren escapes by - user. The chances of breaking valid syntax are just too high. If - someone *really* wants, they can always dig into the code. - - * Made prompt separators configurable. - -2001-11-22 Fernando Perez - - * Small bugfixes in many places. - - * Removed the MyCompleter class from ipplib. It seemed redundant - with the C-p,C-n history search functionality. Less code to - maintain. - - * Moved all the original ipython.py code into ipythonlib.py. Right - now it's just one big dump into a function called make_IPython, so - no real modularity has been gained. But at least it makes the - wrapper script tiny, and since ipythonlib is a module, it gets - compiled and startup is much faster. - - This is a reasobably 'deep' change, so we should test it for a - while without messing too much more with the code. - -2001-11-21 Fernando Perez - - * Version 0.1.11 released, 0.1.12 opened for further work. - - * Removed dependency on Itpl. It was only needed in one place. It - would be nice if this became part of python, though. It makes life - *a lot* easier in some cases. - - * Simplified the prefilter code a bit. Now all handlers are - expected to explicitly return a value (at least a blank string). - - * Heavy edits in ipplib. Removed the help system altogether. Now - obj?/?? is used for inspecting objects, a magic @doc prints - docstrings, and full-blown Python help is accessed via the 'help' - keyword. This cleans up a lot of code (less to maintain) and does - the job. Since 'help' is now a standard Python component, might as - well use it and remove duplicate functionality. - - Also removed the option to use ipplib as a standalone program. By - now it's too dependent on other parts of IPython to function alone. - - * Fixed bug in genutils.pager. It would crash if the pager was - exited immediately after opening (broken pipe). - - * Trimmed down the VerboseTB reporting a little. The header is - much shorter now and the repeated exception arguments at the end - have been removed. For interactive use the old header seemed a bit - excessive. - - * Fixed small bug in output of @whos for variables with multi-word - types (only first word was displayed). - -2001-11-17 Fernando Perez - - * Version 0.1.10 released, 0.1.11 opened for further work. - - * Modified dirs and friends. dirs now *returns* the stack (not - prints), so one can manipulate it as a variable. Convenient to - travel along many directories. - - * Fixed bug in magic_pdef: would only work with functions with - arguments with default values. - -2001-11-14 Fernando Perez - - * Added the PhysicsInput stuff to dot_ipython so it ships as an - example with IPython. Various other minor fixes and cleanups. - - * Version 0.1.9 released, 0.1.10 opened for further work. - - * Added sys.path to the list of directories searched in the - execfile= option. It used to be the current directory and the - user's IPYTHONDIR only. - -2001-11-13 Fernando Perez - - * Reinstated the raw_input/prefilter separation that Janko had - initially. This gives a more convenient setup for extending the - pre-processor from the outside: raw_input always gets a string, - and prefilter has to process it. We can then redefine prefilter - from the outside and implement extensions for special - purposes. - - Today I got one for inputting PhysicalQuantity objects - (from Scientific) without needing any function calls at - all. Extremely convenient, and it's all done as a user-level - extension (no IPython code was touched). Now instead of: - a = PhysicalQuantity(4.2,'m/s**2') - one can simply say - a = 4.2 m/s**2 - or even - a = 4.2 m/s^2 - - I use this, but it's also a proof of concept: IPython really is - fully user-extensible, even at the level of the parsing of the - command line. It's not trivial, but it's perfectly doable. - - * Added 'add_flip' method to inclusion conflict resolver. Fixes - the problem of modules being loaded in the inverse order in which - they were defined in - - * Version 0.1.8 released, 0.1.9 opened for further work. - - * Added magics pdef, source and file. They respectively show the - definition line ('prototype' in C), source code and full python - file for any callable object. The object inspector oinfo uses - these to show the same information. - - * Version 0.1.7 released, 0.1.8 opened for further work. - - * Separated all the magic functions into a class called Magic. The - InteractiveShell class was becoming too big for Xemacs to handle - (de-indenting a line would lock it up for 10 seconds while it - backtracked on the whole class!) - - FIXME: didn't work. It can be done, but right now namespaces are - all messed up. Do it later (reverted it for now, so at least - everything works as before). - - * Got the object introspection system (magic_oinfo) working! I - think this is pretty much ready for release to Janko, so he can - test it for a while and then announce it. Pretty much 100% of what - I wanted for the 'phase 1' release is ready. Happy, tired. - -2001-11-12 Fernando Perez - - * Version 0.1.6 released, 0.1.7 opened for further work. - - * Fixed bug in printing: it used to test for truth before - printing, so 0 wouldn't print. Now checks for None. - - * Fixed bug where auto-execs increase the prompt counter by 2 (b/c - they have to call len(str(sys.ps1)) ). But the fix is ugly, it - reaches by hand into the outputcache. Think of a better way to do - this later. - - * Various small fixes thanks to Nathan's comments. - - * Changed magic_pprint to magic_Pprint. This way it doesn't - collide with pprint() and the name is consistent with the command - line option. - - * Changed prompt counter behavior to be fully like - Mathematica's. That is, even input that doesn't return a result - raises the prompt counter. The old behavior was kind of confusing - (getting the same prompt number several times if the operation - didn't return a result). - - * Fixed Nathan's last name in a couple of places (Gray, not Graham). - - * Fixed -Classic mode (wasn't working anymore). - - * Added colored prompts using Nathan's new code. Colors are - currently hardwired, they can be user-configurable. For - developers, they can be chosen in file ipythonlib.py, at the - beginning of the CachedOutput class def. - -2001-11-11 Fernando Perez - - * Version 0.1.5 released, 0.1.6 opened for further work. - - * Changed magic_env to *return* the environment as a dict (not to - print it). This way it prints, but it can also be processed. - - * Added Verbose exception reporting to interactive - exceptions. Very nice, now even 1/0 at the prompt gives a verbose - traceback. Had to make some changes to the ultraTB file. This is - probably the last 'big' thing in my mental todo list. This ties - in with the next entry: - - * Changed -Xi and -Xf to a single -xmode option. Now all the user - has to specify is Plain, Color or Verbose for all exception - handling. - - * Removed ShellServices option. All this can really be done via - the magic system. It's easier to extend, cleaner and has automatic - namespace protection and documentation. - -2001-11-09 Fernando Perez - - * Fixed bug in output cache flushing (missing parameter to - __init__). Other small bugs fixed (found using pychecker). - - * Version 0.1.4 opened for bugfixing. - -2001-11-07 Fernando Perez - - * Version 0.1.3 released, mainly because of the raw_input bug. - - * Fixed NASTY bug in raw_input: input line wasn't properly parsed - and when testing for whether things were callable, a call could - actually be made to certain functions. They would get called again - once 'really' executed, with a resulting double call. A disaster - in many cases (list.reverse() would never work!). - - * Removed prefilter() function, moved its code to raw_input (which - after all was just a near-empty caller for prefilter). This saves - a function call on every prompt, and simplifies the class a tiny bit. - - * Fix _ip to __ip name in magic example file. - - * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should - work with non-gnu versions of tar. - -2001-11-06 Fernando Perez - - * Version 0.1.2. Just to keep track of the recent changes. - - * Fixed nasty bug in output prompt routine. It used to check 'if - arg != None...'. Problem is, this fails if arg implements a - special comparison (__cmp__) which disallows comparing to - None. Found it when trying to use the PhysicalQuantity module from - ScientificPython. - -2001-11-05 Fernando Perez - - * Also added dirs. Now the pushd/popd/dirs family functions - basically like the shell, with the added convenience of going home - when called with no args. - - * pushd/popd slightly modified to mimic shell behavior more - closely. - - * Added env,pushd,popd from ShellServices as magic functions. I - think the cleanest will be to port all desired functions from - ShellServices as magics and remove ShellServices altogether. This - will provide a single, clean way of adding functionality - (shell-type or otherwise) to IP. - -2001-11-04 Fernando Perez - - * Added .ipython/ directory to sys.path. This way users can keep - customizations there and access them via import. - -2001-11-03 Fernando Perez - - * Opened version 0.1.1 for new changes. - - * Changed version number to 0.1.0: first 'public' release, sent to - Nathan and Janko. - - * Lots of small fixes and tweaks. - - * Minor changes to whos format. Now strings are shown, snipped if - too long. - - * Changed ShellServices to work on __main__ so they show up in @who - - * Help also works with ? at the end of a line: - ?sin and sin? - both produce the same effect. This is nice, as often I use the - tab-complete to find the name of a method, but I used to then have - to go to the beginning of the line to put a ? if I wanted more - info. Now I can just add the ? and hit return. Convenient. - -2001-11-02 Fernando Perez - - * Python version check (>=2.1) added. - - * Added LazyPython documentation. At this point the docs are quite - a mess. A cleanup is in order. - - * Auto-installer created. For some bizarre reason, the zipfiles - module isn't working on my system. So I made a tar version - (hopefully the command line options in various systems won't kill - me). - - * Fixes to Struct in genutils. Now all dictionary-like methods are - protected (reasonably). - - * Added pager function to genutils and changed ? to print usage - note through it (it was too long). - - * Added the LazyPython functionality. Works great! I changed the - auto-quote escape to ';', it's on home row and next to '. But - both auto-quote and auto-paren (still /) escapes are command-line - parameters. - - -2001-11-01 Fernando Perez - - * Version changed to 0.0.7. Fairly large change: configuration now - is all stored in a directory, by default .ipython. There, all - config files have normal looking names (not .names) - - * Version 0.0.6 Released first to Lucas and Archie as a test - run. Since it's the first 'semi-public' release, change version to - > 0.0.6 for any changes now. - - * Stuff I had put in the ipplib.py changelog: - - Changes to InteractiveShell: - - - Made the usage message a parameter. - - - Require the name of the shell variable to be given. It's a bit - of a hack, but allows the name 'shell' not to be hardwired in the - magic (@) handler, which is problematic b/c it requires - polluting the global namespace with 'shell'. This in turn is - fragile: if a user redefines a variable called shell, things - break. - - - magic @: all functions available through @ need to be defined - as magic_, even though they can be called simply as - @. This allows the special command @magic to gather - information automatically about all existing magic functions, - even if they are run-time user extensions, by parsing the shell - instance __dict__ looking for special magic_ names. - - - mainloop: added *two* local namespace parameters. This allows - the class to differentiate between parameters which were there - before and after command line initialization was processed. This - way, later @who can show things loaded at startup by the - user. This trick was necessary to make session saving/reloading - really work: ideally after saving/exiting/reloading a session, - *everything* should look the same, including the output of @who. I - was only able to make this work with this double namespace - trick. - - - added a header to the logfile which allows (almost) full - session restoring. - - - prepend lines beginning with @ or !, with a and log - them. Why? !lines: may be useful to know what you did @lines: - they may affect session state. So when restoring a session, at - least inform the user of their presence. I couldn't quite get - them to properly re-execute, but at least the user is warned. - - * Started ChangeLog. diff --git a/docs/attic/ipnb_google_soc.lyx b/docs/attic/ipnb_google_soc.lyx deleted file mode 100644 index f931c7c..0000000 --- a/docs/attic/ipnb_google_soc.lyx +++ /dev/null @@ -1,645 +0,0 @@ -#LyX 1.3 created this file. For more info see http://www.lyx.org/ -\lyxformat 221 -\textclass article -\begin_preamble -\usepackage{hyperref} - -\usepackage{color} -\definecolor{orange}{cmyk}{0,0.4,0.8,0.2} -\definecolor{brown}{cmyk}{0,0.75,0.75,0.35} - -% Use and configure listings package for nicely formatted code -\usepackage{listings} -\lstset{ - language=Python, - basicstyle=\small\ttfamily, - commentstyle=\ttfamily\color{blue}, - stringstyle=\ttfamily\color{brown}, - showstringspaces=false, - breaklines=true, - postbreak = \space\dots -} -\end_preamble -\language english -\inputencoding auto -\fontscheme palatino -\graphics default -\paperfontsize 11 -\spacing single -\papersize Default -\paperpackage a4 -\use_geometry 1 -\use_amsmath 0 -\use_natbib 0 -\use_numerical_citations 0 -\paperorientation portrait -\leftmargin 1in -\topmargin 0.9in -\rightmargin 1in -\bottommargin 0.9in -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation skip -\defskip medskip -\quotes_language english -\quotes_times 2 -\papercolumns 1 -\papersides 1 -\paperpagestyle default - -\layout Title - -Interactive Notebooks for Python -\newline - -\size small -An IPython project for Google's Summer of Code 2005 -\layout Author - -Fernando P -\begin_inset ERT -status Collapsed - -\layout Standard - -\backslash -'{e} -\end_inset - -rez -\begin_inset Foot -collapsed true - -\layout Standard - - -\family typewriter -\size small -Fernando.Perez@colorado.edu -\end_inset - - -\layout Abstract - -This project aims to develop a file format and interactive support for documents - which can combine Python code with rich text and embedded graphics. - The initial requirements only aim at being able to edit such documents - with a normal programming editor, with final rendering to PDF or HTML being - done by calling an external program. - The editing component would have to be integrated with IPython. - -\layout Abstract - -This document was written by the IPython developer; it is made available - to students looking for projects of interest and for inclusion in their - application. -\layout Section - -Project overview -\layout Standard - -Python's interactive interpreter is one of the language's most appealing - features for certain types of usage, yet the basic shell which ships with - the language is very limited. - Over the last few years, IPython -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://ipython.scipy.org} - -\end_inset - - -\end_inset - - has become the de facto standard interactive shell in the scientific computing - community, and it enjoys wide popularity with general audiences. - All the major Linux distributions (Fedora Core via Extras, SUSE, Debian) - and OS X (via fink) carry IPython, and Windows users report using it as - a viable system shell. -\layout Standard - -However, IPython is currently a command-line only application, based on - the readline library and hence with single-line editing capabilities. - While this kind of usage is sufficient for many contexts, there are usage - cases where integration in a graphical user interface (GUI) is desirable. - -\layout Standard - -In particular, we wish to have an interface where users can execute Python - code, input regular text (neither code nor comments) and keep inline graphics, - which we will call -\emph on -Python notebooks -\emph default -. - This kind of system is very popular in scientific computing; well known - implementations can be found in Mathematica -\begin_inset ERT -status Collapsed - -\layout Standard - -\backslash -texttrademark -\end_inset - -\SpecialChar ~ - -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://www.wolfram.com/products/mathematica} - -\end_inset - - -\end_inset - - and Maple -\begin_inset ERT -status Collapsed - -\layout Standard - -\backslash -texttrademark -\end_inset - -\SpecialChar ~ - -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://www.maplesoft.com} - -\end_inset - - -\end_inset - -, among others. - However, these are proprietary (and quite expensive) systems aimed at an - audience of mathematicians, scientists and engineers. -\layout Standard - -The full-blown implementation of a graphical shell supporting this kind - of work model is probably too ambitious for a summer project. - Simultaneous support for rich-text editing, embedded graphics and syntax-highli -ghted code is extremely complex, and likely to require far more effort than - can be mustered by an individual developer for a short-term project. -\layout Standard - -This project will thus aim to build the necessary base infrastructure to - be able to edit such documents from a plain text editor, and to render - them to suitable formats for printing or online distribution, such as HTML, - PDF or PostScript. - This model follows that for the production of LaTeX documents, which can - be edited with any text editor. -\layout Standard - -Such documents would be extremely useful for many audiences beyond scientists: - one can use them to produce additionally documented code, to explore a - problem with Python and maintain all relevant information in the same place, - as a way to distribute enhanced Python-based educational materials, etc. -\layout Standard - -Demand for such a system exists, as evidenced by repeated requests made - to me by IPython users over the last few years. - Unfortunately IPython is only a spare-time project for me, and I have not - had the time to devote to this, despite being convinced of its long term - value and wide appeal. -\layout Standard - -If this project is successful, the infrastructure laid out by it will be - immediately useful for Python users wishing to maintain `literate' programs - which include rich formatting. - In addition, this will open the door for the future development of graphical - shells which can render such documents in real time: this is exactly the - development model successfully followed by the LyX -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://www.lyx.org} - -\end_inset - - -\end_inset - - document processing system. -\layout Section - -Implementation effort -\layout Subsection - -Specific goals -\layout Standard - -This is a brief outline of the main points of this project. - The next section provides details on all of them. - The student(s) working on the project would need to: -\layout Enumerate - -Make design decisions for the internal file structure to enable valid Python - notebooks. - -\layout Enumerate - -Implement the rendering library, capable of processing an input notebook - through reST or LaTeX and producing HTML or PDF output, as well as exporting - a `pure-code' Python file stripped of all markup calls. -\layout Enumerate - -Study existing programming editor widgets to find the most suitable one - for extending with an IPython connector for interactive execution of the - notebooks. -\layout Subsection - -Complexity level -\layout Standard - -This project is relatively complicated. - While I will gladly assist the student with design and implementation issues, - it will require a fair amount of thinking in terms of overall library architect -ure. - The actual implementation does not require any sophisticated concepts, - but rather a reasonably broad knowledge of a wide set of topics (markup, - interaction with external programs and libraries, namespace tricks to provide - runtime changes in the effect of the markup calls, etc.) -\layout Standard - -While raw novices are welcome to try, I suspect that it may be a bit too - much for them. - Students wanting to apply should keep in mind, if the money is an important - consideration, that Google only gives the $4500 reward upon -\emph on -successful completion -\emph default - of the project. - So don't bite more than you can chew. - Obviously if this doesn't matter, anyone is welcome to participate, since - the project can be a very interesting learning experience, and it will - provide a genuinely useful tool for many. -\layout Section - -Technical details -\layout Subsection - -The files -\layout Standard - -A basic requirement of this project will be that the Python notebooks shall - be valid Python source files, typically with a -\family typewriter -.py -\family default - extension. - A renderer program can be used to process the markup calls in them and - generate output. - If run at a regular command line, these files should execute like normal - Python files. - But when run via a special rendering script, the result should be a properly - formatted file. - Output formats could be PDF or HTML depending on user-supplied options. -\layout Standard - -A reST markup mode should be implemented, as reST is already widely used - in the Python community and is a very simple format to write. - The following is a sketch of what such files could look like using reST - markup: -\layout Standard - - -\begin_inset ERT -status Open - -\layout Standard - -\backslash -lstinputlisting{nbexample.py} -\end_inset - - -\layout Standard - -Additionally, a LaTeX markup mode should also be implemented. - Here's a mockup example of what code using the LaTeX mode could look like. -\layout Standard - - -\begin_inset ERT -status Open - -\layout Standard - -\backslash -lstinputlisting{nbexample_latex.py} -\end_inset - - -\layout Standard - -At this point, it must be noted that the code above is simply a sketch of - these ideas, not a finalized design. - An important part of this project will be to think about what the best - API and structure for this problem should be. -\layout Subsection - -From notebooks to PDF, HTML or Python -\layout Standard - -Once a clean API for markup has been specified, converters will be written - to take a python source file which uses notebook constructs, and generate - final output in printable formats, such as HTML or PDF. - For example, if -\family typewriter -nbfile.py -\family default - is a python notebook, then -\layout LyX-Code - -$ pynb --export=pdf nbfile.py -\layout Standard - -should produce -\family typewriter -nbfile.pdf -\family default -, while -\layout LyX-Code - -$ pynb --export=html nbfile.py -\layout Standard - -would produce an HTML version. - The actual rendering will be done by calling appropriate utilities, such - as the reST toolchain or LaTeX, depending on the markup used by the file. -\layout Standard - -Additionally, while the notebooks will be valid Python files, if executed - on their own, all the markup calls will still return their results, which - are not really needed when the file is being treated as pure code. - For this reason, a module to execute these files turning the markup calls - into no-ops should be written. - Using Python 2.4's -m switch, one can then use something like -\layout LyX-Code - -$ python -m notebook nbfile.py -\layout Standard - -and the notebook file -\family typewriter -nbfile.py -\family default - will be executed without any overhead introduced by the markup (other than - making calls to functions which return immediately). - Finally, an exporter to clean code can be trivially implemented, so that: -\layout LyX-Code - -$ pynb --export=python nbfile.py nbcode.py -\layout Standard - -would export only the code in -\family typewriter -nbfile.py -\family default - to -\family typewriter -nbcode.py -\family default -, removing the markup completely. - This can be used to generate final production versions of large modules - implemented as notebooks, if one wants to eliminate the markup overhead. -\layout Subsection - -The editing environment -\layout Standard - -The first and most important part of the project should be the definition - of a clean API and the implementation of the exporter modules as indicated - above. - Ultimately, such files can be developed using any text editor, since they - are nothing more than regular Python code. -\layout Standard - -But once these goals are reached, further integration with an editor will - be done, without the need for a full-blown GUI shell. - In fact, already today the (X)Emacs editors can provide for interactive - usage of such files. - Using python-mode in (X)Emacs, one can pass highlighted regions of a file - for execution to an underlying python process, and the results are printed - in the python window. - With recent versions of python-mode, IPython can be used instead of the - plain python interpreter, so that IPython's extended interactive capabilities - become available within (X)Emacs (improved tracebacks, automatic debugger - integration, variable information, easy filesystem access to Python, etc). -\layout Standard - -But even with IPython integration, the usage within (X)Emacs is not ideal - for a notebook environment, since the python process buffer is separate - from the python file. - Therefore, the next stage of the project will be to enable tighter integration - between the editing and execution environments. - The basic idea is to provide an easy way to mark regions of the file to - be executed interactively, and to have the output inserted automatically - into the file. - The following listing is a mockup of what the resulting file could look - like -\layout Standard - - -\begin_inset ERT -status Open - -\layout Standard - -\backslash -lstinputlisting{nbexample_output.py} -\end_inset - - -\layout Standard - -Basically, the editor will execute -\family typewriter -add(2,3) -\family default - and insert the string representation of the output into the file, so it - can be used for rendering later. - -\layout Section - -Available resources -\layout Standard - -IPython currently has all the necessary infrastructure for code execution, - albeit in a rather messy code base. - Most I/O is already abstracted out, a necessary condition for embedding - in a GUI (since you are not writing to stdout/err but to the GUI's text - area). - -\layout Standard - -For interaction with an editor, it will be necessary to identify a good - programming editor with a Python-compatible license, which can be extended - to communicate with the underlying IPython engine. - IDLE, the Tk-based IDE which ships with Python, should obviously be considered. - The Scintilla editing component -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://www.scintilla.org} - -\end_inset - - -\end_inset - - may also be a viable candidate. - -\layout Standard - -It will also be interesting to look at the LyX editor -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://www.lyx.org} - -\end_inset - - -\end_inset - -, which already offers a Python client -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://wiki.lyx.org/Tools/PyClient} - -\end_inset - - -\end_inset - -. - Since LyX has very sophisticated LaTeX support, this is a very interesting - direction to consider for the future (though LyX makes a poor programming - editor). -\layout Section - -Support offered to the students -\layout Standard - -The IPython project already has an established Open Source infrastructure, - including CVS repositories, a bug tracker and mailing lists. - As the main author and sole maintainer of IPython, I will personally assist - the student(s) funded with architectural and design guidance, preferably - on the public development mailing list. - I expect them to start working by submitting patches until they show, by - the quality of their work, that they can be granted CVS write access. - I expect most actual implementation work to be done by the students, though - I will provide assistance if they need it with a specific technical issue. -\layout Standard - -If more than one applicant is accepted to work on this project, there is - more than enough work to be done which can be coordinated between them. -\layout Section - -Licensing and copyright -\layout Standard - -IPython is licensed under BSD terms, and copyright of all sources rests - with the original authors of the core modules. - Over the years, all external contributions have been small enough patches - that they have been simply folded into the main source tree without additional - copyright attributions, though explicit credit has always been given to - all contributors. -\layout Standard - -I expect the students participating in this project to contribute enough - standalone code that they can retain the copyright to it if they so desire, - as long as they accept all their work to be licensed under BSD terms. -\layout Section - -Acknowledgements -\layout Standard - -I'd like to thank John D. - Hunter, the author of matplotlib -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://matplotlib.sf.net} - -\end_inset - - -\end_inset - -, for lengthy discussions which helped clarify much of this project. - In particular, the important decision of embedding the notebook markup - calls in true Python functions instead of specially-tagged strings or comments - was an idea I thank him for pushing hard enough to convince me of using. - -\layout Standard - -My conversations with Brian Granger, the author of PyXG -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://hammonds.scu.edu/~classes/pyxg.html} - -\end_inset - - -\end_inset - - and braid -\begin_inset Foot -collapsed true - -\layout Standard - - -\begin_inset LatexCommand \htmlurl{http://hammonds.scu.edu/~classes/braid.html} - -\end_inset - - -\end_inset - -, have also been very useful in clarifying details of the necessary underlying - infrastructure and future evolution of IPython for this kind of system. -\layout Standard - -Thank you also to the IPython users who have, in the past, discussed this - topic with me either in private or on the IPython or Scipy lists. -\the_end diff --git a/docs/attic/ipython-wx.1 b/docs/attic/ipython-wx.1 deleted file mode 100644 index 78c7f54..0000000 --- a/docs/attic/ipython-wx.1 +++ /dev/null @@ -1,25 +0,0 @@ -.TH IPYTHON-WX 1 "October 29, 2008" "" "" -.SH NAME -\fBipython-wx \- Graphical frontend that embeds a multithreaded IPython Shell -.SH SYNOPSIS -.nf -.fam C -\fBipython-wx\fP -.fam T -.fi -.SH DESCRIPTION -ipython-wx is, compared to ipythonx, a more advanced graphical frontend -to IPython. It is implemented using WxWidgets. -.SH OPTIONS -.TP -.B -ipython-wx does not accept any command line options. -.SH SEE ALSO -.BR ipython(1), ipythonx(1) -.br -.SH AUTHOR -\fBipython-wx\fP is a tool that ships with IPython, created by -the IPython Development Team. -.PP -This manual page was written by Stephan Peijnik , -for the Debian project (but may be used by others). diff --git a/docs/attic/ipythonx.1 b/docs/attic/ipythonx.1 deleted file mode 100644 index 979da98..0000000 --- a/docs/attic/ipythonx.1 +++ /dev/null @@ -1,30 +0,0 @@ -.TH IPYTHONX 1 "October 29, 2008" "" "" -.SH NAME -\fBipythonx \- Simple graphical frontend to IPython, using WxWidgets. -.SH SYNOPSIS -.nf -.fam C -\fBipengine\fP [\fIoptions\fP] -.fam T -.fi -.SH DESCRIPTION -ipythonx is a simple graphical frontend to IPython, using WxWidgets. -.SH OPTIONS -.TP -.B -\-h, \-\-help -show this help message and exit -.TP -.B -\-d, \-\-debug -Enable debug messages for the wx frontend. -look for config files and profiles in this directory -.SH SEE ALSO -.BR ipython(1), ipython-wx(1) -.br -.SH AUTHOR -\fBipythonx\fP is a tool that ships with IPython, created by -the IPython Development Team. -.PP -This manual page was written by Stephan Peijnik , -for the Debian project (but may be used by others). diff --git a/docs/attic/nbexample.py b/docs/attic/nbexample.py deleted file mode 100644 index 7bc2727..0000000 --- a/docs/attic/nbexample.py +++ /dev/null @@ -1,11 +0,0 @@ -from notebook.markup import rest - -rest.title('This is a Python Notebook') -rest.heading(1,'A first-level heading') -rest.text("""\ -Some plain text, without any special formatting. - -Below, we define a simple function to add two numbers.""") - -def add(x,y): - return x+y diff --git a/docs/attic/nbexample_latex.py b/docs/attic/nbexample_latex.py deleted file mode 100644 index 673cb4b..0000000 --- a/docs/attic/nbexample_latex.py +++ /dev/null @@ -1,25 +0,0 @@ -from notebook.markup import latex - -latex.document_class('article') -latex.title('This is a Python Notebook') - -latex.section('A section title',label='sec:intro') - -latex.text(r"""Below, we define a simple function -\begin{equation} -f: (x,y) \rightarrow x+y^2 -\end{equation}""") - -def f(x,y): - return x+y**2 - -# since the .text method passes directly to latex, all markup could be input -# in that way if so desired -latex.text(r""" -\section{Another section} - -More text... - -And now a picture showing our important results...""") - -latex.include_graphic('foo.png') diff --git a/docs/attic/nbexample_output.py b/docs/attic/nbexample_output.py deleted file mode 100644 index 8dfe099..0000000 --- a/docs/attic/nbexample_output.py +++ /dev/null @@ -1,20 +0,0 @@ -from notebook.markup import rest - -rest.title('This is a Python Notebook') -rest.text("""\ -Some plain text, without any special formatting. - -Below, we define a simple function to add two numbers.""") - -def add(x,y): - return x+y - -rest.text("Let's use it with x=2,y=3:") -# This simply means that all code until the next markup call is to be executed -# as a single call. The editing screen should mark the whole group of lines -# with a single In[NN] tag (like IPython does, but with multi-line capabilities) -rest.input() -add(2,3) -# This output would appear on-screen (in the editing window) simply marked -# with an Out[NN] tag -rest.output("5") diff --git a/docs/attic/new_design.lyx b/docs/attic/new_design.lyx deleted file mode 100644 index 3645376..0000000 --- a/docs/attic/new_design.lyx +++ /dev/null @@ -1,1358 +0,0 @@ -#LyX 1.3 created this file. For more info see http://www.lyx.org/ -\lyxformat 221 -\textclass article -\begin_preamble -\usepackage{ae,aecompl} -\usepackage{hyperref} -\usepackage{html} -\end_preamble -\language english -\inputencoding auto -\fontscheme default -\graphics default -\paperfontsize default -\spacing single -\papersize Default -\paperpackage a4 -\use_geometry 1 -\use_amsmath 0 -\use_natbib 0 -\use_numerical_citations 0 -\paperorientation portrait -\leftmargin 1.25in -\topmargin 1in -\rightmargin 1.25in -\bottommargin 1in -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation skip -\defskip medskip -\quotes_language english -\quotes_times 2 -\papercolumns 1 -\papersides 1 -\paperpagestyle default - -\layout Title - -IPython -\newline - -\size larger -New design notes -\layout Author - -Fernando Pérez -\layout Section - -Introduction -\layout Standard - -This is a draft document with notes and ideas for the IPython rewrite. - The section order and structure of this document roughly reflects in which - order things should be done and what the dependencies are. - This document is mainly a draft for developers, a pdf version is provided - with the standard distribution in case regular users are interested and - wish to contribute ideas. -\layout Standard - -A tentative plan for the future: -\layout Itemize - -0.6.x series: in practice, enough people are using IPython for real work that - I think it warrants a higher number. - This series will continue to evolve with bugfixes and incremental improvements. -\layout Itemize - -0.7.x series: (maybe) If resources allow, there may be a branch for 'unstable' - development, where the architectural rewrite may take place. -\layout Standard - -However, I am starting to doubt it is feasible to keep two separate branches. - I am leaning more towards a -\begin_inset ERT -status Collapsed - -\layout Standard - -\backslash -LyX -\end_inset - --like approach, where the main branch slowly transforms and evolves. - Having CVS support now makes this a reasonable alternative, as I don't - have to make pre-releases as often. - The active branch can remain the mainline of development, and users interested - in the bleeding-edge stuff can always grab the CVS code. -\layout Standard - -Ideally, IPython should have a clean class setup that would allow further - extensions for special-purpose systems. - I view IPython as a base system that provides a great interactive environment - with full access to the Python language, and which could be used in many - different contexts. - The basic hooks are there: the magic extension syntax and the flexible - system of recursive configuration files and profiles. - But with a code as messy as the current one, nobody is going to touch it. -\layout Section - -Immediate TODO and bug list -\layout Standard - -Things that should be done for the current series, before starting major - changes. -\layout Itemize - -Fix any bugs reported at the online bug tracker. -\layout Itemize - -History bug: I often see that, under certain circumstances, the input history - is incorrect. - The problem is that so far, I've failed to find a simple way to reproduce - it consistently, so I can't easily track it down. - It seems to me that it happens when output is generated multiple times - for the same input (for i in range(10): i will do it). - But even this isn't reliable... - Ultimately the right solution for this is to cleanly separate the dataflow - for input/output history management; right now that happens all over the - place, which makes the code impossible to debug, and almost guaranteed - to be buggy in the first place. -\layout Itemize - - -\series bold -Redesign the output traps. - -\series default - They cause problems when users try to execute code which relies on sys.stdout - being the 'true' sys.stdout. - They also prevent scripts which use raw_input() to work as command-line - arguments. -\newline -The best solution is probably to print the banner first, and then just execute - all the user code straight with no output traps at all. - Whatever comes out comes out. - This makes the ipython code actually simpler, and eliminates the problem - altogether. -\newline -These things need to be ripped out, they cause no end of problems. - For example, if user code requires acces to stdin during startup, the process - just hangs indefinitely. - For now I've just disabled them, and I'll live with the ugly error messages. -\layout Itemize - -The prompt specials dictionary should be turned into a class which does - proper namespace management, since the prompt specials need to be evaluated - in a certain namespace. - Currently it's just globals, which need to be managed manually by code - below. - -\layout Itemize - -Fix coloring of prompts: the pysh color strings don't have any effect on - prompt numbers, b/c these are controlled by the global scheme. - Make the prompts fully user-definable, colors and all. - This is what I said to a user: -\newline -As far as the green -\backslash -#, this is a minor bug of the coloring code due to the vagaries of history. - While the color strings allow you to control the coloring of most elements, - there are a few which are still controlled by the old ipython internal - coloring code, which only accepts a global 'color scheme' choice. - So basically the input/output numbers are hardwired to the choice in the - color scheme, and there are only 'Linux', 'LightBG' and 'NoColor' schemes - to choose from. - -\layout Itemize - -Clean up FakeModule issues. - Currently, unittesting with embedded ipython breaks because a FakeModule - instance overwrites __main__. - Maybe ipython should revert back to using __main__ directly as the user - namespace? Handling a separate namespace is proving -\emph on -very -\emph default - tricky in all corner cases. -\layout Itemize - -Make the output cache depth independent of the input one. - This way one can have say only the last 10 results stored and still have - a long input history/cache. -\layout Itemize - -Fix the fact that importing a shell for embedding screws up the command-line - history. - This can be done by not importing the history file when the shell is already - inside ipython. -\layout Itemize - -Lay out the class structure so that embedding into a gtk/wx/qt app is trivial, - much like the multithreaded gui shells now provide command-line coexistence - with the gui toolkits. - See -\begin_inset LatexCommand \url{http://www.livejournal.com/users/glyf/32396.html} - -\end_inset - - -\layout Itemize - -Get Holger's completer in, once he adds filename completion. -\layout Standard - -Lower priority stuff: -\layout Itemize - -Add @showopt/@setopt (decide name) for viewing/setting all options. - The existing option-setting magics should become aliases for setopt calls. -\layout Itemize - -It would be nice to be able to continue with python stuff after an @ command. - For instance "@run something; test_stuff()" in order to test stuff even - faster. - Suggestion by Kasper Souren -\layout Itemize - -Run a 'first time wizard' which configures a few things for the user, such - as color_info, editor and the like. -\layout Itemize - -Logging: @logstart and -log should start logfiles in ~.ipython, but with - unique names in case of collisions. - This would prevent ipython.log files all over while also allowing multiple - sessions. - Also the -log option should take an optional filename, instead of having - a separate -logfile option. -\newline -In general the logging system needs a serious cleanup. - Many functions now in Magic should be moved to Logger, and the magic @s - should be very simple wrappers to the Logger methods. -\layout Section - -Lighten the code -\layout Standard - -If we decide to base future versions of IPython on Python 2.3, which has - the new Optik module (called optparse), it should be possible to drop DPyGetOpt. - We should also remove the need for Itpl. - Another area for trimming is the Gnuplot stuff: much of that could be merged - into the mainline project. -\layout Standard - -Double check whether we really need FlexCompleter. - This was written as an enhanced rlcompleter, but my patches went in for - python 2.2 (or 2.3, can't remember). -\layout Standard - -With these changes we could shed a fair bit of code from the main trunk. -\layout Section - -Unit testing -\layout Standard - -All new code should use a testing framework. - Python seems to have very good testing facilities, I just need to learn - how to use them. - I should also check out QMTest at -\begin_inset LatexCommand \htmlurl{http://www.codesourcery.com/qm/qmtest} - -\end_inset - -, it sounds interesting (it's Python-based too). -\layout Section - -Configuration system -\layout Standard - -Move away from the current ipythonrc format to using standard python files - for configuration. - This will require users to be slightly more careful in their syntax, but - reduces code in IPython, is more in line with Python's normal form (using - the $PYTHONSTARTUP file) and allows much more flexibility. - I also think it's more 'pythonic', in using a single language for everything. -\layout Standard - -Options can be set up with a function call which takes keywords and updates - the options Struct. -\layout Standard - -In order to maintain the recursive inclusion system, write an 'include' - function which is basically a wrapper around safe_execfile(). - Also for alias definitions an alias() function will do. - All functionality which we want to have at startup time for the users can - be wrapped in a small module so that config files look like: -\layout Standard - - -\family typewriter -from IPython.Startup import * -\newline -... -\newline -set_options(automagic=1,colors='NoColor',...) -\newline -... -\newline -include('mysetup.py') -\newline -... -\newline -alias('ls ls --color -l') -\newline -... - etc. -\layout Standard - -Also, put -\series bold -all -\series default - aliases in here, out of the core code. -\layout Standard - -The new system should allow for more seamless upgrading, so that: -\layout Itemize - -It automatically recognizes when the config files need updating and does - the upgrade. -\layout Itemize - -It simply adds the new options to the user's config file without overwriting - it. - The current system is annoying since users need to manually re-sync their - configuration after every update. -\layout Itemize - -It detects obsolete options and informs the user to remove them from his - config file. -\layout Standard - -Here's a copy of Arnd Baecker suggestions on the matter: -\layout Standard - -1.) upgrade: it might be nice to have an "auto" upgrade procedure: i.e. - imagine that IPython is installed system-wide and gets upgraded, how does - a user know, that an upgrade of the stuff in ~/.ipython is necessary ? So - maybe one has to a keep a version number in ~/.ipython and if there is a - mismatch with the started ipython, then invoke the upgrade procedure. -\layout Standard - -2.) upgrade: I find that replacing the old files in ~/.ipython (after copying - them to .old not optimal (for example, after every update, I have to change - my color settings (and some others) in ~/.ipython/ipthonrc). - So somehow keeping the old files and merging the new features would be - nice. - (but how to distinguish changes from version to version with changes made - by the user ?) For, example, I would have to change in GnuplotMagic.py gnuplot_m -ouse to 1 after every upgrade ... -\layout Standard - -This is surely a minor point - also things will change during the "BIG" - rewrite, but maybe this is a point to keep in mind for this ? -\layout Standard - -3.) upgrade: old, sometimes obsolete files stay in the ~/.ipython subdirectory. - (hmm, maybe one could move all these into some subdirectory, but which - name for that (via version-number ?) ?) -\layout Subsection - -Command line options -\layout Standard - -It would be great to design the command-line processing system so that it - can be dynamically modified in some easy way. - This would allow systems based on IPython to include their own command-line - processing to either extend or fully replace IPython's. - Probably moving to the new optparse library (also known as optik) will - make this a lot easier. -\layout Section - -OS-dependent code -\layout Standard - -Options which are OS-dependent (such as colors and aliases) should be loaded - via include files. - That is, the general file will have: -\layout Standard - - -\family typewriter -if os.name == 'posix': -\newline -include('ipythonrc-posix.py') -\newline -elif os.name == 'nt': -\newline -include('ipythonrc-nt.py')... -\layout Standard - -In the -\family typewriter --posix -\family default -, -\family typewriter --nt -\family default -, etc. - files we'll set all os-specific options. -\layout Section - -Merging with other shell systems -\layout Standard - -This is listed before the big design issues, as it is something which should - be kept in mind when that design is made. -\layout Standard - -The following shell systems are out there and I think the whole design of - IPython should try to be modular enough to make it possible to integrate - its features into these. - In all cases IPython should exist as a stand-alone, terminal based program. - But it would be great if users of these other shells (some of them which - have very nice features of their own, especially the graphical ones) could - keep their environment but gain IPython's features. -\layout List -\labelwidthstring 00.00.0000 - -IDLE This is the standard, distributed as part of Python. - -\layout List -\labelwidthstring 00.00.0000 - -pyrepl -\begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/mwh/hacks/pyrepl.html} - -\end_inset - -. - This is a text (curses-based) shell-like replacement which doesn't have - some of IPython's features, but has a crucially useful (and hard to implement) - one: full multi-line editing. - This turns the interactive interpreter into a true code testing and development - environment. - -\layout List -\labelwidthstring 00.00.0000 - -PyCrust -\begin_inset LatexCommand \htmlurl{http://sourceforge.net/projects/pycrust} - -\end_inset - -. - Very nice, wxWindows based system. -\layout List -\labelwidthstring 00.00.0000 - -PythonWin -\begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/mhammond} - -\end_inset - -. - Similar to PyCrust in some respects, a very good and free Python development - environment for Windows systems. -\layout Section - -Class design -\layout Standard - -This is the big one. - Currently classes use each other in a very messy way, poking inside one - another for data and methods. - ipmaker() adds tons of stuff to the main __IP instance by hand, and the - mix-ins used (Logger, Magic, etc) mean the final __IP instance has a million - things in it. - All that needs to be cleanly broken down with well defined interfaces amongst - the different classes, and probably no mix-ins. -\layout Standard - -The best approach is probably to have all the sub-systems which are currently - mixins be fully independent classes which talk back only to the main instance - (and -\series bold -not -\series default - to each other). - In the main instance there should be an object whose job is to handle communica -tion with the sub-systems. -\layout Standard - -I should probably learn a little UML and diagram this whole thing before - I start coding. -\layout Subsection - -Magic -\layout Standard - -Now all methods which will become publicly available are called Magic.magic_name, - the magic_ should go away. - Then, Magic instead of being a mix-in should simply be an attribute of - __IP: -\layout Standard - -__IP.Magic = Magic() -\layout Standard - -This will then give all the magic functions as __IP.Magic.name(), which is - much cleaner. - This will also force a better separation so that Magic doesn't poke inside - __IP so much. - In the constructor, Magic should get whatever information it needs to know - about __IP (even if it means a pointer to __IP itself, but at least we'll - know where it is. - Right now since it's a mix-in, there's no way to know which variables belong - to whom). -\layout Standard - -Build a class MagicFunction so that adding new functions is a matter of: -\layout Standard - - -\family typewriter -my_magic = MagicFunction(category = 'System utilities') -\newline -my_magic.__call__ = ... -\layout Standard - -Features: -\layout Itemize - -The class constructor should automatically register the functions and keep - a table with category sections for easy sorting/viewing. -\layout Itemize - -The object interface must allow automatic building of a GUI for them. - This requires registering the options the command takes, the number of - arguments, etc, in a formal way. - The advantage of this approach is that it allows not only to add GUIs to - the magics, but also for a much more intelligent building of docstrings, - and better parsing of options and arguments. -\layout Standard - -Also think through better an alias system for magics. - Since the magic system is like a command shell inside ipython, the relation - between these aliases and system aliases should be cleanly thought out. -\layout Subsection - -Color schemes -\layout Standard - -These should be loaded from some kind of resource file so they are easier - to modify by the user. -\layout Section - -Hooks -\layout Standard - -IPython should have a modular system where functions can register themselves - for certain tasks. - Currently changing functionality requires overriding certain specific methods, - there should be a clean API for this to be done. -\layout Subsection - -whos hook -\layout Standard - -This was a very nice suggestion from Alexander Schmolck : -\layout Standard - -2. - I think it would also be very helpful if there where some sort of hook - for ``whos`` that let one customize display formaters depending on the - object type. -\layout Standard - -For example I'd rather have a whos that formats an array like: -\layout Standard - - -\family typewriter -Variable Type Data/Length -\newline ------------------------------- -\newline -a array size: 4x3 type: 'Float' -\layout Standard - -than -\layout Standard - - -\family typewriter -Variable Type Data/Length -\newline ------------------------------- -\newline -a array [[ 0. - 1. - 2. - 3<...> 8. - 9. - 10. - 11.]] -\layout Section - -Parallel support -\layout Standard - -For integration with graphical shells and other systems, it will be best - if ipython is split into a kernel/client model, much like Mathematica works. - This simultaneously opens the door for support of interactive parallel - computing. - Currenlty %bg provides a threads-based proof of concept, and Brian Granger's - XGrid project is a much more realistic such system. - The new design should integrates ideas as core elements. - Some notes from Brian on this topic: -\layout Standard - -1. - How should the remote python server/kernel be designed? Multithreaded? - Blocking? Connected/disconnected modes? Load balancing? -\layout Standard - -2. - What APi/protocol should the server/kernel expose to clients? -\layout Standard - -3. - How should the client classes (which the user uses to interact with the - cluster) be designed? -\layout Standard - -4. - What API should the client classes expose? -\layout Standard - -5. - How should the client API be wrapped in a few simple magic functions? -\layout Standard - -6. - How should security be handled? -\layout Standard - -7. - How to work around the issues of the GIL and threads? -\layout Standard - -I think the most important things to work out are the client API (#4) the - server/kernel API/protocol (#2) and the magic function API (#5). - We should let these determine the design and architecture of the components. -\layout Standard - -One other thing. - What is your impression of twisted? I have been looking at it and it looks - like a _very_ powerful set of tools for this type of stuff. - I am wondering if it might make sense to think about using twisted for - this project. -\layout Section - -Manuals -\layout Standard - -The documentation should be generated from docstrings for the command line - args and all the magic commands. - Look into one of the simple text markup systems to see if we can get latex - (for reLyXing later) out of this. - Part of the build command would then be to make an update of the docs based - on this, thus giving more complete manual (and guaranteed to be in sync - with the code docstrings). -\layout Standard - -[PARTLY DONE] At least now all magics are auto-documented, works farily - well. - Limited Latex formatting yet. -\layout Subsection - -Integration with pydoc-help -\layout Standard - -It should be possible to have access to the manual via the pydoc help system - somehow. - This might require subclassing the pydoc help, or figuring out how to add - the IPython docs in the right form so that help() finds them. -\layout Standard - -Some comments from Arnd and my reply on this topic: -\layout Standard - -> ((Generally I would like to have the nice documentation > more easily - accessable from within ipython ... - > Many people just don't read documentation, even if it is > as good as - the one of IPython )) -\layout Standard - -That's an excellent point. - I've added a note to this effect in new_design. - Basically I'd like help() to naturally access the IPython docs. - Since they are already there in html for the user, it's probably a matter - of playing a bit with pydoc to tell it where to find them. - It would definitely make for a much cleaner system. - Right now the information on IPython is: -\layout Standard - --ipython --help at the command line: info on command line switches -\layout Standard - --? at the ipython prompt: overview of IPython -\layout Standard - --magic at the ipython prompt: overview of the magic system -\layout Standard - --external docs (html/pdf) -\layout Standard - -All that should be better integrated seamlessly in the help() system, so - that you can simply say: -\layout Standard - -help ipython -> full documentation access -\layout Standard - -help magic -> magic overview -\layout Standard - -help profile -> help on current profile -\layout Standard - -help -> normal python help access. -\layout Section - -Graphical object browsers -\layout Standard - -I'd like a system for graphically browsing through objects. - -\family typewriter -@obrowse -\family default - should open a widged with all the things which -\family typewriter -@who -\family default - lists, but cliking on each object would open a dedicated object viewer - (also accessible as -\family typewriter -@oview -\family default -). - This object viewer could show a summary of what -\family typewriter -? -\family default - currently shows, but also colorize source code and show it via an html - browser, show all attributes and methods of a given object (themselves - openable in their own viewers, since in Python everything is an object), - links to the parent classes, etc. -\layout Standard - -The object viewer widget should be extensible, so that one can add methods - to view certain types of objects in a special way (for example, plotting - Numeric arrays via grace or gnuplot). - This would be very useful when using IPython as part of an interactive - complex system for working with certain types of data. -\layout Standard - -I should look at what PyCrust has to offer along these lines, at least as - a starting point. -\layout Section - -Miscellaneous small things -\layout Itemize - -Collect whatever variables matter from the environment in some globals for - __IP, so we're not testing for them constantly (like $HOME, $TERM, etc.) -\layout Section - -Session restoring -\layout Standard - -I've convinced myself that session restore by log replay is too fragile - and tricky to ever work reliably. - Plus it can be dog slow. - I'd rather have a way of saving/restoring the *current* memory state of - IPython. - I tried with pickle but failed (can't pickle modules). - This seems the right way to do it to me, but it will have to wait until - someone tells me of a robust way of dumping/reloading *all* of the user - namespace in a file. -\layout Standard - -Probably the best approach will be to pickle as much as possible and record - what can not be pickled for manual reload (such as modules). - This is not trivial to get to work reliably, so it's best left for after - the code restructuring. -\layout Standard - -The following issues exist (old notes, see above paragraph for my current - take on the issue): -\layout Itemize - -magic lines aren't properly re-executed when a log file is reloaded (and - some of them, like clear or run, may change the environment). - So session restore isn't 100% perfect. -\layout Itemize - -auto-quote/parens lines aren't replayed either. - All this could be done, but it needs some work. - Basically it requires re-running the log through IPython itself, not through - python. -\layout Itemize - -_p variables aren't restored with a session. - Fix: same as above. -\layout Section - -Tips system -\layout Standard - -It would be nice to have a tip() function which gives tips to users in some - situations, but keeps track of already-given tips so they aren't given - every time. - This could be done by pickling a dict of given tips to IPYTHONDIR. -\layout Section - -TAB completer -\layout Standard - -Some suggestions from Arnd Baecker: -\layout Standard - -a) For file related commands (ls, cat, ...) it would be nice to be able to - TAB complete the files in the current directory. - (once you started typing something which is uniquely a file, this leads - to this effect, apart from going through the list of possible completions - ...). - (I know that this point is in your documentation.) -\layout Standard - -More general, this might lead to something like command specific completion - ? -\layout Standard - -Here's John Hunter's suggestion: -\layout Standard - -The *right way to do it* would be to make intelligent or customizable choices - about which namespace to add to the completion list depending on the string - match up to the prompt, eg programmed completions. - In the simplest implementation, one would only complete on files and directorie -s if the line preceding the tab press matched 'cd ' or 'run ' (eg you don't - want callable showing up in 'cd ca') -\layout Standard - -In a more advanced scenario, you might imaging that functions supplied the - TAB namespace, and the user could configure a dictionary that mapped regular - expressions to namespace providing functions (with sensible defaults). - Something like -\layout Standard - -completed = { -\newline -'^cd -\backslash -s+(.*)' : complete_files_and_dirs, -\newline -'^run -\backslash -s+(.*)' : complete_files_and_dirs, -\newline -'^run -\backslash -s+(-.*)' : complete_run_options, -\newline -} -\layout Standard - -I don't know if this is feasible, but I really like programmed completions, - which I use extensively in tcsh. - My feeling is that something like this is eminently doable in ipython. -\layout Standard - -/JDH -\layout Standard - -For something like this to work cleanly, the magic command system needs - also a clean options framework, so all valid options for a given magic - can be extracted programatically. -\layout Section - -Debugger -\layout Standard - -Current system uses a minimally tweaked pdb. - Fine-tune it a bit, to provide at least: -\layout Itemize - -Tab-completion in each stack frame. - See email to Chris Hart for details. -\layout Itemize - -Object information via ? at least. - Break up magic_oinfo a bit so that pdb can call it without loading all - of IPython. - If possible, also have the other magics for object study: doc, source, - pdef and pfile. -\layout Itemize - -Shell access via ! -\layout Itemize - -Syntax highlighting in listings. - Use py2html code, implement color schemes. -\layout Section - -A Python-based system shell - pysh? -\layout Standard - -Note: as of IPython 0.6.1, most of this functionality has actually been implemente -d. -\layout Standard - -This section is meant as a working draft for discussions on the possibility - of having a python-based system shell. - It is the result of my own thinking about these issues as much of discussions - on the ipython lists. - I apologize in advance for not giving individual credit to the various - contributions, but right now I don't have the time to track down each message - from the archives. - So please consider this as the result of a collective effort by the ipython - user community. -\layout Standard - -While IPython is (and will remain) a python shell first, it does offer a - fair amount of system access functionality: -\layout Standard - -- ! and !! for direct system access, -\layout Standard - -- magic commands which wrap various system commands, -\layout Standard - -- @sc and @sx, for shell output capture into python variables, -\layout Standard - -- @alias, for aliasing system commands. -\layout Standard - -This has prompted many users, over time, to ask for a way of extending ipython - to the point where it could be used as a full-time replacement over typical - user shells like bash, csh or tcsh. - While my interest in ipython is such that I'll concentrate my personal - efforts on other fronts (debugging, architecture, improvements for scientific - use, gui access), I will be happy to do anything which could make such - a development possible. - It would be the responsibility of someone else to maintain the code, but - I would do all necessary architectural changes to ipython for such an extension - to be feasible. -\layout Standard - -I'll try to outline here what I see as the key issues which need to be taken - into account. - This document should be considered an evolving draft. - Feel free to submit comments/improvements, even in the form of patches. -\layout Standard - -In what follows, I'll represent the hypothetical python-based shell ('pysh' - for now) prompt with '>>'. -\layout Subsection - -Basic design principles -\layout Standard - -I think the basic design guideline should be the following: a hypothetical - python system shell should behave, as much as possible, like a normal shell - that users are familiar with (bash, tcsh, etc). - This means: -\layout Standard - -1. - System commands can be issued directly at the prompt with no special syntax: -\layout Standard - ->> ls -\layout Standard - ->> xemacs -\layout Standard - -should just work like a user expects. -\layout Standard - -2. - The facilities of the python language should always be available, like - they are in ipython: -\layout Standard - ->> 3+4 -\newline -7 -\layout Standard - -3. - It should be possible to easily capture shell output into a variable. - bash and friends use backquotes, I think using a command (@sc) like ipython - currently does is an acceptable compromise. -\layout Standard - -4. - It should also be possible to expand python variables/commands in the middle - of system commands. - I thihk this will make it necessary to use $var for name expansions: -\layout Standard - ->> var='hello' # var is a Python variable -\newline ->> print var hello # This is the result of a Python print command -\newline ->> echo $var hello # This calls the echo command, expanding 'var'. -\layout Standard - -5. - The above capabilities should remain possible for multi-line commands. - One of the most annoying things I find about tcsh, is that I never quite - remember the syntactic details of looping. - I often want to do something at the shell which involves a simple loop, - but I can never remember how to do it in tcsh. - This often means I just write a quick throwaway python script to do it - (Perl is great for this kind of quick things, but I've forgotten most its - syntax as well). -\layout Standard - -It should be possible to write code like: -\layout Standard - ->> for ext in ['.jpg','.gif']: -\newline -.. - ls file$ext -\layout Standard - -And have it work as 'ls file.jpg;ls file.gif'. -\layout Subsection - -Smaller details -\layout Standard - -If the above are considered as valid guiding principles for how such a python - system shell should behave, then some smaller considerations and comments - to keep in mind are listed below. -\layout Standard - -- it's ok for shell builtins (in this case this includes the python language) - to override system commands on the path. - See tcsh's 'time' vs '/usr/bin/time'. - This settles the 'print' issue and related. -\layout Standard - -- pysh should take -\layout Standard - -foo args -\layout Standard - -as a command if (foo args is NOT valid python) and (foo is in $PATH). -\layout Standard - -If the user types -\layout Standard - ->> ./foo args -\layout Standard - -it should be considered a system command always. -\layout Standard - -- _, __ and ___ should automatically remember the previous 3 outputs captured - from stdout. - In parallel, there should be _e, __e and ___e for stderr. - Whether capture is done as a single string or in list mode should be a - user preference. - If users have numbered prompts, ipython's full In/Out cache system should - be available. -\layout Standard - -But regardless of how variables are captured, the printout should be like - that of a plain shell (without quotes or braces to indicate strings/lists). - The everyday 'feel' of pysh should be more that of bash/tcsh than that - of ipython. -\layout Standard - -- filename completion first. - Tab completion could work like in ipython, but with the order of priorities - reversed: first files, then python names. -\layout Standard - -- configuration via standard python files. - Instead of 'setenv' you'd simply write into the os.environ[] dictionary. - This assumes that IPython itself has been fixed to be configured via normal - python files, instead of the current clunky ipythonrc format. -\layout Standard - -- IPython can already configure the prompt in fairly generic ways. - It should be able to generate almost any kind of prompt which bash/tcsh - can (within reason). -\layout Standard - -- Keep the Magics system. - They provide a lightweight syntax for configuring and modifying the state - of the user's session itself. - Plus, they are an extensible system so why not give the users one more - tool which is fairly flexible by nature? Finally, having the @magic optional - syntax allows a user to always be able to access the shell's control system, - regardless of name collisions with defined variables or system commands. -\layout Standard - -But we need to move all magic functionality into a protected namespace, - instead of the current messy name-mangling tricks (which don't scale well). - -\layout Section - -Future improvements -\layout Itemize - -When from import * is used, first check the existing namespace and - at least issue a warning on screen if names are overwritten. -\layout Itemize - -Auto indent? Done, for users with readline support. -\layout Subsection - -Better completion a la zsh -\layout Standard - -This was suggested by Arnd: -\layout Standard - -> >\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ - More general, this might lead to something like -\layout Standard - -> >\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ - command specific completion ? -\layout Standard - -> -\layout Standard - -> I'm not sure what you mean here. -\layout Standard - -\SpecialChar ~ - -\layout Standard - -Sorry, that was not understandable, indeed ... -\layout Standard - -I thought of something like -\layout Standard - -\SpecialChar ~ -- cd and then use TAB to go through the list of directories -\layout Standard - -\SpecialChar ~ -- ls and then TAB to consider all files and directories -\layout Standard - -\SpecialChar ~ -- cat and TAB: only files (no directories ...) -\layout Standard - -\SpecialChar ~ - -\layout Standard - -For zsh things like this are established by defining in .zshrc -\layout Standard - -\SpecialChar ~ - -\layout Standard - -compctl -g '*.dvi' xdvi -\layout Standard - -compctl -g '*.dvi' dvips -\layout Standard - -compctl -g '*.tex' latex -\layout Standard - -compctl -g '*.tex' tex -\layout Standard - -... -\layout Section - -Outline of steps -\layout Standard - -Here's a rough outline of the order in which to start implementing the various - parts of the redesign. - The first 'test of success' should be a clean pychecker run (not the mess - we get right now). -\layout Itemize - -Make Logger and Magic not be mixins but attributes of the main class. - -\begin_deeper -\layout Itemize - -Magic should have a pointer back to the main instance (even if this creates - a recursive structure) so it can control it with minimal message-passing - machinery. - -\layout Itemize - -Logger can be a standalone object, simply with a nice, clean interface. -\layout Itemize - -Logger currently handles part of the prompt caching, but other parts of - that are in the prompts class itself. - Clean up. -\end_deeper -\layout Itemize - -Change to python-based config system. -\layout Itemize - -Move make_IPython() into the main shell class, as part of the constructor. - Do this -\emph on -after -\emph default -the config system has been changed, debugging will be a lot easier then. -\layout Itemize - -Merge the embeddable class and the normal one into one. - After all, the standard ipython script -\emph on -is -\emph default - a python program with IPython embedded in it. - There's no need for two separate classes ( -\emph on -maybe -\emph default - keep the old one around for the sake of backwards compatibility). -\layout Section - -Ville Vainio's suggestions -\layout Standard - -Some notes sent in by Ville Vainio -\family typewriter - -\family default - on Tue, 29 Jun 2004. - Keep here for reference, some of it replicates things already said above. -\layout Standard - -Current ipython seems to "special case" lots of stuff - aliases, magics - etc. - It would seem to yield itself to a simpler and more extensible architecture, - consisting of multple dictionaries, where just the order of search is determine -d by profile/prefix. - All the functionality would just be "pushed" to ipython core, i.e. - the objects that represent the functionality are instantiated on "plugins" - and they are registered with ipython core. - i.e. -\layout Standard - -def magic_f(options, args): pass -\layout Standard - -m = MyMagic(magic_f) m.arghandler = stockhandlers.OptParseArgHandler m.options - = .... - # optparse options, for easy passing to magic_f and help display -\layout Standard - -# note that arghandler takes a peek at the instance, sees options, and proceeds - # accordingly. - Various arg handlers can ask for arbitrary options. - # some handler might optionally glob the filenames, search data folders - for filenames etc. -\layout Standard - -ipythonregistry.register(category = "magic", name = "mymagic", obj = m) -\layout Standard - -I bet most of the current functionality could easily be added to such a - registry by just instantiating e.g. - "Magic" class and registering all the functions with some sensible default - args. - Supporting legacy stuff in general would be easy - just implement new handlers - (arg and otherwise) for new stuff, and have the old handlers around forever - / as long as is deemed appropriate. - The 'python' namespace (locals() + globals()) should be special, of course. -\layout Standard - -It should be easy to have arbitrary number of "categories" (like 'magic', - 'shellcommand','projectspecific_myproject', 'projectspecific_otherproject'). - It would only influence the order in which the completions are suggested, - and in case of name collision which one is selected. - Also, I think all completions should be shown, even the ones in "later" - categories in the case of a match in an "earlier" category. -\layout Standard - -The "functionality object" might also have a callable object 'expandarg', - and ipython would run it (with the arg index) when tab completion is attempted - after typing the function name. - It would return the possible completions for that particular command... - or None to "revert to default file completions". - Such functionality could be useful in making ipython an "operating console" - of a sort. - I'm talking about: -\layout Standard - ->> lscat reactor # list commands in category - reactor is "project specific" - category -\layout Standard - -r_operate -\layout Standard - ->> r_operate start shutdown notify_meltdown evacuate -\layout Standard - ->> r_operate shutdown -\layout Standard - -1 2 5 6 # note that 3 and 4 are already shut down -\layout Standard - ->> r_operate shutdown 2 -\layout Standard - -Shutting down.. - ok. -\layout Standard - ->> r_operate start -\layout Standard - -2 3 4 # 2 was shut down, can be started now -\layout Standard - ->> r_operate start 2 -\layout Standard - -Starting.... - ok. -\layout Standard - -I'm talking about having a super-configurable man-machine language here! - Like cmd.Cmd on steroids, as a free addition to ipython! -\the_end diff --git a/docs/do_sphinx.py b/docs/do_sphinx.py deleted file mode 100755 index 23fe9eb..0000000 --- a/docs/do_sphinx.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -"""Script to build documentation using Sphinx. -""" - -import fileinput,os,sys - -def oscmd(c): - os.system(c) - -# html manual. -oscmd('sphinx-build -d build/doctrees source build/html') - -if sys.platform != 'win32': - # LaTeX format. - oscmd('sphinx-build -b latex -d build/doctrees source build/latex') - - # Produce pdf. - topdir = os.getcwdu() - os.chdir('build/latex') - - # Change chapter style to section style: allows chapters to start on - # the current page. Works much better for the short chapters we have. - # This must go in the class file rather than the preamble, so we modify - # manual.cls at runtime. - chapter_cmds=r''' -% Local changes. -\renewcommand\chapter{ - \thispagestyle{plain} - \global\@topnum\z@ - \@afterindentfalse - \secdef\@chapter\@schapter -} -\def\@makechapterhead#1{ - \vspace*{10\p@} - {\raggedright \reset@font \Huge \bfseries \thechapter \quad #1} - \par\nobreak - \hrulefill - \par\nobreak - \vspace*{10\p@} -} -\def\@makeschapterhead#1{ - \vspace*{10\p@} - {\raggedright \reset@font \Huge \bfseries #1} - \par\nobreak - \hrulefill - \par\nobreak - \vspace*{10\p@} -} -''' - # manual.cls in Sphinx <= 0.6.7 became sphinxmanual.cls for 1.x - manualcls = 'sphinxmanual.cls' - if not os.path.exists(manualcls): - manualcls = 'manual.cls' - - unmodified=True - for line in fileinput.FileInput(manualcls, inplace=True): - if 'Support for module synopsis' in line and unmodified: - line=chapter_cmds+line - elif 'makechapterhead' in line: - # Already have altered manual.cls: don't need to again. - unmodified=False - print line, - - # Copying the makefile produced by sphinx... - oscmd('pdflatex ipython.tex') - oscmd('pdflatex ipython.tex') - oscmd('pdflatex ipython.tex') - oscmd('makeindex -s python.ist ipython.idx') - oscmd('makeindex -s python.ist modipython.idx') - oscmd('pdflatex ipython.tex') - oscmd('pdflatex ipython.tex') - - # Create a manual/ directory with final html/pdf output - os.chdir(topdir) - oscmd('rm -rf manual') - oscmd('mkdir manual') - oscmd('cp -r build/html/*.html build/html/_static manual/') - oscmd('cp build/latex/ipython.pdf manual/') diff --git a/docs/emacs/ipython.el b/docs/emacs/ipython.el deleted file mode 100644 index 9937fe1..0000000 --- a/docs/emacs/ipython.el +++ /dev/null @@ -1,514 +0,0 @@ -;;; ipython.el --- Adds support for IPython to python-mode.el - -;; Copyright (C) 2002, 2003, 2004, 2005 Alexander Schmolck -;; Author: Alexander Schmolck -;; Keywords: ipython python languages oop -;; URL: http://ipython.org -;; Compatibility: Emacs21, XEmacs21 -;; FIXME: #$@! INPUT RING -(defconst ipython-version "0.11" - "Tied to IPython main version number.") - -;;; Commentary -;; This library makes all the functionality python-mode has when running with -;; the normal python-interpreter available for ipython, too. It also enables a -;; persistent py-shell command history across sessions (if you exit python -;; with C-d in py-shell) and defines the command `ipython-to-doctest', which -;; can be used to convert bits of a ipython session into something that can be -;; used for doctests. To install, put this file somewhere in your emacs -;; `load-path' [1] and add the following line to your ~/.emacs file (the first -;; line only needed if the default (``"ipython"``) is wrong or ipython is not -;; in your `exec-path'):: -;; -;; (setq ipython-command "/SOME-PATH/ipython") -;; (require 'ipython) -;; -;; Ipython will be set as the default python shell, but only if the ipython -;; executable is in the path. For ipython sessions autocompletion with -;; is also enabled (experimental feature!). Please also note that all the -;; terminal functions in py-shell are handled by emacs's comint, **not** by -;; (i)python, so importing readline etc. will have 0 effect. -;; -;; To start an interactive ipython session run `py-shell' with ``M-x py-shell`` -;; (or the default keybinding ``C-c C-!``). -;; -;; You can customize the arguments passed to the IPython instance at startup by -;; setting the ``py-python-command-args`` variable. For example, to start -;; always in ``pylab`` mode with hardcoded light-background colors, you can -;; use the following, *after* the ``(require 'ipython)`` line:: -;; -;; (setq-default py-python-command-args '("--pylab" "--colors=LightBG")) -;; -;; -;; NOTE: This mode is currently somewhat alpha and although I hope that it -;; will work fine for most cases, doing certain things (like the -;; autocompletion and a decent scheme to switch between python interpreters) -;; properly will also require changes to ipython that will likely have to wait -;; for a larger rewrite scheduled some time in the future. -;; -;; -;; Further note that I don't know whether this runs under windows or not and -;; that if it doesn't I can't really help much, not being afflicted myself. -;; -;; -;; Hints for effective usage -;; ------------------------- -;; -;; - IMO the best feature by far of the ipython/emacs combo is how much easier -;; it makes it to find and fix bugs thanks to the ``%pdb on or %debug``/ -;; pdbtrack combo. **NOTE** for this feature to work, you must turn coloring -;; off, at least during your debug session. Type ``%colors nocolor`` before -;; debugging and file tracking will work, you can re-enable it with ``%colors -;; linux`` or ``%colors lightbg`` (depending on your preference) when -;; finished debugging so you can have coloring for the rest of the session. -;; -;; Try it: first in the ipython to shell do ``%pdb on`` then do something -;; that will raise an exception (FIXME nice example), or type ``%debug`` -;; after the exception has been raised. You'll be amazed at how easy it is -;; to inspect the live objects in each stack frames and to jump to the -;; corresponding sourcecode locations as you walk up and down the stack trace -;; (even without ``%pdb on`` you can always use ``C-c -`` (`py-up-exception') -;; to jump to the corresponding source code locations). -;; -;; - emacs gives you much more powerful commandline editing and output searching -;; capabilities than ipython-standalone -- isearch is your friend if you -;; quickly want to print 'DEBUG ...' to stdout out etc. -;; -;; - This is not really specific to ipython, but for more convenient history -;; access you might want to add something like the following to *the beggining* -;; of your ``.emacs`` (if you want behavior that's more similar to stand-alone -;; ipython, you can change ``meta p`` etc. for ``control p``):: -;; -;; (require 'comint) -;; (define-key comint-mode-map [(meta p)] -;; 'comint-previous-matching-input-from-input) -;; (define-key comint-mode-map [(meta n)] -;; 'comint-next-matching-input-from-input) -;; (define-key comint-mode-map [(control meta n)] -;; 'comint-next-input) -;; (define-key comint-mode-map [(control meta p)] -;; 'comint-previous-input) -;; -;; - Be aware that if you customize py-python-command previously, this value -;; will override what ipython.el does (because loading the customization -;; variables comes later). -;; -;; Please send comments and feedback to the ipython-list -;; () where I (a.s.) or someone else will try to -;; answer them (it helps if you specify your emacs version, OS etc; -;; familiarity with might -;; speed up things further). -;; -;; Footnotes: -;; -;; [1] If you don't know what `load-path' is, C-h v load-path will tell -;; you; if required you can also add a new directory. So assuming that -;; ipython.el resides in ~/el/, put this in your emacs: -;; -;; -;; (add-to-list 'load-path "~/el") -;; (setq ipython-command "/some-path/ipython") -;; (require 'ipython) -;; -;; -;; -;; -;; TODO: -;; - do autocompletion properly -;; - implement a proper switching between python interpreters -;; -;; BUGS: -;; - neither:: -;; -;; (py-shell "-c print 'FOOBAR'") -;; -;; nor:: -;; -;; (let ((py-python-command-args (append py-python-command-args -;; '("-c" "print 'FOOBAR'")))) -;; (py-shell)) -;; -;; seem to print anything as they should -;; -;; - look into init priority issues with `py-python-command' (if it's set -;; via custom) - - -;;; Code -(require 'cl) -(require 'shell) -(require 'executable) -(require 'ansi-color) -;; XXX load python-mode, so that we can screw around with its variables -;; this has the disadvantage that python-mode is loaded even if no -;; python-file is ever edited etc. but it means that `py-shell' works -;; without loading a python-file first. Obviously screwing around with -;; python-mode's variables like this is a mess, but well. -(require 'python-mode) - -(defcustom ipython-command "ipython" - "*Shell command used to start ipython." - :type 'string - :group 'python) - -;; Users can set this to nil -(defvar py-shell-initial-switch-buffers t - "If nil, don't switch to the *Python* buffer on the first call to - `py-shell'.") - -(defvar ipython-backup-of-py-python-command nil - "HACK") - - -(defvar ipython-de-input-prompt-regexp "\\(?: -In \\[[0-9]+\\]: *.* -----+> \\(.* -\\)[\n]?\\)\\|\\(?: -In \\[[0-9]+\\]: *\\(.* -\\)\\)\\|^[ ]\\{3\\}[.]\\{3,\\}: *\\(.* -\\)" - "A regular expression to match the IPython input prompt and the python -command after it. The first match group is for a command that is rewritten, -the second for a 'normal' command, and the third for a multiline command.") -(defvar ipython-de-output-prompt-regexp "^Out\\[[0-9]+\\]: " - "A regular expression to match the output prompt of IPython.") - - -(if (not (executable-find ipython-command)) - (message (format "Can't find executable %s - ipython.el *NOT* activated!!!" - ipython-command)) - ;; change the default value of py-shell-name to ipython - (setq-default py-shell-name ipython-command) - ;; turn on ansi colors for ipython and activate completion - (defun ipython-shell-hook () - ;; the following is to synchronize dir-changes - (make-local-variable 'shell-dirstack) - (setq shell-dirstack nil) - (make-local-variable 'shell-last-dir) - (setq shell-last-dir nil) - (make-local-variable 'shell-dirtrackp) - (setq shell-dirtrackp t) - (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t) - - (ansi-color-for-comint-mode-on) - (define-key py-shell-map [tab] 'ipython-complete) - ;; Add this so that tab-completion works both in X11 frames and inside - ;; terminals (such as when emacs is called with -nw). - (define-key py-shell-map "\t" 'ipython-complete) - ;;XXX this is really just a cheap hack, it only completes symbols in the - ;;interactive session -- useful nonetheless. - (define-key py-mode-map [(meta tab)] 'ipython-complete) - - ) - (add-hook 'py-shell-hook 'ipython-shell-hook) - ;; Regular expression that describes tracebacks for IPython in context and - ;; verbose mode. - - ;;Adapt python-mode settings for ipython. - ;; (this works for %xmode 'verbose' or 'context') - - ;; XXX putative regexps for syntax errors; unfortunately the - ;; current python-mode traceback-line-re scheme is too primitive, - ;; so it's either matching syntax errors, *or* everything else - ;; (XXX: should ask Fernando for a change) - ;;"^ File \"\\(.*?\\)\", line \\([0-9]+\\).*\n.*\n.*\nSyntaxError:" - ;;^ File \"\\(.*?\\)\", line \\([0-9]+\\)" - - (setq py-traceback-line-re - "\\(^[^\t >].+?\\.py\\).*\n +[0-9]+[^\00]*?\n-+> \\([0-9]+\\)+") - - - ;; Recognize the ipython pdb, whose prompt is 'ipdb>' or 'ipydb>' - ;;instead of '(Pdb)' - (setq py-pdbtrack-input-prompt "\n[(<]*[Ii]?[Pp]y?db[>)]+ ") - (setq pydb-pydbtrack-input-prompt "\n[(]*ipydb[>)]+ ") - - (setq py-shell-input-prompt-1-regexp "^In \\[[0-9]+\\]: *" - py-shell-input-prompt-2-regexp "^ [.][.][.]+: *" ) - ;; select a suitable color-scheme - (unless (delq nil - (mapcar (lambda (x) (eq (string-match "^--colors*" x) 0)) - py-python-command-args)) - (setq-default py-python-command-args - (cons (format "--colors=%s" - (cond - ((eq frame-background-mode 'dark) - "Linux") - ((eq frame-background-mode 'light) - "LightBG") - (t ; default (backg-mode isn't always set by XEmacs) - "LightBG"))) - py-python-command-args))) - (when (boundp 'py-python-command) - (unless (equal ipython-backup-of-py-python-command py-python-command) - (setq ipython-backup-of-py-python-command py-python-command))) - (setq py-python-command ipython-command) - (when (boundp 'py-shell-name) - (setq py-shell-name ipython-command))) - -;; MODIFY py-shell so that it loads the editing history -(defadvice py-shell (around py-shell-with-history) - "Add persistent command-history support (in -$PYTHONHISTORY (or \"~/.ipython/history\", if we use IPython)). Also, if -`py-shell-initial-switch-buffers' is nil, it only switches to *Python* if that -buffer already exists." - (if (comint-check-proc "*Python*") - ad-do-it - (setq comint-input-ring-file-name - (if (string-equal py-python-command ipython-command) - (concat (or (getenv "IPYTHONDIR") "~/.ipython") "/history") - (or (getenv "PYTHONHISTORY") "~/.python-history.py"))) - (comint-read-input-ring t) - (let ((buf (current-buffer))) - ad-do-it - (unless py-shell-initial-switch-buffers - (switch-to-buffer-other-window buf))))) -(ad-activate 'py-shell) -;; (defadvice py-execute-region (before py-execute-buffer-ensure-process) -;; "HACK: test that ipython is already running before executing something. -;; Doing this properly seems not worth the bother (unless people actually -;; request it)." -;; (unless (comint-check-proc "*Python*") -;; (error "Sorry you have to first do M-x py-shell to send something to ipython."))) -;; (ad-activate 'py-execute-region) - -(defadvice py-execute-region (around py-execute-buffer-ensure-process) - "HACK: if `py-shell' is not active or ASYNC is explicitly desired, fall back - to python instead of ipython." - (let ((py-which-shell (if (and (comint-check-proc "*Python*") (not async)) - py-python-command - ipython-backup-of-py-python-command))) - ad-do-it)) -(ad-activate 'py-execute-region) - -(defun ipython-to-doctest (start end) - "Transform a cut-and-pasted bit from an IPython session into something that -looks like it came from a normal interactive python session, so that it can -be used in doctests. Example: - - - In [1]: import sys - - In [2]: sys.stdout.write 'Hi!\n' - ------> sys.stdout.write ('Hi!\n') - Hi! - - In [3]: 3 + 4 - Out[3]: 7 - -gets converted to: - - >>> import sys - >>> sys.stdout.write ('Hi!\n') - Hi! - >>> 3 + 4 - 7 - -" - (interactive "*r\n") - ;(message (format "###DEBUG s:%de:%d" start end)) - (save-excursion - (save-match-data - ;; replace ``In [3]: bla`` with ``>>> bla`` and - ;; ``... : bla`` with ``... bla`` - (goto-char start) - (while (re-search-forward ipython-de-input-prompt-regexp end t) - ;(message "finding 1") - (cond ((match-string 3) ;continued - (replace-match "... \\3" t nil)) - (t - (replace-match ">>> \\1\\2" t nil)))) - ;; replace `` - (goto-char start) - (while (re-search-forward ipython-de-output-prompt-regexp end t) - (replace-match "" t nil))))) - -(defvar ipython-completion-command-string - "print(';'.join(get_ipython().complete('%s', '%s')[1])) #PYTHON-MODE SILENT\n" - "The string send to ipython to query for all possible completions") - - -;; xemacs doesn't have `comint-preoutput-filter-functions' so we'll try the -;; following wonderful hack to work around this case -(if (featurep 'xemacs) - ;;xemacs - (defun ipython-complete () - "Try to complete the python symbol before point. Only knows about the stuff -in the current *Python* session." - (interactive) - (let* ((ugly-return nil) - (sep ";") - (python-process (or (get-buffer-process (current-buffer)) - ;XXX hack for .py buffers - (get-process py-which-bufname))) - ;; XXX currently we go backwards to find the beginning of an - ;; expression part; a more powerful approach in the future might be - ;; to let ipython have the complete line, so that context can be used - ;; to do things like filename completion etc. - (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_." (point-at-bol)) - (point))) - (end (point)) - (pattern (buffer-substring-no-properties beg end)) - (completions nil) - (completion-table nil) - completion - (comint-output-filter-functions - (append comint-output-filter-functions - '(ansi-color-filter-apply - (lambda (string) - ;(message (format "DEBUG filtering: %s" string)) - (setq ugly-return (concat ugly-return string)) - (delete-region comint-last-output-start - (process-mark (get-buffer-process (current-buffer))))))))) - ;(message (format "#DEBUG pattern: '%s'" pattern)) - (process-send-string python-process - (format ipython-completion-command-string pattern)) - (accept-process-output python-process) - - ;(message (format "DEBUG return: %s" ugly-return)) - (setq completions - (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep)) - (setq completion-table (loop for str in completions - collect (list str nil))) - (setq completion (try-completion pattern completion-table)) - (cond ((eq completion t)) - ((null completion) - (message "Can't find completion for \"%s\"" pattern) - (ding)) - ((not (string= pattern completion)) - (delete-region beg end) - (insert completion)) - (t - (message "Making completion list...") - (with-output-to-temp-buffer "*Python Completions*" - (display-completion-list (all-completions pattern completion-table))) - (message "Making completion list...%s" "done"))))) - ;; emacs - (defun ipython-complete () - "Try to complete the python symbol before point. Only knows about the stuff -in the current *Python* session." - (interactive) - (let* ((ugly-return nil) - (sep ";") - (python-process (or (get-buffer-process (current-buffer)) - ;XXX hack for .py buffers - (get-process py-which-bufname))) - ;; XXX currently we go backwards to find the beginning of an - ;; expression part; a more powerful approach in the future might be - ;; to let ipython have the complete line, so that context can be used - ;; to do things like filename completion etc. - (beg (save-excursion (skip-chars-backward "a-z0-9A-Z_./\-" (point-at-bol)) - (point))) - (end (point)) - (line (buffer-substring-no-properties (point-at-bol) end)) - (pattern (buffer-substring-no-properties beg end)) - (completions nil) - (completion-table nil) - completion - (comint-preoutput-filter-functions - (append comint-preoutput-filter-functions - '(ansi-color-filter-apply - (lambda (string) - (setq ugly-return (concat ugly-return string)) - ""))))) - (process-send-string python-process - (format ipython-completion-command-string pattern line)) - (accept-process-output python-process) - (setq completions - (split-string (substring ugly-return 0 (position ?\n ugly-return)) sep)) - ;(message (format "DEBUG completions: %S" completions)) - (setq completion-table (loop for str in completions - collect (list str nil))) - (setq completion (try-completion pattern completion-table)) - (cond ((eq completion t)) - ((null completion) - (message "Can't find completion for \"%s\" based on line %s" pattern line) - (ding)) - ((not (string= pattern completion)) - (delete-region (- end (length pattern)) end) - (insert completion)) - (t - (message "Making completion list...") - (with-output-to-temp-buffer "*IPython Completions*" - (display-completion-list (all-completions pattern completion-table))) - (message "Making completion list...%s" "done"))))) -) - -;;; if python-mode's keybinding for the tab key wins then py-shell-complete is called -;;; instead of ipython-complete which result in hanging emacs since there is no shell -;;; process for python-mode to communicate with -(defadvice py-shell-complete - (around avoid-py-shell-complete activate) - (ipython-complete)) - - -;;; autoindent support: patch sent in by Jin Liu , -;;; originally written by doxgen@newsmth.net -;;; Minor modifications by fperez for xemacs compatibility. - -(defvar ipython-autoindent t - "If non-nil, enable autoindent for IPython shell through python-mode.") - -(defvar ipython-indenting-buffer-name "*IPython Indentation Calculation*" - "Temporary buffer for indenting multiline statement.") - -(defun ipython-get-indenting-buffer () - "Return a temporary buffer set in python-mode. Create one if necessary." - (let ((buf (get-buffer-create ipython-indenting-buffer-name))) - (set-buffer buf) - (unless (eq major-mode 'python-mode) - (python-mode)) - buf)) - -(defvar ipython-indentation-string nil - "Indentation for the next line in a multiline statement.") - -(defun ipython-send-and-indent () - "Send the current line to IPython, and calculate the indentation for -the next line." - (interactive) - (if ipython-autoindent - (let ((line (buffer-substring (point-at-bol) (point))) - (after-prompt1) - (after-prompt2)) - (save-excursion - (comint-bol t) - (if (looking-at py-shell-input-prompt-1-regexp) - (setq after-prompt1 t) - (setq after-prompt2 (looking-at py-shell-input-prompt-2-regexp))) - (with-current-buffer (ipython-get-indenting-buffer) - (when after-prompt1 - (erase-buffer)) - (when (or after-prompt1 after-prompt2) - (delete-region (point-at-bol) (point)) - (insert line) - (newline-and-indent)))))) - ;; send input line to ipython interpreter - (comint-send-input)) - -(defun ipython-indentation-hook (string) - "Insert indentation string if py-shell-input-prompt-2-regexp -matches last process output." - (let* ((start-marker (or comint-last-output-start - (point-min-marker))) - (end-marker (process-mark (get-buffer-process (current-buffer)))) - (text (ansi-color-filter-apply (buffer-substring start-marker end-marker)))) - ;; XXX if `text' matches both pattern, it MUST be the last prompt-2 - (when (and (string-match py-shell-input-prompt-2-regexp text) - (not (string-match "\n$" text))) - (with-current-buffer (ipython-get-indenting-buffer) - (setq ipython-indentation-string - (buffer-substring (point-at-bol) (point)))) - (goto-char end-marker) - (insert ipython-indentation-string) - (setq ipython-indentation-string nil)))) - -(add-hook 'py-shell-hook - (lambda () - (add-hook 'comint-output-filter-functions - 'ipython-indentation-hook))) - -(define-key py-shell-map (kbd "RET") 'ipython-send-and-indent) -;;; / end autoindent support - -(provide 'ipython) diff --git a/docs/pycon.ico b/docs/pycon.ico deleted file mode 100644 index 55ee14afa610b8d540e57ef29faecc31224732bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@D%46g=0HqIRlUG`hgSNRJuqQ}zjEAq7?nI=0aaMG7-2-++rYP^rIAxKAjk zls(&xn?&7q_Sw06&o8!YKyXXbIUK%6z#Y#I%#``a6u9v*J;E>0zC-IUx#lb$thMYk zzN2ZvBJCa!5F`p3ZR-OXq2@xOw{97 z$%d?3jS|xM62X{Gl*&+7Qk@OM;FL>-QA!!kXiE^0QWeML*~mz;W1=SVDN##rP!;zS z3`uDB1j$}JByhWV-(+2FKkT1+knbw?H2Lyg53%b3$oHpa-|S8-K9@PLz68IPSJn^U u?(V=>%}+)0yAhEIL?N^&@WjlRbJ2?rSTI)_+m%h2vpx^^+iPpwzkdLZKh0_Y diff --git a/docs/update_version.sh b/docs/update_version.sh deleted file mode 100755 index 4e09ef0..0000000 --- a/docs/update_version.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -ver=`ipython -V` -sed "s/__version__/${ver}/" manual_base.lyx > manual.lyx