@@ -9,26 +9,31 @@ import { getRegistryInterpreters } from '../../../common/windowsUtils';
99import { traceError , traceVerbose } from '../../../../logging' ;
1010import { isMicrosoftStoreDir } from '../../../common/environmentManagers/microsoftStoreEnv' ;
1111import { PythonEnvsChangedEvent } from '../../watcher' ;
12+ import { DiscoveryUsingWorkers } from '../../../../common/experiments/groups' ;
13+ import { inExperiment } from '../../../common/externalDependencies' ;
1214
1315export const WINDOWS_REG_PROVIDER_ID = 'windows-registry' ;
1416
1517export class WindowsRegistryLocator extends Locator < BasicEnvInfo > {
1618 public readonly providerId : string = WINDOWS_REG_PROVIDER_ID ;
1719
1820 // eslint-disable-next-line class-methods-use-this
19- public iterEnvs ( query ?: PythonLocatorQuery , useWorkerThreads = false ) : IPythonEnvsIterator < BasicEnvInfo > {
21+ public iterEnvs (
22+ query ?: PythonLocatorQuery ,
23+ useWorkerThreads = inExperiment ( DiscoveryUsingWorkers . experiment ) ,
24+ ) : IPythonEnvsIterator < BasicEnvInfo > {
2025 if ( useWorkerThreads ) {
2126 /**
2227 * Windows registry is slow and often not necessary, so notify completion immediately, but use watcher
2328 * change events to signal for any new envs which are found.
2429 */
2530 if ( query ?. providerId === this . providerId ) {
2631 // Query via change event, so iterate all envs.
27- return iterateEnvs ( true ) ;
32+ return iterateEnvs ( ) ;
2833 }
2934 return iterateEnvsLazily ( this . emitter ) ;
3035 }
31- return iterateEnvs ( false ) ;
36+ return iterateEnvs ( ) ;
3237 }
3338}
3439
@@ -38,13 +43,13 @@ async function* iterateEnvsLazily(changed: IEmitter<PythonEnvsChangedEvent>): IP
3843
3944async function loadAllEnvs ( changed : IEmitter < PythonEnvsChangedEvent > ) {
4045 traceVerbose ( 'Searching for windows registry interpreters' ) ;
41- await getRegistryInterpreters ( true ) ;
46+ await getRegistryInterpreters ( ) ;
4247 changed . fire ( { providerId : WINDOWS_REG_PROVIDER_ID } ) ;
4348 traceVerbose ( 'Finished searching for windows registry interpreters' ) ;
4449}
4550
46- async function * iterateEnvs ( useWorkerThreads : boolean ) : IPythonEnvsIterator < BasicEnvInfo > {
47- const interpreters = await getRegistryInterpreters ( useWorkerThreads ) ;
51+ async function * iterateEnvs ( ) : IPythonEnvsIterator < BasicEnvInfo > {
52+ const interpreters = await getRegistryInterpreters ( ) ; // Value should already be loaded at this point, so this returns immediately.
4853 for ( const interpreter of interpreters ) {
4954 try {
5055 // Filter out Microsoft Store app directories. We have a store app locator that handles this.
0 commit comments