MCPcopy Create free account
hub / github.com/deepnote/vscode-deepnote / getOrCreate

Method getOrCreate

src/kernels/kernelProvider.web.ts:52–103  ·  view source on GitHub ↗
(notebook: NotebookDocument, options: KernelOptions)

Source from the content-addressed store, hash-verified

50 }
51
52 public getOrCreate(notebook: NotebookDocument, options: KernelOptions): IKernel {
53 const existingKernelInfo = this.getInternal(notebook);
54 if (existingKernelInfo && existingKernelInfo.options.metadata.id === options.metadata.id) {
55 return existingKernelInfo.kernel;
56 }
57 if (existingKernelInfo) {
58 logger.trace(
59 `Kernel for ${getDisplayPath(notebook.uri)} with id ${
60 existingKernelInfo.options.metadata.id
61 } is being replaced with ${options.metadata.id}`
62 );
63 }
64 this.disposeOldKernel(notebook, 'createNewKernel');
65
66 const resourceUri = notebook?.notebookType === InteractiveWindowView ? options.resourceUri : notebook.uri;
67 const settings = createKernelSettings(this.configService, resourceUri);
68 const notebookType =
69 notebook.uri.path.endsWith('.interactive') || options.resourceUri?.path.endsWith('.interactive')
70 ? InteractiveWindowView
71 : JupyterNotebookView;
72 const kernel = new Kernel(
73 resourceUri,
74 notebook,
75 options.metadata,
76 this.sessionCreator,
77 settings,
78 options.controller,
79 this.startupCodeProviders.getProviders(notebookType),
80 this.workspaceStorage,
81 undefined,
82 undefined
83 ) as IKernel;
84 kernel.onRestarted(() => this._onDidRestartKernel.fire(kernel), this, this.disposables);
85 kernel.onPostInitialized(
86 (e) => e.waitUntil(this._onDidPostInitializeKernel.fireAsync({ kernel }, e.token)),
87 this,
88 this.disposables
89 );
90 kernel.onDisposed(() => this._onDidDisposeKernel.fire(kernel), this, this.disposables);
91 kernel.onStarted(() => this._onDidStartKernel.fire(kernel), this, this.disposables);
92 kernel.onStatusChanged(
93 (status) => this._onKernelStatusChanged.fire({ kernel, status }),
94 this,
95 this.disposables
96 );
97 this.executions.set(kernel, new NotebookKernelExecution(kernel, this.context, this.formatters, notebook));
98 this.asyncDisposables.push(kernel);
99 this.storeKernel(notebook, options, kernel);
100
101 this.deleteMappingIfKernelIsDisposed(kernel);
102 return kernel;
103 }
104}
105
106@injectable()

Callers

nothing calls this directly

Calls 11

getDisplayPathFunction · 0.90
createKernelSettingsFunction · 0.90
waitUntilMethod · 0.80
fireAsyncMethod · 0.80
onStatusChangedMethod · 0.80
traceMethod · 0.65
getProvidersMethod · 0.65
setMethod · 0.65
pushMethod · 0.65
fireMethod · 0.45
onDisposedMethod · 0.45

Tested by

no test coverage detected