Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions news/3 Code Health/8280.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove code used to track perf of creation classes.
99 changes: 39 additions & 60 deletions src/client/datascience/serviceRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,8 @@
// Licensed under the MIT License.
'use strict';
import { IExtensionSingleActivationService } from '../activation/types';
import { noop } from '../common/utils/misc';
import { StopWatch } from '../common/utils/stopWatch';
import { ClassType, IServiceManager } from '../ioc/types';
import { sendTelemetryEvent } from '../telemetry';
import { IServiceManager } from '../ioc/types';
import { CodeCssGenerator } from './codeCssGenerator';
import { Telemetry } from './constants';
import { DataViewer } from './data-viewing/dataViewer';
import { DataViewerProvider } from './data-viewing/dataViewerProvider';
import { DataScience } from './datascience';
Expand Down Expand Up @@ -80,65 +76,48 @@ import {
IThemeFinder
} from './types';

// tslint:disable:no-any
function wrapType(ctor: ClassType<any>): ClassType<any> {
return class extends ctor {
constructor(...args: any[]) {
const stopWatch = new StopWatch();
super(...args);
try {
// ctor name is minified. compute from the class definition
const className = ctor.toString().match(/\w+/g)![1];
sendTelemetryEvent(Telemetry.ClassConstructionTime, stopWatch.elapsedTime, { class: className });
} catch {
noop();
}
}
};
}

