##// END OF EJS Templates
Patch by Nik Tautenhahn: Close help window if...
Patch by Nik Tautenhahn: Close help window if exiting igrid.

File last commit:

r539:c2eb3405
r539:c2eb3405
Show More
ChangeLog
6284 lines | 246.9 KiB | text/plain | TextLexer
2007-03-09 Walter Doerwald <walter@livinglogic.de>
* IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
Close help window if exiting igrid.
2007-03-02 J�rgen Stenarson <jorgen.stenarson@bostream.nu>
* IPython/Extensions/ipy_defaults.py: Check if readline is available
before calling functions from readline.
2007-03-02 Walter Doerwald <walter@livinglogic.de>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
avoid a DeprecationWarning from GTK.
2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
protect against exceptions at Python shutdown time. Patch
sumbmitted to upstream.
2007-02-14 Walter Doerwald <walter@livinglogic.de>
* 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 <walter@livinglogic.de>
* IPython/Extensions/ipipe.py: Add an xrepr implementation
for the noitem object.
2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
* 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
<tom.denniston-AT-alum.dartmouth.org>.
2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* IPython/irunner.py (main): fix small bug where extensions were
not being correctly recognized.
2007-01-23 Walter Doerwald <walter@livinglogic.de>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* scripts/ipython_win_post_install: create ipython.py in
prefix + "/scripts".
* Release.py: Update version to 0.7.3.
2006-12-14 Ville Vainio <vivainio@gmail.com>
* scripts/ipython_win_post_install: Overwrite old shortcuts
if they already exist
* Release.py: release 0.7.3rc2
2006-12-13 Ville Vainio <vivainio@gmail.com>
* Branch and update Release.py for 0.7.3rc1
2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* IPython/iplib.py (debugger): prevent a nasty traceback if %debug
is called before any exception has occurred.
2006-12-08 Ville Vainio <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <walter@livinglogic.de>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* Magic.py, manual_base.lyx: Kirill Smelkov patch:
try to use "cProfile" instead of the slower pure python
"profile"
2006-11-23 Ville Vainio <vivainio@gmail.com>
* 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 <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* completer.py (attr_matches): catch all exceptions raised
by eval of expr with dots.
2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
* 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
<bpeng-AT-rice.edu>.
2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <walter@livinglogic.de>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <walter@livinglogic.de>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
they broke unittest
2006-08-11 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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
<norbert-AT-tretkowski.de> and Alexandre Fayolle
<afayolle-AT-debian.org>.
2006-08-04 Walter Doerwald <walter@livinglogic.de>
* IPython/Extensions/ibrowse.py: Fixed the help message in the footer
(which was displaying "quit" twice).
2006-07-28 Walter Doerwald <walter@livinglogic.de>
* IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
the mode argument).
2006-07-27 Walter Doerwald <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* iplib.py: history now stores multiline input as single
history entries. Patch by Jorgen Cederlof.
2006-07-18 Walter Doerwald <walter@livinglogic.de>
* IPython/Extensions/ibrowse.py: Make cursor visible over
non existing attributes.
2006-07-14 Walter Doerwald <walter@livinglogic.de>
* 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 <walter@livinglogic.de>
* IPython/Extensions/ipipe.py (isort): Make isort usable without
argument. This sorts the items themselves.
2006-07-12 Walter Doerwald <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
mode, patch contributed by Darren Dale. NEEDS TESTING!
2006-06-28 Walter Doerwald <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* Magic.py (_inspect, _ofind) Apply David Huard's
patch for displaying the correct docstring for 'property'
attributes.
2006-06-23 Walter Doerwald <walter@livinglogic.de>
* IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
commands into the methods implementing them.
2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
* ipython.el (ipython-indentation-hook): cleanup patch, submitted
by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
autoindent support was authored by Jin Liu.
2006-06-22 Walter Doerwald <walter@livinglogic.de>
* IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
for keymaps with a custom class that simplifies handling.
2006-06-19 Walter Doerwald <walter@livinglogic.de>
* IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
resizing. This requires Python 2.5 to work.
2006-06-16 Walter Doerwald <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* 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 <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* 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 <walter@livinglogic.de>
* 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 <walter@livinglogic.de>
* 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 <vivainio@gmail.com>
* iplib.py: ipython mybatch.ipy exits ipython immediately after
running the batch files instead of leaving the session open.
2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
the original fix was incomplete. Patch submitted by W. Maier.
2006-06-07 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* IPython/Release.py (version): Made 0.7.2 final for release.
Repo tagged and release cut.
2006-06-05 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <gkmohan-AT-gmail.com> 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 <Fernando.Perez@colorado.edu>
* 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 <noah-AT-noah.org>. 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <kschutte-AT-csail.mit.edu> 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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
<m.liu.jin-AT-gmail.com> 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 <mscott-AT-goldenspud.com>. 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 <Fernando.Perez@colorado.edu>
* 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 <jgraham-AT-ast.cam.ac.uk> and
Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
(_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 <dirk-AT-sun.ac.za>
while running under SAGE.
2006-05-23 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* Oinspect.py: Only show docstring for nonexisting/binary files
when doing object??, closing ticket #62
2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* IPython/Release.py (version): put out 0.7.2.rc1 for testing.
2006-04-11 Ville Vainio <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* iplib.py: Fix quoting of aliases so that only argless ones
are quoted
2006-03-28 Ville Vainio <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* Manual: thanks to a tip on proper color handling for Emacs, by
Eric J Haywiser <ejh1-AT-MIT.EDU>.
* ipython.el: close http://www.scipy.net/roundup/ipython/issue57
by applying the provided patch. Thanks to Liu Jin
<m.liu.jin-AT-gmail.com> 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 <Fernando.Perez@colorado.edu>
* IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
2006-03-12 Ville Vainio <vivainio@gmail.com>
* Magic.py (magic_timeit): Added %timeit magic, contributed by
Torsten Marek.
2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
line ranges works again.
2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
To use, do "from ipipe import *".
2006-02-24 Ville Vainio <vivainio@gmail.com>
* Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
"cleanly" and safely than the older upgrade mechanism.
2006-02-21 Ville Vainio <vivainio@gmail.com>
* Magic.py: %save works again.
2006-02-15 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* iplib.py: Try to import pyreadline on Windows.
2006-01-27 Ville Vainio <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* Added %cpaste magic for pasting python code
2006-01-22 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* IPython/iplib.py (interact): catch exceptions which can be
triggered asynchronously by signal handlers. Thanks to an
automatic crash report, submitted by Colin Kingsley
<tercel-AT-gentoo.org>.
2006-01-20 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <rocky-AT-panix.com>.
2006-01-16 Ville Vainio <vivainio@gmail.com>
* 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 <vivainio@gmail.com>
* 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@livinglogic.de>. Walter also
requested configurable display hook, which is now implemented.
2006-01-13 Ville Vainio <vivainio@gmail.com>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <vivainio@gmail.com>
* 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 <jorgen.stenarson-AT-bostream.nu>. 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 <Fernando.Perez@colorado.edu>
* 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
<marienz-AT-gentoo.org>, closes
http://www.scipy.net/roundup/ipython/issue51.
2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* setup_bdist_egg.py: little script to build an egg. Added
support in the release tools as well.
2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellWX.__init__): add support for WXPython
version selection (new -wxversion command line and ipythonrc
parameter). Patch contributed by Arnd Baecker
<arnd.baecker-AT-web.de>.
* 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 <Fernando.Perez@colorado.edu>
* IPython/iplib.py (_should_recompile): Small fix, closes
http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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
<barnarj-AT-ccf.org>.
* 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 <jcollins_boulder-AT-earthlink.net>. 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <stefan-AT-sun.ac.za> 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 <bialix-AT-ukr.net>.
* 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
<maphew-AT-gmail.com>. 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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
<hans_meine-AT-gmx.net>
(_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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <yaroslavvb-AT-gmail.com>
2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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
<vivian-AT-vdesmedt.com> for the original patches.
2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
sequence to consistently accept the banner argument. The
inconsistency was tripping SAGE, thanks to Gary Zablackis
<gzabl-AT-yahoo.com> for the report.
2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <smm-AT-logic.bm>
2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
* 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
<jorgen.stenarson-AT-bostream.nu>, author of the patches
implementing this functionality.
2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <gthiruv-AT-luc.edu> for the detailed
help, and Michael Tobis <mtobis-AT-gmail.com> 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 <Fernando.Perez@colorado.edu>
* IPython/Extensions/numeric_formats.py: fix missing import,
reported by Stephen Walton.
2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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
<chmod007-AT-mac.com>.
(InteractiveShell.__init__): prevent certain special magics from
being shadowed by aliases. Closes
http://www.scipy.net/roundup/ipython/issue41.
2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* tools/ipsvnc: Minor improvements, to add changeset info.
2005-08-12 Fernando Perez <fperez@colorado.edu>
* 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 <Fernando.Perez@colorado.edu>
* IPython/genutils.py: fix 2.2 compatibility (generators)
2005-07-18 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (get_home_dir): fix to help users with
invalid $HOME under win32.
2005-07-17 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2005-06-08 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
with files not on the filesystem. Reported by Eliyahu Sandler
<eli@gondolin.net>
2005-05-22 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py: Fix a few crashes in the --upgrade option.
After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2005-05-19 Fernando Perez <fperez@colorado.edu>
* 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 <dbrown2@yahoo.com>.
2005-05-18 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
keyword arguments correctly to safe_execfile().
2005-05-13 Fernando Perez <fperez@colorado.edu>
* 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 <gsakkis-AT-eden.rutgers.edu>. 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 <danny_shevitz-AT-yahoo.com>, about this
producing very annoying behavior when running unit tests.
2005-05-12 Fernando Perez <fperez@colorado.edu>
* 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
<qrs0xyc02-AT-sneakemail.com>.
* IPython/ultraTB.py (VerboseTB.text): protect against rare but
possible crashes caused by a TokenError. Reported by Ed Schofield
<schofield-AT-ftw.at>.
2005-05-06 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2005-04-29 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
<nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
Thyreau <Benji2-AT-decideur.info>, 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <tretkowski-AT-inittab.de>.
2005-03-23 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <mantegazza-AT-ill.fr>.
(InteractiveShell.set_custom_completer): public API function to
add new completers at runtime.
2005-03-19 Fernando Perez <fperez@colorado.edu>
* 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 <mantegazza-AT-ill.fr>.
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
prompt namespace handling.
2005-03-16 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Magic.py (magic_time): new magic to time execution of
expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2005-02-19 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<BrianWong-AT-AirgoNetworks.Com>.
(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 <vivian-AT-vdesmedt.com>.
2005-02-12 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<jdhunter-AT-nitace.bsd.uchicago.edu>.
2005-02-05 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* setup.py: finally, we have a true Windows installer, thanks to
the excellent work of Viktor Ransmayr
<viktor.ransmayr-AT-t-online.de>. 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <TAB> keypress is still
enough to trigger getattr() calls on an object.
2005-01-21 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
signal handling for win32 users in multithreaded mode.
2005-01-17 Fernando Perez <fperez@colorado.edu>
* IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
instances with no __init__. After a crash report by Norbert Nemec
<Norbert-AT-nemec-online.de>.
2005-01-14 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
<astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2004-12-19 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<mlombard-AT-ma010192.hq.eso.org>.
2004-12-13 *** Released version 0.6.6
2004-12-12 Fernando Perez <fperez@colorado.edu>
* 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 <Jaap.Leguijt-AT-shell.com>.
* 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 <fperez@colorado.edu>
* 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 <muller-AT-irit.fr>.
2004-12-09 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (MagicCompleter.complete): Remove annoying
warnings when tab-completion fails and triggers an exception.
2004-12-03 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <maffew-AT-cat.org.au>.
(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 <fperez@colorado.edu>
* IPython/Logger.py (Logger.log): Fix bug in syncing the input
cache when empty lines were present.
2004-11-24 Fernando Perez <fperez@colorado.edu>
* IPython/usage.py (__doc__): document the re-activated threading
options for WX and GTK.
2004-11-23 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (init_readline): Fix exit message for Windows
when readline is active. Thanks to a report by Eric Jones
<eric-AT-enthought.com>.
2004-11-07 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (page): Add a trap for OSError exceptions,
sometimes seen by win2k/cygwin users.
2004-11-06 Fernando Perez <fperez@colorado.edu>
* 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
<stephen.walton-AT-csun.edu>.
2004-11-04 Fernando Perez <fperez@colorado.edu>
* 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 <james.flowers-AT-lgx.com>.
* IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
Ctrl-C problem, which does not mess up the input line.
2004-11-03 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
to % for pysh syntax extensions.
2004-10-09 Fernando Perez <fperez@colorado.edu>
* 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
<Kristian.Sandberg@colorado.edu>.
(Magic.__init__): fix bug in global magic escapes not being
correctly set.
2004-10-08 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/UserConfig/ipythonrc: remove []{} from
readline_remove_delims, so that things like [modname.<TAB> 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 <fperez@colorado.edu>
* IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
blocking problems in win32 and osx. Fix by John.
2004-09-08 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* setup.py (isfile): Add manpages to list of dependent files to be
updated.
2004-08-27 Fernando Perez <fperez@colorado.edu>
* 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 <ipythonbugs-AT-sabi.net>.
(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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<jdhunter-AT-nitace.bsd.uchicago.edu>.
(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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <stephen.walton-AT-csun.edu>.
2004-08-11 Fernando Perez <fperez@colorado.edu>
* setup.py (isfile): Fix build so documentation gets updated for
rpms (it was only done for .tgz builds).
2004-08-10 Fernando Perez <fperez@colorado.edu>
* genutils.py (Term): Fix misspell of stdin stream (sin->cin).
* iplib.py : Silence syntax error exceptions in tab-completion.
2004-08-05 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <aborder-AT-users.sourceforge.net>.
This is NOT a bug under python 2.3 and earlier.
2004-07-26 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (__init__): Add better handling of '\' under
Win32 for filenames. After a patch by Ville.
2004-07-17 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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<TAB> 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
of EPS if the requested filename ends in '.eps'.
2004-07-04 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
escaping of quotes when calling the shell.
2004-07-02 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (file_matches): escape whitespace correctly in
filename completions. Bug reported by Ville.
2004-06-28 Fernando Perez <fperez@colorado.edu>
* 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 <vivainio@kolumbus.fi>. 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 <travis_caldwell2000@yahoo.com>.
2004-06-26 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_rehash): Fix crash when
non-existent items are found in $PATH. Reported by Thorsten.
2004-06-20 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
list of auto-defined aliases.
2004-06-13 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <dodt-AT-fcoe.k12.ca.us>,
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 <fperez@colorado.edu>
* 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 <gnufnork-AT-hetdigitalegat.nl>
* 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 <fperez@colorado.edu>
* 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
<gnufnork-AT-hetdigitalegat.nl>
(prompt_specials): Added color support for prompt strings, so
users can define arbitrary color setups for their prompts.
2004-06-05 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/Logger.py (Logger.create_log): fix bug for logging
with no filename (previous fix was incomplete).
2004-05-25 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.parse_options): fix bug where naked
parens would get passed to the shell.
2004-05-20 Fernando Perez <fperez@colorado.edu>
* 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
<yann.ledu-AT-noos.fr>.
* 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 <fperez@colorado.edu>
* debian/: Added debian/ directory to CVS, so that debian support
is publicly accessible. The debian package is maintained by Jack
Moffit <jack-AT-xiph.org>.
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<msalib-AT-mit.edu> 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 <fperez@colorado.edu>
* 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 <fgibbons-AT-llama.med.harvard.edu>.
2004-04-03 Fernando Perez <fperez@colorado.edu>
* 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
<pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
Francois Pinard.
2004-04-02 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<rhh@StructureLABS.com> for the report and fixes.
2004-02-26 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <etienne-AT-apple01.cs.vu.nl>.
2003-12-09 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (page): patch for the pager to work across
various versions of Windows. By Gary Bishop.
2003-12-04 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/numutils.py (amap): Added amap() fn. Simple shorthand
for Numeric.array(map(...)), but often convenient.
2003-11-05 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <hupp-AT-cs.wisc.edu>.
2003-09-24 Fernando Perez <fperez@colorado.edu>
* 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 <osander-AT-gmx.de>.
* IPython/FakeModule.py (FakeModule.__repr__): this method was
missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2003-09-09 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
improperly defined user exceptions. Thanks to feedback from Mark
Russell <mrussell-AT-verio.net>.
2003-08-20 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
* 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 <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell._prefilter): significant
simplifications to the logic for handling user escapes. Faster
and simpler code.
2003-08-14 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <KSBeattie-AT-lbl.gov>.
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/numutils.py (identity): new function, for building
arbitrary rank Kronecker deltas (mostly backwards compatible with
Numeric.identity)
2003-06-03 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <Kasper.Souren-AT-ircam.fr>
2003-05-20 *** Released version 0.4.0
2003-05-20 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <gb-AT-cs.unc.edu>.
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 <gb-AT-cs.unc.edu>.
* ipython.1 (Default): Thanks to Jack's work, we now have manpages!
2003-05-15 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
installing for a new user under Windows.
2003-05-12 Fernando Perez <fperez@colorado.edu>
* 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
<wfrench-AT-bestweb.net> for the bug report.
2003-05-09 Fernando Perez <fperez@colorado.edu>
* 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 <gcordova-AT-sismex.com> suggested the new version.
2003-04-30 Fernando Perez <fperez@colorado.edu>
* IPython/genutils.py (timings_out): modified it to reduce its
overhead in the common reps==1 case.
2003-04-29 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<kingshu-AT-myrealbox.com>. 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 <thorsten-AT-thorstenkampe.de>.
* 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 <oaubert-AT-bat710.univ-lyon1.fr>
2003-04-14 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
where failing to set sys.last_traceback would crash pdb.pm().
Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
report.
2003-03-25 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/genutils.py (error): added error() and fatal()
functions.
2003-03-18 *** Released version 0.2.15pre3
2003-03-18 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <jack-AT-xiph.org>.
*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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <RAhlbrink-AT-RosenInspection.net>. 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 <fperez@colorado.edu>
* 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
<cliechti-AT-gmx.net> for the heads up.
2003-02-21 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.interact): fixed default (y)
value of exit question to be acknowledged.
2002-12-03 Fernando Perez <fperez@colorado.edu>
* 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 <abli-AT-freemail.hu>
for pointing this out.
2002-11-17 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <cdodt-AT-fcoe.k12.ca.us> 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <pinard-AT-iro.umontreal.ca>.
* 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
<radix-AT-twistedmatrix.com> 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 <fperez@colorado.edu>
* IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* README_Mac_OSX: Added a README for Mac OSX users for fixing
terminal-related issues. Many thanks to Andrea Riciputi
<andrea.riciputi-AT-libero.it> for writing it.
* IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
* setup.py (make_shortcut): Fixes for Windows installation. Thanks
to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
<syver-en-AT-online.no> 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 <rxe-AT-renre-europe.com>
* IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
compatibility. Thanks to Hayden Callow
<h.callow-AT-elec.canterbury.ac.nz>
2002-10-04 Fernando Perez <fperez@colorado.edu>
* IPython/Gnuplot2.py (PlotItem): Added 'index' option for
Gnuplot.File objects.
2002-07-23 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<tfanslau-AT-gmx.de> for the report.
2002-07-10 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.__init__): fixed reference to
__IPYTHON__ in __builtins__ to show up in user_ns.
2002-07-03 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
of files in current directory when a file is executed via
@run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
* setup.py (manfiles): fix for rpm builds, submitted by RA
<ralf_ahlbrink-AT-web.de>. 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<a.schmolck-AT-gmx.net>
* IPython/GnuplotRuntime.py (gp_new): new function. Returns a
pre-configured Gnuplot instance.
2002-06-21 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/genutils.py (timing): new function like
Mathematica's. Similar to time_test, but returns more info.
2002-06-18 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Magic.magic_save): modified @save and @r
according to Mike Heeter's suggestions.
2002-06-16 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
2002-05-24 Fernando Perez <fperez@colorado.edu>
* IPython/Magic.py (Macro.__init__): fixed magics embedded in
macros having broken.
2002-05-21 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/__init__.py (__all__): removed FlexCompleter from
__all__ so that things don't fail in platforms without readline.
2002-05-10 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* Released 0.2.12
2002-05-06 Fernando Perez <fperez@colorado.edu>
* 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.<all> 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* Added information about pdb in the docs.
2002-04-17 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/genutils.py (get_home_dir): Try to make it work under
win9x also.
2002-03-20 Fernando Perez <fperez@colorado.edu>
* IPython/Shell.py (IPythonShellEmbed.__init__): leave
sys.displayhook untouched upon __init__.
2002-03-19 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* setup.py: Merged setup and setup_windows into a single script
which properly handles things for windows users.
2002-03-15 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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
<pdm-AT-zamazal.org> for all the suggestions and pointers.
2002-03-01 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <compsys-AT-starpower.net>. 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 <fperez@colorado.edu>
* Released 0.2.5.
2002-02-11 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* IPython/iplib.py (install_first_time): Added comment on how to
configure the color options for first-time users. Put a <return>
request at the end so that small-terminal users get a chance to
read the startup info.
2002-01-23 Fernando Perez <fperez@colorado.edu>
* IPython/iplib.py (CachedOutput.update): Changed output memory
variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* Released 0.2.3 (contacted R.Singh at CU about biopython course,
so I wanted an updated release).
2001-12-27 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* setup.py: added check for 'MANIFEST' before trying to remove
it. Thanks to Sean Reifschneider.
2001-12-22 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 IPyhton 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 <fperez@colorado.edu>
* 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 -<n> for
visiting any directory in _dh.
* Introduced _dh, a history of visited directories. @dhist prints
it out with numbers.
2001-12-07 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* Fixed namespace problems. Now builtin/IPyhton/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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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<n> 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* Added .ipython/ directory to sys.path. This way users can keep
customizations there and access them via import.
2001-11-03 Fernando Perez <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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 <fperez@colorado.edu>
* 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_<name>, even though they can be called simply as
@<name>. 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.