Skip to content

Commit f0763f8

Browse files
author
Kartik Raj
committed
Add logging and telemetry for deprecated APIs
1 parent c50f13d commit f0763f8

File tree

1 file changed

+40
-5
lines changed

1 file changed

+40
-5
lines changed

src/client/deprecatedProposedApi.ts

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import { ConfigurationTarget, EventEmitter } from 'vscode';
55
import { arePathsSame } from './common/platform/fs-paths';
6-
import { IInterpreterPathService, Resource } from './common/types';
6+
import { IExtensions, IInterpreterPathService, Resource } from './common/types';
77
import {
88
EnvironmentsChangedParams,
99
ActiveEnvironmentChangedParams,
@@ -16,6 +16,8 @@ import { IServiceContainer } from './ioc/types';
1616
import { PythonEnvInfo } from './pythonEnvironments/base/info';
1717
import { getEnvPath } from './pythonEnvironments/base/info/env';
1818
import { GetRefreshEnvironmentsOptions, IDiscoveryAPI } from './pythonEnvironments/base/locator';
19+
import { sendTelemetryEvent } from './telemetry';
20+
import { EventName } from './telemetry/constants';
1921

2022
const onDidInterpretersChangedEvent = new EventEmitter<EnvironmentsChangedParams[]>();
2123
/**
@@ -59,14 +61,30 @@ export function buildDeprecatedProposedApi(
5961
): DeprecatedProposedAPI {
6062
const interpreterPathService = serviceContainer.get<IInterpreterPathService>(IInterpreterPathService);
6163
const interpreterService = serviceContainer.get<IInterpreterService>(IInterpreterService);
64+
const extensions = serviceContainer.get<IExtensions>(IExtensions);
65+
function sendApiTelemetry(apiName: string) {
66+
console.warn('Extension is using deprecated python APIs which will be removed soon');
67+
extensions
68+
.determineExtensionFromCallStack()
69+
.then((info) =>
70+
sendTelemetryEvent(EventName.PYTHON_ENVIRONMENTS_API, undefined, {
71+
apiName,
72+
extensionId: info.extensionId,
73+
displayName: info.displayName,
74+
}),
75+
)
76+
.ignoreErrors();
77+
}
6278

6379
const proposed: DeprecatedProposedAPI = {
6480
environment: {
6581
async getExecutionDetails(resource?: Resource) {
82+
sendApiTelemetry('getExecutionDetails');
6683
const env = await interpreterService.getActiveInterpreter(resource);
6784
return env ? { execCommand: [env.path] } : { execCommand: undefined };
6885
},
6986
async getActiveEnvironmentPath(resource?: Resource) {
87+
sendApiTelemetry('getActiveEnvironmentPath');
7088
const env = await interpreterService.getActiveInterpreter(resource);
7189
if (!env) {
7290
return undefined;
@@ -77,6 +95,7 @@ export function buildDeprecatedProposedApi(
7795
path: string,
7896
options?: EnvironmentDetailsOptions,
7997
): Promise<EnvironmentDetails | undefined> {
98+
sendApiTelemetry('getEnvironmentDetails');
8099
let env: PythonEnvInfo | undefined;
81100
if (options?.useCache) {
82101
env = discoveryApi.getEnvs().find((v) => isEnvSame(path, v));
@@ -100,24 +119,40 @@ export function buildDeprecatedProposedApi(
100119
};
101120
},
102121
getEnvironmentPaths() {
122+
sendApiTelemetry('getEnvironmentPaths');
103123
const paths = discoveryApi.getEnvs().map((e) => getEnvPath(e.executable.filename, e.location));
104124
return Promise.resolve(paths);
105125
},
106126
setActiveEnvironment(path: string, resource?: Resource): Promise<void> {
127+
sendApiTelemetry('setActiveEnvironment');
107128
return interpreterPathService.update(resource, ConfigurationTarget.WorkspaceFolder, path);
108129
},
109130
async refreshEnvironment() {
131+
sendApiTelemetry('refreshEnvironment');
110132
await discoveryApi.triggerRefresh();
111133
const paths = discoveryApi.getEnvs().map((e) => getEnvPath(e.executable.filename, e.location));
112134
return Promise.resolve(paths);
113135
},
114136
getRefreshPromise(options?: GetRefreshEnvironmentsOptions): Promise<void> | undefined {
137+
sendApiTelemetry('getRefreshPromise');
115138
return discoveryApi.getRefreshPromise(options);
116139
},
117-
onDidChangeExecutionDetails: interpreterService.onDidChangeInterpreterConfiguration,
118-
onDidEnvironmentsChanged: onDidInterpretersChangedEvent.event,
119-
onDidActiveEnvironmentChanged: onDidActiveInterpreterChangedEvent.event,
120-
onRefreshProgress: discoveryApi.onProgress,
140+
get onDidChangeExecutionDetails() {
141+
sendApiTelemetry('onDidChangeExecutionDetails');
142+
return interpreterService.onDidChangeInterpreterConfiguration;
143+
},
144+
get onDidEnvironmentsChanged() {
145+
sendApiTelemetry('onDidEnvironmentsChanged');
146+
return onDidInterpretersChangedEvent.event;
147+
},
148+
get onDidActiveEnvironmentChanged() {
149+
sendApiTelemetry('onDidActiveEnvironmentChanged');
150+
return onDidActiveInterpreterChangedEvent.event;
151+
},
152+
get onRefreshProgress() {
153+
sendApiTelemetry('onRefreshProgress');
154+
return discoveryApi.onProgress;
155+
},
121156
},
122157
};
123158
return proposed;

0 commit comments

Comments
 (0)