Skip to content

Commit 7d469e3

Browse files
author
Kartik Raj
committed
Allow low level custom locators to contain a single source
1 parent 78e0936 commit 7d469e3

File tree

4 files changed

+14
-10
lines changed

4 files changed

+14
-10
lines changed

src/client/pythonEnvironments/base/locator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export interface ILocatorAPI {
9999
}
100100

101101
export type EnvInfo = BaseEnvInfo & {
102-
envSources: EnvSource[];
102+
envSource: EnvSource[] | EnvSource;
103103
};
104104

105105
export type BaseEnvInfo = {

src/client/pythonEnvironments/base/locatorUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export function getQueryFilter(query: PythonLocatorQuery): (env: PythonEnvInfo)
2626
if (kinds === undefined) {
2727
return true;
2828
}
29-
return kinds.includes(env.kind);
29+
return kinds.includes(env.kind[0]);
3030
}
3131
function checkSearchLocation(env: PythonEnvInfo): boolean {
3232
if (env.searchLocation === undefined) {

src/client/pythonEnvironments/base/locators/wrappers.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
IWorkspaceLocatorFactory,
1919
ILocatorRegister,
2020
ILocatorFactory,
21+
InternalEnvironmentProviderMetadata,
2122
} from '../locator';
2223
import { combineIterators, Locators } from '../locators';
2324
import { LazyResourceBasedLocator } from './common/resourceBasedLocator';
@@ -51,11 +52,11 @@ export class ExtensionLocators extends Locators<BasicEnvInfo> implements ILocato
5152
return combineIterators(iterators);
5253
}
5354

54-
public addNewLocator(locatorFactory: ILocatorFactory): void {
55+
public addNewLocator(locatorFactory: ILocatorFactory, metadata: InternalEnvironmentProviderMetadata): void {
5556
if (IsNonWorkspaceLocatorFactory(locatorFactory)) {
56-
this.nonWorkspace = [...this.nonWorkspace, new ConvertLocator(locatorFactory())];
57+
this.nonWorkspace = [...this.nonWorkspace, new ConvertLocator(locatorFactory(), metadata)];
5758
} else {
58-
this.workspace.addNewLocator(locatorFactory);
59+
this.workspace.addNewLocator(locatorFactory, metadata);
5960
}
6061
}
6162
}
@@ -158,11 +159,14 @@ export class WorkspaceLocators extends LazyResourceBasedLocator<BasicEnvInfo> {
158159
);
159160
}
160161

161-
public addNewLocator(locatorFactory: IWorkspaceLocatorFactory): void {
162+
public addNewLocator(
163+
locatorFactory: IWorkspaceLocatorFactory,
164+
metadata: InternalEnvironmentProviderMetadata,
165+
): void {
162166
Object.keys(this.roots).forEach((key) => {
163167
const root = this.roots[key];
164168
const newLocator = locatorFactory(root.fsPath);
165-
const convertedLocator: ILocator<BasicEnvInfo> = new ConvertLocator(newLocator);
169+
const convertedLocator: ILocator<BasicEnvInfo> = new ConvertLocator(newLocator, metadata);
166170
const [locators] = this.locators[key];
167171
locators.addLocator(convertedLocator);
168172
});

src/client/pythonEnvironments/converter.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ function convertDetailsAPI(proposed: ProposedDetailsAPI): InternalDetailsAPI {
6060
return undefined;
6161
}
6262
const envInfo = buildEnvInfo({
63-
kind: convertKind(details.environment?.source[0] ?? PythonEnvKind.Unknown),
63+
kind: details.environment?.source.map((k) => convertKind(k)),
6464
version: details.version,
6565
executable: details.executable.path,
6666
arch: details.executable.bitness,
@@ -165,11 +165,11 @@ export class ConvertLocator implements ILocator<BasicEnvInfo> {
165165
}
166166

167167
private convertToBasicEnv(env: EnvInfo): BasicEnvInfo {
168-
// TODO: Support multiple kinds
168+
const sources = Array.isArray(env.envSource) ? env.envSource : [env.envSource];
169169
return {
170170
executablePath: env.executablePath,
171171
envPath: env.envPath,
172-
kind: convertKind(env.envSources[0]),
172+
kind: sources.map((s) => convertKind(s)),
173173
extensionId: this.metadata.extensionId,
174174
};
175175
}

0 commit comments

Comments
 (0)