Daemon StreamCapturer
The StreamCapturer should die if the main thread crashes. On Shiningpanda, a failure in another nose plugin has been causing the tests to hang, because the main thread exits, but the StreamCapturer thread is still alive.
Under normal conditions, the thread will still be shut down cleanly - it will only die a messy death if the main thread does.
various pandoc latex fixes
- add missing declarations to latex_base (required for pandoc-highlighted code in markdown)
- fix ansi color in latex, which didn't work in a variety of ways.
closes#4245
update script generation in setup.py
These changes:
- Give us scripts called `ipython` and (`ipython2` or `ipython3`) for any installation. (and likewise for each of iptest, ipcontroller, etc.)
- Add a new `setup.py symlink` target, to use instead of `develop`, which installs scripts and symlinks the library into site-packages, without using setuptools.
- Removes the static script entry points - all our entry points are now automatically generated.
Python 3 & getcwdu
We were using the os.getcwdu() function in several places. That doesn't exist on Python 3, but the path.py module was masking that by setting os.getcwdu = os.getcwd. As described in #4462, however, that didn't always work.
This adds a reference in py3compat which points to getcwd on Python 3 and getcwdu in Python 2.
a lunch conversation with @minrk and @takluyver lead me to just make a
popup and have it be closed, instead of having to reorder the test suite
so that this test always runs last. Now it doesn't matter what order the
test suite runs in, and gives us a pattern for testing window closing
behavior should we need it elsewhere.
Rather than using a transient pipe for each subprocess started, the
StreamCapturer now makes a single pipe, and subprocesses redirect their
output to it.
So long as this works on Windows (I've done brief testing, and os.pipe()
seems to be functional), this will hopefully make this much more robust.
The recent failures in ShiningPanda on IPython.parallel have been caused
by StreamCapturer.
this is not possible in Firefox, as new tabs/windows which were *not*
opened via a script ( window.open call ) are not allowed to be closed
via window.close and will yield a message like
--
[11:50:59.691] Scripts may not close windows that were not opened by script. @ http://localhost:8888/static/notebook/js/menubar.js:105