Skip to content

Commit 452ec5f

Browse files
author
Kartik Raj
committed
Register properly
1 parent e7a11ba commit 452ec5f

File tree

3 files changed

+23
-38
lines changed

3 files changed

+23
-38
lines changed

src/client/pythonEnvironments/base/locator.ts

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ type EnvironmentDetailsByProvider = Partial<EnvironmentDetails> &
5757
Pick<EnvironmentDetails, 'executable'> &
5858
Pick<EnvironmentDetails, 'environment'>;
5959

60-
export type IInternalEnvironmentProvider =
61-
| (ILocatorFactoryAPI & IInternalResolverAPI & IInternalIdentifierAPI)
62-
| (ILocatorFactoryAPI & IInternalResolverAPI);
60+
export type IInternalEnvironmentProvider = ILocatorFactoryAPI & IInternalResolverAPI;
6361

6462
interface ILocatorFactoryAPI {
6563
/**
@@ -72,11 +70,13 @@ export type ProposedDetailsAPI = (env: BaseEnvInfo) => Promise<EnvironmentDetail
7270
export type InternalDetailsAPI = (env: BasicEnvInfo) => Promise<PythonEnvInfo | undefined>;
7371
export interface IResolverAPI {
7472
/**
75-
* Carries API to check if an environment can be recognized by the provider. Providers
76-
* which returns details about an {@link EnvSource} are expected to
77-
* provide this.
73+
* Environment source the provider identifies/resolves.
7874
*/
79-
readonly sourceIdentifier: IIdentifierAPI | undefined;
75+
readonly envSource: EnvSource | undefined;
76+
/**
77+
* Returns true if provided environment is recognized by the provider.
78+
*/
79+
canIdentifyEnvironment: (path: UniquePathType) => Promise<boolean>;
8080
/**
8181
* Returns details or `undefined` if it was found if env is invalid.
8282
* This is only called if:
@@ -86,28 +86,10 @@ export interface IResolverAPI {
8686
getEnvironmentDetails: ProposedDetailsAPI;
8787
}
8888

89-
interface IIdentifierAPI {
90-
/**
91-
* Environment source the provider identifies.
92-
*/
93-
readonly envSource: EnvSource;
94-
/**
95-
* Returns true if provided environment is recognized by the provider.
96-
*/
97-
canIdentifyEnvironment: (path: UniquePathType) => Promise<boolean>;
98-
}
99-
10089
export interface IInternalResolverAPI {
101-
readonly kindIdentifier: IInternalIdentifierAPI | undefined;
102-
getEnvironmentDetails: InternalDetailsAPI;
103-
}
104-
105-
interface IInternalIdentifierAPI {
106-
readonly envKind: PythonEnvKind;
107-
/**
108-
* Returns true if provided environment is recognized by the provider.
109-
*/
90+
readonly envKind: PythonEnvKind | undefined;
11091
canIdentifyEnvironment: (path: UniquePathType) => Promise<boolean>;
92+
getEnvironmentDetails: InternalDetailsAPI;
11193
}
11294

11395
export type ILocatorFactory = IWorkspaceLocatorFactory | INonWorkspaceLocatorFactory;

src/client/pythonEnvironments/base/locators/composite/envsResolver.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { cloneDeep } from 'lodash';
55
import { Event, EventEmitter } from 'vscode';
66
import { identifyEnvironment, registerIdentifier } from '../../../common/environmentIdentifier';
77
import { IEnvironmentInfoService } from '../../info/environmentInfoService';
8-
import { PythonEnvInfo } from '../../info';
8+
import { PythonEnvInfo, PythonEnvKind } from '../../info';
99
import { getEnvPath, setEnvDisplayString } from '../../info/env';
1010
import { InterpreterInformation } from '../../info/interpreter';
1111
import {
@@ -40,14 +40,21 @@ export class PythonEnvsResolver implements IResolvingLocator {
4040
if (this.parentLocator.addNewLocator) {
4141
this.parentLocator.addNewLocator(provider.createLocator, metadata);
4242
}
43-
if (provider.kindIdentifier) {
43+
if (provider.envKind) {
44+
registerIdentifier(provider.envKind, provider.canIdentifyEnvironment, metadata.extensionId);
45+
registerResolver(provider.envKind, provider.getEnvironmentDetails, metadata.extensionId);
46+
} else {
4447
registerIdentifier(
45-
provider.kindIdentifier.envKind,
46-
provider.kindIdentifier.canIdentifyEnvironment,
48+
metadata.extensionId as PythonEnvKind,
49+
provider.canIdentifyEnvironment,
50+
metadata.extensionId,
51+
);
52+
registerResolver(
53+
metadata.extensionId as PythonEnvKind,
54+
provider.getEnvironmentDetails,
4755
metadata.extensionId,
4856
);
4957
}
50-
registerResolver(metadata.environments.envKinds[0], provider.getEnvironmentDetails);
5158
}
5259

5360
constructor(

src/client/pythonEnvironments/converter.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,8 @@ export function convertProviderMetaData(proposed: EnvironmentProviderMetadata):
4747

4848
function convertResolverAPI(proposed: IResolverAPI): IInternalResolverAPI {
4949
return {
50-
kindIdentifier: proposed.sourceIdentifier
51-
? {
52-
envKind: convertKind(proposed.sourceIdentifier.envSource),
53-
canIdentifyEnvironment: proposed.sourceIdentifier.canIdentifyEnvironment,
54-
}
55-
: undefined,
50+
envKind: proposed.envSource ? convertKind(proposed.envSource) : undefined,
51+
canIdentifyEnvironment: proposed.canIdentifyEnvironment,
5652
getEnvironmentDetails: convertDetailsAPI(proposed.getEnvironmentDetails),
5753
};
5854
}

0 commit comments

Comments
 (0)