From f127ea852464cc59c12825d3da3b0277e5811ceb Mon Sep 17 00:00:00 2001 From: Kim-Adeline Miguel Date: Wed, 30 Sep 2020 10:49:08 -0700 Subject: [PATCH 1/3] Move commonRegisterTypes to initializeComponents --- src/client/extensionActivation.ts | 2 -- src/client/extensionInit.ts | 4 ++++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/client/extensionActivation.ts b/src/client/extensionActivation.ts index b2c7704812c5..e0f61ae7bfca 100644 --- a/src/client/extensionActivation.ts +++ b/src/client/extensionActivation.ts @@ -19,7 +19,6 @@ import { traceError } from './common/logger'; import { registerTypes as platformRegisterTypes } from './common/platform/serviceRegistry'; import { IFileSystem } from './common/platform/types'; import { registerTypes as processRegisterTypes } from './common/process/serviceRegistry'; -import { registerTypes as commonRegisterTypes } from './common/serviceRegistry'; import { IConfigurationService, IDisposableRegistry, @@ -102,7 +101,6 @@ async function activateLegacy( serviceManager.addSingletonInstance(IOutputChannel, jupyterOutputChannel, JUPYTER_OUTPUT_CHANNEL); // Core registrations (non-feature specific). - commonRegisterTypes(serviceManager); platformRegisterTypes(serviceManager); processRegisterTypes(serviceManager); diff --git a/src/client/extensionInit.ts b/src/client/extensionInit.ts index 471da8d12af8..5c105904f06a 100644 --- a/src/client/extensionInit.ts +++ b/src/client/extensionInit.ts @@ -8,6 +8,7 @@ import { Container } from 'inversify'; import { Disposable, Memento } from 'vscode'; +import { registerTypes as commonRegisterTypes } from './common/serviceRegistry'; import { GLOBAL_MEMENTO, IDisposableRegistry, IExtensionContext, IMemento, WORKSPACE_MEMENTO } from './common/types'; import { ServiceContainer } from './ioc/container'; import { ServiceManager } from './ioc/serviceManager'; @@ -40,6 +41,9 @@ export function initializeComponents( serviceManager: IServiceManager, serviceContainer: IServiceContainer ) { + // Core registrations (non-feature specific). + commonRegisterTypes(serviceManager); + activatePythonEnvironments(serviceManager, serviceContainer); // We will be pulling code over from activateLegacy(). } From aa97047d2c0fcfc5b18060b9e92e35cb6e783b55 Mon Sep 17 00:00:00 2001 From: Kim-Adeline Miguel Date: Wed, 30 Sep 2020 10:49:41 -0700 Subject: [PATCH 2/3] Instantiate and initialize envsCache --- src/client/pythonEnvironments/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/client/pythonEnvironments/index.ts b/src/client/pythonEnvironments/index.ts index d461d93ebb90..34089990d5fc 100644 --- a/src/client/pythonEnvironments/index.ts +++ b/src/client/pythonEnvironments/index.ts @@ -3,6 +3,7 @@ import * as vscode from 'vscode'; import { IServiceContainer, IServiceManager } from '../ioc/types'; +import { PythonEnvInfoCache } from './base/envsCache'; import { PythonEnvInfo } from './base/info'; import { ILocator, IPythonEnvsIterator, PythonLocatorQuery } from './base/locator'; import { PythonEnvsChangedEvent } from './base/watcher'; @@ -50,11 +51,15 @@ export class PythonEnvironments implements ILocator { export function createAPI(): [PythonEnvironments, () => void] { const [locators, activateLocators] = initLocators(); + // Update this to pass in an actual function that checks for env info completeness. + const envsCache = new PythonEnvInfoCache(() => true); + return [ new PythonEnvironments(locators), () => { activateLocators(); // Any other activation needed for the API will go here later. + envsCache.initialize(); }, ]; } From 7eb426b73ac799d52a922193802393ad47417f72 Mon Sep 17 00:00:00 2001 From: Kim-Adeline Miguel Date: Wed, 30 Sep 2020 14:01:15 -0700 Subject: [PATCH 3/3] Use a separate initializeCommon function --- src/client/extension.ts | 3 ++- src/client/extensionInit.ts | 15 +++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/client/extension.ts b/src/client/extension.ts index 2abbf7d8658e..a7407ac9d241 100644 --- a/src/client/extension.ts +++ b/src/client/extension.ts @@ -36,7 +36,7 @@ import { IAsyncDisposableRegistry, IExtensionContext } from './common/types'; import { createDeferred } from './common/utils/async'; import { Common } from './common/utils/localize'; import { activateComponents } from './extensionActivation'; -import { initializeComponents, initializeGlobals } from './extensionInit'; +import { initializeCommon, initializeComponents, initializeGlobals } from './extensionInit'; import { IServiceContainer } from './ioc/types'; import { sendErrorTelemetry, sendStartupTelemetry } from './startupTelemetry'; @@ -101,6 +101,7 @@ async function activateUnsafe( const [serviceManager, serviceContainer] = initializeGlobals(context); activatedServiceContainer = serviceContainer; + initializeCommon(context, serviceManager, serviceContainer); initializeComponents(context, serviceManager, serviceContainer); const { activationPromise } = await activateComponents(context, serviceManager, serviceContainer); diff --git a/src/client/extensionInit.ts b/src/client/extensionInit.ts index 5c105904f06a..43336cef3229 100644 --- a/src/client/extensionInit.ts +++ b/src/client/extensionInit.ts @@ -36,14 +36,21 @@ export function initializeGlobals(context: IExtensionContext): [IServiceManager, return [serviceManager, serviceContainer]; } -export function initializeComponents( +export function initializeCommon( _context: IExtensionContext, serviceManager: IServiceManager, - serviceContainer: IServiceContainer -) { + _serviceContainer: IServiceContainer +): void { // Core registrations (non-feature specific). commonRegisterTypes(serviceManager); + // We will be pulling other code over from activateLegacy(). +} + +export function initializeComponents( + _context: IExtensionContext, + serviceManager: IServiceManager, + serviceContainer: IServiceContainer +) { activatePythonEnvironments(serviceManager, serviceContainer); - // We will be pulling code over from activateLegacy(). }