Skip to content

Commit 71a0cf3

Browse files
authored
feat: telemetry for select env and package managers (#300)
1 parent 6dad67c commit 71a0cf3

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

src/common/telemetry/constants.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ export enum EventNames {
44

55
ENVIRONMENT_MANAGER_REGISTERED = 'ENVIRONMENT_MANAGER.REGISTERED',
66
PACKAGE_MANAGER_REGISTERED = 'PACKAGE_MANAGER.REGISTERED',
7+
ENVIRONMENT_MANAGER_SELECTED = 'ENVIRONMENT_MANAGER.SELECTED',
8+
PACKAGE_MANAGER_SELECTED = 'PACKAGE_MANAGER.SELECTED',
79

810
VENV_USING_UV = 'VENV.USING_UV',
911
VENV_CREATION = 'VENV.CREATION',
@@ -44,6 +46,24 @@ export interface IEventNamePropertyMapping {
4446
managerId: string;
4547
};
4648

49+
/* __GDPR__
50+
"environment_manager.selected": {
51+
"managerId" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "owner": "karthiknadig" }
52+
}
53+
*/
54+
[EventNames.ENVIRONMENT_MANAGER_SELECTED]: {
55+
managerId: string;
56+
};
57+
58+
/* __GDPR__
59+
"package_manager.selected": {
60+
"managerId" : { "classification": "SystemMetaData", "purpose": "FeatureInsight", "owner": "karthiknadig" }
61+
}
62+
*/
63+
[EventNames.PACKAGE_MANAGER_SELECTED]: {
64+
managerId: string;
65+
};
66+
4767
/* __GDPR__
4868
"venv.using_uv": {"owner": "karthiknadig" }
4969
*/

src/common/telemetry/helpers.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { getDefaultEnvManagerSetting, getDefaultPkgManagerSetting } from '../../features/settings/settingHelpers';
2+
import { PythonProjectManager } from '../../internal.api';
3+
import { EventNames } from './constants';
4+
import { sendTelemetryEvent } from './sender';
5+
6+
export function sendManagerSelectionTelemetry(pm: PythonProjectManager) {
7+
const ems: Set<string> = new Set();
8+
const ps: Set<string> = new Set();
9+
pm.getProjects().forEach((project) => {
10+
const m = getDefaultEnvManagerSetting(pm, project.uri);
11+
if (m) {
12+
ems.add(m);
13+
}
14+
15+
const p = getDefaultPkgManagerSetting(pm, project.uri);
16+
if (p) {
17+
ps.add(p);
18+
}
19+
});
20+
21+
ems.forEach((em) => {
22+
sendTelemetryEvent(EventNames.ENVIRONMENT_MANAGER_SELECTED, undefined, { managerId: em });
23+
});
24+
25+
ps.forEach((pkg) => {
26+
sendTelemetryEvent(EventNames.PACKAGE_MANAGER_SELECTED, undefined, { managerId: pkg });
27+
});
28+
}

src/extension.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import { registerTools } from './common/lm.apis';
5656
import { GetEnvironmentInfoTool, InstallPackageTool } from './features/copilotTools';
5757
import { TerminalActivationImpl } from './features/terminal/terminalActivationState';
5858
import { getEnvironmentForTerminal } from './features/terminal/utils';
59+
import { sendManagerSelectionTelemetry } from './common/telemetry/helpers';
5960

6061
export async function activate(context: ExtensionContext): Promise<PythonEnvironmentApi> {
6162
const start = new StopWatch();
@@ -267,8 +268,10 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
267268
registerSystemPythonFeatures(nativeFinder, context.subscriptions, outputChannel),
268269
registerCondaFeatures(nativeFinder, context.subscriptions, outputChannel),
269270
]);
271+
270272
sendTelemetryEvent(EventNames.EXTENSION_MANAGER_REGISTRATION_DURATION, start.elapsedTime);
271273
await terminalManager.initialize(api);
274+
sendManagerSelectionTelemetry(projectManager);
272275
});
273276

274277
sendTelemetryEvent(EventNames.EXTENSION_ACTIVATION_DURATION, start.elapsedTime);

0 commit comments

Comments
 (0)