Skip to content

Commit ae84247

Browse files
authored
Envs cache initialization (#14180)
* Move commonRegisterTypes to initializeComponents * Instantiate and initialize envsCache * Use a separate initializeCommon function
1 parent a83c93d commit ae84247

File tree

4 files changed

+19
-4
lines changed

4 files changed

+19
-4
lines changed

src/client/extension.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { IAsyncDisposableRegistry, IExtensionContext } from './common/types';
3636
import { createDeferred } from './common/utils/async';
3737
import { Common } from './common/utils/localize';
3838
import { activateComponents } from './extensionActivation';
39-
import { initializeComponents, initializeGlobals } from './extensionInit';
39+
import { initializeCommon, initializeComponents, initializeGlobals } from './extensionInit';
4040
import { IServiceContainer } from './ioc/types';
4141
import { sendErrorTelemetry, sendStartupTelemetry } from './startupTelemetry';
4242

@@ -101,6 +101,7 @@ async function activateUnsafe(
101101

102102
const [serviceManager, serviceContainer] = initializeGlobals(context);
103103
activatedServiceContainer = serviceContainer;
104+
initializeCommon(context, serviceManager, serviceContainer);
104105
initializeComponents(context, serviceManager, serviceContainer);
105106
const { activationPromise } = await activateComponents(context, serviceManager, serviceContainer);
106107

src/client/extensionActivation.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { traceError } from './common/logger';
1919
import { registerTypes as platformRegisterTypes } from './common/platform/serviceRegistry';
2020
import { IFileSystem } from './common/platform/types';
2121
import { registerTypes as processRegisterTypes } from './common/process/serviceRegistry';
22-
import { registerTypes as commonRegisterTypes } from './common/serviceRegistry';
2322
import {
2423
IConfigurationService,
2524
IDisposableRegistry,
@@ -102,7 +101,6 @@ async function activateLegacy(
102101
serviceManager.addSingletonInstance<OutputChannel>(IOutputChannel, jupyterOutputChannel, JUPYTER_OUTPUT_CHANNEL);
103102

104103
// Core registrations (non-feature specific).
105-
commonRegisterTypes(serviceManager);
106104
platformRegisterTypes(serviceManager);
107105
processRegisterTypes(serviceManager);
108106

src/client/extensionInit.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import { Container } from 'inversify';
99
import { Disposable, Memento } from 'vscode';
1010

11+
import { registerTypes as commonRegisterTypes } from './common/serviceRegistry';
1112
import { GLOBAL_MEMENTO, IDisposableRegistry, IExtensionContext, IMemento, WORKSPACE_MEMENTO } from './common/types';
1213
import { ServiceContainer } from './ioc/container';
1314
import { ServiceManager } from './ioc/serviceManager';
@@ -35,11 +36,21 @@ export function initializeGlobals(context: IExtensionContext): [IServiceManager,
3536
return [serviceManager, serviceContainer];
3637
}
3738

39+
export function initializeCommon(
40+
_context: IExtensionContext,
41+
serviceManager: IServiceManager,
42+
_serviceContainer: IServiceContainer
43+
): void {
44+
// Core registrations (non-feature specific).
45+
commonRegisterTypes(serviceManager);
46+
47+
// We will be pulling other code over from activateLegacy().
48+
}
49+
3850
export function initializeComponents(
3951
_context: IExtensionContext,
4052
serviceManager: IServiceManager,
4153
serviceContainer: IServiceContainer
4254
) {
4355
activatePythonEnvironments(serviceManager, serviceContainer);
44-
// We will be pulling code over from activateLegacy().
4556
}

src/client/pythonEnvironments/index.ts

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

44
import * as vscode from 'vscode';
55
import { IServiceContainer, IServiceManager } from '../ioc/types';
6+
import { PythonEnvInfoCache } from './base/envsCache';
67
import { PythonEnvInfo } from './base/info';
78
import { ILocator, IPythonEnvsIterator, PythonLocatorQuery } from './base/locator';
89
import { PythonEnvsChangedEvent } from './base/watcher';
@@ -50,11 +51,15 @@ export class PythonEnvironments implements ILocator {
5051
export function createAPI(): [PythonEnvironments, () => void] {
5152
const [locators, activateLocators] = initLocators();
5253

54+
// Update this to pass in an actual function that checks for env info completeness.
55+
const envsCache = new PythonEnvInfoCache(() => true);
56+
5357
return [
5458
new PythonEnvironments(locators),
5559
() => {
5660
activateLocators();
5761
// Any other activation needed for the API will go here later.
62+
envsCache.initialize();
5863
},
5964
];
6065
}

0 commit comments

Comments
 (0)