@@ -17,8 +17,9 @@ import { KernelSelectionProvider } from '../jupyter/kernels/kernelSelections';
17
17
import { KernelSelector } from '../jupyter/kernels/kernelSelector' ;
18
18
import { KernelSwitcher } from '../jupyter/kernels/kernelSwitcher' ;
19
19
import { KernelSelection } from '../jupyter/kernels/types' ;
20
+ import { INotebookStorageProvider } from '../notebookStorage/notebookStorageProvider' ;
20
21
import { INotebook , INotebookProvider } from '../types' ;
21
- import { getNotebookMetadata , updateKernelInNotebookMetadata } from './helpers/helpers' ;
22
+ import { getNotebookMetadata , isJupyterNotebook , updateKernelInNotebookMetadata } from './helpers/helpers' ;
22
23
import { NotebookKernel } from './notebookKernel' ;
23
24
import { INotebookContentProvider , INotebookExecutionService } from './types' ;
24
25
@injectable ( )
@@ -33,6 +34,7 @@ export class VSCodeKernelPickerProvider implements NotebookKernelProvider {
33
34
@inject ( KernelSelectionProvider ) private readonly kernelSelectionProvider : KernelSelectionProvider ,
34
35
@inject ( KernelSelector ) private readonly kernelSelector : KernelSelector ,
35
36
@inject ( IVSCodeNotebook ) private readonly notebook : IVSCodeNotebook ,
37
+ @inject ( INotebookStorageProvider ) private readonly storageProvider : INotebookStorageProvider ,
36
38
@inject ( INotebookProvider ) private readonly notebookProvider : INotebookProvider ,
37
39
@inject ( KernelSwitcher ) private readonly kernelSwitcher : KernelSwitcher ,
38
40
@inject ( INotebookContentProvider ) private readonly notebookContentProvider : INotebookContentProvider ,
@@ -119,13 +121,21 @@ export class VSCodeKernelPickerProvider implements NotebookKernelProvider {
119
121
}
120
122
121
123
const document = newKernelInfo . document ;
124
+ if ( ! isJupyterNotebook ( document ) ) {
125
+ return ;
126
+ }
122
127
const selection = await newKernelInfo . kernel . validate ( document . uri ) ;
123
128
const editor = this . notebook . notebookEditors . find ( ( item ) => item . document === document ) ;
124
129
if ( ! selection || ! editor || editor . kernel !== newKernelInfo . kernel ) {
125
130
// Possibly closed or different kernel picked.
126
131
return ;
127
132
}
128
-
133
+ const model = await this . storageProvider . getOrCreateModel ( document . uri ) ;
134
+ if ( ! model || ! model . isTrusted ) {
135
+ // If a model is not trusted, we cannot change the kernel (this results in changes to notebook metadata).
136
+ // This is because we store selected kernel in the notebook metadata.
137
+ return ;
138
+ }
129
139
// Change kernel and update metadata.
130
140
const notebook = await this . notebookProvider . getOrCreateNotebook ( {
131
141
resource : document . uri ,
0 commit comments