Comments (8)
Hi Kevin,
If you want to use your own kernel manager, you can pass it to the NotebookClient
. Have you tried that?
Otherwise, nbclient having inherently an async execution model, it will indeed set up an async kernel client.
from nbclient.
Hi David - thanks for the quick response.
Because I'm really going through Papermill here, I am specifying kernel_manager_class
and need my NotebookClient
subclass to instantiate the specified kernel manager instance and its specific (async) kernel client. I do not want to have to instantiate an instance first.
So is the reason for this forced override purely to ensure an async kernel client is used even in the classic case where a synchronous kernel manager is used? That seems to be the case since the default value for the kernel_manager_class
trait is already AsyncKernelManager
and it already specifies AsyncKernelClient as its client.
If nbclient requires an async kernel client (and a subclass of AsyncKernelClient
for that matter), it seems it should only set the client_class trait on the KernelManager if it currently specifies juptyer_client.client.KernelClient
and not unconditionally. Would that be sufficient?
if self.km.client_class == 'jupyter_client.client.KernelClient':
self.km.client_class = 'jupyter_client.asynchronous.AsyncKernelClient'
This way, other kernel managers can bring their own async kernel client implementations.
(I get the expected results in my implementation after making this change.)
from nbclient.
Would that be sufficient?
if self.km.client_class == 'jupyter_client.client.KernelClient': self.km.client_class = 'jupyter_client.asynchronous.AsyncKernelClient'
Yes, this looks good to me. Thanks for looking into it Kevin!
If you feel like opening a PR, I'll be glad to merge it. Otherwise I can make the change.
from nbclient.
It might be nice for KernelManagers to be able to optionally supply a suggested KernelClient class so we could let a kernel manager assignment alone apply sane default client associations when the user isn't sure.
from nbclient.
Isn't it why we have client_class
in the kernel managers?
from nbclient.
Yes. That's what I get for a quick response from my phone without thinking. Apologies and ignore that comment.
from nbclient.
No worries Matthew! My question was really for me to check if I understood correctly 😃
from nbclient.
Addressed by #117
from nbclient.
Related Issues (20)
- Using nbclient to talk to jupyter lab running remotely HOT 10
- Renamed default branch to main
- 0.6.1: sphinx faiils because missing file HOT 2
- Background Python process after running tests
- How to reuse exsisting kernel? HOT 4
- Test failure in ipywidgets 8 HOT 2
- nbclient 0.6.6 doesn't report cell magic error properly
- Cell caching HOT 6
- just_run does not close event loop it creates HOT 2
- Project dependencies may have API risk issues HOT 2
- 0.7.1: pytest is failing because missing ` jupyter_core.utils.ensure_async` HOT 11
- jupyter_core version constraint is invalid HOT 3
- nbclient >= 0.7.1 raises ImportError when trying to open a notebook HOT 1
- AttributeError: 'KernelManager' object has no attribute 'cleanup' HOT 5
- `NotebookClient.wait_for_reply` hangs with jupyter_client 8 or later HOT 4
- Is it possible to programmatically inspect variables of a NotebookNode? HOT 5
- output of type `stream` is split over multiple cells HOT 10
- execute_cell running error HOT 4
- ipykernel.comm.Comm is deprecated HOT 3
- Calling `jupyter-execute` runs the notebook but doesn't save it HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nbclient.