##// END OF EJS Templates
Unicode fixes (utf-8 used by default if ascii is not enough). This should fix some reported crashes....
Unicode fixes (utf-8 used by default if ascii is not enough). This should fix some reported crashes. Fix broken auto-quoting for pysh. Remove old 2.1 specific hacks and move all 2.2 compatibility symbols into genutils. Simplify i/o abstraction layer a bit. Full details in changelog.

File last commit:

r5:c83aafa3
r5:c83aafa3
Show More
ChangeLog
4294 lines | 169.5 KiB | text/plain | TextLexer
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 hardwire 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,
*everythin* 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.