[python] PY-79486: (WIP) Move tools to separate modules to access them from the frontend.

We are slowly moving all tools to the separate modules to register them as EP. On the front we might have `ToolId` only. To map it to an icon we will use EP.

GitOrigin-RevId: 3cd0ad9f8da4a69739c8f632a6305ddd7c29d62d
This commit is contained in:
Ilya.Kazakevich
2025-11-24 16:35:26 +00:00
committed by intellij-monorepo-bot
parent 0549092e09
commit 434590383d
55 changed files with 235 additions and 161 deletions
+2
View File
@@ -70,6 +70,7 @@ jvm_library(
"//python/python-sdk-configurator/common",
"//python/python-sdk-ui:sdk-ui",
"//python/python-exec-service/execService.python",
"//python/impl.uv",
],
runtime_deps = ["//python/python-features-trainer:featuresTrainer"],
plugins = ["@lib//:compose-plugin"]
@@ -147,6 +148,7 @@ jvm_library(
"//python/python-sdk-ui:sdk-ui",
"//python/python-exec-service/execService.python",
"//python/python-exec-service/execService.python:execService.python_test_lib",
"//python/impl.uv",
],
plugins = ["@lib//:compose-plugin"]
)
@@ -84,5 +84,6 @@
<orderEntry type="module" module-name="intellij.python.sdkConfigurator.common" />
<orderEntry type="module" module-name="intellij.python.sdk.ui" />
<orderEntry type="module" module-name="intellij.python.community.execService.python" />
<orderEntry type="module" module-name="intellij.python.community.impl.uv" />
</component>
</module>
@@ -10,13 +10,13 @@ import com.intellij.python.hatch.HatchVirtualEnvironment
import com.intellij.python.hatch.PythonVirtualEnvironment
import com.intellij.python.hatch.cli.HatchEnvironment
import com.intellij.python.hatch.getHatchService
import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons
import com.intellij.python.hatch.impl.HATCH_TOOL_ID
import com.intellij.python.hatch.impl.HATCH_UI_INFO
import com.jetbrains.python.PyToolUIInfo
import com.jetbrains.python.ToolId
import com.jetbrains.python.errorProcessing.PyResult
import com.jetbrains.python.getOrLogException
import com.jetbrains.python.hatch.sdk.createSdk
import com.jetbrains.python.projectModel.hatch.HATCH_TOOL_ID
import com.jetbrains.python.sdk.configuration.*
import com.jetbrains.python.util.runWithModalBlockingOrInBackground
import org.jetbrains.annotations.ApiStatus
@@ -27,7 +27,7 @@ class PyHatchSdkConfiguration : PyProjectTomlConfigurationExtension {
private val LOGGER = Logger.getInstance(PyHatchSdkConfiguration::class.java)
}
override val toolInfo: PyToolUIInfo = PyToolUIInfo("Hatch", PythonSdkUIIcons.Tools.Hatch)
override val toolInfo: PyToolUIInfo = HATCH_UI_INFO
override val toolId: ToolId = HATCH_TOOL_ID
override suspend fun checkEnvironmentAndPrepareSdkCreator(module: Module): CreateSdkInfo? = prepareSdkCreator(
@@ -12,6 +12,8 @@ import com.intellij.platform.ide.progress.withBackgroundProgress
import com.intellij.platform.util.progress.reportRawProgress
import com.intellij.pycharm.community.ide.impl.PyCharmCommunityCustomizationBundle
import com.intellij.pycharm.community.ide.impl.findEnvOrNull
import com.intellij.python.community.impl.poetry.impl.POETRY_TOOL_ID
import com.intellij.python.community.impl.poetry.impl.POETRY_UI_INFO
import com.intellij.python.pyproject.PyProjectToml
import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons
import com.jetbrains.python.PyBundle
@@ -20,7 +22,6 @@ import com.jetbrains.python.ToolId
import com.jetbrains.python.errorProcessing.PyResult
import com.jetbrains.python.poetry.findPoetryLock
import com.jetbrains.python.poetry.getPyProjectTomlForPoetry
import com.jetbrains.python.projectModel.poetry.POETRY_TOOL_ID
import com.jetbrains.python.sdk.PythonSdkType
import com.jetbrains.python.sdk.basePath
import com.jetbrains.python.sdk.configuration.*
@@ -42,7 +43,7 @@ class PyPoetrySdkConfiguration : PyProjectTomlConfigurationExtension {
private val LOGGER = Logger.getInstance(PyPoetrySdkConfiguration::class.java)
}
override val toolInfo: PyToolUIInfo = PyToolUIInfo("Poetry", PythonSdkUIIcons.Tools.Poetry)
override val toolInfo: PyToolUIInfo = POETRY_UI_INFO
override val toolId: ToolId = POETRY_TOOL_ID
override suspend fun checkEnvironmentAndPrepareSdkCreator(module: Module): CreateSdkInfo? = prepareSdkCreator(
@@ -10,6 +10,8 @@ import com.intellij.openapi.util.io.toNioPathOrNull
import com.intellij.openapi.vfs.readText
import com.intellij.pycharm.community.ide.impl.PyCharmCommunityCustomizationBundle
import com.intellij.pycharm.community.ide.impl.findEnvOrNull
import com.intellij.python.community.impl.uv.UV_TOOL_ID
import com.intellij.python.community.impl.uv.UV_UI_INFO
import com.intellij.python.pyproject.PyProjectToml
import com.intellij.python.pyproject.model.api.SuggestedSdk
import com.intellij.python.pyproject.model.api.suggestSdk
@@ -19,7 +21,6 @@ import com.jetbrains.python.ToolId
import com.jetbrains.python.errorProcessing.PyResult
import com.jetbrains.python.getOrLogException
import com.jetbrains.python.onSuccess
import com.jetbrains.python.projectModel.uv.UV_TOOL_ID
import com.jetbrains.python.sdk.*
import com.jetbrains.python.sdk.configuration.*
import com.jetbrains.python.sdk.legacy.PythonSdkUtil
@@ -40,7 +41,7 @@ class PyUvSdkConfiguration : PyProjectTomlConfigurationExtension {
private val existingSdks by lazy { PythonSdkUtil.getAllSdks() }
private val context = UserDataHolderBase()
override val toolInfo: PyToolUIInfo = PyToolUIInfo("uv", PythonSdkUIIcons.Tools.UV)
override val toolInfo: PyToolUIInfo = UV_UI_INFO
override val toolId: ToolId = UV_TOOL_ID
override suspend fun checkEnvironmentAndPrepareSdkCreator(module: Module): CreateSdkInfo? = prepareSdkCreator(