This branch cleans up our trunk to make a 2to3 run be as painless as
possible, while keeping our code fully 2.6-compatible.
Closes gh-159 (pull request).
This provides a new main script, ipython-qtconsole, that offers a rich
Qt widget capable of multiline editing, inline plots, html help and
much more.
This branch was developed over the last two months mostly by Evan
Patterson, Brian Granger and Fernando Perez, thanks to the support of
Enthought, Inc.
The code is now in a good prototype stage, and it's being merged into
trunk where further work, polishing and stabilization will take place.
* Renamed CachedOutput to displayhook.DisplayHook.
* Added methods that DisplayHook.__call__ uses to do its work.
These methods can now be overridden for the ZMQ kernel.
* Removed all hooks (result_display and generate_output_prompt)
that the outputcache was using. We need to add these back in
once we figure out what to do about hooks in general.
This is a huge merge of months worth of work by Fernando and Brian.
Some highlights:
* The test suite has been ported to use the new APIs.
* The test suite runs and passes on all platforms!!!
* The IPython Sphinx directive has been updated to use the new APIs.
* %history works again.
* New %tb magic for showing last traceback.
* Significant design improvements in the config loaders and applications.
* Zillions of bugs fixed.
* Completely new %pylab implementation that uses the new GUI support.
This allows pylab to be enabled *at runtime*.
* Many other things.
Fernando's branch introduced the ability to run the test suite
from a top-level iptest.py script. This allowed IPython to be tested
without installation. The implementation was fragile and we also
decided that we *want* people to install IPython as part of testing
it, so we removed this feature.
* :mod:`IPython.testing.globalipapp` now directly creates a
:class:`~IPython.core.iplib.InteractiveShell` instance by passing it a
configuration object, rather than creating an IPython application.
* Updated everything in :mod:`IPython.frontend` and :mod:`IPython.gui` to use
raw :class:`~IPython.core.iplib.InteractiveShell directly rather than
creating an IPython application.
* Updated the IPython sphinx extension to use raw
:class:`~IPython.core.iplib.InteractiveShell directly rather than creating
an IPython application.
* Removed code from :mod:`IPython.extensions.pretty` that called
:func:`get_ipython` (r1271).
* Addressed comment on (r1284) about holding refs to deferreds in
:mod:`IPython.kernel.ipclusterapp`.
* Removed :mod:`IPython.kernel` from list of modules tested by nose in
:mod:`IPython.testing.iptest`. (r1318)
* Added comment about Magic(object) (r1224)
* Moved InteractiveTB.set_mode from IPythonApp -> InteractiveShell (r1229)
* Moved pylabtools.py to IPython/lib (r1229)
* Cleaned up comments and copyrights in testing (r1233)
* Added comment about ip.shell._ofind (r1237)
* Removed "Bye." from quitter (r1240).
* Refactored and removed :mod:`IPython.utils.genutils` and
:mod:`IPython.utils.platutils`. These modules have been replaced by topical
focused modules in :mod:`IPython.utils`.
* Refactored tests in :mod:`IPython.utils.tests`.
* Moved :func:`IPython.testing.tools.temp_pyfile` to :mod:`IPython.utils.io`.
* Moved :func:`IPython.testing.tools.cmd2argv` to
:func:`IPython.testing.tools.pycmd2argv` and documented the fact that this
only works with Python based command line programs.
* Created a new :func:`IPython.utils.path.get_ipython_module_path` to use
in finding paths to IPython modules.
Added a module-level INSTALLED flag, which can be set to false if the test
suite is being run in-place (without ipython having been installed at all).
This is because how we call and import things must be done differently
depending on whether the code is installed or is being run in-place. The
only ones that can know this reliably are the entry-point scripts, so those
are responsible for setting this flag.
Also made the code that validates ipython in subprocesses report errors
better, by checking stderr for errors before validating stdout output, as
anything on stderr will be likely informative of the real problem.
Now, calling:
- 'python iptest.py' from source dir or from src/IPython/testing should give
the same results
- 'python iptest.py IPython.SOMETHING' from either place should also give
the same results.
I fond some spurious warnings on Fedora, extra noise on stdout and other
small problems this commit fixes.
The test suite now runs cleanly on Fedora11 without Twisted available.
Also clean up the handling of command-line options for iptest, so that all
options given at the top-level are correctly passed to nose.
Fixes: https://bugs.launchpad.net/ipython/+bug/507079
installed.
Also activated testing.tools to be picked up by the test suite (was
excluded), this gives us a few more tests.
Status:
- On Linux, the full suite passes like before.
- On Win32, now that we have Twisted, we're seeing a few failures, because I
don't have the WinHPC server stuff. These should be easy for Brian to fix.
There are also two tests where the Skip nose exception isn't recognized by
Twisted, should also be easy. I'll file tickets for those.
After Brian's comments, I realized that our test machinery was NOT in
reality running all the ipython-syntax doctests we have. This is now fixed.
The test suite isn't completely passing, but this commit is for the
underlying machinery. I will now work on fixing as many broken tests as I
can.
Fixes https://bugs.launchpad.net/ipython/+bug/505071