22// Licensed under the MIT License. 
33'use strict' ; 
44
5+ import  {  Kernel  }  from  '@jupyterlab/services' ; 
56import  {  inject ,  injectable ,  named  }  from  'inversify' ; 
67import  *  as  path  from  'path' ; 
78import  {  InterpreterUri  }  from  '../../common/installer/types' ; 
@@ -15,6 +16,7 @@ import {
1516 KNOWN_PATH_SERVICE , 
1617 PythonInterpreter 
1718}  from  '../../interpreter/contracts' ; 
19+ import  {  JupyterKernelSpec  }  from  '../jupyter/kernels/jupyterKernelSpec' ; 
1820import  {  IJupyterKernelSpec  }  from  '../types' ; 
1921import  {  IKernelFinder  }  from  './types' ; 
2022
@@ -173,10 +175,9 @@ export class KernelFinder implements IKernelFinder {
173175 for  ( let  i  =  0 ;  i  <  searchResults . length ;  i  +=  1 )  { 
174176 if  ( searchResults [ i ] . length  >  0 )  { 
175177 try  { 
176-  const  kernelSpec : IJupyterKernelSpec  =  JSON . parse ( 
177-  await  this . file . readFile ( path . join ( paths [ i ] ,  searchResults [ i ] [ 0 ] ,  'kernel.json' ) ) 
178-  ) ; 
179-  kernelSpec . name  =  searchResults [ i ] [ 0 ] ; 
178+  const  kernelJsonFile  =  path . join ( paths [ i ] ,  searchResults [ i ] [ 0 ] ,  'kernel.json' ) ; 
179+  const  kernelJson  =  JSON . parse ( await  this . file . readFile ( kernelJsonFile ) ) ; 
180+  const  kernelSpec : IJupyterKernelSpec  =  new  JupyterKernelSpec ( kernelJson ,  kernelJsonFile ) ; 
180181 this . cache . push ( kernelSpec ) ; 
181182 return  kernelSpec ; 
182183 }  catch  ( e )  { 
@@ -193,10 +194,10 @@ export class KernelFinder implements IKernelFinder {
193194 this . activeInterpreter  =  await  this . interpreterService . getActiveInterpreter ( resource ) ; 
194195 } 
195196
196-  const  defaultSpec  =  { 
197+  const  defaultSpec :  Kernel . ISpecModel  =  { 
197198 name : `python_defaultSpec_${ Date . now ( ) }  ` , 
198199 language : 'python' , 
199-  path : this . activeInterpreter ?. path ! , 
200+  path : '< path to kernel spec.json>' , 
200201 display_name : this . activeInterpreter ?. displayName  ? this . activeInterpreter . displayName  : 'Python 3' , 
201202 metadata : { } , 
202203 argv : [ 
@@ -205,11 +206,12 @@ export class KernelFinder implements IKernelFinder {
205206 'ipykernel_launcher' , 
206207 '-f' , 
207208 connectionFilePlaceholder 
208-  ] 
209+  ] , 
210+  resources : { } 
209211 } ; 
210- 
211-  this . cache . push ( defaultSpec ) ; 
212-  return  defaultSpec ; 
212+   const   kernelSpec   =   new   JupyterKernelSpec ( defaultSpec ) ; 
213+  this . cache . push ( kernelSpec ) ; 
214+  return  kernelSpec ; 
213215 } 
214216
215217 private  async  readCache ( ) : Promise < IJupyterKernelSpec [ ] >  { 
0 commit comments