Merge divergent Kernel implementations#1630
Conversation
|
Great, thanks for getting this in motion. I'll start digging into it. |
|
Re pykernel removal: Am I right that pykernel was our pure-Python kernel, without all the IPython secret sauce? Is there something similar that replaces it? It strikes me as potentially useful, both as an easy to understand example, and as a Python execution server for non-interactive use. |
|
It's removed for a few reasons:
For use as an example, one can always find it in 0.12. |
|
OK, that's fair enough. |
|
references removed to pykernel from Qt and KernelApp |
|
#1647 revealed an issue in streamkernel, which would necessarily conflict quite severely with this, as that file has been removed. So a fix for that is now included. |
|
Test results for commit c1a2747 merged into master
Not available for testing: python3.1 |
|
The test does seem to be correctly picking up a stray reference to |
|
Indeed, apparently I messed up a bit in my last rebase. |
|
Test results for commit fc1af3c merged into master
Not available for testing: python3.1 |
|
I don't know what's happening with that test failure - it looks like the file was installed without 2to3 having run. |
|
Yes, I will make a PR against test_pr to fix that. Python 3.2 is re-using the build dir from 2.7, so it skips a bunch of 2to3 and I have to |
|
OK - I wonder why I don't see that. Maybe a Linux/Mac difference, but I'm not sure quite how. |
|
Yes, I think it is. The build dir gets a 3.2 suffix on Linux, but not on OS X. Only seems to affect pure-Python packages. |
|
Test results for commit 386ef09 merged into master
Not available for testing: |
first step in merging kernel/streamkernel
prevent unnecessary formatting of log messages not displayed.
some eventloop integration updated to match
rather than specifically IPKernelApp (%pylab now works in Engines)
and update %autopx tests, now that %autopx uses silent=False
allows classes to be passed log attribute, avoiding duplicate setup and occasional errors if things are done in the wrong order.
for using an Engine's Kernel with connecting frontends.
instead of [sys.exe, module_path], which resulted in the modules being `__main__`, which caused problems.
|
Okay, it seems to be working now. To confirm, you can do: from IPython import parallel
rc = parallel.Client()
dv = rc[:]
dv.block = True
dv.activate()
%px from IPython.parallel import bind_kernel; bind_kernel()
%px %qtconsoleWhich sets up your engines as full kernels, and then launches a QtConsole attached to each one. |
|
This is fantastic! Do we want to push this one step further and have On Tue, May 22, 2012 at 10:32 PM, Min RK
Brian E. Granger |
|
This is indeed all kinds of awesome. Great job, Min!! |
I'm not sure. It's a lot more common for engines to be remote than regular IPython kernels, and running In any case, adding to the parallel magics should probably be done after this and #1732 are both merged. |
|
OK, so I think we can merge this PR right? On Thu, May 24, 2012 at 5:29 PM, Min RK
Brian E. Granger |
|
Test results for commit 45a4d04 (can't merge cleanly)
Not available for testing: |
|
Test results for commit 45a4d04 merged into master
Not available for testing: |
also increase timeout for kernel start to 10 seconds
|
the test_pr script doesn't work on Windows, but I was able to do what it does manually, and I was able to run the parallel test suite on Python2.7 and 3.2 on Windows, as well as basic fiddling with the notebook and qtconsole, so I think we are good to go. |
|
OK, merging! |
Merge divergent Kernel implementations
|
Awesome job, @minrk! And thanks to everyone who pitched in. This is a major milestone for the project. |
Merge divergent Kernel implementations
Work in progress.
The principal change is to merge the Kernel implementation used in IPython.parallel into that in ipkernel.
Changes involved in that:
Related changes along the way:
silentinrun_cell(). Previously, execute_requests used run_code, which meant it didn't support IPython syntax.execute()uses execute_request instead of applyChanges still to make:I don't know if this code belongs in 0.13 or should go in first thing in 0.14.dev. It's a pretty big change, and test coverage for this code is still relatively poor.