@@ -17,8 +17,9 @@ import { KernelSelectionProvider } from '../jupyter/kernels/kernelSelections';
1717import { KernelSelector } from '../jupyter/kernels/kernelSelector' ;
1818import { KernelSwitcher } from '../jupyter/kernels/kernelSwitcher' ;
1919import { KernelSelection } from '../jupyter/kernels/types' ;
20+ import { INotebookStorageProvider } from '../notebookStorage/notebookStorageProvider' ;
2021import { INotebook , INotebookProvider } from '../types' ;
21- import { getNotebookMetadata , updateKernelInNotebookMetadata } from './helpers/helpers' ;
22+ import { getNotebookMetadata , isJupyterNotebook , updateKernelInNotebookMetadata } from './helpers/helpers' ;
2223import { NotebookKernel } from './notebookKernel' ;
2324import { INotebookContentProvider , INotebookExecutionService } from './types' ;
2425@injectable ( )
@@ -33,6 +34,7 @@ export class VSCodeKernelPickerProvider implements NotebookKernelProvider {
3334 @inject ( KernelSelectionProvider ) private readonly kernelSelectionProvider : KernelSelectionProvider ,
3435 @inject ( KernelSelector ) private readonly kernelSelector : KernelSelector ,
3536 @inject ( IVSCodeNotebook ) private readonly notebook : IVSCodeNotebook ,
37+ @inject ( INotebookStorageProvider ) private readonly storageProvider : INotebookStorageProvider ,
3638 @inject ( INotebookProvider ) private readonly notebookProvider : INotebookProvider ,
3739 @inject ( KernelSwitcher ) private readonly kernelSwitcher : KernelSwitcher ,
3840 @inject ( INotebookContentProvider ) private readonly notebookContentProvider : INotebookContentProvider ,
@@ -119,13 +121,21 @@ export class VSCodeKernelPickerProvider implements NotebookKernelProvider {
119121 }
120122
121123 const document = newKernelInfo . document ;
124+ if ( ! isJupyterNotebook ( document ) ) {
125+ return ;
126+ }
122127 const selection = await newKernelInfo . kernel . validate ( document . uri ) ;
123128 const editor = this . notebook . notebookEditors . find ( ( item ) => item . document === document ) ;
124129 if ( ! selection || ! editor || editor . kernel !== newKernelInfo . kernel ) {
125130 // Possibly closed or different kernel picked.
126131 return ;
127132 }
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+ }
129139 // Change kernel and update metadata.
130140 const notebook = await this . notebookProvider . getOrCreateNotebook ( {
131141 resource : document . uri ,
0 commit comments