MCPcopy Create free account
hub / github.com/deepnote/vscode-deepnote / sendKernelTelemetry

Function sendKernelTelemetry

src/kernels/types.ts:936–997  ·  view source on GitHub ↗
(kernel: KernelConnectionMetadata)

Source from the content-addressed store, hash-verified

934
935const capturedTelemetry = new Set<string>();
936function sendKernelTelemetry(kernel: KernelConnectionMetadata) {
937 if (capturedTelemetry.has(kernel.id)) {
938 return;
939 }
940 capturedTelemetry.add(kernel.id);
941 const kernelSpec = 'kernelSpec' in kernel ? kernel.kernelSpec : undefined;
942 const language =
943 kernelSpec?.language || (kernel.kind === 'startUsingPythonInterpreter' ? PYTHON_LANGUAGE : undefined);
944 let argv0 = '';
945 let argv = '';
946 const interpreter = 'interpreter' in kernel ? kernel.interpreter : undefined;
947 const separator = `<#>`;
948 let isArgv0SameAsInterpreter: undefined | boolean = undefined;
949 if (kernelSpec && Array.isArray(kernelSpec.argv) && kernelSpec.argv.length > 0) {
950 argv0 = kernelSpec.argv[0];
951 // eslint-disable-next-line local-rules/dont-use-fspath
952 isArgv0SameAsInterpreter = argv0.toLowerCase() === interpreter?.uri?.fsPath?.toLowerCase();
953 if (path.basename(argv0) !== argv0) {
954 argv0 = `<P>${path.basename(argv0)}`;
955 }
956 argv = kernelSpec.argv
957 .map((arg) => {
958 if (arg.includes('/') || arg.includes('\\')) {
959 return `<P>${path.basename(arg)}`;
960 }
961 return arg;
962 })
963 .join(separator);
964 }
965
966 const kernelSpecHashPromise =
967 'kernelSpec' in kernel && kernel.kernelSpec.specFile
968 ? getTelemetrySafeHashedString(kernel.kernelSpec.specFile)
969 : Promise.resolve('');
970 const kernelIdHash = getTelemetrySafeHashedString(kernel.id);
971 const serverIdHashPromise = isRemoteConnection(kernel)
972 ? getTelemetrySafeHashedString(generateIdFromRemoteProvider(kernel.serverProviderHandle))
973 : Promise.resolve('');
974 const providerExtensionId = isRemoteConnection(kernel)
975 ? kernel.serverProviderHandle.extensionId
976 : JVSC_EXTENSION_ID;
977 const baseUrlHashPromise = isRemoteConnection(kernel)
978 ? getTelemetrySafeHashedString(kernel.baseUrl.toLowerCase())
979 : Promise.resolve('');
980 Promise.all([kernelSpecHashPromise, kernelIdHash, serverIdHashPromise, baseUrlHashPromise])
981 .then(([kernelSpecHash, kernelId, serverIdHash, baseUrlHash]) =>
982 sendTelemetryEvent(Telemetry.KernelSpec, undefined, {
983 kernelId,
984 serverIdHash,
985 kernelSpecHash,
986 baseUrlHash,
987 providerExtensionId,
988 kernelConnectionType: kernel.kind,
989 kernelLanguage: language,
990 envType: interpreter && getEnvironmentType(interpreter),
991 isArgv0SameAsInterpreter,
992 argv0,
993 argv

Callers 4

constructorMethod · 0.70
constructorMethod · 0.70
constructorMethod · 0.70
constructorMethod · 0.70

Calls 12

sendTelemetryEventFunction · 0.90
getEnvironmentTypeFunction · 0.90
isRemoteConnectionFunction · 0.85
joinMethod · 0.80
mapMethod · 0.80
hasMethod · 0.65
addMethod · 0.65
basenameMethod · 0.65
resolveMethod · 0.65
allMethod · 0.45

Tested by

no test coverage detected