mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 18:05:27 +07:00
remove redundant pip based python package manager; PY-75983
(cherry picked from commit a1d3cb3a5f31763f38c6c5c2d7c7f855d83e1f0a) GitOrigin-RevId: c0ce987c8f9bdf3856cd69febe8a19a8af69491e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c3f76c2982
commit
c8b62d5056
@@ -17,7 +17,7 @@ import com.jetbrains.python.PyBundle.message
|
||||
import com.jetbrains.python.packaging.PyExecutionException
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackageSpecification
|
||||
import com.jetbrains.python.packaging.pip.PipBasedPackageManager
|
||||
import com.jetbrains.python.packaging.pip.PipPythonPackageManager
|
||||
import com.jetbrains.python.sdk.flavors.conda.PyCondaFlavorData
|
||||
import com.jetbrains.python.sdk.getOrCreateAdditionalData
|
||||
import com.jetbrains.python.sdk.targetEnvConfiguration
|
||||
@@ -27,8 +27,8 @@ import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.annotations.Nls
|
||||
|
||||
@ApiStatus.Experimental
|
||||
class CondaPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(project, sdk) {
|
||||
override val repositoryManager: CondaRepositoryManger = CondaRepositoryManger(project, sdk)
|
||||
class CondaPackageManager(project: Project, sdk: Sdk) : PipPythonPackageManager(project, sdk) {
|
||||
override val repositoryManager = CondaRepositoryManger(project, sdk)
|
||||
|
||||
override suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String> =
|
||||
if (specification is CondaPackageSpecification) {
|
||||
@@ -72,7 +72,7 @@ class CondaPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(p
|
||||
|
||||
override suspend fun reloadPackagesCommand(): Result<List<PythonPackage>> =
|
||||
try {
|
||||
val output =runConda("list", emptyList(), message("conda.packaging.list.progress"))
|
||||
val output = runConda("list", emptyList(), message("conda.packaging.list.progress"))
|
||||
Result.success(parseCondaPackageList(output))
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.jetbrains.python.packaging.management
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.writeAction
|
||||
import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.project.Project
|
||||
@@ -8,6 +9,7 @@ import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.util.messages.Topic
|
||||
import com.jetbrains.python.packaging.PyPackageManager
|
||||
import com.jetbrains.python.packaging.common.PackageManagerHolder
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackageManagementListener
|
||||
@@ -39,8 +41,19 @@ abstract class PythonPackageManager(val project: Project, val sdk: Sdk) {
|
||||
return reloadPackages()
|
||||
}
|
||||
|
||||
abstract suspend fun reloadPackages(): Result<List<PythonPackage>>
|
||||
open suspend fun reloadPackages(): Result<List<PythonPackage>> {
|
||||
val packages = reloadPackagesCommand().getOrElse {
|
||||
return Result.failure(it)
|
||||
}
|
||||
|
||||
installedPackages = packages
|
||||
ApplicationManager.getApplication().messageBus.apply {
|
||||
syncPublisher(PACKAGE_MANAGEMENT_TOPIC).packagesChanged(sdk)
|
||||
syncPublisher(PyPackageManager.PACKAGE_MANAGER_TOPIC).packagesRefreshed(sdk)
|
||||
}
|
||||
|
||||
return Result.success(packages)
|
||||
}
|
||||
|
||||
protected abstract suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String>
|
||||
protected abstract suspend fun updatePackageCommand(specification: PythonPackageSpecification): Result<String>
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.jetbrains.python.packaging.pip
|
||||
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.packaging.PyPackageManager
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackageSpecification
|
||||
import com.jetbrains.python.packaging.management.PythonPackageManager
|
||||
import com.jetbrains.python.packaging.management.runPackagingTool
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Experimental
|
||||
abstract class PipBasedPackageManager(project: Project, sdk: Sdk) : PythonPackageManager(project, sdk) {
|
||||
@Volatile
|
||||
override var installedPackages: List<PythonPackage> = emptyList()
|
||||
|
||||
override suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String> =
|
||||
try {
|
||||
Result.success(runPackagingTool("install", specification.buildInstallationString() + options, PyBundle.message("python.packaging.install.progress", specification.name)))
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
|
||||
override suspend fun updatePackageCommand(specification: PythonPackageSpecification): Result<String> =
|
||||
try {
|
||||
Result.success(runPackagingTool("install", listOf("--upgrade") + specification.buildInstallationString(), PyBundle.message("python.packaging.update.progress", specification.name)))
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
|
||||
override suspend fun uninstallPackageCommand(pkg: PythonPackage): Result<String> =
|
||||
try {
|
||||
Result.success(runPackagingTool("uninstall", listOf(pkg.name), PyBundle.message("python.packaging.uninstall.progress", pkg.name)))
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
|
||||
override suspend fun reloadPackagesCommand(): Result<List<PythonPackage>> =
|
||||
try {
|
||||
val output = runPackagingTool("list", emptyList(), PyBundle.message("python.packaging.list.progress"))
|
||||
val packages = output.lineSequence()
|
||||
.filter { it.isNotBlank() }
|
||||
.map {
|
||||
val line = it.split("\t")
|
||||
PythonPackage(line[0], line[1], isEditableMode = false)
|
||||
}
|
||||
.sortedWith(compareBy(PythonPackage::name))
|
||||
.toList()
|
||||
Result.success(packages)
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
|
||||
override suspend fun reloadPackages(): Result<List<PythonPackage>> {
|
||||
val packages = reloadPackagesCommand().onFailure { return Result.failure(it) }.getOrThrow()
|
||||
installedPackages = packages
|
||||
|
||||
ApplicationManager.getApplication().messageBus.apply {
|
||||
syncPublisher(PACKAGE_MANAGEMENT_TOPIC).packagesChanged(sdk)
|
||||
syncPublisher(PyPackageManager.PACKAGE_MANAGER_TOPIC).packagesRefreshed(sdk)
|
||||
}
|
||||
|
||||
return Result.success(packages)
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,62 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.jetbrains.python.packaging.pip
|
||||
|
||||
import com.intellij.execution.ExecutionException
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackageSpecification
|
||||
import com.jetbrains.python.packaging.management.PythonPackageManager
|
||||
import com.jetbrains.python.packaging.management.PythonRepositoryManager
|
||||
import com.jetbrains.python.packaging.management.runPackagingTool
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import kotlin.collections.plus
|
||||
|
||||
@ApiStatus.Experimental
|
||||
class PipPythonPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(project, sdk) {
|
||||
override val repositoryManager: PipRepositoryManager = PipRepositoryManager(project, sdk)
|
||||
open class PipPythonPackageManager(project: Project, sdk: Sdk) : PythonPackageManager(project, sdk) {
|
||||
@Volatile
|
||||
override var installedPackages: List<PythonPackage> = emptyList()
|
||||
override val repositoryManager: PythonRepositoryManager = PipRepositoryManager(project, sdk)
|
||||
|
||||
override suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String> =
|
||||
try {
|
||||
Result.success(runPackagingTool("install", specification.buildInstallationString() + options, PyBundle.message("python.packaging.install.progress", specification.name)))
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
|
||||
override suspend fun updatePackageCommand(specification: PythonPackageSpecification): Result<String> =
|
||||
try {
|
||||
Result.success(runPackagingTool("install", listOf("--upgrade") + specification.buildInstallationString(), PyBundle.message("python.packaging.update.progress", specification.name)))
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
|
||||
override suspend fun uninstallPackageCommand(pkg: PythonPackage): Result<String> =
|
||||
try {
|
||||
Result.success(runPackagingTool("uninstall", listOf(pkg.name), PyBundle.message("python.packaging.uninstall.progress", pkg.name)))
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
|
||||
override suspend fun reloadPackagesCommand(): Result<List<PythonPackage>> =
|
||||
try {
|
||||
val output = runPackagingTool("list", emptyList(), PyBundle.message("python.packaging.list.progress"))
|
||||
val packages = output.lineSequence()
|
||||
.filter { it.isNotBlank() }
|
||||
.map {
|
||||
val line = it.split("\t")
|
||||
PythonPackage(line[0], line[1], isEditableMode = false)
|
||||
}
|
||||
.sortedWith(compareBy(PythonPackage::name))
|
||||
.toList()
|
||||
Result.success(packages)
|
||||
}
|
||||
catch (ex: ExecutionException) {
|
||||
Result.failure(ex)
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ package com.jetbrains.python.run.runAnything
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.packaging.management.PythonPackageManager
|
||||
import com.jetbrains.python.packaging.pip.PipBasedPackageManager
|
||||
import com.jetbrains.python.packaging.repository.PyPIPackageRepository
|
||||
import com.jetbrains.python.packaging.repository.PyPackageRepository
|
||||
import com.jetbrains.python.psi.icons.PythonPsiApiIcons
|
||||
@@ -33,7 +32,7 @@ class PyRunAnythingPipProvider : PyRunAnythingPackageProvider() {
|
||||
|
||||
override fun getPackageManager(dataContext: DataContext): PythonPackageManager? {
|
||||
val pythonSdk = getSdk(dataContext) ?: return null
|
||||
return (PythonPackageManager.forSdk(dataContext.project, pythonSdk) as? PipBasedPackageManager) ?: return null
|
||||
return PythonPackageManager.forSdk(dataContext.project, pythonSdk)
|
||||
}
|
||||
|
||||
override fun getPackageRepository(dataContext: DataContext): PyPackageRepository? {
|
||||
|
||||
@@ -5,17 +5,19 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackageSpecification
|
||||
import com.jetbrains.python.packaging.pip.PipBasedPackageManager
|
||||
import com.jetbrains.python.packaging.management.PythonPackageManager
|
||||
import com.jetbrains.python.packaging.pip.PipRepositoryManager
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import java.util.regex.Pattern
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
|
||||
class PoetryPackageManager(project: Project, sdk: Sdk) : PythonPackageManager(project, sdk) {
|
||||
@Volatile
|
||||
override var installedPackages: List<PythonPackage> = emptyList()
|
||||
override val repositoryManager: PipRepositoryManager = PipRepositoryManager(project, sdk)
|
||||
|
||||
class PoetryPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(project, sdk) {
|
||||
@Volatile
|
||||
private var outdatedPackages: Map<String, PoetryOutdatedVersion> = emptyMap()
|
||||
|
||||
override val repositoryManager: PipRepositoryManager = PipRepositoryManager(project, sdk)
|
||||
|
||||
override suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String> =
|
||||
poetryInstallPackage(sdk, specification.getVersionForPoetry(), options)
|
||||
|
||||
@@ -36,7 +38,6 @@ class PoetryPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(
|
||||
|
||||
internal fun getOutdatedPackages(): Map<String, PoetryOutdatedVersion> = outdatedPackages
|
||||
|
||||
|
||||
/**
|
||||
* Updates the list of outdated packages by running the Poetry command
|
||||
* `poetry show --outdated`, parsing its output, and storing the results.
|
||||
|
||||
Reference in New Issue
Block a user