@@ -17,16 +17,7 @@ import { EXTENSION_ROOT_DIR } from '../../constants';
1717import { captureTelemetry , sendTelemetryEvent } from '../../telemetry' ;
1818import { concatMultilineStringOutput } from '../common' ;
1919import { Identifiers , Telemetry } from '../constants' ;
20- import {
21- CellState ,
22- ICell ,
23- ICellHashListener ,
24- IConnection ,
25- IFileHashes ,
26- IJupyterDebugger ,
27- INotebook ,
28- ISourceMapRequest
29- } from '../types' ;
20+ import { CellState , ICell , ICellHashListener , IConnection , IFileHashes , IJupyterDebugger , INotebook , ISourceMapRequest } from '../types' ;
3021import { JupyterDebuggerNotInstalledError } from './jupyterDebuggerNotInstalledError' ;
3122import { JupyterDebuggerRemoteNotSupported } from './jupyterDebuggerRemoteNotSupported' ;
3223import { ILiveShareHasRole } from './liveshare/types' ;
@@ -45,8 +36,7 @@ export class JupyterDebugger implements IJupyterDebugger, ICellHashListener {
4536 @inject ( IPlatformService ) private platform : IPlatformService ,
4637 @inject ( IWorkspaceService ) private workspace : IWorkspaceService ,
4738 @inject ( IExperimentsManager ) private readonly experimentsManager : IExperimentsManager
48- ) {
49- }
39+ ) { }
5040
5141 public async startDebugging ( notebook : INotebook ) : Promise < void > {
5242 traceInfo ( 'start debugging' ) ;
@@ -114,9 +104,11 @@ export class JupyterDebugger implements IJupyterDebugger, ICellHashListener {
114104 public async hashesUpdated ( hashes : IFileHashes [ ] ) : Promise < void > {
115105 // Make sure that we have an active debugging session at this point
116106 if ( this . debugService . activeDebugSession ) {
117- await Promise . all ( hashes . map ( ( fileHash ) => {
118- return this . debugService . activeDebugSession ! . customRequest ( 'setPydevdSourceMap' , this . buildSourceMap ( fileHash ) ) ;
119- } ) ) ;
107+ await Promise . all (
108+ hashes . map ( fileHash => {
109+ return this . debugService . activeDebugSession ! . customRequest ( 'setPydevdSourceMap' , this . buildSourceMap ( fileHash ) ) ;
110+ } )
111+ ) ;
120112 }
121113 }
122114
@@ -184,18 +176,19 @@ export class JupyterDebugger implements IJupyterDebugger, ICellHashListener {
184176 */
185177 private async getPtvsdPath ( notebook : INotebook ) : Promise < string > {
186178 const oldPtvsd = path . join ( EXTENSION_ROOT_DIR , 'pythonFiles' , 'lib' , 'python' , 'old_ptvsd' ) ;
187- if ( ! this . experimentsManager . inExperiment ( DebugAdapterDescriptorFactory . experiment ) ||
188- ! this . experimentsManager . inExperiment ( DebugAdapterNewPtvsd . experiment ) ) {
179+ if ( ! this . experimentsManager . inExperiment ( DebugAdapterDescriptorFactory . experiment ) || ! this . experimentsManager . inExperiment ( DebugAdapterNewPtvsd . experiment ) ) {
189180 return oldPtvsd ;
190181 }
191182 const pythonVersion = await this . getKernelPythonVersion ( notebook ) ;
192- // The new debug adapter is only supported in 3.7
183+ // The new debug adapter with wheels is only supported in 3.7
193184 // Code can be found here (src/client/debugger/extension/adapter/factory.ts).
194- if ( ! pythonVersion || pythonVersion . major < 3 || pythonVersion . minor < 7 ) {
195- return oldPtvsd ;
185+ if ( pythonVersion && pythonVersion . major === 3 && pythonVersion . minor === 7 ) {
186+ // Return debugger with wheels
187+ return path . join ( EXTENSION_ROOT_DIR , 'pythonFiles' , 'lib' , 'python' , 'new_ptvsd' , 'wheels' ) ;
196188 }
197189
198- return path . join ( EXTENSION_ROOT_DIR , 'pythonFiles' , 'lib' , 'python' ) ;
190+ // We are here so this is NOT python 3.7, return debugger without wheels
191+ return path . join ( EXTENSION_ROOT_DIR , 'pythonFiles' , 'lib' , 'python' , 'new_ptvsd' , 'no_wheels' ) ;
199192 }
200193 private async calculatePtvsdPathList ( notebook : INotebook ) : Promise < string | undefined > {
201194 const extraPaths : string [ ] = [ ] ;
@@ -311,7 +304,12 @@ export class JupyterDebugger implements IJupyterDebugger, ICellHashListener {
311304 const minor = parseInt ( packageVersionMatch [ 2 ] , 10 ) ;
312305 const patch = parseInt ( packageVersionMatch [ 3 ] , 10 ) ;
313306 return {
314- major, minor, patch, build : [ ] , prerelease : [ ] , raw : `${ major } .${ minor } .${ patch } `
307+ major,
308+ minor,
309+ patch,
310+ build : [ ] ,
311+ prerelease : [ ] ,
312+ raw : `${ major } .${ minor } .${ patch } `
315313 } ;
316314 }
317315 }
@@ -335,7 +333,11 @@ export class JupyterDebugger implements IJupyterDebugger, ICellHashListener {
335333 @captureTelemetry ( Telemetry . PtvsdPromptToInstall )
336334 private async promptToInstallPtvsd ( notebook : INotebook , oldVersion : Version | undefined ) : Promise < void > {
337335 const promptMessage = oldVersion ? localize . DataScience . jupyterDebuggerInstallPtvsdUpdate ( ) : localize . DataScience . jupyterDebuggerInstallPtvsdNew ( ) ;
338- const result = await this . appShell . showInformationMessage ( promptMessage , localize . DataScience . jupyterDebuggerInstallPtvsdYes ( ) , localize . DataScience . jupyterDebuggerInstallPtvsdNo ( ) ) ;
336+ const result = await this . appShell . showInformationMessage (
337+ promptMessage ,
338+ localize . DataScience . jupyterDebuggerInstallPtvsdYes ( ) ,
339+ localize . DataScience . jupyterDebuggerInstallPtvsdNo ( )
340+ ) ;
339341
340342 if ( result === localize . DataScience . jupyterDebuggerInstallPtvsdYes ( ) ) {
341343 await this . installPtvsd ( notebook ) ;
@@ -424,7 +426,7 @@ export class JupyterDebugger implements IJupyterDebugger, ICellHashListener {
424426 const data = outputs [ 0 ] . data ;
425427 if ( data && data . hasOwnProperty ( 'text/plain' ) ) {
426428 // tslint:disable-next-line:no-any
427- return ( ( data as any ) [ 'text/plain' ] ) ;
429+ return ( data as any ) [ 'text/plain' ] ;
428430 }
429431 if ( outputs [ 0 ] . output_type === 'stream' ) {
430432 const stream = outputs [ 0 ] as nbformat . IStream ;
0 commit comments