in src/client/debugger/extension/configuration/resolvers/launch.ts [80:184]
protected async provideLaunchDefaults(
workspaceFolder: Uri | undefined,
debugConfiguration: LaunchRequestArguments,
): Promise<void> {
if (debugConfiguration.python === undefined) {
debugConfiguration.python = debugConfiguration.pythonPath;
}
if (debugConfiguration.debugAdapterPython === undefined) {
debugConfiguration.debugAdapterPython = debugConfiguration.pythonPath;
}
if (debugConfiguration.debugLauncherPython === undefined) {
debugConfiguration.debugLauncherPython = debugConfiguration.pythonPath;
}
delete debugConfiguration.pythonPath;
if (typeof debugConfiguration.cwd !== 'string' && workspaceFolder) {
debugConfiguration.cwd = workspaceFolder.fsPath;
}
if (typeof debugConfiguration.envFile !== 'string' && workspaceFolder) {
const settings = this.configurationService.getSettings(workspaceFolder);
debugConfiguration.envFile = settings.envFile;
}
// Extract environment variables from .env file in the vscode context and
// set the "env" debug configuration argument. This expansion should be
// done here before handing of the environment settings to the debug adapter
debugConfiguration.env = await this.debugEnvHelper.getEnvironmentVariables(debugConfiguration);
if (typeof debugConfiguration.stopOnEntry !== 'boolean') {
debugConfiguration.stopOnEntry = false;
}
debugConfiguration.showReturnValue = debugConfiguration.showReturnValue !== false;
if (!debugConfiguration.console) {
debugConfiguration.console = 'integratedTerminal';
}
// If using a terminal, then never open internal console.
if (debugConfiguration.console !== 'internalConsole' && !debugConfiguration.internalConsoleOptions) {
debugConfiguration.internalConsoleOptions = 'neverOpen';
}
if (!Array.isArray(debugConfiguration.debugOptions)) {
debugConfiguration.debugOptions = [];
}
if (debugConfiguration.justMyCode === undefined) {
// Populate justMyCode using debugStdLib
debugConfiguration.justMyCode = !debugConfiguration.debugStdLib;
}
// Pass workspace folder so we can get this when we get debug events firing.
debugConfiguration.workspaceFolder = workspaceFolder ? workspaceFolder.fsPath : undefined;
const debugOptions = debugConfiguration.debugOptions!;
if (!debugConfiguration.justMyCode) {
this.debugOption(debugOptions, DebugOptions.DebugStdLib);
}
if (debugConfiguration.stopOnEntry) {
this.debugOption(debugOptions, DebugOptions.StopOnEntry);
}
if (debugConfiguration.showReturnValue) {
this.debugOption(debugOptions, DebugOptions.ShowReturnValue);
}
if (debugConfiguration.django) {
this.debugOption(debugOptions, DebugOptions.Django);
}
if (debugConfiguration.jinja) {
this.debugOption(debugOptions, DebugOptions.Jinja);
}
if (debugConfiguration.redirectOutput === undefined && debugConfiguration.console === 'internalConsole') {
debugConfiguration.redirectOutput = true;
}
if (debugConfiguration.redirectOutput) {
this.debugOption(debugOptions, DebugOptions.RedirectOutput);
}
if (debugConfiguration.sudo) {
this.debugOption(debugOptions, DebugOptions.Sudo);
}
if (debugConfiguration.subProcess === true) {
this.debugOption(debugOptions, DebugOptions.SubProcess);
}
if (this.platformService.isWindows) {
this.debugOption(debugOptions, DebugOptions.FixFilePathCase);
}
const isFastAPI = this.isDebuggingFastAPI(debugConfiguration);
const isFlask = this.isDebuggingFlask(debugConfiguration);
if (
(debugConfiguration.pyramid || isFlask || isFastAPI) &&
debugOptions.indexOf(DebugOptions.Jinja) === -1 &&
debugConfiguration.jinja !== false
) {
this.debugOption(debugOptions, DebugOptions.Jinja);
}
// Unlike with attach, we do not set a default path mapping.
// (See: https://github.com/microsoft/vscode-python/issues/3568)
if (debugConfiguration.pathMappings) {
let pathMappings = debugConfiguration.pathMappings;
if (pathMappings.length > 0) {
pathMappings = this.fixUpPathMappings(
pathMappings || [],
workspaceFolder ? workspaceFolder.fsPath : '',
);
}
debugConfiguration.pathMappings = pathMappings.length > 0 ? pathMappings : undefined;
}
const trigger =
debugConfiguration.purpose?.includes(DebugPurpose.DebugTest) || debugConfiguration.request === 'test'
? 'test'
: 'launch';
this.sendTelemetry(trigger, debugConfiguration);
}