3
3
4
4
import { ConfigurationTarget , EventEmitter } from 'vscode' ;
5
5
import { arePathsSame } from './common/platform/fs-paths' ;
6
- import { IInterpreterPathService , Resource } from './common/types' ;
6
+ import { IExtensions , IInterpreterPathService , Resource } from './common/types' ;
7
7
import {
8
8
EnvironmentsChangedParams ,
9
9
ActiveEnvironmentChangedParams ,
@@ -16,6 +16,8 @@ import { IServiceContainer } from './ioc/types';
16
16
import { PythonEnvInfo } from './pythonEnvironments/base/info' ;
17
17
import { getEnvPath } from './pythonEnvironments/base/info/env' ;
18
18
import { GetRefreshEnvironmentsOptions , IDiscoveryAPI } from './pythonEnvironments/base/locator' ;
19
+ import { sendTelemetryEvent } from './telemetry' ;
20
+ import { EventName } from './telemetry/constants' ;
19
21
20
22
const onDidInterpretersChangedEvent = new EventEmitter < EnvironmentsChangedParams [ ] > ( ) ;
21
23
/**
@@ -59,14 +61,30 @@ export function buildDeprecatedProposedApi(
59
61
) : DeprecatedProposedAPI {
60
62
const interpreterPathService = serviceContainer . get < IInterpreterPathService > ( IInterpreterPathService ) ;
61
63
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
+ }
62
78
63
79
const proposed : DeprecatedProposedAPI = {
64
80
environment : {
65
81
async getExecutionDetails ( resource ?: Resource ) {
82
+ sendApiTelemetry ( 'getExecutionDetails' ) ;
66
83
const env = await interpreterService . getActiveInterpreter ( resource ) ;
67
84
return env ? { execCommand : [ env . path ] } : { execCommand : undefined } ;
68
85
} ,
69
86
async getActiveEnvironmentPath ( resource ?: Resource ) {
87
+ sendApiTelemetry ( 'getActiveEnvironmentPath' ) ;
70
88
const env = await interpreterService . getActiveInterpreter ( resource ) ;
71
89
if ( ! env ) {
72
90
return undefined ;
@@ -77,6 +95,7 @@ export function buildDeprecatedProposedApi(
77
95
path : string ,
78
96
options ?: EnvironmentDetailsOptions ,
79
97
) : Promise < EnvironmentDetails | undefined > {
98
+ sendApiTelemetry ( 'getEnvironmentDetails' ) ;
80
99
let env : PythonEnvInfo | undefined ;
81
100
if ( options ?. useCache ) {
82
101
env = discoveryApi . getEnvs ( ) . find ( ( v ) => isEnvSame ( path , v ) ) ;
@@ -100,24 +119,40 @@ export function buildDeprecatedProposedApi(
100
119
} ;
101
120
} ,
102
121
getEnvironmentPaths ( ) {
122
+ sendApiTelemetry ( 'getEnvironmentPaths' ) ;
103
123
const paths = discoveryApi . getEnvs ( ) . map ( ( e ) => getEnvPath ( e . executable . filename , e . location ) ) ;
104
124
return Promise . resolve ( paths ) ;
105
125
} ,
106
126
setActiveEnvironment ( path : string , resource ?: Resource ) : Promise < void > {
127
+ sendApiTelemetry ( 'setActiveEnvironment' ) ;
107
128
return interpreterPathService . update ( resource , ConfigurationTarget . WorkspaceFolder , path ) ;
108
129
} ,
109
130
async refreshEnvironment ( ) {
131
+ sendApiTelemetry ( 'refreshEnvironment' ) ;
110
132
await discoveryApi . triggerRefresh ( ) ;
111
133
const paths = discoveryApi . getEnvs ( ) . map ( ( e ) => getEnvPath ( e . executable . filename , e . location ) ) ;
112
134
return Promise . resolve ( paths ) ;
113
135
} ,
114
136
getRefreshPromise ( options ?: GetRefreshEnvironmentsOptions ) : Promise < void > | undefined {
137
+ sendApiTelemetry ( 'getRefreshPromise' ) ;
115
138
return discoveryApi . getRefreshPromise ( options ) ;
116
139
} ,
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
+ } ,
121
156
} ,
122
157
} ;
123
158
return proposed ;
0 commit comments