Skip to content

Commit e5f8539

Browse files
authored
Additional data to compare conda environments.txt (microsoft#23805)
1 parent 2d9f706 commit e5f8539

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

src/client/pythonEnvironments/base/locators/common/nativePythonFinder.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ export type NativeCondaInfo = {
5151
canSpawnConda: boolean;
5252
condaRcs: string[];
5353
envDirs: string[];
54+
environmentsTxt?: string;
55+
environmentsTxtExists?: boolean;
56+
environmentsFromTxt: string[];
5457
};
5558

5659
export interface NativeGlobalPythonFinder extends Disposable {

src/client/pythonEnvironments/base/locators/composite/envsCollectionService.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,9 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
359359
nativeCondaEnvDirsNotFound: number;
360360
nativeCondaEnvDirsNotFoundHasEnvs: number;
361361
nativeCondaEnvDirsNotFoundHasEnvsInTxt: number;
362+
nativeCondaEnvTxtSame?: boolean;
363+
nativeCondaEnvTxtExists?: boolean;
364+
nativeCondaEnvsFromTxt: number;
362365
};
363366

364367
const userProvidedCondaExe = fsPath
@@ -380,11 +383,12 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
380383
nativeCondaEnvDirsNotFound: 0,
381384
nativeCondaEnvDirsNotFoundHasEnvs: 0,
382385
nativeCondaEnvDirsNotFoundHasEnvsInTxt: 0,
386+
nativeCondaEnvsFromTxt: 0,
383387
};
384388

385389
// Get conda telemetry
386390
{
387-
const [info, nativeCondaInfo, condaEnvsInEnvironmentsTxt] = await Promise.all([
391+
const [info, nativeCondaInfo, condaEnvsInEnvironmentsTxt, envTxt] = await Promise.all([
388392
Conda.getConda()
389393
.catch((ex) => traceError('Failed to get conda info', ex))
390394
.then((conda) => conda?.getInfo()),
@@ -405,12 +409,20 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
405409
})
406410
.catch((ex) => traceError(`Failed to get conda envs from environments.txt`, ex))
407411
.then((items) => items || []),
412+
getCondaEnvironmentsTxt().catch(noop),
408413
]);
409414

415+
const environmentsTxt =
416+
Array.isArray(envTxt) && envTxt.length ? fsPath.normalize(envTxt[0]).toLowerCase() : undefined;
410417
if (nativeCondaInfo) {
411418
condaTelemetry.nativeCanSpawnConda = nativeCondaInfo.canSpawnConda;
412419
condaTelemetry.nativeCondaInfoEnvsDirs = new Set(nativeCondaInfo.envDirs).size;
413420
condaTelemetry.nativeCondaRcs = new Set(nativeCondaInfo.condaRcs).size;
421+
422+
const nativeEnvTxt = fsPath.normalize(nativeCondaInfo.environmentsTxt || '').toLowerCase();
423+
condaTelemetry.nativeCondaEnvTxtExists = nativeCondaInfo.environmentsTxtExists === true;
424+
condaTelemetry.nativeCondaEnvsFromTxt = (nativeCondaInfo.environmentsFromTxt || []).length;
425+
condaTelemetry.nativeCondaEnvTxtSame = nativeEnvTxt === environmentsTxt;
414426
}
415427
condaTelemetry.condaEnvsInTxt = condaEnvsInEnvironmentsTxt.length;
416428
condaTelemetry.canSpawnConda = !!info;
@@ -736,7 +748,7 @@ export class EnvsCollectionService extends PythonEnvsWatcher<PythonEnvCollection
736748

737749
// Intent is to capture time taken for discovery of all envs to complete the first time.
738750
sendTelemetryEvent(EventName.PYTHON_INTERPRETER_DISCOVERY, elapsedTime, {
739-
telVer: 5,
751+
telVer: 6,
740752
nativeDuration,
741753
workspaceFolderCount: (workspace.workspaceFolders || []).length,
742754
interpreters: this.cache.getAllEnvs().length,

src/client/telemetry/index.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1219,7 +1219,10 @@ export interface IEventNamePropertyMapping {
12191219
"nativeCondaRcsNotFound" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true, "owner": "donjayamanne" },
12201220
"nativeCondaEnvDirsNotFound" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true, "owner": "donjayamanne" },
12211221
"nativeCondaEnvDirsNotFoundHasEnvs" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true, "owner": "donjayamanne" },
1222-
"nativeCondaEnvDirsNotFoundHasEnvsInTxt" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true, "owner": "donjayamanne" }
1222+
"nativeCondaEnvDirsNotFoundHasEnvsInTxt" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true, "owner": "donjayamanne" },
1223+
"nativeCondaEnvTxtSame" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "owner": "donjayamanne" },
1224+
"nativeCondaEnvsFromTxt" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "isMeasurement": true, "owner": "donjayamanne" },
1225+
"nativeCondaEnvTxtExists" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "owner": "donjayamanne" }
12231226
}
12241227
*/
12251228
[EventName.PYTHON_INTERPRETER_DISCOVERY]: {
@@ -1487,6 +1490,18 @@ export interface IEventNamePropertyMapping {
14871490
* Number of environments of a specific type missing in Native Locator (compared to the Stable Locator).
14881491
*/
14891492
missingNativeCondaEnvs?: number;
1493+
/**
1494+
* Whether the env txt found by native locator is the same as that found by pythonn ext.
1495+
*/
1496+
nativeCondaEnvTxtSame?: boolean;
1497+
/**
1498+
* Number of environments found from env txt by native locator.
1499+
*/
1500+
nativeCondaEnvsFromTxt?: number;
1501+
/**
1502+
* Whether the env txt found by native locator exists.
1503+
*/
1504+
nativeCondaEnvTxtExists?: boolean;
14901505
/**
14911506
* Number of environments of a specific type missing in Native Locator (compared to the Stable Locator).
14921507
*/

0 commit comments

Comments
 (0)