@@ -24,6 +24,33 @@ export class JupyterClientAdapter extends EventEmitter implements IJupyterClient
2424 private ipythonAdapter : JupyterSocketClient ;
2525
2626 private startDef : Deferred < any > ;
27+
28+ public dispose ( ) {
29+ try {
30+ this . ipythonAdapter . sendKernelCommand ( this . lastStartedKernelUUID , KernelCommand . shutdown )
31+ }
32+ catch ( ex ) {
33+ }
34+ try {
35+ this . ipythonAdapter . dispose ( ) ;
36+ }
37+ catch ( ex ) {
38+ }
39+ try {
40+ this . process . kill ( ) ;
41+ }
42+ catch ( ex ) {
43+ }
44+ try {
45+ this . socketServer . Stop ( ) ;
46+ }
47+ catch ( ex ) {
48+ }
49+ this . ipythonAdapter = null ;
50+ this . process = null ;
51+ this . socketServer = null ;
52+ this . startDef = null ;
53+ }
2754 public start ( envVariables ?: { [ key : string ] : string } ) : Promise < any > {
2855 if ( this . startDef ) {
2956 return this . startDef . promise ;
@@ -32,6 +59,7 @@ export class JupyterClientAdapter extends EventEmitter implements IJupyterClient
3259 this . startDef = createDeferred < any > ( ) ;
3360 const pyFile = path . join ( __dirname , '..' , '..' , '..' , '..' , 'pythonFiles' , 'PythonTools' , 'ipythonServer.py' ) ;
3461 const newEnv = { } ;
62+ // const newEnv = {'DEBUG_DJAYAMANNE_IPYTHON':'1'};
3563 Object . assign ( newEnv , envVariables ) ;
3664 Object . assign ( newEnv , process . env ) ;
3765
@@ -119,14 +147,18 @@ export class JupyterClientAdapter extends EventEmitter implements IJupyterClient
119147 public getAllKernelSpecs ( ) : Promise < { [ key : string ] : Kernelspec } > {
120148 return this . start ( ) . then ( ( ) => this . ipythonAdapter . listKernelSpecs ( ) ) ;
121149 }
150+ private lastStartedKernelUUID : string ;
122151 public startKernel ( kernelSpec : KernelspecMetadata ) : Promise < [ string , any , string ] > {
123152 return this . start ( ) . then ( ( ) => this . getAllKernelSpecs ( ) ) . then ( specks => {
124153 // ok given the specks, find the name of the kernelspec
125154 const kernelSpecName = Object . keys ( specks ) . find ( kernelSpecName => {
126155 const spec = specks [ kernelSpecName ] ;
127156 return spec . spec . display_name === kernelSpec . display_name ;
128157 } ) ;
129- return this . ipythonAdapter . startKernel ( kernelSpecName ) ;
158+ return this . ipythonAdapter . startKernel ( kernelSpecName ) . then ( info => {
159+ this . lastStartedKernelUUID = info [ 0 ] ;
160+ return info ;
161+ } ) ;
130162 } ) ;
131163 }
132164 public shutdownkernel ( kernelUUID : string ) : Promise < any > {
0 commit comments