mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 02:59:33 +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.PyExecutionException
|
||||||
import com.jetbrains.python.packaging.common.PythonPackage
|
import com.jetbrains.python.packaging.common.PythonPackage
|
||||||
import com.jetbrains.python.packaging.common.PythonPackageSpecification
|
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.flavors.conda.PyCondaFlavorData
|
||||||
import com.jetbrains.python.sdk.getOrCreateAdditionalData
|
import com.jetbrains.python.sdk.getOrCreateAdditionalData
|
||||||
import com.jetbrains.python.sdk.targetEnvConfiguration
|
import com.jetbrains.python.sdk.targetEnvConfiguration
|
||||||
@@ -27,8 +27,8 @@ import org.jetbrains.annotations.ApiStatus
|
|||||||
import org.jetbrains.annotations.Nls
|
import org.jetbrains.annotations.Nls
|
||||||
|
|
||||||
@ApiStatus.Experimental
|
@ApiStatus.Experimental
|
||||||
class CondaPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(project, sdk) {
|
class CondaPackageManager(project: Project, sdk: Sdk) : PipPythonPackageManager(project, sdk) {
|
||||||
override val repositoryManager: CondaRepositoryManger = CondaRepositoryManger(project, sdk)
|
override val repositoryManager = CondaRepositoryManger(project, sdk)
|
||||||
|
|
||||||
override suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String> =
|
override suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String> =
|
||||||
if (specification is CondaPackageSpecification) {
|
if (specification is CondaPackageSpecification) {
|
||||||
@@ -72,7 +72,7 @@ class CondaPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(p
|
|||||||
|
|
||||||
override suspend fun reloadPackagesCommand(): Result<List<PythonPackage>> =
|
override suspend fun reloadPackagesCommand(): Result<List<PythonPackage>> =
|
||||||
try {
|
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))
|
Result.success(parseCondaPackageList(output))
|
||||||
}
|
}
|
||||||
catch (ex: ExecutionException) {
|
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.
|
// 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
|
package com.jetbrains.python.packaging.management
|
||||||
|
|
||||||
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.application.writeAction
|
import com.intellij.openapi.application.writeAction
|
||||||
import com.intellij.openapi.components.service
|
import com.intellij.openapi.components.service
|
||||||
import com.intellij.openapi.project.Project
|
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.roots.OrderRootType
|
||||||
import com.intellij.openapi.vfs.VfsUtil
|
import com.intellij.openapi.vfs.VfsUtil
|
||||||
import com.intellij.util.messages.Topic
|
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.PackageManagerHolder
|
||||||
import com.jetbrains.python.packaging.common.PythonPackage
|
import com.jetbrains.python.packaging.common.PythonPackage
|
||||||
import com.jetbrains.python.packaging.common.PythonPackageManagementListener
|
import com.jetbrains.python.packaging.common.PythonPackageManagementListener
|
||||||
@@ -39,8 +41,19 @@ abstract class PythonPackageManager(val project: Project, val sdk: Sdk) {
|
|||||||
return reloadPackages()
|
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 installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String>
|
||||||
protected abstract suspend fun updatePackageCommand(specification: PythonPackageSpecification): 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.
|
// 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
|
package com.jetbrains.python.packaging.pip
|
||||||
|
|
||||||
|
import com.intellij.execution.ExecutionException
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.projectRoots.Sdk
|
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 org.jetbrains.annotations.ApiStatus
|
||||||
|
import kotlin.collections.plus
|
||||||
|
|
||||||
@ApiStatus.Experimental
|
@ApiStatus.Experimental
|
||||||
class PipPythonPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(project, sdk) {
|
open class PipPythonPackageManager(project: Project, sdk: Sdk) : PythonPackageManager(project, sdk) {
|
||||||
override val repositoryManager: PipRepositoryManager = PipRepositoryManager(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.intellij.openapi.actionSystem.DataContext
|
||||||
import com.jetbrains.python.PyBundle
|
import com.jetbrains.python.PyBundle
|
||||||
import com.jetbrains.python.packaging.management.PythonPackageManager
|
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.PyPIPackageRepository
|
||||||
import com.jetbrains.python.packaging.repository.PyPackageRepository
|
import com.jetbrains.python.packaging.repository.PyPackageRepository
|
||||||
import com.jetbrains.python.psi.icons.PythonPsiApiIcons
|
import com.jetbrains.python.psi.icons.PythonPsiApiIcons
|
||||||
@@ -33,7 +32,7 @@ class PyRunAnythingPipProvider : PyRunAnythingPackageProvider() {
|
|||||||
|
|
||||||
override fun getPackageManager(dataContext: DataContext): PythonPackageManager? {
|
override fun getPackageManager(dataContext: DataContext): PythonPackageManager? {
|
||||||
val pythonSdk = getSdk(dataContext) ?: return null
|
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? {
|
override fun getPackageRepository(dataContext: DataContext): PyPackageRepository? {
|
||||||
|
|||||||
@@ -5,17 +5,19 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.openapi.projectRoots.Sdk
|
import com.intellij.openapi.projectRoots.Sdk
|
||||||
import com.jetbrains.python.packaging.common.PythonPackage
|
import com.jetbrains.python.packaging.common.PythonPackage
|
||||||
import com.jetbrains.python.packaging.common.PythonPackageSpecification
|
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 com.jetbrains.python.packaging.pip.PipRepositoryManager
|
||||||
import org.jetbrains.annotations.TestOnly
|
|
||||||
import java.util.regex.Pattern
|
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
|
@Volatile
|
||||||
private var outdatedPackages: Map<String, PoetryOutdatedVersion> = emptyMap()
|
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> =
|
override suspend fun installPackageCommand(specification: PythonPackageSpecification, options: List<String>): Result<String> =
|
||||||
poetryInstallPackage(sdk, specification.getVersionForPoetry(), options)
|
poetryInstallPackage(sdk, specification.getVersionForPoetry(), options)
|
||||||
|
|
||||||
@@ -36,7 +38,6 @@ class PoetryPackageManager(project: Project, sdk: Sdk) : PipBasedPackageManager(
|
|||||||
|
|
||||||
internal fun getOutdatedPackages(): Map<String, PoetryOutdatedVersion> = outdatedPackages
|
internal fun getOutdatedPackages(): Map<String, PoetryOutdatedVersion> = outdatedPackages
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the list of outdated packages by running the Poetry command
|
* Updates the list of outdated packages by running the Poetry command
|
||||||
* `poetry show --outdated`, parsing its output, and storing the results.
|
* `poetry show --outdated`, parsing its output, and storing the results.
|
||||||
|
|||||||
Reference in New Issue
Block a user