Skip to content

Commit

Permalink
Backport PR #12393: Fix debugger extension error when notebooks is cl…
Browse files Browse the repository at this point in the history
…osed quickly (#12396)

Co-authored-by: Afshin Taylor Darian <git@darian.email>
  • Loading branch information
fcollonval and afshin committed Apr 13, 2022
1 parent 3b8c9a1 commit c1caba5
Showing 1 changed file with 56 additions and 79 deletions.
135 changes: 56 additions & 79 deletions packages/debugger-extension/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,21 +77,19 @@ const consoles: JupyterFrontEndPlugin<void> = {
};

if (labShell) {
labShell.currentChanged.connect(async (_, update) => {
labShell.currentChanged.connect((_, update) => {
const widget = update.newValue;
if (!(widget instanceof ConsolePanel)) {
return;
if (widget instanceof ConsolePanel) {
void updateHandlerAndCommands(widget);
}
});
} else {
consoleTracker.currentChanged.connect((_, consolePanel) => {
if (consolePanel) {
void updateHandlerAndCommands(consolePanel);
}
await updateHandlerAndCommands(widget);
});
return;
}

consoleTracker.currentChanged.connect(async (_, consolePanel) => {
if (consolePanel) {
void updateHandlerAndCommands(consolePanel);
}
});
}
};

Expand Down Expand Up @@ -145,25 +143,24 @@ const files: JupyterFrontEndPlugin<void> = {
};

if (labShell) {
labShell.currentChanged.connect(async (_, update) => {
labShell.currentChanged.connect((_, update) => {
const widget = update.newValue;
if (!(widget instanceof DocumentWidget)) {
return;
if (widget instanceof DocumentWidget) {
const { content } = widget;
if (content instanceof FileEditor) {
void updateHandlerAndCommands(widget);
}
}

const content = widget.content;
if (!(content instanceof FileEditor)) {
return;
});
} else {
editorTracker.currentChanged.connect((_, documentWidget) => {
if (documentWidget) {
void updateHandlerAndCommands(
(documentWidget as unknown) as DocumentWidget
);
}
await updateHandlerAndCommands(widget);
});
}

editorTracker.currentChanged.connect(async (_, documentWidget) => {
await updateHandlerAndCommands(
(documentWidget as unknown) as DocumentWidget
);
});
}
};

Expand Down Expand Up @@ -194,52 +191,52 @@ const notebooks: JupyterFrontEndPlugin<IDebugger.IHandler> = {
app.commands.addCommand(Debugger.CommandIDs.restartDebug, {
label: trans.__('Restart Kernel and Debug…'),
caption: trans.__('Restart Kernel and Debug…'),
isEnabled: () => {
return service.isStarted;
},
isEnabled: () => service.isStarted,
execute: async () => {
const state = service.getDebuggerState();
console.log(state.cells);
const { context, content } = notebookTracker.currentWidget!;

await service.stop();
const restarted = await sessionContextDialogs!.restart(
context.sessionContext
);
if (restarted) {
await service.restoreDebuggerState(state);
await handler.updateWidget(
notebookTracker.currentWidget!,
notebookTracker.currentWidget!.sessionContext.session
);
await NotebookActions.runAll(content, context.sessionContext);

const widget = notebookTracker.currentWidget;
if (!widget) {
return;
}

const { content, sessionContext } = widget;
const restarted = await sessionContextDialogs.restart(sessionContext);
if (!restarted) {
return;
}

await service.restoreDebuggerState(state);
await handler.updateWidget(widget, sessionContext.session);
await NotebookActions.runAll(content, sessionContext);
}
});

const updateHandlerAndCommands = async (
widget: NotebookPanel
): Promise<void> => {
const { sessionContext } = widget;
await sessionContext.ready;
await handler.updateContext(widget, sessionContext);
if (widget) {
const { sessionContext } = widget;
await sessionContext.ready;
await handler.updateContext(widget, sessionContext);
}
app.commands.notifyCommandChanged();
};

if (labShell) {
labShell.currentChanged.connect(async (_, update) => {
labShell.currentChanged.connect((_, update) => {
const widget = update.newValue;
if (!(widget instanceof NotebookPanel)) {
return;
if (widget instanceof NotebookPanel) {
void updateHandlerAndCommands(widget);
}
await updateHandlerAndCommands(widget);
});
} else {
notebookTracker.currentChanged.connect(
async (_, notebookPanel: NotebookPanel) => {
await updateHandlerAndCommands(notebookPanel);
notebookTracker.currentChanged.connect((_, notebookPanel) => {
if (notebookPanel) {
void updateHandlerAndCommands(notebookPanel);
}
);
});
}

if (palette) {
Expand All @@ -249,12 +246,6 @@ const notebooks: JupyterFrontEndPlugin<IDebugger.IHandler> = {
});
}

notebookTracker.currentChanged.connect(
async (_, notebookPanel: NotebookPanel) => {
await updateHandlerAndCommands(notebookPanel);
}
);

return handler;
}
};
Expand Down Expand Up @@ -623,9 +614,7 @@ const main: JupyterFrontEndPlugin<void> = {
label: trans.__('Evaluate Code'),
caption: trans.__('Evaluate Code'),
icon: Debugger.Icons.evaluateIcon,
isEnabled: () => {
return service.hasStoppedThreads();
},
isEnabled: () => service.hasStoppedThreads(),
execute: async () => {
const mimeType = await getMimeType();
const result = await Debugger.Dialogs.getCode({
Expand Down Expand Up @@ -660,9 +649,7 @@ const main: JupyterFrontEndPlugin<void> = {
label: trans.__('Continue'),
caption: trans.__('Continue'),
icon: Debugger.Icons.continueIcon,
isEnabled: () => {
return service.hasStoppedThreads();
},
isEnabled: () => service.hasStoppedThreads(),
execute: async () => {
await service.continue();
commands.notifyCommandChanged();
Expand All @@ -673,9 +660,7 @@ const main: JupyterFrontEndPlugin<void> = {
label: trans.__('Terminate'),
caption: trans.__('Terminate'),
icon: Debugger.Icons.terminateIcon,
isEnabled: () => {
return service.hasStoppedThreads();
},
isEnabled: () => service.hasStoppedThreads(),
execute: async () => {
await service.restart();
commands.notifyCommandChanged();
Expand All @@ -686,9 +671,7 @@ const main: JupyterFrontEndPlugin<void> = {
label: trans.__('Next'),
caption: trans.__('Next'),
icon: Debugger.Icons.stepOverIcon,
isEnabled: () => {
return service.hasStoppedThreads();
},
isEnabled: () => service.hasStoppedThreads(),
execute: async () => {
await service.next();
}
Expand All @@ -698,9 +681,7 @@ const main: JupyterFrontEndPlugin<void> = {
label: trans.__('Step In'),
caption: trans.__('Step In'),
icon: Debugger.Icons.stepIntoIcon,
isEnabled: () => {
return service.hasStoppedThreads();
},
isEnabled: () => service.hasStoppedThreads(),
execute: async () => {
await service.stepIn();
}
Expand All @@ -710,9 +691,7 @@ const main: JupyterFrontEndPlugin<void> = {
label: trans.__('Step Out'),
caption: trans.__('Step Out'),
icon: Debugger.Icons.stepOutIcon,
isEnabled: () => {
return service.hasStoppedThreads();
},
isEnabled: () => service.hasStoppedThreads(),
execute: async () => {
await service.stepOut();
}
Expand All @@ -733,9 +712,7 @@ const main: JupyterFrontEndPlugin<void> = {
isToggled: () => {
return service.isPausingOnExceptions;
},
isEnabled: () => {
return service.pauseOnExceptionsIsValid();
},
isEnabled: () => service.pauseOnExceptionsIsValid(),
execute: async () => {
await service.pauseOnExceptions(!service.isPausingOnExceptions);
commands.notifyCommandChanged();
Expand Down

0 comments on commit c1caba5

Please sign in to comment.