Skip to content

Commit 69f688a

Browse files
Copilotkarthiknadig
andcommitted
Remove unused PackageRootTreeItem and ProjectPackageRootTreeItem classes
Co-authored-by: karthiknadig <3840081+karthiknadig@users.noreply.github.com>
1 parent 6e8cc2c commit 69f688a

4 files changed

Lines changed: 34 additions & 87 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@
361361
{
362362
"command": "python-envs.refreshPackages",
363363
"group": "inline",
364-
"when": "view == env-managers && viewItem == python-package-root"
364+
"when": "view == env-managers && viewItem =~ /.*pythonEnvironment.*/"
365365
},
366366
{
367367
"command": "python-envs.packages",

src/features/envCommands.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import {
3030
EnvManagerTreeItem,
3131
EnvTreeItemKind,
3232
GlobalProjectItem,
33-
PackageRootTreeItem,
3433
PackageTreeItem,
3534
ProjectEnvironment,
3635
ProjectItem,
@@ -47,7 +46,7 @@ export async function refreshManagerCommand(context: unknown): Promise<void> {
4746
}
4847
}
4948

50-
export async function refreshPackagesCommand(context: unknown, managers?: EnvironmentManagers) {
49+
export async function refreshPackagesCommand(context: unknown, managers?: EnvironmentManagers): Promise<void> {
5150
if (context instanceof ProjectEnvironment) {
5251
const view = context as ProjectEnvironment;
5352
if (managers) {
@@ -56,10 +55,16 @@ export async function refreshPackagesCommand(context: unknown, managers?: Enviro
5655
await pkgManager.refresh(view.environment);
5756
}
5857
}
59-
} else if (context instanceof PackageRootTreeItem) {
60-
const view = context as PackageRootTreeItem;
61-
const manager = view.manager;
62-
await manager.refresh(view.environment);
58+
} else if (context instanceof PythonEnvTreeItem) {
59+
const view = context as PythonEnvTreeItem;
60+
const envManager =
61+
view.parent.kind === EnvTreeItemKind.environmentGroup
62+
? view.parent.parent.manager
63+
: view.parent.manager;
64+
const pkgManager = managers?.getPackageManager(envManager.preferredPackageManagerId);
65+
if (pkgManager) {
66+
await pkgManager.refresh(view.environment);
67+
}
6368
} else {
6469
traceVerbose(`Invalid context for refresh command: ${context}`);
6570
}

src/features/views/envManagersView.ts

Lines changed: 17 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,10 @@ import {
1313
EnvTreeItem,
1414
EnvManagerTreeItem,
1515
PythonEnvTreeItem,
16-
PackageRootTreeItem,
1716
PackageTreeItem,
1817
EnvTreeItemKind,
1918
NoPythonEnvTreeItem,
2019
EnvInfoTreeItem,
21-
PackageRootInfoTreeItem,
2220
PythonGroupEnvTreeItem,
2321
} from './treeViewItems';
2422
import { createSimpleDebounce } from '../../common/utils/debounce';
@@ -31,7 +29,6 @@ export class EnvManagerView implements TreeDataProvider<EnvTreeItem>, Disposable
3129
>();
3230
private revealMap = new Map<string, PythonEnvTreeItem>();
3331
private managerViews = new Map<string, EnvManagerTreeItem>();
34-
private packageRoots = new Map<string, PackageRootTreeItem>();
3532
private selected: Map<string, string> = new Map();
3633
private disposables: Disposable[] = [];
3734

@@ -42,7 +39,6 @@ export class EnvManagerView implements TreeDataProvider<EnvTreeItem>, Disposable
4239

4340
this.disposables.push(
4441
new Disposable(() => {
45-
this.packageRoots.clear();
4642
this.revealMap.clear();
4743
this.managerViews.clear();
4844
this.selected.clear();
@@ -165,32 +161,18 @@ export class EnvManagerView implements TreeDataProvider<EnvTreeItem>, Disposable
165161
const views: EnvTreeItem[] = [];
166162

167163
if (pkgManager) {
168-
const item = new PackageRootTreeItem(parent, pkgManager, environment);
169-
this.packageRoots.set(environment.envId.id, item);
170-
views.push(item);
164+
const packages = await pkgManager.getPackages(environment);
165+
if (packages && packages.length > 0) {
166+
views.push(...packages.map((p) => new PackageTreeItem(p, parent, pkgManager)));
167+
} else {
168+
views.push(new EnvInfoTreeItem(parent, ProjectViews.noPackages));
169+
}
171170
} else {
172171
views.push(new EnvInfoTreeItem(parent, ProjectViews.noPackageManager));
173172
}
174173

175174
return views;
176175
}
177-
178-
if (element.kind === EnvTreeItemKind.packageRoot) {
179-
const root = element as PackageRootTreeItem;
180-
const manager = root.manager;
181-
const environment = root.environment;
182-
183-
let packages = await manager.getPackages(environment);
184-
const views: EnvTreeItem[] = [];
185-
186-
if (packages) {
187-
views.push(...packages.map((p) => new PackageTreeItem(p, root, manager)));
188-
} else {
189-
views.push(new PackageRootInfoTreeItem(root, ProjectViews.noPackages));
190-
}
191-
192-
return views;
193-
}
194176
}
195177

196178
getParent(element: EnvTreeItem): ProviderResult<EnvTreeItem> {
@@ -219,35 +201,32 @@ export class EnvManagerView implements TreeDataProvider<EnvTreeItem>, Disposable
219201
}
220202

221203
private onDidChangePackages(args: InternalDidChangePackagesEventArgs) {
222-
const pkgRoot = this.packageRoots.get(args.environment.envId.id);
223-
if (pkgRoot) {
224-
this.fireDataChanged(pkgRoot);
204+
const view = Array.from(this.revealMap.values()).find(
205+
(v) => v.environment.envId.id === args.environment.envId.id
206+
);
207+
if (view) {
208+
this.fireDataChanged(view);
225209
}
226210
}
227211

228-
private onDidChangePackageManager(args: DidChangePackageManagerEventArgs) {
229-
const roots = Array.from(this.packageRoots.values()).filter((r) => r.manager.id === args.manager.id);
230-
this.fireDataChanged(roots);
212+
private onDidChangePackageManager(_args: DidChangePackageManagerEventArgs) {
213+
// Since we removed the packageRoots level, just refresh all environments
214+
// This is a simplified approach that isn't as targeted but ensures packages get refreshed
215+
this.fireDataChanged(undefined);
231216
}
232217

233218
public environmentChanged(e: DidChangeEnvironmentEventArgs) {
234219
const views = [];
235220
if (e.old) {
236221
this.selected.delete(e.old.envId.id);
237-
let view: EnvTreeItem | undefined = this.packageRoots.get(e.old.envId.id);
238-
if (!view) {
239-
view = this.managerViews.get(e.old.envId.managerId);
240-
}
222+
const view: EnvTreeItem | undefined = this.revealMap.get(e.old.envId.id);
241223
if (view) {
242224
views.push(view);
243225
}
244226
}
245227
if (e.new) {
246228
this.selected.set(e.new.envId.id, e.uri === undefined ? 'global' : e.uri.fsPath);
247-
let view: EnvTreeItem | undefined = this.packageRoots.get(e.new.envId.id);
248-
if (!view) {
249-
view = this.managerViews.get(e.new.envId.managerId);
250-
}
229+
const view: EnvTreeItem | undefined = this.revealMap.get(e.new.envId.id);
251230
if (view && !views.includes(view)) {
252231
views.push(view);
253232
}

src/features/views/treeViewItems.ts

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ export enum EnvTreeItemKind {
1111
environmentGroup = 'python-env-group',
1212
noEnvironment = 'python-no-env',
1313
package = 'python-package',
14-
packageRoot = 'python-package-root',
15-
packageRootInfo = 'python-package-root-info',
1614
managerInfo = 'python-env-manager-info',
1715
environmentInfo = 'python-env-info',
1816
packageInfo = 'python-package-info',
@@ -128,28 +126,12 @@ export class NoPythonEnvTreeItem implements EnvTreeItem {
128126
}
129127
}
130128

131-
export class PackageRootTreeItem implements EnvTreeItem {
132-
public readonly kind = EnvTreeItemKind.packageRoot;
133-
public readonly treeItem: TreeItem;
134-
constructor(
135-
public readonly parent: PythonEnvTreeItem,
136-
public readonly manager: InternalPackageManager,
137-
public readonly environment: PythonEnvironment,
138-
) {
139-
const item = new TreeItem('Packages', TreeItemCollapsibleState.Collapsed);
140-
item.contextValue = 'python-package-root';
141-
item.description = manager.displayName;
142-
item.tooltip = 'Packages installed in this environment';
143-
this.treeItem = item;
144-
}
145-
}
146-
147129
export class PackageTreeItem implements EnvTreeItem {
148130
public readonly kind = EnvTreeItemKind.package;
149131
public readonly treeItem: TreeItem;
150132
constructor(
151133
public readonly pkg: Package,
152-
public readonly parent: PackageRootTreeItem,
134+
public readonly parent: PythonEnvTreeItem,
153135
public readonly manager: InternalPackageManager,
154136
) {
155137
const item = new TreeItem(pkg.displayName);
@@ -183,10 +165,10 @@ export class EnvInfoTreeItem implements EnvTreeItem {
183165
}
184166

185167
export class PackageRootInfoTreeItem implements EnvTreeItem {
186-
public readonly kind = EnvTreeItemKind.packageRootInfo;
168+
public readonly kind = EnvTreeItemKind.packageInfo;
187169
public readonly treeItem: TreeItem;
188170
constructor(
189-
public readonly parent: PackageRootTreeItem,
171+
public readonly parent: PythonEnvTreeItem,
190172
name: string,
191173
description?: string,
192174
tooltip?: string | MarkdownString,
@@ -209,7 +191,6 @@ export enum ProjectTreeItemKind {
209191
none = 'project-no-environment',
210192
environmentInfo = 'environment-info',
211193
package = 'project-package',
212-
packageRoot = 'project-package-root',
213194
packageRootInfo = 'project-package-root-info',
214195
}
215196

@@ -307,24 +288,6 @@ export class NoProjectEnvironment implements ProjectTreeItem {
307288
}
308289
}
309290

310-
export class ProjectPackageRootTreeItem implements ProjectTreeItem {
311-
public readonly kind = ProjectTreeItemKind.packageRoot;
312-
public readonly id: string;
313-
public readonly treeItem: TreeItem;
314-
constructor(
315-
public readonly parent: ProjectEnvironment,
316-
public readonly manager: InternalPackageManager,
317-
public readonly environment: PythonEnvironment,
318-
) {
319-
const item = new TreeItem('Packages', TreeItemCollapsibleState.Collapsed);
320-
this.id = `${this.parent.id}>>>packages`;
321-
item.contextValue = 'python-package-root';
322-
item.description = manager.displayName;
323-
item.tooltip = 'Packages installed in this environment';
324-
this.treeItem = item;
325-
}
326-
}
327-
328291
export class NoPackagesEnvironment implements ProjectTreeItem {
329292
public readonly kind = ProjectTreeItemKind.none;
330293
public readonly id: string;
@@ -405,7 +368,7 @@ export class ProjectPackageRootInfoTreeItem implements ProjectTreeItem {
405368
public readonly id: string;
406369
public readonly treeItem: TreeItem;
407370
constructor(
408-
public readonly parent: ProjectPackageRootTreeItem,
371+
public readonly parent: ProjectEnvironment,
409372
name: string,
410373
description?: string,
411374
tooltip?: string | MarkdownString,
@@ -421,7 +384,7 @@ export class ProjectPackageRootInfoTreeItem implements ProjectTreeItem {
421384
this.treeItem.iconPath = iconPath;
422385
this.treeItem.command = command;
423386
}
424-
static getId(projectEnv: ProjectPackageRootTreeItem, name: string): string {
387+
static getId(projectEnv: ProjectEnvironment, name: string): string {
425388
return `${projectEnv.id}>>>${name}`;
426389
}
427390
}

0 commit comments

Comments
 (0)