Skip to content

Commit 4a09f3a

Browse files
committed
feat: telemetry for select env and package managers
1 parent 22f08ae commit 4a09f3a

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',
@@ -42,6 +44,24 @@ export interface IEventNamePropertyMapping {
4244
managerId: string;
4345
};
4446

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

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();
@@ -263,8 +264,10 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
263264
registerSystemPythonFeatures(nativeFinder, context.subscriptions, outputChannel),
264265
registerCondaFeatures(nativeFinder, context.subscriptions, outputChannel),
265266
]);
267+
266268
sendTelemetryEvent(EventNames.EXTENSION_MANAGER_REGISTRATION_DURATION, start.elapsedTime);
267269
await terminalManager.initialize(api);
270+
sendManagerSelectionTelemetry(projectManager);
268271
});
269272

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

0 commit comments

Comments
 (0)