From 51e83bcc5507f0d32e1f5751c9edb2fa4ea4c4a4 Mon Sep 17 00:00:00 2001 From: "Brandon Waterloo [MSFT]" <36966225+bwateratmsft@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:07:11 -0500 Subject: [PATCH 1/5] Handle new Python Debugging extension --- src/debugging/python/PythonDebugHelper.ts | 6 ++-- src/tasks/python/PythonExtensionHelper.ts | 36 +++++++++++------------ 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/debugging/python/PythonDebugHelper.ts b/src/debugging/python/PythonDebugHelper.ts index 240f5d3321..1c00b35b14 100644 --- a/src/debugging/python/PythonDebugHelper.ts +++ b/src/debugging/python/PythonDebugHelper.ts @@ -59,8 +59,8 @@ export class PythonDebugHelper implements DebugHelper { } public async resolveDebugConfiguration(context: DockerDebugContext, debugConfiguration: PythonDockerDebugConfiguration): Promise { - const pyExt = await PythonExtensionHelper.getPythonExtension(); - if (!pyExt) { + const pyDebugExt = await PythonExtensionHelper.getPythonDebuggerExtension(); + if (!pyDebugExt) { return undefined; } @@ -83,7 +83,7 @@ export class PythonDebugHelper implements DebugHelper { return { ...{ ...debugConfiguration, python: undefined }, // Get the original debug configuration, minus the "python" property which belongs to the Docker launch config and confuses the Python extension - type: 'python', + type: 'debugpy', request: 'launch', pathMappings: debugConfiguration.python.pathMappings, justMyCode: debugConfiguration.python.justMyCode ?? true, diff --git a/src/tasks/python/PythonExtensionHelper.ts b/src/tasks/python/PythonExtensionHelper.ts index cfe67b84da..a04a9a1862 100644 --- a/src/tasks/python/PythonExtensionHelper.ts +++ b/src/tasks/python/PythonExtensionHelper.ts @@ -3,13 +3,11 @@ * Licensed under the MIT License. See LICENSE.md in the project root for license information. *--------------------------------------------------------------------------------------------*/ -// This will eventually be replaced by an API in the Python extension. See https://github.com/microsoft/vscode-python/issues/7282 - import * as semver from 'semver'; -import * as vscode from "vscode"; +import * as vscode from 'vscode'; -// Adapted from https://github.com/microsoft/vscode-python/blob/main/src/client/api.ts -interface PythonExtensionAPI { +// Adapted from https://github.com/microsoft/vscode-python-debugger/blob/main/src/extension/api.ts +interface PythonDebuggerExtensionAPI { debug: { getDebuggerPackagePath(): Promise; } @@ -24,8 +22,8 @@ export namespace PythonExtensionHelper { } export async function getLauncherFolderPath(): Promise { - const pyExt = await getPythonExtension(); - const debuggerPath = await pyExt?.exports?.debug?.getDebuggerPackagePath(); + const debugPyExt = await getPythonDebuggerExtension(); + const debuggerPath = await debugPyExt?.exports?.debug?.getDebuggerPackagePath(); if (debuggerPath) { return debuggerPath; @@ -34,35 +32,35 @@ export namespace PythonExtensionHelper { throw new Error(vscode.l10n.t('Unable to find the debugger in the Python extension.')); } - export async function getPythonExtension(): Promise> | undefined { - const pyExtensionId = 'ms-python.python'; - const minPyExtensionVersion = new semver.SemVer('2020.11.367453362'); + export async function getPythonDebuggerExtension(): Promise> | undefined { + const debugPyExtensionId = 'ms-python.debugpy'; + const minPyExtensionVersion = new semver.SemVer('2024.0.0'); - const pyExt = vscode.extensions.getExtension(pyExtensionId); + const debugPyExt = vscode.extensions.getExtension(debugPyExtensionId); const button = vscode.l10n.t('Open Extension'); - if (!pyExt) { - const response = await vscode.window.showErrorMessage(vscode.l10n.t('For debugging Python apps in a container to work, the Python extension must be installed.'), button); + if (!debugPyExt) { + const response = await vscode.window.showErrorMessage(vscode.l10n.t('For debugging Python apps in a container to work, the Python Debugger extension must be installed.'), button); if (response === button) { - await vscode.commands.executeCommand('extension.open', pyExtensionId); + await vscode.commands.executeCommand('extension.open', debugPyExtensionId); } return undefined; } - const version = new semver.SemVer(pyExt.packageJSON.version); + const version = new semver.SemVer(debugPyExt.packageJSON.version); if (semver.lt(version, minPyExtensionVersion)) { - await vscode.window.showErrorMessage(vscode.l10n.t('The installed Python extension does not meet the minimum requirements, please update to the latest version and try again.')); + await vscode.window.showErrorMessage(vscode.l10n.t('The installed Python Debugger extension does not meet the minimum requirements, please update to the latest version and try again.')); return undefined; } - if (!pyExt.isActive) { - await pyExt.activate(); + if (!debugPyExt.isActive) { + await debugPyExt.activate(); } - return pyExt; + return debugPyExt; } } /* eslint-enable @typescript-eslint/no-namespace, no-inner-declarations */ From 661e6703c5a3e40fe2d6e257e596624601cf68bb Mon Sep 17 00:00:00 2001 From: "Brandon Waterloo [MSFT]" <36966225+bwateratmsft@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:12:35 -0400 Subject: [PATCH 2/5] Set a minimum version --- src/tasks/python/PythonExtensionHelper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tasks/python/PythonExtensionHelper.ts b/src/tasks/python/PythonExtensionHelper.ts index a04a9a1862..01e7746082 100644 --- a/src/tasks/python/PythonExtensionHelper.ts +++ b/src/tasks/python/PythonExtensionHelper.ts @@ -34,7 +34,7 @@ export namespace PythonExtensionHelper { export async function getPythonDebuggerExtension(): Promise> | undefined { const debugPyExtensionId = 'ms-python.debugpy'; - const minPyExtensionVersion = new semver.SemVer('2024.0.0'); + const minPyExtensionVersion = new semver.SemVer('2024.5.11141010'); const debugPyExt = vscode.extensions.getExtension(debugPyExtensionId); const button = vscode.l10n.t('Open Extension'); From 50e73821336cde4cccebc3ad3e57fe5753837f71 Mon Sep 17 00:00:00 2001 From: "Brandon Waterloo [MSFT]" <36966225+bwateratmsft@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:12:59 -0400 Subject: [PATCH 3/5] Revert most of it --- src/debugging/python/PythonDebugHelper.ts | 4 ++-- src/tasks/python/PythonExtensionHelper.ts | 28 +++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/debugging/python/PythonDebugHelper.ts b/src/debugging/python/PythonDebugHelper.ts index 4da87237e9..c3c1c63891 100644 --- a/src/debugging/python/PythonDebugHelper.ts +++ b/src/debugging/python/PythonDebugHelper.ts @@ -59,8 +59,8 @@ export class PythonDebugHelper implements DebugHelper { } public async resolveDebugConfiguration(context: DockerDebugContext, debugConfiguration: PythonDockerDebugConfiguration): Promise { - const pyDebugExt = await PythonExtensionHelper.getPythonDebuggerExtension(); - if (!pyDebugExt) { + const pyExt = await PythonExtensionHelper.getPythonExtension(); + if (!pyExt) { return undefined; } diff --git a/src/tasks/python/PythonExtensionHelper.ts b/src/tasks/python/PythonExtensionHelper.ts index 01e7746082..ec554a531c 100644 --- a/src/tasks/python/PythonExtensionHelper.ts +++ b/src/tasks/python/PythonExtensionHelper.ts @@ -6,8 +6,8 @@ import * as semver from 'semver'; import * as vscode from 'vscode'; -// Adapted from https://github.com/microsoft/vscode-python-debugger/blob/main/src/extension/api.ts -interface PythonDebuggerExtensionAPI { +// Adapted from https://github.com/microsoft/vscode-python/blob/main/src/client/api.ts +interface PythonExtensionAPI { debug: { getDebuggerPackagePath(): Promise; } @@ -22,7 +22,7 @@ export namespace PythonExtensionHelper { } export async function getLauncherFolderPath(): Promise { - const debugPyExt = await getPythonDebuggerExtension(); + const debugPyExt = await getPythonExtension(); const debuggerPath = await debugPyExt?.exports?.debug?.getDebuggerPackagePath(); if (debuggerPath) { @@ -32,35 +32,35 @@ export namespace PythonExtensionHelper { throw new Error(vscode.l10n.t('Unable to find the debugger in the Python extension.')); } - export async function getPythonDebuggerExtension(): Promise> | undefined { - const debugPyExtensionId = 'ms-python.debugpy'; + export async function getPythonExtension(): Promise> | undefined { + const pyExtensionId = 'ms-python.python'; const minPyExtensionVersion = new semver.SemVer('2024.5.11141010'); - const debugPyExt = vscode.extensions.getExtension(debugPyExtensionId); + const pyExt = vscode.extensions.getExtension(pyExtensionId); const button = vscode.l10n.t('Open Extension'); - if (!debugPyExt) { - const response = await vscode.window.showErrorMessage(vscode.l10n.t('For debugging Python apps in a container to work, the Python Debugger extension must be installed.'), button); + if (!pyExt) { + const response = await vscode.window.showErrorMessage(vscode.l10n.t('For debugging Python apps in a container to work, the Python extension must be installed.'), button); if (response === button) { - await vscode.commands.executeCommand('extension.open', debugPyExtensionId); + await vscode.commands.executeCommand('extension.open', pyExtensionId); } return undefined; } - const version = new semver.SemVer(debugPyExt.packageJSON.version); + const version = new semver.SemVer(pyExt.packageJSON.version); if (semver.lt(version, minPyExtensionVersion)) { - await vscode.window.showErrorMessage(vscode.l10n.t('The installed Python Debugger extension does not meet the minimum requirements, please update to the latest version and try again.')); + await vscode.window.showErrorMessage(vscode.l10n.t('The installed Python extension does not meet the minimum requirements, please update to the latest version and try again.')); return undefined; } - if (!debugPyExt.isActive) { - await debugPyExt.activate(); + if (!pyExt.isActive) { + await pyExt.activate(); } - return debugPyExt; + return pyExt; } } /* eslint-enable @typescript-eslint/no-namespace, no-inner-declarations */ From f86c0363456a0f5e3cd80cd783b0393e68efd0e4 Mon Sep 17 00:00:00 2001 From: "Brandon Waterloo [MSFT]" <36966225+bwateratmsft@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:13:52 -0400 Subject: [PATCH 4/5] Revert that too --- src/tasks/python/PythonExtensionHelper.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tasks/python/PythonExtensionHelper.ts b/src/tasks/python/PythonExtensionHelper.ts index ec554a531c..8fb2b71431 100644 --- a/src/tasks/python/PythonExtensionHelper.ts +++ b/src/tasks/python/PythonExtensionHelper.ts @@ -22,8 +22,8 @@ export namespace PythonExtensionHelper { } export async function getLauncherFolderPath(): Promise { - const debugPyExt = await getPythonExtension(); - const debuggerPath = await debugPyExt?.exports?.debug?.getDebuggerPackagePath(); + const pyExt = await getPythonExtension(); + const debuggerPath = await pyExt?.exports?.debug?.getDebuggerPackagePath(); if (debuggerPath) { return debuggerPath; From 878771f4f2d686c7f4ddf4b3135b2bdd0e5f987c Mon Sep 17 00:00:00 2001 From: "Brandon Waterloo [MSFT]" <36966225+bwateratmsft@users.noreply.github.com> Date: Tue, 23 Apr 2024 16:17:21 -0400 Subject: [PATCH 5/5] Just revert the file entirely --- src/tasks/python/PythonExtensionHelper.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tasks/python/PythonExtensionHelper.ts b/src/tasks/python/PythonExtensionHelper.ts index 8fb2b71431..cfe67b84da 100644 --- a/src/tasks/python/PythonExtensionHelper.ts +++ b/src/tasks/python/PythonExtensionHelper.ts @@ -3,8 +3,10 @@ * Licensed under the MIT License. See LICENSE.md in the project root for license information. *--------------------------------------------------------------------------------------------*/ +// This will eventually be replaced by an API in the Python extension. See https://github.com/microsoft/vscode-python/issues/7282 + import * as semver from 'semver'; -import * as vscode from 'vscode'; +import * as vscode from "vscode"; // Adapted from https://github.com/microsoft/vscode-python/blob/main/src/client/api.ts interface PythonExtensionAPI { @@ -34,7 +36,7 @@ export namespace PythonExtensionHelper { export async function getPythonExtension(): Promise> | undefined { const pyExtensionId = 'ms-python.python'; - const minPyExtensionVersion = new semver.SemVer('2024.5.11141010'); + const minPyExtensionVersion = new semver.SemVer('2020.11.367453362'); const pyExt = vscode.extensions.getExtension(pyExtensionId); const button = vscode.l10n.t('Open Extension');