mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Python: Rename and move UIInfo to openapi to reuse it from other modules
GitOrigin-RevId: 2f46a6e934853d14600351112da292586938cd86
This commit is contained in:
committed by
intellij-monorepo-bot
parent
13232ee81d
commit
894f26c7e9
-15
@@ -1,15 +0,0 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.python.community.services.shared
|
||||
|
||||
import org.jetbrains.annotations.Nls
|
||||
import javax.swing.Icon
|
||||
|
||||
data class UICustomization(
|
||||
/**
|
||||
* i.e: "UV" for pythons found by UV
|
||||
*/
|
||||
val title: @Nls String,
|
||||
val icon: Icon? = null,
|
||||
) : Comparable<UICustomization> {
|
||||
override fun compareTo(other: UICustomization): Int = title.compareTo(other.title)
|
||||
}
|
||||
+3
-1
@@ -1,9 +1,11 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.python.community.services.shared
|
||||
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
|
||||
interface UiHolder {
|
||||
/**
|
||||
* UI hints on how to display this python to the end user: icon, title, etc
|
||||
*/
|
||||
val ui: UICustomization?
|
||||
val ui: PyToolUIInfo?
|
||||
}
|
||||
+4
-3
@@ -2,6 +2,7 @@
|
||||
package com.intellij.python.community.services.shared
|
||||
|
||||
import com.intellij.openapi.diagnostic.fileLogger
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.jetbrains.python.psi.LanguageLevel
|
||||
import java.util.*
|
||||
|
||||
@@ -21,9 +22,9 @@ object LanguageLevelComparator : Comparator<LanguageLevelHolder> {
|
||||
object UiComparator : Comparator<UiHolder> {
|
||||
override fun compare(o1: UiHolder, o2: UiHolder): Int {
|
||||
if (logger.isDebugEnabled) {
|
||||
logger.debug("ui ${o1.ui?.title} vs ${o2.ui?.title}")
|
||||
logger.debug("ui ${o1.ui?.toolName} vs ${o2.ui?.toolName}")
|
||||
}
|
||||
return Objects.compare(o1.ui, o2.ui, Comparator.nullsFirst(UICustomization::compareTo))
|
||||
return Objects.compare(o1.ui, o2.ui, Comparator.nullsFirst(PyToolUIInfo::compareTo))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,4 +37,4 @@ class LanguageLevelWithUiComparator<T> : Comparator<T> where T : LanguageLevelHo
|
||||
}
|
||||
}
|
||||
|
||||
private fun <T> T.string(): String where T : LanguageLevelHolder, T : UiHolder = "($languageLevel,${ui?.title})"
|
||||
private fun <T> T.string(): String where T : LanguageLevelHolder, T : UiHolder = "($languageLevel,${ui?.toolName})"
|
||||
|
||||
+8
-8
@@ -3,7 +3,7 @@ package com.intellij.python.junit5Tests.unit.comparators
|
||||
|
||||
import com.intellij.python.community.services.shared.LanguageLevelHolder
|
||||
import com.intellij.python.community.services.shared.LanguageLevelWithUiComparator
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.shared.UiHolder
|
||||
import com.jetbrains.python.psi.LanguageLevel
|
||||
import org.hamcrest.MatcherAssert
|
||||
@@ -18,9 +18,9 @@ class ComparatorsTest {
|
||||
val mocks = arrayOf(
|
||||
MockLevel(LanguageLevel.PYTHON314),
|
||||
MockLevel(LanguageLevel.PYTHON310),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = UICustomization("A")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = UICustomization("Z")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = UICustomization("B")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = PyToolUIInfo("A")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = PyToolUIInfo("Z")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = PyToolUIInfo("B")),
|
||||
MockLevel(LanguageLevel.PYTHON27),
|
||||
MockLevel(LanguageLevel.PYTHON313),
|
||||
)
|
||||
@@ -30,9 +30,9 @@ class ComparatorsTest {
|
||||
MockLevel(LanguageLevel.PYTHON314),
|
||||
MockLevel(LanguageLevel.PYTHON313),
|
||||
MockLevel(LanguageLevel.PYTHON310),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = UICustomization("A")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = UICustomization("B")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = UICustomization("Z")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = PyToolUIInfo("A")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = PyToolUIInfo("B")),
|
||||
MockLevel(LanguageLevel.PYTHON310, ui = PyToolUIInfo("Z")),
|
||||
MockLevel(LanguageLevel.PYTHON27)
|
||||
))
|
||||
}
|
||||
@@ -40,5 +40,5 @@ class ComparatorsTest {
|
||||
|
||||
private data class MockLevel(
|
||||
override val languageLevel: LanguageLevel,
|
||||
override val ui: UICustomization? = null,
|
||||
override val ui: PyToolUIInfo? = null,
|
||||
) : LanguageLevelHolder, UiHolder
|
||||
+2
-2
@@ -8,7 +8,7 @@ import com.intellij.platform.eel.provider.localEel
|
||||
import com.intellij.python.community.impl.venv.createVenv
|
||||
import com.intellij.python.community.services.shared.LanguageLevelWithUiComparator
|
||||
import com.intellij.python.community.services.shared.PythonWithUi
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.shared.VanillaPythonWithLanguageLevel
|
||||
import com.jetbrains.python.PythonBinary
|
||||
import com.jetbrains.python.Result
|
||||
@@ -56,7 +56,7 @@ fun SystemPythonService(): SystemPythonService = ApplicationManager.getApplicati
|
||||
*
|
||||
* Instances could be obtained with [SystemPythonService]
|
||||
*/
|
||||
class SystemPython internal constructor(private val delegate: VanillaPythonWithLanguageLevel, override val ui: UICustomization?) : VanillaPythonWithLanguageLevel by delegate, PythonWithUi, Comparable<SystemPython> {
|
||||
class SystemPython internal constructor(private val delegate: VanillaPythonWithLanguageLevel, override val ui: PyToolUIInfo?) : VanillaPythonWithLanguageLevel by delegate, PythonWithUi, Comparable<SystemPython> {
|
||||
|
||||
private companion object {
|
||||
val comparator = LanguageLevelWithUiComparator<SystemPython>()
|
||||
|
||||
+3
-3
@@ -6,7 +6,7 @@ import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.platform.eel.getOrNull
|
||||
import com.intellij.platform.eel.path.EelPath
|
||||
import com.intellij.platform.eel.provider.asNioPath
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.systemPython.icons.PythonCommunityServicesSystemPythonIcons
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonProvider
|
||||
import com.jetbrains.python.PythonBinary
|
||||
@@ -56,9 +56,9 @@ private class AsdfSystemPythonProvider : SystemPythonProvider {
|
||||
return PyResult.success(pythons)
|
||||
}
|
||||
|
||||
override val uiCustomization: UICustomization?
|
||||
override val uiCustomization: PyToolUIInfo?
|
||||
get() {
|
||||
// TODO: proper icon
|
||||
return UICustomization(title = "asdf", icon = PythonCommunityServicesSystemPythonIcons.Asdf)
|
||||
return PyToolUIInfo(toolName = "asdf", icon = PythonCommunityServicesSystemPythonIcons.Asdf)
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -4,7 +4,7 @@ package com.intellij.python.community.services.systemPython.impl.providers
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.platform.eel.isMac
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.systemPython.icons.PythonCommunityServicesSystemPythonIcons
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonProvider
|
||||
import com.jetbrains.python.PythonBinary
|
||||
@@ -37,9 +37,9 @@ private class BrewSystemPythonProvider : SystemPythonProvider {
|
||||
return PyResult.success(pythons)
|
||||
}
|
||||
|
||||
override val uiCustomization: UICustomization?
|
||||
override val uiCustomization: PyToolUIInfo
|
||||
get() {
|
||||
// TODO: proper icon
|
||||
return UICustomization(title = "homebrew", icon = PythonCommunityServicesSystemPythonIcons.Homebrew)
|
||||
return PyToolUIInfo(toolName = "homebrew", icon = PythonCommunityServicesSystemPythonIcons.Homebrew)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ package com.intellij.python.community.services.systemPython.impl.providers
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.platform.eel.isMac
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonProvider
|
||||
import com.jetbrains.python.PythonBinary
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
@@ -51,7 +51,7 @@ private class MacSystemPythonProvider : SystemPythonProvider {
|
||||
return PyResult.success(pythons)
|
||||
}
|
||||
|
||||
override val uiCustomization: UICustomization?
|
||||
override val uiCustomization: PyToolUIInfo?
|
||||
get() {
|
||||
// TODO:
|
||||
return null
|
||||
|
||||
+3
-3
@@ -6,7 +6,7 @@ import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.platform.eel.getOrNull
|
||||
import com.intellij.platform.eel.path.EelPath
|
||||
import com.intellij.platform.eel.provider.asNioPath
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.systemPython.icons.PythonCommunityServicesSystemPythonIcons
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonProvider
|
||||
import com.jetbrains.python.PythonBinary
|
||||
@@ -56,9 +56,9 @@ private class PyenvSystemPythonProvider : SystemPythonProvider {
|
||||
return PyResult.success(pythons)
|
||||
}
|
||||
|
||||
override val uiCustomization: UICustomization?
|
||||
override val uiCustomization: PyToolUIInfo?
|
||||
get() {
|
||||
// TODO: proper icon
|
||||
return UICustomization(title = "pyenv", icon = PythonCommunityServicesSystemPythonIcons.Pyenv)
|
||||
return PyToolUIInfo(toolName = "pyenv", icon = PythonCommunityServicesSystemPythonIcons.Pyenv)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@ import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.platform.eel.EelPlatform
|
||||
import com.intellij.platform.eel.isMac
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonProvider
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.jetbrains.python.PythonBinary
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -48,7 +48,7 @@ private class UnixSystemPythonProvider : SystemPythonProvider {
|
||||
return PyResult.success(pythons)
|
||||
}
|
||||
|
||||
override val uiCustomization: UICustomization?
|
||||
override val uiCustomization: PyToolUIInfo?
|
||||
get() {
|
||||
// TODO:
|
||||
return null
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ package com.intellij.python.community.services.systemPython
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonProvider.Companion.EP
|
||||
import com.jetbrains.python.PythonBinary
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
@@ -19,7 +19,7 @@ interface SystemPythonProvider {
|
||||
/**
|
||||
* You can optionally customize how your pythons are displayed
|
||||
*/
|
||||
val uiCustomization: UICustomization? get() = null
|
||||
val uiCustomization: PyToolUIInfo? get() = null
|
||||
|
||||
suspend fun findSystemPythons(eelApi: EelApi): PyResult<Set<PythonBinary>>
|
||||
}
|
||||
+2
-3
@@ -8,12 +8,11 @@ import com.intellij.openapi.diagnostic.fileLogger
|
||||
import com.intellij.openapi.util.registry.RegistryManager
|
||||
import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.platform.eel.EelDescriptor
|
||||
import com.intellij.platform.eel.EelMachine
|
||||
import com.intellij.platform.eel.provider.getEelDescriptor
|
||||
import com.intellij.platform.eel.provider.localEel
|
||||
import com.intellij.python.community.impl.installer.PySdkToInstallManager
|
||||
import com.intellij.python.community.services.internal.impl.VanillaPythonWithLanguageLevelImpl
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonServiceImpl.MyServiceState
|
||||
import com.intellij.python.community.services.systemPython.impl.Cache
|
||||
import com.intellij.python.community.services.systemPython.impl.PySystemPythonBundle
|
||||
@@ -107,7 +106,7 @@ internal class SystemPythonServiceImpl(scope: CoroutineScope) : SystemPythonServ
|
||||
|
||||
private suspend fun searchPythonsPhysicallyNoCache(eelApi: EelApi): List<SystemPython> = withContext(Dispatchers.IO) {
|
||||
findPythonsMutex.withLock {
|
||||
val pythonsUi = mutableMapOf<PythonBinary, UICustomization>()
|
||||
val pythonsUi = mutableMapOf<PythonBinary, PyToolUIInfo>()
|
||||
|
||||
val pythonsFromExtensions = SystemPythonProvider.EP.extensionList
|
||||
.flatMap { provider ->
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.io.TempDir
|
||||
import com.intellij.platform.eel.EelApi
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.jetbrains.python.PythonBinary
|
||||
import com.jetbrains.python.errorProcessing.PyResult
|
||||
import java.nio.file.Path
|
||||
@@ -120,7 +120,7 @@ class SystemPythonServiceShowCaseTest {
|
||||
|
||||
private class CountingTestProvider(
|
||||
private val result: PyResult<Set<PythonBinary>>,
|
||||
override val uiCustomization: UICustomization? = null,
|
||||
override val uiCustomization: PyToolUIInfo? = null,
|
||||
) : SystemPythonProvider {
|
||||
var calls: Int = 0
|
||||
override suspend fun findSystemPythons(eelApi: EelApi): PyResult<Set<PythonBinary>> {
|
||||
|
||||
+3
-4
@@ -4,7 +4,7 @@ package com.intellij.python.junit5Tests.env.systemPython.impl
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.python.community.impl.venv.createVenv
|
||||
import com.intellij.python.community.services.shared.UICustomization
|
||||
import com.jetbrains.python.PyToolUIInfo
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonProvider
|
||||
import com.intellij.python.community.services.systemPython.SystemPythonService
|
||||
import com.intellij.python.junit5Tests.framework.env.PyEnvTestCase
|
||||
@@ -17,7 +17,6 @@ import com.jetbrains.python.Result
|
||||
import com.jetbrains.python.getOrThrow
|
||||
import org.hamcrest.MatcherAssert.assertThat
|
||||
import org.hamcrest.Matchers
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.io.TempDir
|
||||
@@ -48,7 +47,7 @@ class EnvProviderTest {
|
||||
@TempDir venvDir: Path,
|
||||
): Unit = timeoutRunBlocking {
|
||||
val venvPython = createVenv(python, venvDir).getOrThrow()
|
||||
val ui = UICustomization("myui")
|
||||
val ui = PyToolUIInfo("myui")
|
||||
val provider = InlineTestProvider(setOf(venvPython), ui)
|
||||
ApplicationManager.getApplication().registerExtension(SystemPythonProvider.EP, provider, disposable)
|
||||
val python = SystemPythonService().findSystemPythons(forceRefresh = true).first { it.pythonBinary == venvPython }
|
||||
@@ -57,7 +56,7 @@ class EnvProviderTest {
|
||||
|
||||
private class InlineTestProvider(
|
||||
private val pythons: Set<PythonBinary>,
|
||||
override val uiCustomization: UICustomization?
|
||||
override val uiCustomization: PyToolUIInfo?
|
||||
) : SystemPythonProvider {
|
||||
override suspend fun findSystemPythons(eelApi: EelApi) = Result.success(pythons)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user