export function registerTypes(serviceManager: IServiceManager) {
serviceManager.addSingleton<IDataScienceCodeLensProvider>(IDataScienceCodeLensProvider, wrapType(DataScienceCodeLensProvider));
serviceManager.addSingleton<IDataScience>(IDataScience, wrapType(DataScience));
serviceManager.addSingleton<IJupyterExecution>(IJupyterExecution, wrapType(JupyterExecutionFactory));
serviceManager.addSingleton<IDataScienceCommandListener>(IDataScienceCommandListener, wrapType(InteractiveWindowCommandListener));
serviceManager.addSingleton<IInteractiveWindowProvider>(IInteractiveWindowProvider, wrapType(InteractiveWindowProvider));
serviceManager.add<IInteractiveWindow>(IInteractiveWindow, wrapType(InteractiveWindow));
serviceManager.add<INotebookExporter>(INotebookExporter, wrapType(JupyterExporter));
serviceManager.add<INotebookImporter>(INotebookImporter, wrapType(JupyterImporter));
serviceManager.add<INotebookServer>(INotebookServer, wrapType(JupyterServerFactory));
serviceManager.addSingleton<ICodeCssGenerator>(ICodeCssGenerator, wrapType(CodeCssGenerator));
serviceManager.addSingleton<IJupyterPasswordConnect>(IJupyterPasswordConnect, wrapType(JupyterPasswordConnect));
serviceManager.addSingleton<IStatusProvider>(IStatusProvider, wrapType(StatusProvider));
serviceManager.addSingleton<IJupyterSessionManagerFactory>(IJupyterSessionManagerFactory, wrapType(JupyterSessionManagerFactory));
serviceManager.addSingleton<IJupyterVariables>(IJupyterVariables, wrapType(JupyterVariables));
serviceManager.add<ICodeWatcher>(ICodeWatcher, wrapType(CodeWatcher));
serviceManager.add<IJupyterCommandFactory>(IJupyterCommandFactory, wrapType(JupyterCommandFactory));
serviceManager.addSingleton<IThemeFinder>(IThemeFinder, wrapType(ThemeFinder));
serviceManager.addSingleton<IDataViewerProvider>(IDataViewerProvider, wrapType(DataViewerProvider));
serviceManager.add<IDataViewer>(IDataViewer, wrapType(DataViewer));
serviceManager.addSingleton<IExtensionSingleActivationService>(IExtensionSingleActivationService, wrapType(Decorator));
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, wrapType(DotNetIntellisenseProvider));
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, wrapType(JediIntellisenseProvider));
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, wrapType(LinkProvider));
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, wrapType(ShowPlotListener));
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, wrapType(DebugListener));
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, wrapType(GatherListener));
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, wrapType(AutoSaveService));
serviceManager.addSingleton<IPlotViewerProvider>(IPlotViewerProvider, wrapType(PlotViewerProvider));
serviceManager.add<IPlotViewer>(IPlotViewer, wrapType(PlotViewer));
serviceManager.addSingleton<IJupyterDebugger>(IJupyterDebugger, wrapType(JupyterDebugger));
serviceManager.add<IDataScienceErrorHandler>(IDataScienceErrorHandler, wrapType(DataScienceErrorHandler));
serviceManager.addSingleton<ICodeLensFactory>(ICodeLensFactory, wrapType(CodeLensFactory));
serviceManager.addSingleton<ICellHashProvider>(ICellHashProvider, wrapType(CellHashProvider));
serviceManager.addSingleton<IGatherExecution>(IGatherExecution, wrapType(GatherExecution));
serviceManager.addSingleton<IDataScienceCodeLensProvider>(IDataScienceCodeLensProvider, DataScienceCodeLensProvider);
serviceManager.addSingleton<IDataScience>(IDataScience, DataScience);
serviceManager.addSingleton<IJupyterExecution>(IJupyterExecution, JupyterExecutionFactory);
serviceManager.addSingleton<IDataScienceCommandListener>(IDataScienceCommandListener, InteractiveWindowCommandListener);
serviceManager.addSingleton<IInteractiveWindowProvider>(IInteractiveWindowProvider, InteractiveWindowProvider);
serviceManager.add<IInteractiveWindow>(IInteractiveWindow, InteractiveWindow);
serviceManager.add<INotebookExporter>(INotebookExporter, JupyterExporter);
serviceManager.add<INotebookImporter>(INotebookImporter, JupyterImporter);
serviceManager.add<INotebookServer>(INotebookServer, JupyterServerFactory);
serviceManager.addSingleton<ICodeCssGenerator>(ICodeCssGenerator, CodeCssGenerator);
serviceManager.addSingleton<IJupyterPasswordConnect>(IJupyterPasswordConnect, JupyterPasswordConnect);
serviceManager.addSingleton<IStatusProvider>(IStatusProvider, StatusProvider);
serviceManager.addSingleton<IJupyterSessionManagerFactory>(IJupyterSessionManagerFactory, JupyterSessionManagerFactory);
serviceManager.addSingleton<IJupyterVariables>(IJupyterVariables, JupyterVariables);
serviceManager.add<ICodeWatcher>(ICodeWatcher, CodeWatcher);
serviceManager.add<IJupyterCommandFactory>(IJupyterCommandFactory, JupyterCommandFactory);
serviceManager.addSingleton<IThemeFinder>(IThemeFinder, ThemeFinder);
serviceManager.addSingleton<IDataViewerProvider>(IDataViewerProvider, DataViewerProvider);
serviceManager.add<IDataViewer>(IDataViewer, DataViewer);
serviceManager.addSingleton<IExtensionSingleActivationService>(IExtensionSingleActivationService, Decorator);
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, DotNetIntellisenseProvider);
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, JediIntellisenseProvider);
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, LinkProvider);
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, ShowPlotListener);
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, DebugListener);
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, GatherListener);
serviceManager.add<IInteractiveWindowListener>(IInteractiveWindowListener, AutoSaveService);
serviceManager.addSingleton<IPlotViewerProvider>(IPlotViewerProvider, PlotViewerProvider);
serviceManager.add<IPlotViewer>(IPlotViewer, PlotViewer);
serviceManager.addSingleton<IJupyterDebugger>(IJupyterDebugger, JupyterDebugger);
serviceManager.add<IDataScienceErrorHandler>(IDataScienceErrorHandler, DataScienceErrorHandler);
serviceManager.addSingleton<ICodeLensFactory>(ICodeLensFactory, CodeLensFactory);
serviceManager.addSingleton<ICellHashProvider>(ICellHashProvider, CellHashProvider);
serviceManager.addSingleton<IGatherExecution>(IGatherExecution, GatherExecution);
serviceManager.addBinding(ICellHashProvider, IInteractiveWindowListener);
serviceManager.addBinding(ICellHashProvider, INotebookExecutionLogger);
serviceManager.addBinding(IJupyterDebugger, ICellHashListener);
serviceManager.addSingleton<INotebookEditorProvider>(INotebookEditorProvider, wrapType(NativeEditorProvider));
serviceManager.add<INotebookEditor>(INotebookEditor, wrapType(NativeEditor));
serviceManager.addSingleton<IDataScienceCommandListener>(IDataScienceCommandListener, wrapType(NativeEditorCommandListener));
serviceManager.addSingleton<INotebookEditorProvider>(INotebookEditorProvider, NativeEditorProvider);
serviceManager.add<INotebookEditor>(INotebookEditor, NativeEditor);
serviceManager.addSingleton<IDataScienceCommandListener>(IDataScienceCommandListener, NativeEditorCommandListener);
serviceManager.addBinding(IGatherExecution, INotebookExecutionLogger);
serviceManager.addBinding(ICodeLensFactory, IInteractiveWindowListener);
serviceManager.addSingleton<IDebugLocationTracker>(IDebugLocationTracker, wrapType(DebugLocationTrackerFactory));
serviceManager.addSingleton<IDebugLocationTracker>(IDebugLocationTracker, DebugLocationTrackerFactory);
}