@@ -23,21 +23,13 @@ import {
2323} from '../../api' ;
2424import { CommandConstructorOptions } from '../base/commands/index' ;
2525import { updatePackagesAndNotify } from '../common/packageChanges' ;
26- import {
27- PipAvailableVersionsCommand ,
28- PipInstallCommand ,
29- PipListCommand ,
30- PipListDirectNamesCommand ,
31- PipUninstallCommand ,
32- PipVersionCommand ,
33- UvAvailableVersionsCommand ,
34- UvInstallCommand ,
35- UvListCommand ,
36- UvListDirectNamesCommand ,
37- UvUninstallCommand ,
38- UvVersionCommand ,
39- } from './commands/index' ;
40- import { shouldUseUv } from './helpers' ;
26+ import { BuiltinAvailableVersionsCommandFactory } from './commands/availableVersions' ;
27+ import { PipAvailableVersionsCommand } from './commands/index' ;
28+ import { BuiltinInstallCommandFactory } from './commands/install' ;
29+ import { BuiltinListCommandFactory } from './commands/list' ;
30+ import { BuiltinListDirectNamesCommandFactory } from './commands/listDirectNames' ;
31+ import { BuiltinUninstallCommandFactory } from './commands/uninstall' ;
32+ import { BuiltinVersionCommandFactory } from './commands/version' ;
4133import { getWorkspacePackagesToInstall } from './pipUtils' ;
4234import { normalizePackageName , parsePackageSpecs } from './utils' ;
4335import { VenvManager } from './venvManager' ;
@@ -86,9 +78,6 @@ export class PipPackageManager implements PackageManager, Disposable {
8678 throw new Error ( 'Unable to determine Python executable path' ) ;
8779 }
8880
89- // Detect whether to use UV
90- const useUv = await shouldUseUv ( this . log , environment . environmentPath . fsPath ) ;
91-
9281 // Centralize command options for install/uninstall operations
9382 const manageCommandOptions : CommandConstructorOptions = {
9483 pythonExecutable,
@@ -97,16 +86,14 @@ export class PipPackageManager implements PackageManager, Disposable {
9786
9887 // Execute uninstall if needed
9988 if ( toUninstall . length > 0 ) {
100- const UninstallCommand = useUv ? UvUninstallCommand : PipUninstallCommand ;
101- const uninstallCmd = new UninstallCommand ( manageCommandOptions ) ;
89+ const uninstallCmd = await BuiltinUninstallCommandFactory ( manageCommandOptions ) ;
10290 const packages = parsePackageSpecs ( toUninstall ) ;
10391 await uninstallCmd . executeWithProgress ( { packages, showProgress : true } , 'Installing packages' ) ;
10492 }
10593
10694 // Execute install if needed
10795 if ( toInstall . length > 0 ) {
108- const InstallCommand = useUv ? UvInstallCommand : PipInstallCommand ;
109- const installCmd = new InstallCommand ( manageCommandOptions ) ;
96+ const installCmd = await BuiltinInstallCommandFactory ( manageCommandOptions ) ;
11097 const packages = parsePackageSpecs ( toInstall ) ;
11198 await installCmd . executeWithProgress (
11299 { packages, upgrade : options . upgrade , showProgress : true } ,
@@ -158,10 +145,7 @@ export class PipPackageManager implements PackageManager, Disposable {
158145 if ( ! pythonExecutable ) {
159146 return undefined ;
160147 }
161-
162- const useUv = await shouldUseUv ( this . log , environment . environmentPath . fsPath ) ;
163- const ListCmd = useUv ? UvListCommand : PipListCommand ;
164- const listCmd = new ListCmd ( {
148+ const listCmd = await BuiltinListCommandFactory ( {
165149 pythonExecutable,
166150 log : this . log ,
167151 } ) ;
@@ -179,15 +163,11 @@ export class PipPackageManager implements PackageManager, Disposable {
179163 if ( ! pythonExecutable ) {
180164 return undefined ;
181165 }
182-
183- const useUv = await shouldUseUv ( this . log , environment . environmentPath . fsPath ) ;
184- const VersionCmd = useUv ? UvVersionCommand : PipVersionCommand ;
185- const versionCmd = new VersionCmd ( {
166+ const versionCmd = await BuiltinVersionCommandFactory ( {
186167 pythonExecutable,
187168 log : this . log ,
188169 } ) ;
189- const versionString = await versionCmd . execute ( ) ;
190- return versionString ? ( parse ( versionString ) ?? undefined ) : undefined ;
170+ return await versionCmd . execute ( ) ;
191171 } catch {
192172 return undefined ;
193173 }
@@ -208,15 +188,13 @@ export class PipPackageManager implements PackageManager, Disposable {
208188 return undefined ;
209189 }
210190
211- const useUv = await shouldUseUv ( this . log , environment . environmentPath . fsPath ) ;
212- const AvailableVersionsCmd = useUv ? UvAvailableVersionsCommand : PipAvailableVersionsCommand ;
213- const availableVersionsCmd = new AvailableVersionsCmd ( {
191+ const availableVersionsCmd = await BuiltinAvailableVersionsCommandFactory ( {
214192 pythonExecutable,
215193 log : this . log ,
216194 } ) ;
217195
218196 // For pip < 21.2.0, check version first
219- if ( ! useUv ) {
197+ if ( availableVersionsCmd instanceof PipAvailableVersionsCommand ) {
220198 const pipVersion = await this . getVersion ( environment ) ;
221199 if ( ! pipVersion || compare ( pipVersion . public , '21.2.0' ) < 0 ) {
222200 // pip <= 20.3.4 - version picking is undefined; no reliable machine-readable API exists.
@@ -228,9 +206,7 @@ export class PipPackageManager implements PackageManager, Disposable {
228206 packageName,
229207 pythonVersion : environment . version ,
230208 } ) ;
231- return versionStrings
232- . map ( ( v ) => parse ( v ) )
233- . filter ( ( parsed ) : parsed is Pep440Version => parsed !== null ) ;
209+ return versionStrings . map ( ( v ) => parse ( v ) ) . filter ( ( parsed ) : parsed is Pep440Version => parsed !== null ) ;
234210 } catch {
235211 return undefined ;
236212 }
@@ -252,10 +228,7 @@ export class PipPackageManager implements PackageManager, Disposable {
252228 if ( ! pythonExecutable ) {
253229 return undefined ;
254230 }
255-
256- const useUv = await shouldUseUv ( this . log , environment . environmentPath . fsPath ) ;
257- const ListDirectNamesCmd = useUv ? UvListDirectNamesCommand : PipListDirectNamesCommand ;
258- const listDirectNamesCmd = new ListDirectNamesCmd ( {
231+ const listDirectNamesCmd = await BuiltinListDirectNamesCommandFactory ( {
259232 pythonExecutable,
260233 log : this . log ,
261234 } ) ;
0 commit comments