mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-78749 Packages: clear PPM from toolwindow tree methods
Signed-off-by: Nikita.Ashihmin <nikita.ashihmin@jetbrains.com> GitOrigin-RevId: 556ff321b789a0600580fa590c0cd3be36c68e89
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9c922e5089
commit
0eb8ec9edb
@@ -19,7 +19,6 @@ import com.jetbrains.python.getOrNull
|
||||
import com.jetbrains.python.onFailure
|
||||
import com.jetbrains.python.packaging.PyPackageManager
|
||||
import com.jetbrains.python.packaging.PyPackageName
|
||||
import com.jetbrains.python.packaging.PythonDependenciesExtractor
|
||||
import com.jetbrains.python.packaging.common.PythonOutdatedPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackageManagementListener
|
||||
@@ -53,13 +52,10 @@ abstract class PythonPackageManager(val project: Project, val sdk: Sdk) : Dispos
|
||||
}
|
||||
|
||||
|
||||
@get:ApiStatus.Internal
|
||||
@set:ApiStatus.Internal
|
||||
protected open var dependencies: List<PythonPackage> = emptyList()
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Volatile
|
||||
protected open var installedPackages: List<PythonPackage> = emptyList()
|
||||
protected var installedPackages: List<PythonPackage> = emptyList()
|
||||
|
||||
@ApiStatus.Internal
|
||||
@Volatile
|
||||
@@ -102,7 +98,6 @@ abstract class PythonPackageManager(val project: Project, val sdk: Sdk) : Dispos
|
||||
}
|
||||
|
||||
waitForInit()
|
||||
reloadDependencies()
|
||||
|
||||
val normalizedPackagesNames = packages.map { PyPackageName.normalizePackageName(it) }
|
||||
uninstallPackageCommand(*normalizedPackagesNames.toTypedArray()).getOr { return it }
|
||||
@@ -115,7 +110,6 @@ abstract class PythonPackageManager(val project: Project, val sdk: Sdk) : Dispos
|
||||
return it
|
||||
}
|
||||
|
||||
reloadDependencies()
|
||||
if (packages != installedPackages) {
|
||||
installedPackages = packages
|
||||
PyPackageCoroutine.launch(project) {
|
||||
@@ -197,16 +191,6 @@ abstract class PythonPackageManager(val project: Project, val sdk: Sdk) : Dispos
|
||||
@ApiStatus.Internal
|
||||
protected abstract suspend fun loadOutdatedPackagesCommand(): PyResult<List<PythonOutdatedPackage>>
|
||||
|
||||
@ApiStatus.Internal
|
||||
suspend fun reloadDependencies(): List<PythonPackage> {
|
||||
val dependenciesExtractor = PythonDependenciesExtractor.forSdk(project, sdk) ?: return emptyList()
|
||||
dependencies = dependenciesExtractor.extract()
|
||||
return dependencies
|
||||
}
|
||||
|
||||
@ApiStatus.Internal
|
||||
fun listDependencies(): List<PythonPackage> = dependencies
|
||||
|
||||
@ApiStatus.Internal
|
||||
suspend fun waitForInit() {
|
||||
initializationJob?.join()
|
||||
|
||||
+4
-8
@@ -21,9 +21,7 @@ import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.jetbrains.python.PyBundle.message
|
||||
import com.jetbrains.python.getOrNull
|
||||
import com.jetbrains.python.packaging.PyPackageName
|
||||
import com.jetbrains.python.packaging.PyPackageService
|
||||
import com.jetbrains.python.packaging.PyPackageVersionNormalizer
|
||||
import com.jetbrains.python.packaging.*
|
||||
import com.jetbrains.python.packaging.cache.PythonSimpleRepositoryCache
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackageDetails
|
||||
@@ -34,7 +32,6 @@ import com.jetbrains.python.packaging.management.*
|
||||
import com.jetbrains.python.packaging.management.ui.PythonPackageManagerUI
|
||||
import com.jetbrains.python.packaging.packageRequirements.PackageNode
|
||||
import com.jetbrains.python.packaging.packageRequirements.PythonPackageRequirementsTreeExtractor
|
||||
import com.jetbrains.python.packaging.pyRequirement
|
||||
import com.jetbrains.python.packaging.repository.*
|
||||
import com.jetbrains.python.packaging.statistics.PythonPackagesToolwindowStatisticsCollector
|
||||
import com.jetbrains.python.packaging.toolwindow.model.*
|
||||
@@ -285,9 +282,8 @@ class PyPackagingToolWindowService(val project: Project, val serviceScope: Corou
|
||||
|
||||
suspend fun refreshInstalledPackages() {
|
||||
val sdk = currentSdk ?: return
|
||||
val manager = manager ?: return
|
||||
withContext(Dispatchers.Default) {
|
||||
val declaredPackages = manager.reloadDependencies()
|
||||
val declaredPackages = PythonDependenciesExtractor.forSdk(project, sdk)?.extract() ?: emptyList()
|
||||
val installedDeclaredPackages = findInstalledDeclaredPackages(declaredPackages)
|
||||
val treeExtractor = PythonPackageRequirementsTreeExtractor.forSdk(sdk)
|
||||
|
||||
@@ -313,9 +309,9 @@ class PyPackagingToolWindowService(val project: Project, val serviceScope: Corou
|
||||
}
|
||||
|
||||
private suspend fun findInstalledDeclaredPackages(declaredPackages: List<PythonPackage>): List<PythonPackage> =
|
||||
manager?.listInstalledPackages()?.filter {
|
||||
manager.listInstalledPackages().filter {
|
||||
it.name in declaredPackages.map { pkg -> pkg.name }
|
||||
} ?: emptyList()
|
||||
}
|
||||
|
||||
private suspend fun processPackagesWithRequirementsTree(
|
||||
packages: List<PythonPackage>,
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.jetbrains.python.PyBundle
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
import com.jetbrains.python.packaging.PyPackageName
|
||||
import com.jetbrains.python.packaging.PythonDependenciesExtractor
|
||||
import com.jetbrains.python.packaging.common.PythonOutdatedPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonRepositoryPackageSpecification
|
||||
@@ -60,8 +61,8 @@ class PoetryPackageManager(project: Project, sdk: Sdk) : PythonPackageManager(pr
|
||||
/**
|
||||
* Categorizes packages into standalone packages and pyproject.toml declared packages.
|
||||
*/
|
||||
private fun categorizePackages(packages: Array<out String>): Pair<List<PyPackageName>, List<PyPackageName>> {
|
||||
val dependencyNames = dependencies.map { it.name }.toSet()
|
||||
private suspend fun categorizePackages(packages: Array<out String>): Pair<List<PyPackageName>, List<PyPackageName>> {
|
||||
val dependencyNames = PythonDependenciesExtractor.forSdk(project, sdk)?.extract()?.map { it.name }?.toSet() ?: emptySet()
|
||||
return packages
|
||||
.map { PyPackageName.from(it) }
|
||||
.partition { it.name !in dependencyNames }
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
import com.jetbrains.python.packaging.PyPackageName
|
||||
import com.jetbrains.python.packaging.PythonDependenciesExtractor
|
||||
import com.jetbrains.python.packaging.common.PythonOutdatedPackage
|
||||
import com.jetbrains.python.packaging.common.PythonPackage
|
||||
import com.jetbrains.python.packaging.common.PythonRepositoryPackageSpecification
|
||||
@@ -53,8 +54,8 @@ internal class UvPackageManager(project: Project, sdk: Sdk, private val uv: UvLo
|
||||
/**
|
||||
* Categorizes packages into standalone packages and pyproject.toml declared packages.
|
||||
*/
|
||||
private fun categorizePackages(packages: Array<out String>): Pair<List<PyPackageName>, List<PyPackageName>> {
|
||||
val dependencyNames = dependencies.map { it.name }.toSet()
|
||||
private suspend fun categorizePackages(packages: Array<out String>): Pair<List<PyPackageName>, List<PyPackageName>> {
|
||||
val dependencyNames = PythonDependenciesExtractor.forSdk(project, sdk)?.extract()?.map { it.name }?.toSet() ?: emptySet()
|
||||
return packages
|
||||
.map { PyPackageName.from(it) }
|
||||
.partition { it.name !in dependencyNames || sdk.uvUsePackageManagement }
|
||||
|
||||
@@ -14,11 +14,14 @@ import org.jetbrains.annotations.TestOnly
|
||||
|
||||
@TestOnly
|
||||
class TestPythonPackageManager(project: Project, sdk: Sdk) : PythonPackageManager(project, sdk) {
|
||||
override var installedPackages: List<PythonPackage> = DEFAULT_PACKAGES.toMutableList()
|
||||
private var packageNames: List<String> = emptyList()
|
||||
private var packageDetails: PythonPackageDetails? = null
|
||||
private var packageVersions: Map<String, List<String>> = emptyMap()
|
||||
|
||||
init {
|
||||
installedPackages = DEFAULT_PACKAGES.toMutableList()
|
||||
}
|
||||
|
||||
override val repositoryManager: TestPythonRepositoryManager
|
||||
get() = TestPythonRepositoryManager(project)
|
||||
.withPackageNames(packageNames)
|
||||
|
||||
Reference in New Issue
Block a user