Skip to content

Commit 63e47d3

Browse files
author
Alan Fleming
committed
Add kernel monitoring.
1 parent 66a2d33 commit 63e47d3

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

python/jupyterlab_widgets/src/manager.ts

+8
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ export abstract class LabWidgetManager
112112
super.disconnect();
113113
this._restoredStatus = false;
114114
}
115+
get disconnected() {
116+
return !this._restoredStatus;
117+
}
115118

116119
protected async _loadFromKernel(): Promise<void> {
117120
if (!this.kernel) {
@@ -471,6 +474,11 @@ export class KernelWidgetManager extends LabWidgetManager {
471474
}
472475
}
473476

477+
static existsWithActiveKenel(id: string) {
478+
const widgetManager = Private.kernelWidgetManagers.get(id);
479+
return !widgetManager?.disconnected;
480+
}
481+
474482
_handleKernelStatusChange(
475483
sender: Kernel.IKernelConnection,
476484
status: Kernel.Status

python/jupyterlab_widgets/src/plugin.ts

+17
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { DisposableDelegate } from '@lumino/disposable';
2525
import { WidgetRenderer } from './renderer';
2626

2727
import {
28+
KernelWidgetManager,
2829
LabWidgetManager,
2930
WIDGET_VIEW_MIMETYPE,
3031
WidgetManager,
@@ -103,6 +104,22 @@ function activateWidgetExtension(
103104
const { commands } = app;
104105
const trans = (translator ?? nullTranslator).load('jupyterlab_widgets');
105106

107+
app.serviceManager.kernels.runningChanged.connect((models) => {
108+
for (const model of models.running()) {
109+
if (
110+
model &&
111+
model.name === 'python3' &&
112+
model.execution_state !== 'starting' &&
113+
!KernelWidgetManager.existsWithActiveKenel(model.id)
114+
) {
115+
const kernel = app.serviceManager.kernels.connectTo({ model: model });
116+
if (kernel.handleComms) {
117+
new KernelWidgetManager(kernel);
118+
}
119+
}
120+
}
121+
});
122+
106123
if (settingRegistry !== null) {
107124
settingRegistry
108125
.load(managerPlugin.id)

0 commit comments

Comments
 (0)