From e5f8539af2ad1bca609bb7a416b50eb27e2f6014 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Sun, 14 Jul 2024 17:04:00 +1000 Subject: [PATCH] Additional data to compare conda environments.txt (#23805) --- .../base/locators/common/nativePythonFinder.ts | 3 +++ .../locators/composite/envsCollectionService.ts | 16 ++++++++++++++-- src/client/telemetry/index.ts | 17 ++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts b/src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts index 196808ac3e5f..3478f2d4cd0e 100644 --- a/src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts +++ b/src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts @@ -51,6 +51,9 @@ export type NativeCondaInfo = { canSpawnConda: boolean; condaRcs: string[]; envDirs: string[]; + environmentsTxt?: string; + environmentsTxtExists?: boolean; + environmentsFromTxt: string[]; }; export interface NativeGlobalPythonFinder extends Disposable { diff --git a/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts b/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts index e6a61964a245..f1a3e98b7467 100644 --- a/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts +++ b/src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts @@ -359,6 +359,9 @@ export class EnvsCollectionService extends PythonEnvsWatcher traceError('Failed to get conda info', ex)) .then((conda) => conda?.getInfo()), @@ -405,12 +409,20 @@ export class EnvsCollectionService extends PythonEnvsWatcher traceError(`Failed to get conda envs from environments.txt`, ex)) .then((items) => items || []), + getCondaEnvironmentsTxt().catch(noop), ]); + const environmentsTxt = + Array.isArray(envTxt) && envTxt.length ? fsPath.normalize(envTxt[0]).toLowerCase() : undefined; if (nativeCondaInfo) { condaTelemetry.nativeCanSpawnConda = nativeCondaInfo.canSpawnConda; condaTelemetry.nativeCondaInfoEnvsDirs = new Set(nativeCondaInfo.envDirs).size; condaTelemetry.nativeCondaRcs = new Set(nativeCondaInfo.condaRcs).size; + + const nativeEnvTxt = fsPath.normalize(nativeCondaInfo.environmentsTxt || '').toLowerCase(); + condaTelemetry.nativeCondaEnvTxtExists = nativeCondaInfo.environmentsTxtExists === true; + condaTelemetry.nativeCondaEnvsFromTxt = (nativeCondaInfo.environmentsFromTxt || []).length; + condaTelemetry.nativeCondaEnvTxtSame = nativeEnvTxt === environmentsTxt; } condaTelemetry.condaEnvsInTxt = condaEnvsInEnvironmentsTxt.length; condaTelemetry.canSpawnConda = !!info; @@ -736,7 +748,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher