Skip to content

Commit b99c452

Browse files
karthiknadigeleanorjboyd
authored andcommitted
feat: telemetry for select env and package managers (#300)
1 parent d8a7650 commit b99c452

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
@@ -58,6 +58,7 @@ import { registerTools } from './common/lm.apis';
5858
import { GetEnvironmentInfoTool, InstallPackageTool } from './features/copilotTools';
5959
import { TerminalActivationImpl } from './features/terminal/terminalActivationState';
6060
import { getEnvironmentForTerminal } from './features/terminal/utils';
61+
import { sendManagerSelectionTelemetry } from './common/telemetry/helpers';
6162

6263
export async function activate(context: ExtensionContext): Promise<PythonEnvironmentApi> {
6364
const start = new StopWatch();
@@ -271,8 +272,10 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
271272
registerSystemPythonFeatures(nativeFinder, context.subscriptions, outputChannel),
272273
registerCondaFeatures(nativeFinder, context.subscriptions, outputChannel),
273274
]);
275+
274276
sendTelemetryEvent(EventNames.EXTENSION_MANAGER_REGISTRATION_DURATION, start.elapsedTime);
275277
await terminalManager.initialize(api);
278+
sendManagerSelectionTelemetry(projectManager);
276279
});
277280

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

0 commit comments

Comments
 (0)