diff --git a/src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts b/src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts index 196808ac3e5fb..3478f2d4cd0e4 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 e6a61964a2458..f1a3e98b74679 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