From beb9fd90acdc948e9d8bdd8da89a31c79518c8a0 Mon Sep 17 00:00:00 2001 From: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> Date: Mon, 2 Mar 2026 21:29:52 -0800 Subject: [PATCH 1/2] feat: pre-warm environment manager caches during activation and background refresh --- src/extension.ts | 14 +++++++++++++- src/managers/common/nativePythonFinder.ts | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 1cd59fb2..070f2cc0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,7 +10,7 @@ import { window, } from 'vscode'; import { PythonEnvironment, PythonEnvironmentApi, PythonProjectCreator } from './api'; -import { ENVS_EXTENSION_ID } from './common/constants'; +import { ENVS_EXTENSION_ID, SYSTEM_MANAGER_ID, VENV_MANAGER_ID } from './common/constants'; import { ensureCorrectVersion } from './common/extVersion'; import { registerLogger, traceError, traceInfo, traceWarn } from './common/logging'; import { clearPersistentState, setPersistentState } from './common/persistentState'; @@ -547,6 +547,18 @@ export async function activate(context: ExtensionContext): Promise {}), + envManagers + .getEnvironmentManager(VENV_MANAGER_ID) + ?.getEnvironments('all') + .catch(() => {}), + ]); + await applyInitialEnvironmentSelection(envManagers, projectManager, nativeFinder, api); // Register manager-agnostic terminal watcher for package-modifying commands diff --git a/src/managers/common/nativePythonFinder.ts b/src/managers/common/nativePythonFinder.ts index 33f690e7..eefdedea 100644 --- a/src/managers/common/nativePythonFinder.ts +++ b/src/managers/common/nativePythonFinder.ts @@ -238,6 +238,11 @@ class NativePythonFinderImpl implements NativePythonFinder { 1, 'NativeRefresh-task', ); + + // Start discovery immediately so the cache is warm before managers call initialize(). + void this.refresh(false).catch((err) => { + traceWarn('[pet] Background pre-warm refresh failed:', err); + }); } public async resolve(executable: string): Promise { From bb1377c9d300e154b9d0efdc09eedd1a9edaded0 Mon Sep 17 00:00:00 2001 From: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> Date: Mon, 2 Mar 2026 21:39:58 -0800 Subject: [PATCH 2/2] updates --- src/extension.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 070f2cc0..42382c4c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -549,14 +549,16 @@ export async function activate(context: ExtensionContext): Promise {}), - envManagers - .getEnvironmentManager(VENV_MANAGER_ID) - ?.getEnvironments('all') - .catch(() => {}), + ( + envManagers.getEnvironmentManager(SYSTEM_MANAGER_ID)?.getEnvironments('all') ?? Promise.resolve() + ).catch((err) => { + traceWarn('[pre-warm] System manager cache warm-up failed:', err); + }), + (envManagers.getEnvironmentManager(VENV_MANAGER_ID)?.getEnvironments('all') ?? Promise.resolve()).catch( + (err) => { + traceWarn('[pre-warm] Venv manager cache warm-up failed:', err); + }, + ), ]); await applyInitialEnvironmentSelection(envManagers, projectManager, nativeFinder, api);