[python] (PY-84316) revert serial calls & EditorContextBarMenu for Python Package Manager Actions

GitOrigin-RevId: 42374befa238b38583cf0490e1b2e248c206f2ef
This commit is contained in:
Vitaly Legchilkin
2025-11-11 11:34:37 +00:00
committed by intellij-monorepo-bot
parent 8344d9a136
commit e87293623e
4 changed files with 16 additions and 20 deletions
@@ -1141,6 +1141,7 @@
icon="com.intellij.icons.AllIcons.Actions.Install"/>
<separator/>
<add-to-group group-id="EditorContextBarMenu" anchor="first"/>
<add-to-group group-id="ExternalSystemView.ProjectMenu" anchor="last"/>
<add-to-group group-id="RunContextGroup"/>
</group>
@@ -11,6 +11,7 @@ import com.intellij.openapi.application.edtWriteAction
import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.module.ModuleUtil
import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.util.NlsContexts
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.python.pyproject.PY_PROJECT_TOML
import com.jetbrains.python.errorProcessing.ErrorSink
@@ -106,3 +107,9 @@ internal fun PythonPackageManager.isRunLocked(): Boolean {
return CancellableJobSerialRunner.isRunLocked(this.sdk)
}
internal suspend fun <V> PythonPackageManager.runSynchronized(
title: @NlsContexts.ProgressTitle String,
runnable: suspend () -> PyResult<V>,
): PyResult<V> {
return CancellableJobSerialRunner.run(this.project, this.sdk, title, runnable)
}
@@ -142,8 +142,8 @@ class PythonPackageManagerUI(val manager: PythonPackageManager, val sink: ErrorS
@ApiStatus.Internal
suspend fun <T> executeCommand(
progressTitle: @Nls String,
operation: suspend (() -> PyResult<T>?),
): T? = PythonPackageManagerUIHelpers.runPackagingOperationMaybeBackground(manager.project, sink, progressTitle) {
operation: suspend (() -> PyResult<T>),
): T? = PythonPackageManagerUIHelpers.runPackagingOperationMaybeBackground(manager, sink, progressTitle) {
operation()
}
@@ -2,11 +2,9 @@
package com.jetbrains.python.packaging.management.ui
import com.intellij.openapi.application.EDT
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.popup.Balloon
import com.intellij.openapi.ui.popup.JBPopupFactory
import com.intellij.openapi.util.NlsContexts
import com.intellij.platform.ide.progress.withBackgroundProgress
import com.intellij.ui.awt.RelativePoint
import com.intellij.util.ui.JBUI
import com.jetbrains.python.errorProcessing.ErrorSink
@@ -14,6 +12,8 @@ import com.jetbrains.python.errorProcessing.PyResult
import com.jetbrains.python.errorProcessing.emit
import com.jetbrains.python.getOrNull
import com.jetbrains.python.onFailure
import com.jetbrains.python.packaging.management.PythonPackageManager
import com.jetbrains.python.packaging.management.runSynchronized
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import javax.swing.JLabel
@@ -21,26 +21,14 @@ import javax.swing.UIManager
internal object PythonPackageManagerUIHelpers {
suspend fun <T> runPackagingOperationMaybeBackground(
project: Project,
manager: PythonPackageManager,
errorSink: ErrorSink?,
@NlsContexts.ProgressTitle title: String,
operation: suspend (() -> PyResult<T>?),
): T? = withBackgroundProgress(project = project, title, cancellable = true) {
runPackagingOperationMaybeShowErrorDialog(errorSink, project) {
withContext(Dispatchers.Default) {
operation()
}
}
}
private suspend fun <T> runPackagingOperationMaybeShowErrorDialog(
errorSink: ErrorSink?,
project: Project,
operation: suspend (() -> PyResult<T>?),
operation: suspend (() -> PyResult<T>),
): T? {
val pyResult = operation() ?: return null
val pyResult = manager.runSynchronized(title, operation)
return pyResult.onFailure {
errorSink?.emit(it, project)
errorSink?.emit(it, manager.project)
}.getOrNull()
}