From a1b92b2591d45d466844298177bfb55989b21cb8 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Thu, 16 Oct 2025 06:33:15 +0200 Subject: [PATCH] [python] PY-79486: (WIP) split pyproject.toml tools into backend/common. Each tool (uv, poetry) now has `common` and `backend` part. `common` has icons because we need them both on the front and on the back. We might need to create `front` module also if we wouldn't be able to use icons in compose. GitOrigin-RevId: 560b5aa67e4e747a1653ad6e4f780301a3fae289 --- .idea/modules.xml | 6 +++-- build/bazel-generated-file-list.txt | 6 +++-- python/BUILD.bazel | 5 ++-- python/aliasProvider/BUILD.bazel | 1 - ...ntellij.python.community.aliasProvider.iml | 1 - ...ntellij.python.community.aliasProvider.xml | 2 +- .../resources/intellij.python.common.xml | 3 +++ .../python => common/src/tools}/ToolId.kt | 2 +- python/common/src/tools/api.kt | 10 +++++++ .../src/tools}/package-info.java | 2 +- .../src/tools/spi/ToolIdToIconMapper.kt | 15 +++++++++++ .../src/tools/spi}/package-info.java | 2 +- .../src/welcomeScreen/package-info.java | 5 ++++ python/ide/impl/BUILD.bazel | 8 +++--- .../intellij.pycharm.community.ide.impl.iml | 4 +-- .../intellij.pycharm.community.ide.impl.xml | 2 ++ .../conda/PyEnvironmentYmlSdkConfiguration.kt | 6 ++--- .../configuration/PyHatchSdkConfiguration.kt | 4 +-- .../PyPipfileSdkConfiguration.kt | 6 ++--- .../configuration/PyPoetrySdkConfiguration.kt | 7 ++--- ...equirementsTxtOrSetupPySdkConfiguration.kt | 2 +- .../configuration/PyUvSdkConfiguration.kt | 7 ++--- .../configuration/PyVenvSdkConfiguration.kt | 3 +-- python/intellij.python.community.impl.iml | 5 ++-- python/junit5Tests-framework/BUILD.bazel | 2 +- ...python.community.junit5Tests.framework.iml | 2 +- .../env/impl/VanillaPythonEnvExtension.kt | 2 +- ....community.junit5Tests.framework._test.xml | 1 + python/pluginCore/plugin-content.yaml | 14 +++++++--- .../pluginCore/resources/META-INF/plugin.xml | 8 +++--- .../intellij.python.community.impl.xml | 5 ++-- .../impl/poetry/impl/package-info.java | 5 ---- python/python-hatch/BUILD.bazel | 1 + python/python-hatch/intellij.python.hatch.iml | 1 + .../resources/intellij.python.hatch.xml | 4 +++ .../python/hatch/impl/HatchIdMapper.kt | 11 ++++++++ .../intellij/python/hatch/impl/HatchTool.kt | 2 +- python/python-poetry/backend/BUILD.bazel | 26 +++++++++++++++++++ ....python.community.impl.poetry.backend.iml} | 7 ++--- ....python.community.impl.poetry.backend.xml} | 5 +++- .../impl/poetry/backend}/PoetryTool.kt | 14 +++++----- .../impl/poetry/backend/package-info.java | 5 ++++ python/python-poetry/common/BUILD.bazel | 24 +++++++++++++++++ ...PythonCommunityImplPoetryCommonIcons.java} | 8 +++--- ...ij.python.community.impl.poetry.common.iml | 18 +++++++++++++ .../impl/poetry/common}/expui/poetry.svg | 0 ...ij.python.community.impl.poetry.common.xml | 8 ++++++ .../common/src/impl/PoetryToolIdMapper.kt | 13 ++++++++++ .../common/src/impl/package-info.java | 5 ++++ .../common/src/package-info.java | 5 ++++ .../common/src/poetryId.kt} | 10 ++++--- python/python-pyproject/BUILD.bazel | 2 ++ ...ProjectTomlWorkspaceEntityModifications.kt | 2 +- .../internal/impl/MetadataStorageImpl.kt | 6 ++--- .../impl/PyProjectTomlWorkspaceEntityImpl.kt | 2 +- .../intellij.python.pyproject.iml | 1 + .../resources/intellij.python.pyproject.xml | 1 + .../pyproject/model/api/sdkSuggestionTools.kt | 2 +- .../internal/PyProjectTomlWorkspaceEntity.kt | 2 +- .../model/internal/workspaceTools.kt | 2 +- .../python/pyproject/model/spi/Tool.kt | 2 +- .../backend/BUILD.bazel | 1 + ...ntellij.python.sdkConfigurator.backend.iml | 1 + ...ntellij.python.sdkConfigurator.backend.xml | 1 + python/python-sdk-ui/BUILD.bazel | 4 +-- .../python-sdk-ui/intellij.python.sdk.ui.iml | 4 +-- .../resources/intellij.python.sdk.ui.xml | 4 +-- .../tool/poetry/sdk/PoetryEvoSdkManager.kt | 8 +++--- .../sdk/ui/evolution/ui/autoconfiguration.kt | 5 ++-- python/python-sdk/BUILD.bazel | 2 ++ python/python-sdk/intellij.python.sdk.iml | 1 + .../resources/intellij.python.sdk.xml | 1 + .../PyProjectSdkConfigurationExtension.kt | 2 +- .../PyProjectTomlConfigurationExtension.kt | 1 - .../{poetry => python-uv/backend}/BUILD.bazel | 25 +++++++++--------- ...llij.python.community.impl.uv.backend.iml} | 10 +++---- ...llij.python.community.impl.uv.backend.xml} | 5 +++- .../community/impl/uv/backend}/UvTool.kt | 11 +++----- .../impl/uv/backend/package-info.java | 5 ++++ .../{impl.uv => python-uv/common}/BUILD.bazel | 18 ++++++------- .../PythonCommunityImplUVCommonIcons.java} | 8 +++--- ...tellij.python.community.impl.uv.common.iml | 18 +++++++++++++ .../community/impl/uv/common}/expui/uv.svg | 0 ...tellij.python.community.impl.uv.common.xml | 10 +++++++ .../common/src/impl/UvToolIdMapper.kt | 13 ++++++++++ .../common/src/impl/package-info.java | 5 ++++ python/python-uv/common/src/package-info.java | 5 ++++ python/python-uv/common/src/uvId.kt | 11 ++++++++ .../com/jetbrains/python/sdk/add/v2/common.kt | 8 +++--- .../add/v2/poetry/EnvironmentCreatorPoetry.kt | 2 +- .../sdk/poetry/PoetryCommandExecutor.kt | 2 +- .../python/sdk/poetry/PoetrySdkProvider.kt | 4 +-- .../python/sdk/poetry/PyPoetrySdkFlavor.kt | 4 +-- .../python/sdk/uv/UvSdkFlavorAndData.kt | 4 +-- .../jetbrains/python/sdk/uv/UvSdkProvider.kt | 4 +-- .../python/sdk/uv/UvSystemPythonProvider.kt | 4 ++- .../sdk/uv/run/UvRunConfigurationType.kt | 4 +-- .../uv/sdk/evolution/UvSelectSdkProvider.kt | 4 +-- 98 files changed, 395 insertions(+), 166 deletions(-) rename python/{openapi/src/com/jetbrains/python => common/src/tools}/ToolId.kt (88%) create mode 100644 python/common/src/tools/api.kt rename python/{impl.uv/src => common/src/tools}/package-info.java (79%) create mode 100644 python/common/src/tools/spi/ToolIdToIconMapper.kt rename python/{poetry/src/com/intellij/python/community/impl/poetry => common/src/tools/spi}/package-info.java (78%) create mode 100644 python/common/src/welcomeScreen/package-info.java delete mode 100644 python/poetry/src/com/intellij/python/community/impl/poetry/impl/package-info.java create mode 100644 python/python-hatch/src/com/intellij/python/hatch/impl/HatchIdMapper.kt create mode 100644 python/python-poetry/backend/BUILD.bazel rename python/{poetry/intellij.python.community.impl.poetry.iml => python-poetry/backend/intellij.python.community.impl.poetry.backend.iml} (70%) rename python/{poetry/resources/intellij.python.community.impl.poetry.xml => python-poetry/backend/resources/intellij.python.community.impl.poetry.backend.xml} (68%) rename python/{poetry/src/com/intellij/python/community/impl/poetry/impl => python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend}/PoetryTool.kt (73%) create mode 100644 python/python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend/package-info.java create mode 100644 python/python-poetry/common/BUILD.bazel rename python/{poetry/gen/com/intellij/python/community/impl/poetry/icons/PythonCommunityImplPoetryIcons.java => python-poetry/common/gen/com/intellij/python/community/impl/poetry/common/icons/PythonCommunityImplPoetryCommonIcons.java} (68%) create mode 100644 python/python-poetry/common/intellij.python.community.impl.poetry.common.iml rename python/{poetry/resources/icons/com/intellij/python/community/impl/poetry => python-poetry/common/resources/icons/intellij/python/community/impl/poetry/common}/expui/poetry.svg (100%) create mode 100644 python/python-poetry/common/resources/intellij.python.community.impl.poetry.common.xml create mode 100644 python/python-poetry/common/src/impl/PoetryToolIdMapper.kt create mode 100644 python/python-poetry/common/src/impl/package-info.java create mode 100644 python/python-poetry/common/src/package-info.java rename python/{poetry/src/com/intellij/python/community/impl/poetry/path.kt => python-poetry/common/src/poetryId.kt} (71%) rename python/{poetry => python-uv/backend}/BUILD.bazel (58%) rename python/{impl.uv/intellij.python.community.impl.uv.iml => python-uv/backend/intellij.python.community.impl.uv.backend.iml} (80%) rename python/{impl.uv/resources/intellij.python.community.impl.uv.xml => python-uv/backend/resources/intellij.python.community.impl.uv.backend.xml} (69%) rename python/{impl.uv/src => python-uv/backend/src/com/intellij/python/community/impl/uv/backend}/UvTool.kt (94%) create mode 100644 python/python-uv/backend/src/com/intellij/python/community/impl/uv/backend/package-info.java rename python/{impl.uv => python-uv/common}/BUILD.bazel (68%) rename python/{impl.uv/gen/com/intellij/python/community/impl/uv/icons/PythonCommunityImplUVIcons.java => python-uv/common/gen/com/intellij/python/community/impl/uv/common/icons/PythonCommunityImplUVCommonIcons.java} (69%) create mode 100644 python/python-uv/common/intellij.python.community.impl.uv.common.iml rename python/{impl.uv/resources/images/com/intellij/python/community/impl/uv => python-uv/common/resources/images/intellij/python/community/impl/uv/common}/expui/uv.svg (100%) create mode 100644 python/python-uv/common/resources/intellij.python.community.impl.uv.common.xml create mode 100644 python/python-uv/common/src/impl/UvToolIdMapper.kt create mode 100644 python/python-uv/common/src/impl/package-info.java create mode 100644 python/python-uv/common/src/package-info.java create mode 100644 python/python-uv/common/src/uvId.kt diff --git a/.idea/modules.xml b/.idea/modules.xml index 9b8eb2fc5061..6dd43a770cfb 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -1369,8 +1369,10 @@ - - + + + + diff --git a/build/bazel-generated-file-list.txt b/build/bazel-generated-file-list.txt index 46efbf3627a3..914a70f4bf74 100644 --- a/build/bazel-generated-file-list.txt +++ b/build/bazel-generated-file-list.txt @@ -1417,7 +1417,6 @@ python/ide/impl python/ide/impl/intellij.pycharm.community.ide.impl.promotion python/ide/implTraining/intellij.pycharm.community.ide.implTraining python/impl.helperLocator -python/impl.uv python/installer python/intellij.python.community.communityOnly python/intellij.python.ml.features @@ -1431,7 +1430,6 @@ python/pluginCore/impl python/pluginJava python/pluginMinor python/pluginMinorRider -python/poetry python/python-ast python/python-copyright python/python-core-impl @@ -1442,6 +1440,8 @@ python/python-grazie python/python-hatch python/python-markdown python/python-parser +python/python-poetry/backend +python/python-poetry/common python/python-process-output python/python-process-output/impl python/python-psi-api @@ -1456,6 +1456,8 @@ python/python-sdk-ui python/python-syntax python/python-syntax-core python/python-terminal +python/python-uv/backend +python/python-uv/common python/python-venv python/services/internal-impl python/services/shared diff --git a/python/BUILD.bazel b/python/BUILD.bazel index 82bbedc49f0e..6e631c19ca27 100644 --- a/python/BUILD.bazel +++ b/python/BUILD.bazel @@ -330,7 +330,6 @@ jvm_library( "//platform/platform-impl/remote", "//platform/platform-impl/ui", "//libraries/jackson/module-kotlin:libraries-jackson-module-kotlin", - "//python/poetry", "//python/pipenv", "//python/installer", "//platform/eel", @@ -353,9 +352,11 @@ jvm_library( "//python/python-exec-service/execService.python", "//python/interpreters", "//python/python-sdk-configurator/common", + "//python/python-poetry/common", + "//python/python-uv/common", + "//python/common", "//python/python-process-output:processOutput", "//platform/xdebugger-impl/shared", - "//python/impl.uv", ], exports = [ "//python/openapi:community", diff --git a/python/aliasProvider/BUILD.bazel b/python/aliasProvider/BUILD.bazel index 6dc9a7d92e86..5c086e3de547 100644 --- a/python/aliasProvider/BUILD.bazel +++ b/python/aliasProvider/BUILD.bazel @@ -22,7 +22,6 @@ jvm_library( "//python/python-sdk:sdk", "//python/python-sdk-ui:sdk-ui", "//python/python-pyproject:pyproject", - "//python/poetry", "//python/python-core-impl:community-core-impl", "//python/impl.helperLocator:community-helpersLocator", "//python/openapi:community", diff --git a/python/aliasProvider/intellij.python.community.aliasProvider.iml b/python/aliasProvider/intellij.python.community.aliasProvider.iml index 59024b083308..1409ec44dcb6 100644 --- a/python/aliasProvider/intellij.python.community.aliasProvider.iml +++ b/python/aliasProvider/intellij.python.community.aliasProvider.iml @@ -16,7 +16,6 @@ - diff --git a/python/aliasProvider/resources/intellij.python.community.aliasProvider.xml b/python/aliasProvider/resources/intellij.python.community.aliasProvider.xml index 3ac13ef996c1..a0056a189ef7 100644 --- a/python/aliasProvider/resources/intellij.python.community.aliasProvider.xml +++ b/python/aliasProvider/resources/intellij.python.community.aliasProvider.xml @@ -9,7 +9,7 @@ - + diff --git a/python/common/resources/intellij.python.common.xml b/python/common/resources/intellij.python.common.xml index aa52f3dbdcd0..5b1fe57efc0e 100644 --- a/python/common/resources/intellij.python.common.xml +++ b/python/common/resources/intellij.python.common.xml @@ -1,2 +1,5 @@ + + + diff --git a/python/openapi/src/com/jetbrains/python/ToolId.kt b/python/common/src/tools/ToolId.kt similarity index 88% rename from python/openapi/src/com/jetbrains/python/ToolId.kt rename to python/common/src/tools/ToolId.kt index 87d1ca565888..3ecfca15a69c 100644 --- a/python/openapi/src/com/jetbrains/python/ToolId.kt +++ b/python/common/src/tools/ToolId.kt @@ -1,5 +1,5 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.jetbrains.python +package com.intellij.python.common.tools import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.NonNls diff --git a/python/common/src/tools/api.kt b/python/common/src/tools/api.kt new file mode 100644 index 000000000000..13fb14a4007a --- /dev/null +++ b/python/common/src/tools/api.kt @@ -0,0 +1,10 @@ +package com.intellij.python.common.tools + +import com.intellij.python.common.tools.spi.ToolIdToIconMapper +import javax.swing.Icon + + +/** + * Get icon for certain tool id + */ +fun getIcon(id: ToolId): Icon? = ToolIdToIconMapper.EP.extensionList.firstOrNull { it.id == id }?.icon \ No newline at end of file diff --git a/python/impl.uv/src/package-info.java b/python/common/src/tools/package-info.java similarity index 79% rename from python/impl.uv/src/package-info.java rename to python/common/src/tools/package-info.java index e0aec686c1af..26db1b5af020 100644 --- a/python/impl.uv/src/package-info.java +++ b/python/common/src/tools/package-info.java @@ -1,5 +1,5 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. @ApiStatus.Internal -package com.intellij.python.community.impl.uv; +package com.intellij.python.common.tools; import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/common/src/tools/spi/ToolIdToIconMapper.kt b/python/common/src/tools/spi/ToolIdToIconMapper.kt new file mode 100644 index 000000000000..819f494eea79 --- /dev/null +++ b/python/common/src/tools/spi/ToolIdToIconMapper.kt @@ -0,0 +1,15 @@ +// 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.common.tools.spi + +import com.intellij.openapi.extensions.ExtensionPointName +import com.intellij.python.common.tools.ToolId +import javax.swing.Icon + +interface ToolIdToIconMapper { + val id: ToolId + val icon: Icon + + companion object { + internal val EP = ExtensionPointName.create("com.intellij.python.common.toolToIconMapper") + } +} \ No newline at end of file diff --git a/python/poetry/src/com/intellij/python/community/impl/poetry/package-info.java b/python/common/src/tools/spi/package-info.java similarity index 78% rename from python/poetry/src/com/intellij/python/community/impl/poetry/package-info.java rename to python/common/src/tools/spi/package-info.java index 1fa4a1f3d36b..8b5b19d508a1 100644 --- a/python/poetry/src/com/intellij/python/community/impl/poetry/package-info.java +++ b/python/common/src/tools/spi/package-info.java @@ -1,5 +1,5 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. @ApiStatus.Internal -package com.intellij.python.community.impl.poetry; +package com.intellij.python.common.tools.spi; import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/common/src/welcomeScreen/package-info.java b/python/common/src/welcomeScreen/package-info.java new file mode 100644 index 000000000000..047c8d29e066 --- /dev/null +++ b/python/common/src/welcomeScreen/package-info.java @@ -0,0 +1,5 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +@ApiStatus.Internal +package com.intellij.python.common.welcomeScreen; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/ide/impl/BUILD.bazel b/python/ide/impl/BUILD.bazel index 92548c368b5b..cff22a94c38d 100644 --- a/python/ide/impl/BUILD.bazel +++ b/python/ide/impl/BUILD.bazel @@ -56,7 +56,6 @@ jvm_library( "//platform/eel", "//platform/eel-provider", "//python/services/shared", - "//python/poetry", "//python/pipenv", "//python/python-venv:community-impl-venv", "@lib//:jetbrains-annotations", @@ -69,8 +68,9 @@ jvm_library( "//python/python-exec-service:community-execService", "//python/python-sdk-configurator/common", "//python/python-sdk-ui:sdk-ui", + "//python/python-poetry/common", + "//python/python-uv/common", "//python/python-exec-service/execService.python", - "//python/impl.uv", ], runtime_deps = ["//python/python-features-trainer:featuresTrainer"], plugins = ["@lib//:compose-plugin"] @@ -127,7 +127,6 @@ jvm_library( "//platform/eel-provider", "//python/services/shared", "//python/services/shared:shared_test_lib", - "//python/poetry", "//python/pipenv", "//python/python-venv:community-impl-venv", "//python/python-venv:community-impl-venv_test_lib", @@ -146,9 +145,10 @@ jvm_library( "//python/python-exec-service:community-execService_test_lib", "//python/python-sdk-configurator/common", "//python/python-sdk-ui:sdk-ui", + "//python/python-poetry/common", + "//python/python-uv/common", "//python/python-exec-service/execService.python", "//python/python-exec-service/execService.python:execService.python_test_lib", - "//python/impl.uv", ], plugins = ["@lib//:compose-plugin"] ) diff --git a/python/ide/impl/intellij.pycharm.community.ide.impl.iml b/python/ide/impl/intellij.pycharm.community.ide.impl.iml index a5794f5bcb96..c49233be7614 100644 --- a/python/ide/impl/intellij.pycharm.community.ide.impl.iml +++ b/python/ide/impl/intellij.pycharm.community.ide.impl.iml @@ -68,7 +68,6 @@ - @@ -83,7 +82,8 @@ + + - \ No newline at end of file diff --git a/python/ide/impl/resources/intellij.pycharm.community.ide.impl.xml b/python/ide/impl/resources/intellij.pycharm.community.ide.impl.xml index 3525e2a0d7c1..6d02fef7410a 100644 --- a/python/ide/impl/resources/intellij.pycharm.community.ide.impl.xml +++ b/python/ide/impl/resources/intellij.pycharm.community.ide.impl.xml @@ -8,6 +8,8 @@ + + diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/conda/PyEnvironmentYmlSdkConfiguration.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/conda/PyEnvironmentYmlSdkConfiguration.kt index 2a7b079219f4..28286144b039 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/conda/PyEnvironmentYmlSdkConfiguration.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/conda/PyEnvironmentYmlSdkConfiguration.kt @@ -19,13 +19,11 @@ import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationC import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationCollector.Source import com.intellij.pycharm.community.ide.impl.configuration.ui.PyAddNewCondaEnvFromFilePanel import com.intellij.pycharm.community.ide.impl.findEnvOrNull +import com.intellij.python.common.tools.ToolId import com.intellij.python.community.execService.BinOnEel -import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons import com.intellij.util.FileName import com.intellij.util.concurrency.annotations.RequiresBackgroundThread import com.jetbrains.python.PyBundle -import com.jetbrains.python.PyToolUIInfo -import com.jetbrains.python.ToolId import com.jetbrains.python.configuration.PyConfigurableInterpreterList import com.jetbrains.python.errorProcessing.PyResult import com.jetbrains.python.getOrNull @@ -68,7 +66,7 @@ class PyEnvironmentYmlSdkConfiguration : PyProjectSdkConfigurationExtension { override val toolId: ToolId = ToolId("Conda") override suspend fun checkEnvironmentAndPrepareSdkCreator(module: Module): CreateSdkInfo? = prepareSdkCreator( - { checkManageableEnv(module, it) } + { checkManageableEnv(module, it) } ) { envExists -> { needsConfirmation -> createAndAddSdk(module, if (needsConfirmation) Source.CONFIGURATOR else Source.INSPECTION, envExists) } } diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyHatchSdkConfiguration.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyHatchSdkConfiguration.kt index 6a19428a75a4..6e812f5acc98 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyHatchSdkConfiguration.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyHatchSdkConfiguration.kt @@ -6,14 +6,12 @@ import com.intellij.openapi.module.Module import com.intellij.openapi.projectRoots.Sdk import com.intellij.platform.util.progress.reportRawProgress import com.intellij.pycharm.community.ide.impl.PyCharmCommunityCustomizationBundle +import com.intellij.python.common.tools.ToolId 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.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 diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPipfileSdkConfiguration.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPipfileSdkConfiguration.kt index 97ade8482067..b67b306e11d3 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPipfileSdkConfiguration.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPipfileSdkConfiguration.kt @@ -17,15 +17,13 @@ import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationC import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationCollector.PipEnvResult import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationCollector.Source import com.intellij.pycharm.community.ide.impl.findEnvOrNull +import com.intellij.python.common.tools.ToolId import com.intellij.python.community.execService.ZeroCodeStdoutParserTransformer import com.intellij.python.community.impl.pipenv.pipenvPath -import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons import com.intellij.ui.IdeBorderFactory import com.intellij.ui.components.JBLabel import com.intellij.util.ui.JBUI import com.jetbrains.python.PyBundle -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.sdk.PythonSdkType @@ -57,7 +55,7 @@ class PyPipfileSdkConfiguration : PyProjectSdkConfigurationExtension { override val toolId: ToolId = ToolId("pipenv") override suspend fun checkEnvironmentAndPrepareSdkCreator(module: Module): CreateSdkInfo? = prepareSdkCreator( - { checkManageableEnv(module, it) } + { checkManageableEnv(module, it) } ) { envExists -> { needsConfirmation -> createAndAddSdk(module, if (needsConfirmation) Source.CONFIGURATOR else Source.INSPECTION, envExists) } } diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPoetrySdkConfiguration.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPoetrySdkConfiguration.kt index 41a0dc8e0313..2fbdee838f0d 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPoetrySdkConfiguration.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyPoetrySdkConfiguration.kt @@ -12,13 +12,10 @@ 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.common.tools.ToolId +import com.intellij.python.community.impl.poetry.common.POETRY_TOOL_ID import com.intellij.python.pyproject.PyProjectToml -import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons import com.jetbrains.python.PyBundle -import com.jetbrains.python.PyToolUIInfo -import com.jetbrains.python.ToolId import com.jetbrains.python.errorProcessing.PyResult import com.jetbrains.python.poetry.findPoetryLock import com.jetbrains.python.poetry.getPyProjectTomlForPoetry diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyRequirementsTxtOrSetupPySdkConfiguration.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyRequirementsTxtOrSetupPySdkConfiguration.kt index dbb0bdfb2743..3070e7d5c73e 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyRequirementsTxtOrSetupPySdkConfiguration.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyRequirementsTxtOrSetupPySdkConfiguration.kt @@ -21,10 +21,10 @@ import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationC import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationCollector.Source import com.intellij.pycharm.community.ide.impl.configuration.PySdkConfigurationCollector.VirtualEnvResult import com.intellij.pycharm.community.ide.impl.configuration.ui.PyAddNewVirtualEnvFromFilePanel +import com.intellij.python.common.tools.ToolId import com.intellij.ui.IdeBorderFactory import com.intellij.ui.components.JBLabel import com.intellij.util.ui.JBUI -import com.jetbrains.python.ToolId import com.jetbrains.python.errorProcessing.PyResult import com.jetbrains.python.packaging.PyPackageUtil import com.jetbrains.python.packaging.management.PythonPackageManager diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyUvSdkConfiguration.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyUvSdkConfiguration.kt index 61e983d839b3..33a6b503b839 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyUvSdkConfiguration.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyUvSdkConfiguration.kt @@ -10,14 +10,11 @@ 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.common.tools.ToolId +import com.intellij.python.community.impl.uv.common.UV_TOOL_ID import com.intellij.python.pyproject.PyProjectToml import com.intellij.python.pyproject.model.api.SuggestedSdk import com.intellij.python.pyproject.model.api.suggestSdk -import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons -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.onSuccess diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyVenvSdkConfiguration.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyVenvSdkConfiguration.kt index 48a3805988ab..d6bc5b791afa 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyVenvSdkConfiguration.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/configuration/PyVenvSdkConfiguration.kt @@ -7,9 +7,8 @@ import com.intellij.openapi.util.UserDataHolderBase import com.intellij.platform.ide.progress.withBackgroundProgress import com.intellij.pycharm.community.ide.impl.PyCharmCommunityCustomizationBundle import com.intellij.pycharm.community.ide.impl.findEnvOrNull +import com.intellij.python.common.tools.ToolId import com.jetbrains.python.PyBundle -import com.jetbrains.python.PyToolUIInfo -import com.jetbrains.python.ToolId import com.jetbrains.python.errorProcessing.MessageError import com.jetbrains.python.errorProcessing.PyResult import com.jetbrains.python.sdk.* diff --git a/python/intellij.python.community.impl.iml b/python/intellij.python.community.impl.iml index 1b389d127b30..0c6d4cae69a1 100644 --- a/python/intellij.python.community.impl.iml +++ b/python/intellij.python.community.impl.iml @@ -167,7 +167,6 @@ - @@ -190,8 +189,10 @@ + + + - \ No newline at end of file diff --git a/python/junit5Tests-framework/BUILD.bazel b/python/junit5Tests-framework/BUILD.bazel index 9d7912cc72df..07b22fd1907a 100644 --- a/python/junit5Tests-framework/BUILD.bazel +++ b/python/junit5Tests-framework/BUILD.bazel @@ -55,11 +55,11 @@ jvm_library( "//platform/util/coroutines", "//python/openapi:community", "//python/openapi:community_test_lib", - "//python/poetry", "//python/pipenv", "//python/setup-test-environment:community-testFramework-testEnv", "//python/python-sdk:sdk", "//python/python-sdk:sdk_test_lib", + "//python/python-poetry/common", ], exports = [ "//libraries/system-stubs-jupiter", diff --git a/python/junit5Tests-framework/intellij.python.community.junit5Tests.framework.iml b/python/junit5Tests-framework/intellij.python.community.junit5Tests.framework.iml index 482a2b2407cf..7e07f5616fcc 100644 --- a/python/junit5Tests-framework/intellij.python.community.junit5Tests.framework.iml +++ b/python/junit5Tests-framework/intellij.python.community.junit5Tests.framework.iml @@ -38,10 +38,10 @@ - + \ No newline at end of file diff --git a/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/impl/VanillaPythonEnvExtension.kt b/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/impl/VanillaPythonEnvExtension.kt index 62490a9f8465..b363e584cb93 100644 --- a/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/impl/VanillaPythonEnvExtension.kt +++ b/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/impl/VanillaPythonEnvExtension.kt @@ -6,7 +6,7 @@ import com.intellij.execution.process.CapturingProcessHandler import com.intellij.execution.process.ProcessNotCreatedException import com.intellij.ide.util.PropertiesComponent import com.intellij.python.community.impl.pipenv.pipenvPath -import com.intellij.python.community.impl.poetry.poetryPath +import com.intellij.python.community.impl.poetry.common.poetryPath import com.intellij.python.community.testFramework.testEnv.PythonType import com.intellij.python.community.testFramework.testEnv.TypeVanillaPython3 import com.intellij.python.junit5Tests.framework.env.PythonBinaryPath diff --git a/python/junit5Tests-framework/testResources/intellij.python.community.junit5Tests.framework._test.xml b/python/junit5Tests-framework/testResources/intellij.python.community.junit5Tests.framework._test.xml index cc49c32a842d..734212fbc3b1 100644 --- a/python/junit5Tests-framework/testResources/intellij.python.community.junit5Tests.framework._test.xml +++ b/python/junit5Tests-framework/testResources/intellij.python.community.junit5Tests.framework._test.xml @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/python/pluginCore/plugin-content.yaml b/python/pluginCore/plugin-content.yaml index bc88b7d6028f..13b335244bd7 100644 --- a/python/pluginCore/plugin-content.yaml +++ b/python/pluginCore/plugin-content.yaml @@ -63,12 +63,18 @@ - name: lib/modules/intellij.python.community.impl.pipenv.jar contentModules: - name: intellij.python.community.impl.pipenv -- name: lib/modules/intellij.python.community.impl.poetry.jar +- name: lib/modules/intellij.python.community.impl.poetry.backend.jar contentModules: - - name: intellij.python.community.impl.poetry -- name: lib/modules/intellij.python.community.impl.uv.jar + - name: intellij.python.community.impl.poetry.backend +- name: lib/modules/intellij.python.community.impl.poetry.common.jar contentModules: - - name: intellij.python.community.impl.uv + - name: intellij.python.community.impl.poetry.common +- name: lib/modules/intellij.python.community.impl.uv.backend.jar + contentModules: + - name: intellij.python.community.impl.uv.backend +- name: lib/modules/intellij.python.community.impl.uv.common.jar + contentModules: + - name: intellij.python.community.impl.uv.common - name: lib/modules/intellij.python.community.impl.venv.jar contentModules: - name: intellij.python.community.impl.venv diff --git a/python/pluginCore/resources/META-INF/plugin.xml b/python/pluginCore/resources/META-INF/plugin.xml index b240da25bfef..012698bf5ceb 100644 --- a/python/pluginCore/resources/META-INF/plugin.xml +++ b/python/pluginCore/resources/META-INF/plugin.xml @@ -25,6 +25,7 @@ The Python plug-in provides smart editing for Python scripts. The feature set of + @@ -37,8 +38,10 @@ The Python plug-in provides smart editing for Python scripts. The feature set of - - + + + + @@ -72,7 +75,6 @@ The Python plug-in provides smart editing for Python scripts. The feature set of - diff --git a/python/pluginResources/intellij.python.community.impl.xml b/python/pluginResources/intellij.python.community.impl.xml index bb676ec0059d..ff6a092a3b29 100644 --- a/python/pluginResources/intellij.python.community.impl.xml +++ b/python/pluginResources/intellij.python.community.impl.xml @@ -4,13 +4,14 @@ + - - + + diff --git a/python/poetry/src/com/intellij/python/community/impl/poetry/impl/package-info.java b/python/poetry/src/com/intellij/python/community/impl/poetry/impl/package-info.java deleted file mode 100644 index 2c5b27d37ea2..000000000000 --- a/python/poetry/src/com/intellij/python/community/impl/poetry/impl/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -@Internal -package com.intellij.python.community.impl.poetry.impl; - -import static org.jetbrains.annotations.ApiStatus.Internal; diff --git a/python/python-hatch/BUILD.bazel b/python/python-hatch/BUILD.bazel index 09214fc27989..14d29f700737 100644 --- a/python/python-hatch/BUILD.bazel +++ b/python/python-hatch/BUILD.bazel @@ -37,6 +37,7 @@ jvm_library( "//libraries/kotlinx/serialization/core", "@lib//:io-github-z4kn4fein-semver-jvm-provided", "//python/python-sdk-ui:sdk-ui", + "//python/common", "//python/python-exec-service/execService.python", ] ) diff --git a/python/python-hatch/intellij.python.hatch.iml b/python/python-hatch/intellij.python.hatch.iml index 24c9cb057a78..7f10aba2f5e1 100644 --- a/python/python-hatch/intellij.python.hatch.iml +++ b/python/python-hatch/intellij.python.hatch.iml @@ -46,6 +46,7 @@ + \ No newline at end of file diff --git a/python/python-hatch/resources/intellij.python.hatch.xml b/python/python-hatch/resources/intellij.python.hatch.xml index 9ccc2b5e9855..626ec13dc08f 100644 --- a/python/python-hatch/resources/intellij.python.hatch.xml +++ b/python/python-hatch/resources/intellij.python.hatch.xml @@ -5,6 +5,7 @@ + @@ -16,4 +17,7 @@ + + + \ No newline at end of file diff --git a/python/python-hatch/src/com/intellij/python/hatch/impl/HatchIdMapper.kt b/python/python-hatch/src/com/intellij/python/hatch/impl/HatchIdMapper.kt new file mode 100644 index 000000000000..70a3693e935f --- /dev/null +++ b/python/python-hatch/src/com/intellij/python/hatch/impl/HatchIdMapper.kt @@ -0,0 +1,11 @@ +package com.intellij.python.hatch.impl + +import com.intellij.python.common.tools.ToolId +import com.intellij.python.common.tools.spi.ToolIdToIconMapper +import com.intellij.python.hatch.icons.PythonHatchIcons +import javax.swing.Icon + +internal class HatchIdMapper : ToolIdToIconMapper { + override val id: ToolId = HATCH_TOOL_ID + override val icon: Icon = PythonHatchIcons.Logo +} \ No newline at end of file diff --git a/python/python-hatch/src/com/intellij/python/hatch/impl/HatchTool.kt b/python/python-hatch/src/com/intellij/python/hatch/impl/HatchTool.kt index 2596679b7d6d..100cce412a4a 100644 --- a/python/python-hatch/src/com/intellij/python/hatch/impl/HatchTool.kt +++ b/python/python-hatch/src/com/intellij/python/hatch/impl/HatchTool.kt @@ -2,13 +2,13 @@ package com.intellij.python.hatch.impl import com.intellij.openapi.util.NlsSafe +import com.intellij.python.common.tools.ToolId import com.intellij.python.hatch.icons.PythonHatchIcons import com.intellij.python.pyproject.model.spi.ProjectName import com.intellij.python.pyproject.model.spi.ProjectStructureInfo import com.intellij.python.pyproject.model.spi.PyProjectTomlProject import com.intellij.python.pyproject.model.spi.Tool import com.jetbrains.python.PyToolUIInfo -import com.jetbrains.python.ToolId import com.jetbrains.python.venvReader.Directory import org.apache.tuweni.toml.TomlTable import org.jetbrains.annotations.ApiStatus diff --git a/python/python-poetry/backend/BUILD.bazel b/python/python-poetry/backend/BUILD.bazel new file mode 100644 index 000000000000..7dc7a5efae39 --- /dev/null +++ b/python/python-poetry/backend/BUILD.bazel @@ -0,0 +1,26 @@ +### auto-generated section `build intellij.python.community.impl.poetry.backend` start +load("@rules_jvm//:jvm.bzl", "jvm_library", "resourcegroup") + +resourcegroup( + name = "backend_resources", + srcs = glob(["resources/**/*"]), + strip_prefix = "resources" +) + +jvm_library( + name = "backend", + module_name = "intellij.python.community.impl.poetry.backend", + visibility = ["//visibility:public"], + srcs = glob(["src/**/*.kt", "src/**/*.java", "src/**/*.form"], allow_empty = True), + resources = [":backend_resources"], + deps = [ + "@lib//:kotlin-stdlib", + "@lib//:jetbrains-annotations", + "//python/python-poetry/common", + "//python/openapi:community", + "//python/python-pyproject:pyproject", + "//platform/util/base/multiplatform", + "//python/common", + ] +) +### auto-generated section `build intellij.python.community.impl.poetry.backend` end \ No newline at end of file diff --git a/python/poetry/intellij.python.community.impl.poetry.iml b/python/python-poetry/backend/intellij.python.community.impl.poetry.backend.iml similarity index 70% rename from python/poetry/intellij.python.community.impl.poetry.iml rename to python/python-poetry/backend/intellij.python.community.impl.poetry.backend.iml index 8894fdc646fd..9d5391cf6748 100644 --- a/python/poetry/intellij.python.community.impl.poetry.iml +++ b/python/python-poetry/backend/intellij.python.community.impl.poetry.backend.iml @@ -5,18 +5,15 @@ - - - + - - + \ No newline at end of file diff --git a/python/poetry/resources/intellij.python.community.impl.poetry.xml b/python/python-poetry/backend/resources/intellij.python.community.impl.poetry.backend.xml similarity index 68% rename from python/poetry/resources/intellij.python.community.impl.poetry.xml rename to python/python-poetry/backend/resources/intellij.python.community.impl.poetry.backend.xml index 441b07296405..a342820e198f 100644 --- a/python/poetry/resources/intellij.python.community.impl.poetry.xml +++ b/python/python-poetry/backend/resources/intellij.python.community.impl.poetry.backend.xml @@ -4,8 +4,11 @@ + + + - + \ No newline at end of file diff --git a/python/poetry/src/com/intellij/python/community/impl/poetry/impl/PoetryTool.kt b/python/python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend/PoetryTool.kt similarity index 73% rename from python/poetry/src/com/intellij/python/community/impl/poetry/impl/PoetryTool.kt rename to python/python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend/PoetryTool.kt index 6f4c8ee5b1c1..39c40f912104 100644 --- a/python/poetry/src/com/intellij/python/community/impl/poetry/impl/PoetryTool.kt +++ b/python/python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend/PoetryTool.kt @@ -1,22 +1,22 @@ // 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.impl.poetry.impl +package com.intellij.python.community.impl.poetry.backend import com.intellij.openapi.util.NlsSafe -import com.intellij.python.community.impl.poetry.icons.PythonCommunityImplPoetryIcons +import com.intellij.python.common.tools.ToolId +import com.intellij.python.community.impl.poetry.common.POETRY_TOOL_ID +import com.intellij.python.community.impl.poetry.common.icons.PythonCommunityImplPoetryCommonIcons import com.intellij.python.pyproject.model.spi.ProjectName import com.intellij.python.pyproject.model.spi.ProjectStructureInfo import com.intellij.python.pyproject.model.spi.PyProjectTomlProject import com.intellij.python.pyproject.model.spi.Tool import com.jetbrains.python.PyToolUIInfo -import com.jetbrains.python.ToolId import com.jetbrains.python.venvReader.Directory import org.apache.tuweni.toml.TomlTable -import org.jetbrains.annotations.ApiStatus -@ApiStatus.Internal -val POETRY_TOOL_ID: ToolId = ToolId("poetry") -val POETRY_UI_INFO: PyToolUIInfo = PyToolUIInfo("Poetry", PythonCommunityImplPoetryIcons.Poetry) + +private val POETRY_UI_INFO: PyToolUIInfo = PyToolUIInfo("Poetry", PythonCommunityImplPoetryCommonIcons.Poetry) + internal class PoetryTool : Tool { override val id: ToolId = POETRY_TOOL_ID diff --git a/python/python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend/package-info.java b/python/python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend/package-info.java new file mode 100644 index 000000000000..16367eda812a --- /dev/null +++ b/python/python-poetry/backend/src/com/intellij/python/community/impl/poetry/backend/package-info.java @@ -0,0 +1,5 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +@ApiStatus.Internal +package com.intellij.python.community.impl.poetry.backend; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/python-poetry/common/BUILD.bazel b/python/python-poetry/common/BUILD.bazel new file mode 100644 index 000000000000..a25753e4a931 --- /dev/null +++ b/python/python-poetry/common/BUILD.bazel @@ -0,0 +1,24 @@ +### auto-generated section `build intellij.python.community.impl.poetry.common` start +load("@rules_jvm//:jvm.bzl", "jvm_library", "resourcegroup") + +resourcegroup( + name = "common_resources", + srcs = glob(["resources/**/*"]), + strip_prefix = "resources" +) + +jvm_library( + name = "common", + module_name = "intellij.python.community.impl.poetry.common", + visibility = ["//visibility:public"], + srcs = glob(["gen/**/*.kt", "gen/**/*.java", "src/**/*.kt", "src/**/*.java", "src/**/*.form"], allow_empty = True), + resources = [":common_resources"], + deps = [ + "@lib//:kotlin-stdlib", + "@lib//:jetbrains-annotations", + "//platform/core-api:core", + "//platform/util", + "//python/common", + ] +) +### auto-generated section `build intellij.python.community.impl.poetry.common` end \ No newline at end of file diff --git a/python/poetry/gen/com/intellij/python/community/impl/poetry/icons/PythonCommunityImplPoetryIcons.java b/python/python-poetry/common/gen/com/intellij/python/community/impl/poetry/common/icons/PythonCommunityImplPoetryCommonIcons.java similarity index 68% rename from python/poetry/gen/com/intellij/python/community/impl/poetry/icons/PythonCommunityImplPoetryIcons.java rename to python/python-poetry/common/gen/com/intellij/python/community/impl/poetry/common/icons/PythonCommunityImplPoetryCommonIcons.java index 00be5ab8494a..9ec7267a7d29 100644 --- a/python/poetry/gen/com/intellij/python/community/impl/poetry/icons/PythonCommunityImplPoetryIcons.java +++ b/python/python-poetry/common/gen/com/intellij/python/community/impl/poetry/common/icons/PythonCommunityImplPoetryCommonIcons.java @@ -1,5 +1,5 @@ // 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.impl.poetry.icons; +package com.intellij.python.community.impl.poetry.common.icons; import com.intellij.ui.IconManager; import org.jetbrains.annotations.NotNull; @@ -11,9 +11,9 @@ import javax.swing.*; * DO NOT EDIT IT BY HAND, run "Generate icon classes" configuration instead */ @org.jetbrains.annotations.ApiStatus.Internal -public final class PythonCommunityImplPoetryIcons { +public final class PythonCommunityImplPoetryCommonIcons { private static @NotNull Icon load(@NotNull String path, int cacheKey, int flags) { - return IconManager.getInstance().loadRasterizedIcon(path, PythonCommunityImplPoetryIcons.class.getClassLoader(), cacheKey, flags); + return IconManager.getInstance().loadRasterizedIcon(path, PythonCommunityImplPoetryCommonIcons.class.getClassLoader(), cacheKey, flags); } - /** 16x16 */ public static final @NotNull Icon Poetry = load("icons/com/intellij/python/community/impl/poetry/expui/poetry.svg", -142471747, 0); + /** 16x16 */ public static final @NotNull Icon Poetry = load("icons/intellij/python/community/impl/poetry/common/expui/poetry.svg", -142471747, 0); } diff --git a/python/python-poetry/common/intellij.python.community.impl.poetry.common.iml b/python/python-poetry/common/intellij.python.community.impl.poetry.common.iml new file mode 100644 index 000000000000..83de97187f08 --- /dev/null +++ b/python/python-poetry/common/intellij.python.community.impl.poetry.common.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/python/poetry/resources/icons/com/intellij/python/community/impl/poetry/expui/poetry.svg b/python/python-poetry/common/resources/icons/intellij/python/community/impl/poetry/common/expui/poetry.svg similarity index 100% rename from python/poetry/resources/icons/com/intellij/python/community/impl/poetry/expui/poetry.svg rename to python/python-poetry/common/resources/icons/intellij/python/community/impl/poetry/common/expui/poetry.svg diff --git a/python/python-poetry/common/resources/intellij.python.community.impl.poetry.common.xml b/python/python-poetry/common/resources/intellij.python.community.impl.poetry.common.xml new file mode 100644 index 000000000000..cd7211969b60 --- /dev/null +++ b/python/python-poetry/common/resources/intellij.python.community.impl.poetry.common.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/python/python-poetry/common/src/impl/PoetryToolIdMapper.kt b/python/python-poetry/common/src/impl/PoetryToolIdMapper.kt new file mode 100644 index 000000000000..220d19e32d77 --- /dev/null +++ b/python/python-poetry/common/src/impl/PoetryToolIdMapper.kt @@ -0,0 +1,13 @@ +// 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.impl.poetry.common.impl + +import com.intellij.python.common.tools.ToolId +import com.intellij.python.common.tools.spi.ToolIdToIconMapper +import com.intellij.python.community.impl.poetry.common.POETRY_TOOL_ID +import com.intellij.python.community.impl.poetry.common.icons.PythonCommunityImplPoetryCommonIcons +import javax.swing.Icon + +internal class PoetryToolIdMapper : ToolIdToIconMapper { + override val id: ToolId = POETRY_TOOL_ID + override val icon: Icon = PythonCommunityImplPoetryCommonIcons.Poetry +} \ No newline at end of file diff --git a/python/python-poetry/common/src/impl/package-info.java b/python/python-poetry/common/src/impl/package-info.java new file mode 100644 index 000000000000..8905e96fe205 --- /dev/null +++ b/python/python-poetry/common/src/impl/package-info.java @@ -0,0 +1,5 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +@ApiStatus.Internal +package com.intellij.python.community.impl.poetry.common.impl; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/python-poetry/common/src/package-info.java b/python/python-poetry/common/src/package-info.java new file mode 100644 index 000000000000..bda133c6ebad --- /dev/null +++ b/python/python-poetry/common/src/package-info.java @@ -0,0 +1,5 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +@ApiStatus.Internal +package com.intellij.python.community.impl.poetry.common; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/poetry/src/com/intellij/python/community/impl/poetry/path.kt b/python/python-poetry/common/src/poetryId.kt similarity index 71% rename from python/poetry/src/com/intellij/python/community/impl/poetry/path.kt rename to python/python-poetry/common/src/poetryId.kt index ee168e5684eb..9b5c8f28c860 100644 --- a/python/poetry/src/com/intellij/python/community/impl/poetry/path.kt +++ b/python/python-poetry/common/src/poetryId.kt @@ -1,10 +1,13 @@ // 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.impl.poetry +package com.intellij.python.community.impl.poetry.common import com.intellij.ide.util.PropertiesComponent +import com.intellij.python.common.tools.ToolId +import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.SystemDependent -private const val POETRY_PATH_SETTING: String = "PyCharm.Poetry.Path" +@ApiStatus.Internal +val POETRY_TOOL_ID: ToolId = ToolId("poetry") /** * Tells if the SDK was added as poetry. @@ -14,4 +17,5 @@ var PropertiesComponent.poetryPath: @SystemDependent String? get() = getValue(POETRY_PATH_SETTING) set(value) { setValue(POETRY_PATH_SETTING, value) - } \ No newline at end of file + } +private const val POETRY_PATH_SETTING: String = "PyCharm.Poetry.Path" diff --git a/python/python-pyproject/BUILD.bazel b/python/python-pyproject/BUILD.bazel index dad4e9d4f607..49fe746f1f28 100644 --- a/python/python-pyproject/BUILD.bazel +++ b/python/python-pyproject/BUILD.bazel @@ -38,6 +38,7 @@ jvm_library( "//platform/workspace/jps", "//platform/projectModel-impl", "//platform/projectModel-api:projectModel", + "//python/common", ], exports = ["@lib//:tuweni-toml"] ) @@ -71,6 +72,7 @@ jvm_library( "//platform/workspace/jps", "//platform/projectModel-impl", "//platform/projectModel-api:projectModel", + "//python/common", ], exports = ["@lib//:tuweni-toml"] ) diff --git a/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntityModifications.kt b/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntityModifications.kt index e129b3c445ee..abcc8b531fb0 100644 --- a/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntityModifications.kt +++ b/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntityModifications.kt @@ -6,7 +6,7 @@ import com.intellij.platform.workspace.jps.entities.ModuleEntityBuilder import com.intellij.platform.workspace.jps.entities.ModuleId import com.intellij.platform.workspace.storage.* import com.intellij.platform.workspace.storage.annotations.Parent -import com.jetbrains.python.ToolId +import com.intellij.python.common.tools.ToolId @GeneratedCodeApiVersion(3) internal interface PyProjectTomlWorkspaceEntityBuilder : WorkspaceEntityBuilder { diff --git a/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/MetadataStorageImpl.kt b/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/MetadataStorageImpl.kt index 7f2534e0f0f9..fa0a4348c5ae 100644 --- a/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/MetadataStorageImpl.kt +++ b/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/MetadataStorageImpl.kt @@ -42,7 +42,7 @@ internal object MetadataStorageImpl : MetadataStorageBase() { OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "participatedTools", valueType = ValueTypeMetadata.ParameterizedType(generics = listOf( ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata( - fqName = "com.jetbrains.python.ToolId", properties = listOf( + fqName = "com.intellij.python.common.tools.ToolId", properties = listOf( OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "id", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf())), @@ -70,8 +70,8 @@ internal object MetadataStorageImpl : MetadataStorageBase() { } override fun initializeMetadataHash() { - addMetadataHash(typeFqn = "com.intellij.python.pyproject.model.internal.PyProjectTomlWorkspaceEntity", metadataHash = 674942214) - addMetadataHash(typeFqn = "com.jetbrains.python.ToolId", metadataHash = 434494956) + addMetadataHash(typeFqn = "com.intellij.python.pyproject.model.internal.PyProjectTomlWorkspaceEntity", metadataHash = 1939139269) + addMetadataHash(typeFqn = "com.intellij.python.common.tools.ToolId", metadataHash = -1193602517) addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleId", metadataHash = -575206713) addMetadataHash(typeFqn = "com.intellij.platform.workspace.storage.EntitySource", metadataHash = -1282078904) addMetadataHash(typeFqn = "com.intellij.python.pyproject.model.internal.PyProjectTomlEntitySource", metadataHash = -1054650782) diff --git a/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/PyProjectTomlWorkspaceEntityImpl.kt b/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/PyProjectTomlWorkspaceEntityImpl.kt index 54000f62af30..8bf0f6ef5f76 100644 --- a/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/PyProjectTomlWorkspaceEntityImpl.kt +++ b/python/python-pyproject/gen/com/intellij/python/pyproject/model/internal/impl/PyProjectTomlWorkspaceEntityImpl.kt @@ -15,9 +15,9 @@ import com.intellij.platform.workspace.storage.instrumentation.EntityStorageInst import com.intellij.platform.workspace.storage.instrumentation.EntityStorageInstrumentationApi import com.intellij.platform.workspace.storage.instrumentation.MutableEntityStorageInstrumentation import com.intellij.platform.workspace.storage.metadata.model.EntityMetadata +import com.intellij.python.common.tools.ToolId import com.intellij.python.pyproject.model.internal.PyProjectTomlWorkspaceEntity import com.intellij.python.pyproject.model.internal.PyProjectTomlWorkspaceEntityBuilder -import com.jetbrains.python.ToolId @GeneratedCodeApiVersion(3) @GeneratedCodeImplVersion(7) diff --git a/python/python-pyproject/intellij.python.pyproject.iml b/python/python-pyproject/intellij.python.pyproject.iml index 9a62908aa58d..85f92a389608 100644 --- a/python/python-pyproject/intellij.python.pyproject.iml +++ b/python/python-pyproject/intellij.python.pyproject.iml @@ -31,5 +31,6 @@ + \ No newline at end of file diff --git a/python/python-pyproject/resources/intellij.python.pyproject.xml b/python/python-pyproject/resources/intellij.python.pyproject.xml index 441a7efc420f..f6824c24efab 100644 --- a/python/python-pyproject/resources/intellij.python.pyproject.xml +++ b/python/python-pyproject/resources/intellij.python.pyproject.xml @@ -4,6 +4,7 @@ + messages.PyProjectTomlBundle diff --git a/python/python-pyproject/src/com/intellij/python/pyproject/model/api/sdkSuggestionTools.kt b/python/python-pyproject/src/com/intellij/python/pyproject/model/api/sdkSuggestionTools.kt index 9c9e4b850b3a..d55b311562b3 100644 --- a/python/python-pyproject/src/com/intellij/python/pyproject/model/api/sdkSuggestionTools.kt +++ b/python/python-pyproject/src/com/intellij/python/pyproject/model/api/sdkSuggestionTools.kt @@ -1,8 +1,8 @@ package com.intellij.python.pyproject.model.api import com.intellij.openapi.module.Module +import com.intellij.python.common.tools.ToolId import com.intellij.python.pyproject.model.internal.suggestSdkImpl -import com.jetbrains.python.ToolId sealed interface SuggestedSdk { diff --git a/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntity.kt b/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntity.kt index 3e45068038f6..686e80a52946 100644 --- a/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntity.kt +++ b/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/PyProjectTomlWorkspaceEntity.kt @@ -4,7 +4,7 @@ import com.intellij.platform.workspace.jps.entities.ModuleEntity import com.intellij.platform.workspace.jps.entities.ModuleId import com.intellij.platform.workspace.storage.* import com.intellij.platform.workspace.storage.annotations.Parent -import com.jetbrains.python.ToolId +import com.intellij.python.common.tools.ToolId internal interface PyProjectTomlWorkspaceEntity : WorkspaceEntity { diff --git a/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/workspaceTools.kt b/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/workspaceTools.kt index 3d3cf0cc1129..380570b559e3 100644 --- a/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/workspaceTools.kt +++ b/python/python-pyproject/src/com/intellij/python/pyproject/model/internal/workspaceTools.kt @@ -19,11 +19,11 @@ import com.intellij.platform.workspace.storage.MutableEntityStorage import com.intellij.platform.workspace.storage.impl.url.toVirtualFileUrl import com.intellij.platform.workspace.storage.url.VirtualFileUrl import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager +import com.intellij.python.common.tools.ToolId import com.intellij.python.pyproject.PyProjectToml import com.intellij.python.pyproject.model.api.ModelRebuiltListener import com.intellij.python.pyproject.model.spi.* import com.intellij.util.messages.Topic -import com.jetbrains.python.ToolId import com.jetbrains.python.venvReader.Directory import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.sync.Mutex diff --git a/python/python-pyproject/src/com/intellij/python/pyproject/model/spi/Tool.kt b/python/python-pyproject/src/com/intellij/python/pyproject/model/spi/Tool.kt index 10b4819f2fee..87fdaea1e132 100644 --- a/python/python-pyproject/src/com/intellij/python/pyproject/model/spi/Tool.kt +++ b/python/python-pyproject/src/com/intellij/python/pyproject/model/spi/Tool.kt @@ -2,8 +2,8 @@ package com.intellij.python.pyproject.model.spi import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.util.NlsSafe +import com.intellij.python.common.tools.ToolId import com.jetbrains.python.PyToolUIInfo -import com.jetbrains.python.ToolId import com.jetbrains.python.venvReader.Directory import org.apache.tuweni.toml.TomlTable diff --git a/python/python-sdk-configurator/backend/BUILD.bazel b/python/python-sdk-configurator/backend/BUILD.bazel index 5bd95787823c..09ebf4b60b1a 100644 --- a/python/python-sdk-configurator/backend/BUILD.bazel +++ b/python/python-sdk-configurator/backend/BUILD.bazel @@ -35,6 +35,7 @@ jvm_library( "//platform/kernel/rpc.backend", "//platform/remote-topics/shared:rpc-topics", "//python/python-sdk-configurator/common", + "//python/common", ] ) ### auto-generated section `build intellij.python.sdkConfigurator.backend` end \ No newline at end of file diff --git a/python/python-sdk-configurator/backend/intellij.python.sdkConfigurator.backend.iml b/python/python-sdk-configurator/backend/intellij.python.sdkConfigurator.backend.iml index 921b21b39dec..09afa764ad15 100644 --- a/python/python-sdk-configurator/backend/intellij.python.sdkConfigurator.backend.iml +++ b/python/python-sdk-configurator/backend/intellij.python.sdkConfigurator.backend.iml @@ -47,5 +47,6 @@ + \ No newline at end of file diff --git a/python/python-sdk-configurator/backend/resources/intellij.python.sdkConfigurator.backend.xml b/python/python-sdk-configurator/backend/resources/intellij.python.sdkConfigurator.backend.xml index 1ee5941f00c6..21c50271b6b5 100644 --- a/python/python-sdk-configurator/backend/resources/intellij.python.sdkConfigurator.backend.xml +++ b/python/python-sdk-configurator/backend/resources/intellij.python.sdkConfigurator.backend.xml @@ -6,6 +6,7 @@ + messages.PySdkConfiguratorBundle diff --git a/python/python-sdk-ui/BUILD.bazel b/python/python-sdk-ui/BUILD.bazel index d6f74b64adfe..265288673acc 100644 --- a/python/python-sdk-ui/BUILD.bazel +++ b/python/python-sdk-ui/BUILD.bazel @@ -28,8 +28,8 @@ jvm_library( "//libraries/caffeine", "@lib//:io-github-z4kn4fein-semver-jvm", "//python/python-exec-service:community-execService", - "//python/poetry", - "//python/impl.uv", + "//python/python-poetry/common", + "//python/python-uv/common", ] ) ### auto-generated section `build intellij.python.sdk.ui` end \ No newline at end of file diff --git a/python/python-sdk-ui/intellij.python.sdk.ui.iml b/python/python-sdk-ui/intellij.python.sdk.ui.iml index 225964f4b84e..57479e805d6e 100644 --- a/python/python-sdk-ui/intellij.python.sdk.ui.iml +++ b/python/python-sdk-ui/intellij.python.sdk.ui.iml @@ -23,7 +23,7 @@ - - + + \ No newline at end of file diff --git a/python/python-sdk-ui/resources/intellij.python.sdk.ui.xml b/python/python-sdk-ui/resources/intellij.python.sdk.ui.xml index 8c1a97316468..260309722c86 100644 --- a/python/python-sdk-ui/resources/intellij.python.sdk.ui.xml +++ b/python/python-sdk-ui/resources/intellij.python.sdk.ui.xml @@ -2,8 +2,8 @@ - - + + diff --git a/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/tool/poetry/sdk/PoetryEvoSdkManager.kt b/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/tool/poetry/sdk/PoetryEvoSdkManager.kt index 4ed42bcbf381..b0190d00121e 100644 --- a/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/tool/poetry/sdk/PoetryEvoSdkManager.kt +++ b/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/tool/poetry/sdk/PoetryEvoSdkManager.kt @@ -3,23 +3,21 @@ package com.intellij.python.sdk.ui.evolution.tool.poetry.sdk //import com.jetbrains.python.sdk.poetry.PyPoetrySdkAdditionalData import com.intellij.openapi.module.Module import com.intellij.openapi.projectRoots.Sdk -import com.intellij.python.community.impl.poetry.icons.PythonCommunityImplPoetryIcons -import com.intellij.python.community.impl.poetry.impl.POETRY_UI_INFO +import com.intellij.python.community.impl.poetry.common.icons.PythonCommunityImplPoetryCommonIcons import com.intellij.python.sdk.ui.evolution.sdk.EvoSdk import com.intellij.python.sdk.ui.evolution.sdk.EvoSdkProvider -import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons import com.jetbrains.python.sdk.impl.resolvePythonHome import java.nio.file.Path import kotlin.io.path.name -internal object PoetryEvoSdkManager { +internal object PoetryEvoSdkManager { fun buildEvoSdk(module: Module, pythonBinaryPath: Path): EvoSdk { val sdkHome = pythonBinaryPath.resolvePythonHome() val venvName = sdkHome.name val name = venvName.takeIf { !it.startsWith(module.name.lowercase()) } return EvoSdk( - icon = PythonCommunityImplPoetryIcons.Poetry, + icon = PythonCommunityImplPoetryCommonIcons.Poetry, name = name, pythonBinaryPath = pythonBinaryPath, ) diff --git a/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/ui/autoconfiguration.kt b/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/ui/autoconfiguration.kt index 3756003c1c95..5c8b18faee5d 100644 --- a/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/ui/autoconfiguration.kt +++ b/python/python-sdk-ui/src/com/intellij/python/sdk/ui/evolution/ui/autoconfiguration.kt @@ -3,13 +3,12 @@ package com.intellij.python.sdk.ui.evolution.ui import com.intellij.icons.AllIcons import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.python.community.impl.uv.icons.PythonCommunityImplUVIcons +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons import com.intellij.python.sdk.ui.PySdkUiBundle import com.intellij.python.sdk.ui.evolution.sdk.EvoModuleSdk import com.intellij.python.sdk.ui.evolution.ui.components.EvoTreeLazyNodeElement import com.intellij.python.sdk.ui.evolution.ui.components.EvoTreeLeafElement import com.intellij.python.sdk.ui.evolution.ui.components.EvoTreeSection -import com.intellij.python.sdk.ui.icons.PythonSdkUIIcons import com.jetbrains.python.Result import com.jetbrains.python.sdk.configuration.PyProjectSdkConfigurationExtension @@ -25,7 +24,7 @@ internal val autoSetupWithAIAction = object : AnAction( internal val defaultUvAction = object : AnAction( { PySdkUiBundle.message("evo.sdk.status.bar.popup.shortcuts.uv") }, { "" }, - PythonCommunityImplUVIcons.UV, + PythonCommunityImplUVCommonIcons.UV, ) { override fun actionPerformed(e: AnActionEvent) { } diff --git a/python/python-sdk/BUILD.bazel b/python/python-sdk/BUILD.bazel index b85b0a5b800e..e98069e06872 100644 --- a/python/python-sdk/BUILD.bazel +++ b/python/python-sdk/BUILD.bazel @@ -47,6 +47,7 @@ jvm_library( "//platform/progress/shared:ide-progress", "//platform/eel-provider", "//python/impl.helperLocator:community-helpersLocator", + "//python/common", ], runtime_deps = ["//platform/backend"] ) @@ -88,6 +89,7 @@ jvm_library( "@lib//:junit5", "//platform/eel-provider", "//python/impl.helperLocator:community-helpersLocator", + "//python/common", ] ) ### auto-generated section `build intellij.python.sdk` end diff --git a/python/python-sdk/intellij.python.sdk.iml b/python/python-sdk/intellij.python.sdk.iml index 7aad6c1b3fd5..276d988785a1 100644 --- a/python/python-sdk/intellij.python.sdk.iml +++ b/python/python-sdk/intellij.python.sdk.iml @@ -40,5 +40,6 @@ + \ No newline at end of file diff --git a/python/python-sdk/resources/intellij.python.sdk.xml b/python/python-sdk/resources/intellij.python.sdk.xml index b8f226d1164f..b0398b83505f 100644 --- a/python/python-sdk/resources/intellij.python.sdk.xml +++ b/python/python-sdk/resources/intellij.python.sdk.xml @@ -2,6 +2,7 @@ + diff --git a/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectSdkConfigurationExtension.kt b/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectSdkConfigurationExtension.kt index 4f2646df20c3..c83738c5a306 100644 --- a/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectSdkConfigurationExtension.kt +++ b/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectSdkConfigurationExtension.kt @@ -3,7 +3,7 @@ package com.jetbrains.python.sdk.configuration import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.module.Module -import com.jetbrains.python.ToolId +import com.intellij.python.common.tools.ToolId import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.CheckReturnValue diff --git a/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectTomlConfigurationExtension.kt b/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectTomlConfigurationExtension.kt index 3f30ea0081c4..5cc6167226c6 100644 --- a/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectTomlConfigurationExtension.kt +++ b/python/python-sdk/src/com/jetbrains/python/sdk/configuration/PyProjectTomlConfigurationExtension.kt @@ -1,7 +1,6 @@ package com.jetbrains.python.sdk.configuration import com.intellij.openapi.module.Module -import com.jetbrains.python.ToolId import org.jetbrains.annotations.ApiStatus @ApiStatus.Internal diff --git a/python/poetry/BUILD.bazel b/python/python-uv/backend/BUILD.bazel similarity index 58% rename from python/poetry/BUILD.bazel rename to python/python-uv/backend/BUILD.bazel index 339a51746972..33d3819bdbf3 100644 --- a/python/poetry/BUILD.bazel +++ b/python/python-uv/backend/BUILD.bazel @@ -1,28 +1,27 @@ -### auto-generated section `build intellij.python.community.impl.poetry` start +### auto-generated section `build intellij.python.community.impl.uv.backend` start load("@rules_jvm//:jvm.bzl", "jvm_library", "resourcegroup") resourcegroup( - name = "poetry_resources", + name = "backend_resources", srcs = glob(["resources/**/*"]), strip_prefix = "resources" ) jvm_library( - name = "poetry", - module_name = "intellij.python.community.impl.poetry", + name = "backend", + module_name = "intellij.python.community.impl.uv.backend", visibility = ["//visibility:public"], - srcs = glob(["src/**/*.kt", "src/**/*.java", "src/**/*.form", "gen/**/*.kt", "gen/**/*.java"], allow_empty = True), - resources = [":poetry_resources"], + srcs = glob(["src/**/*.kt", "src/**/*.java", "src/**/*.form"], allow_empty = True), + resources = [":backend_resources"], deps = [ "@lib//:kotlin-stdlib", + "//python/python-uv/common", "@lib//:jetbrains-annotations", - "//platform/core-api:core", - "//python/python-sdk:sdk", - "//python/openapi:community", - "//plugins/toml/core", - "//python/python-pyproject:pyproject", - "//platform/util/base/multiplatform", "//platform/util", + "//python/python-pyproject:pyproject", + "//platform/core-api:core", + "//python/openapi:community", + "//python/common", ] ) -### auto-generated section `build intellij.python.community.impl.poetry` end \ No newline at end of file +### auto-generated section `build intellij.python.community.impl.uv.backend` end \ No newline at end of file diff --git a/python/impl.uv/intellij.python.community.impl.uv.iml b/python/python-uv/backend/intellij.python.community.impl.uv.backend.iml similarity index 80% rename from python/impl.uv/intellij.python.community.impl.uv.iml rename to python/python-uv/backend/intellij.python.community.impl.uv.backend.iml index 70a54141ead6..056949a5eb2c 100644 --- a/python/impl.uv/intellij.python.community.impl.uv.iml +++ b/python/python-uv/backend/intellij.python.community.impl.uv.backend.iml @@ -3,18 +3,18 @@ - - + - - - + + + + \ No newline at end of file diff --git a/python/impl.uv/resources/intellij.python.community.impl.uv.xml b/python/python-uv/backend/resources/intellij.python.community.impl.uv.backend.xml similarity index 69% rename from python/impl.uv/resources/intellij.python.community.impl.uv.xml rename to python/python-uv/backend/resources/intellij.python.community.impl.uv.backend.xml index 431b17e21191..eedb3007842e 100644 --- a/python/impl.uv/resources/intellij.python.community.impl.uv.xml +++ b/python/python-uv/backend/resources/intellij.python.community.impl.uv.backend.xml @@ -4,8 +4,11 @@ + + + - + diff --git a/python/impl.uv/src/UvTool.kt b/python/python-uv/backend/src/com/intellij/python/community/impl/uv/backend/UvTool.kt similarity index 94% rename from python/impl.uv/src/UvTool.kt rename to python/python-uv/backend/src/com/intellij/python/community/impl/uv/backend/UvTool.kt index 5f5d993d2a78..58108e5c4dce 100644 --- a/python/impl.uv/src/UvTool.kt +++ b/python/python-uv/backend/src/com/intellij/python/community/impl/uv/backend/UvTool.kt @@ -1,32 +1,29 @@ // 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.impl.uv +package com.intellij.python.community.impl.uv.backend import com.intellij.openapi.diagnostic.fileLogger import com.intellij.openapi.util.NlsSafe import com.intellij.openapi.util.getPathMatcher -import com.intellij.python.community.impl.uv.icons.PythonCommunityImplUVIcons +import com.intellij.python.common.tools.ToolId +import com.intellij.python.community.impl.uv.common.UV_TOOL_ID +import com.intellij.python.community.impl.uv.common.UV_UI_INFO import com.intellij.python.pyproject.model.spi.ProjectName import com.intellij.python.pyproject.model.spi.ProjectStructureInfo import com.intellij.python.pyproject.model.spi.PyProjectTomlProject import com.intellij.python.pyproject.model.spi.Tool import com.intellij.util.concurrency.annotations.RequiresBackgroundThread import com.jetbrains.python.PyToolUIInfo -import com.jetbrains.python.ToolId import com.jetbrains.python.venvReader.Directory import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.apache.tuweni.toml.TomlArray import org.apache.tuweni.toml.TomlTable -import org.jetbrains.annotations.ApiStatus import java.nio.file.InvalidPathException import java.nio.file.Path import java.nio.file.PathMatcher import kotlin.io.path.relativeTo -@ApiStatus.Internal -val UV_TOOL_ID: ToolId = ToolId("uv") -val UV_UI_INFO: PyToolUIInfo = PyToolUIInfo("uv", PythonCommunityImplUVIcons.UV) internal class UvTool : Tool { diff --git a/python/python-uv/backend/src/com/intellij/python/community/impl/uv/backend/package-info.java b/python/python-uv/backend/src/com/intellij/python/community/impl/uv/backend/package-info.java new file mode 100644 index 000000000000..21f9ada1919e --- /dev/null +++ b/python/python-uv/backend/src/com/intellij/python/community/impl/uv/backend/package-info.java @@ -0,0 +1,5 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +@ApiStatus.Internal +package com.intellij.python.community.impl.uv.backend; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/impl.uv/BUILD.bazel b/python/python-uv/common/BUILD.bazel similarity index 68% rename from python/impl.uv/BUILD.bazel rename to python/python-uv/common/BUILD.bazel index 024ebecd2681..f3382e1fdc42 100644 --- a/python/impl.uv/BUILD.bazel +++ b/python/python-uv/common/BUILD.bazel @@ -1,26 +1,24 @@ -### auto-generated section `build intellij.python.community.impl.uv` start +### auto-generated section `build intellij.python.community.impl.uv.common` start load("@rules_jvm//:jvm.bzl", "jvm_library", "resourcegroup") resourcegroup( - name = "impl.uv_resources", + name = "common_resources", srcs = glob(["resources/**/*"]), strip_prefix = "resources" ) jvm_library( - name = "impl.uv", - module_name = "intellij.python.community.impl.uv", + name = "common", + module_name = "intellij.python.community.impl.uv.common", visibility = ["//visibility:public"], srcs = glob(["gen/**/*.kt", "gen/**/*.java", "src/**/*.kt", "src/**/*.java", "src/**/*.form"], allow_empty = True), - resources = [":impl.uv_resources"], + resources = [":common_resources"], deps = [ "@lib//:kotlin-stdlib", - "//python/python-pyproject:pyproject", - "//python/openapi:community", - "//plugins/toml/core", "@lib//:jetbrains-annotations", "//platform/util", - "//platform/core-api:core", + "//python/openapi:community", + "//python/common", ] ) -### auto-generated section `build intellij.python.community.impl.uv` end \ No newline at end of file +### auto-generated section `build intellij.python.community.impl.uv.common` end \ No newline at end of file diff --git a/python/impl.uv/gen/com/intellij/python/community/impl/uv/icons/PythonCommunityImplUVIcons.java b/python/python-uv/common/gen/com/intellij/python/community/impl/uv/common/icons/PythonCommunityImplUVCommonIcons.java similarity index 69% rename from python/impl.uv/gen/com/intellij/python/community/impl/uv/icons/PythonCommunityImplUVIcons.java rename to python/python-uv/common/gen/com/intellij/python/community/impl/uv/common/icons/PythonCommunityImplUVCommonIcons.java index 83b24f801c2a..7852d3e916b0 100644 --- a/python/impl.uv/gen/com/intellij/python/community/impl/uv/icons/PythonCommunityImplUVIcons.java +++ b/python/python-uv/common/gen/com/intellij/python/community/impl/uv/common/icons/PythonCommunityImplUVCommonIcons.java @@ -1,5 +1,5 @@ // 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.impl.uv.icons; +package com.intellij.python.community.impl.uv.common.icons; import com.intellij.ui.IconManager; import org.jetbrains.annotations.NotNull; @@ -11,9 +11,9 @@ import javax.swing.*; * DO NOT EDIT IT BY HAND, run "Generate icon classes" configuration instead */ @org.jetbrains.annotations.ApiStatus.Internal -public final class PythonCommunityImplUVIcons { +public final class PythonCommunityImplUVCommonIcons { private static @NotNull Icon load(@NotNull String path, int cacheKey, int flags) { - return IconManager.getInstance().loadRasterizedIcon(path, PythonCommunityImplUVIcons.class.getClassLoader(), cacheKey, flags); + return IconManager.getInstance().loadRasterizedIcon(path, PythonCommunityImplUVCommonIcons.class.getClassLoader(), cacheKey, flags); } - /** 16x16 */ public static final @NotNull Icon UV = load("images/com/intellij/python/community/impl/uv/expui/uv.svg", -856014559, 0); + /** 16x16 */ public static final @NotNull Icon UV = load("images/intellij/python/community/impl/uv/common/expui/uv.svg", -856014559, 0); } diff --git a/python/python-uv/common/intellij.python.community.impl.uv.common.iml b/python/python-uv/common/intellij.python.community.impl.uv.common.iml new file mode 100644 index 000000000000..844767c0e79f --- /dev/null +++ b/python/python-uv/common/intellij.python.community.impl.uv.common.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/python/impl.uv/resources/images/com/intellij/python/community/impl/uv/expui/uv.svg b/python/python-uv/common/resources/images/intellij/python/community/impl/uv/common/expui/uv.svg similarity index 100% rename from python/impl.uv/resources/images/com/intellij/python/community/impl/uv/expui/uv.svg rename to python/python-uv/common/resources/images/intellij/python/community/impl/uv/common/expui/uv.svg diff --git a/python/python-uv/common/resources/intellij.python.community.impl.uv.common.xml b/python/python-uv/common/resources/intellij.python.community.impl.uv.common.xml new file mode 100644 index 000000000000..723af168216c --- /dev/null +++ b/python/python-uv/common/resources/intellij.python.community.impl.uv.common.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/python/python-uv/common/src/impl/UvToolIdMapper.kt b/python/python-uv/common/src/impl/UvToolIdMapper.kt new file mode 100644 index 000000000000..de43412446a7 --- /dev/null +++ b/python/python-uv/common/src/impl/UvToolIdMapper.kt @@ -0,0 +1,13 @@ +// 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.impl.uv.common.impl + +import com.intellij.python.common.tools.ToolId +import com.intellij.python.common.tools.spi.ToolIdToIconMapper +import com.intellij.python.community.impl.uv.common.UV_TOOL_ID +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons +import javax.swing.Icon + +internal class UvToolIdMapper : ToolIdToIconMapper { + override val id: ToolId = UV_TOOL_ID + override val icon: Icon = PythonCommunityImplUVCommonIcons.UV +} \ No newline at end of file diff --git a/python/python-uv/common/src/impl/package-info.java b/python/python-uv/common/src/impl/package-info.java new file mode 100644 index 000000000000..f348ac9e96c1 --- /dev/null +++ b/python/python-uv/common/src/impl/package-info.java @@ -0,0 +1,5 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +@ApiStatus.Internal +package com.intellij.python.community.impl.uv.common.impl; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/python-uv/common/src/package-info.java b/python/python-uv/common/src/package-info.java new file mode 100644 index 000000000000..ada305cca64b --- /dev/null +++ b/python/python-uv/common/src/package-info.java @@ -0,0 +1,5 @@ +@ApiStatus.Internal +// 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.impl.uv.common; + +import org.jetbrains.annotations.ApiStatus; \ No newline at end of file diff --git a/python/python-uv/common/src/uvId.kt b/python/python-uv/common/src/uvId.kt new file mode 100644 index 000000000000..a557be47b66d --- /dev/null +++ b/python/python-uv/common/src/uvId.kt @@ -0,0 +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.impl.uv.common + +import com.intellij.python.common.tools.ToolId +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons +import com.jetbrains.python.PyToolUIInfo + +val UV_TOOL_ID: ToolId = ToolId("uv") + +// TODO: Move this symbol to backend as soon as all usages are moved to backend +val UV_UI_INFO: PyToolUIInfo = PyToolUIInfo("uv", PythonCommunityImplUVCommonIcons.UV) diff --git a/python/src/com/jetbrains/python/sdk/add/v2/common.kt b/python/src/com/jetbrains/python/sdk/add/v2/common.kt index 17fd9aa54c9e..05bdd27ca017 100644 --- a/python/src/com/jetbrains/python/sdk/add/v2/common.kt +++ b/python/src/com/jetbrains/python/sdk/add/v2/common.kt @@ -29,8 +29,8 @@ import com.intellij.python.community.execService.Args import com.intellij.python.community.execService.BinaryToExec import com.intellij.python.community.execService.ExecService import com.intellij.python.community.execService.execGetStdout -import com.intellij.python.community.impl.poetry.icons.PythonCommunityImplPoetryIcons -import com.intellij.python.community.impl.uv.icons.PythonCommunityImplUVIcons +import com.intellij.python.community.impl.poetry.common.icons.PythonCommunityImplPoetryCommonIcons +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons import com.intellij.python.hatch.icons.PythonHatchIcons import com.intellij.ui.dsl.builder.Align import com.intellij.ui.dsl.builder.Panel @@ -143,9 +143,9 @@ enum class PythonSupportedEnvironmentManagers( ) { VIRTUALENV("sdk.create.custom.virtualenv", PythonIcons.Python.Virtualenv, { true }), CONDA("sdk.create.custom.conda", PythonIcons.Python.Anaconda, { true }), - POETRY("sdk.create.custom.poetry", PythonCommunityImplPoetryIcons.Poetry), + POETRY("sdk.create.custom.poetry", PythonCommunityImplPoetryCommonIcons.Poetry), PIPENV("sdk.create.custom.pipenv", PIPENV_ICON), - UV("sdk.create.custom.uv", PythonCommunityImplUVIcons.UV), + UV("sdk.create.custom.uv", PythonCommunityImplUVCommonIcons.UV), HATCH("sdk.create.custom.hatch", PythonHatchIcons.Logo, { it is FileSystem.Eel }), PYTHON("sdk.create.custom.python", PythonParserIcons.PythonFile, { true }) } diff --git a/python/src/com/jetbrains/python/sdk/add/v2/poetry/EnvironmentCreatorPoetry.kt b/python/src/com/jetbrains/python/sdk/add/v2/poetry/EnvironmentCreatorPoetry.kt index ed8e14711a3a..db61a6af01b0 100644 --- a/python/src/com/jetbrains/python/sdk/add/v2/poetry/EnvironmentCreatorPoetry.kt +++ b/python/src/com/jetbrains/python/sdk/add/v2/poetry/EnvironmentCreatorPoetry.kt @@ -9,7 +9,7 @@ import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.ui.validation.DialogValidationRequestor import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.platform.eel.LocalEelApi -import com.intellij.python.community.impl.poetry.poetryPath +import com.intellij.python.community.impl.poetry.common.poetryPath import com.intellij.python.pyproject.PyProjectToml import com.intellij.ui.dsl.builder.Panel import com.intellij.ui.dsl.builder.bindSelected diff --git a/python/src/com/jetbrains/python/sdk/poetry/PoetryCommandExecutor.kt b/python/src/com/jetbrains/python/sdk/poetry/PoetryCommandExecutor.kt index c70f0196e3a3..d6ad1cf77f9d 100644 --- a/python/src/com/jetbrains/python/sdk/poetry/PoetryCommandExecutor.kt +++ b/python/src/com/jetbrains/python/sdk/poetry/PoetryCommandExecutor.kt @@ -14,7 +14,7 @@ import com.intellij.python.community.execService.Args import com.intellij.python.community.execService.BinOnEel import com.intellij.python.community.execService.ExecService import com.intellij.python.community.execService.execGetStdout -import com.intellij.python.community.impl.poetry.poetryPath +import com.intellij.python.community.impl.poetry.common.poetryPath import com.intellij.python.pyproject.PY_PROJECT_TOML import com.jetbrains.python.* import com.jetbrains.python.errorProcessing.PyResult diff --git a/python/src/com/jetbrains/python/sdk/poetry/PoetrySdkProvider.kt b/python/src/com/jetbrains/python/sdk/poetry/PoetrySdkProvider.kt index 5b5ee8b4074f..d4671e8ffe03 100644 --- a/python/src/com/jetbrains/python/sdk/poetry/PoetrySdkProvider.kt +++ b/python/src/com/jetbrains/python/sdk/poetry/PoetrySdkProvider.kt @@ -3,7 +3,7 @@ package com.jetbrains.python.sdk.poetry import com.intellij.openapi.module.Module import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.projectRoots.SdkAdditionalData -import com.intellij.python.community.impl.poetry.icons.PythonCommunityImplPoetryIcons +import com.intellij.python.community.impl.poetry.common.icons.PythonCommunityImplPoetryCommonIcons import com.jetbrains.python.PyBundle import com.jetbrains.python.sdk.PyInterpreterInspectionQuickFixData import com.jetbrains.python.sdk.PySdkProvider @@ -37,7 +37,7 @@ class PoetrySdkProvider : PySdkProvider { override fun getSdkAdditionalText(sdk: Sdk): String? = if (sdk.isPoetry) sdk.versionString else null override fun getSdkIcon(sdk: Sdk): Icon? { - return if (sdk.isPoetry) PythonCommunityImplPoetryIcons.Poetry else null + return if (sdk.isPoetry) PythonCommunityImplPoetryCommonIcons.Poetry else null } override fun loadAdditionalDataForSdk(element: Element): SdkAdditionalData? { diff --git a/python/src/com/jetbrains/python/sdk/poetry/PyPoetrySdkFlavor.kt b/python/src/com/jetbrains/python/sdk/poetry/PyPoetrySdkFlavor.kt index 6553ecab24ba..18f8076ce3ee 100644 --- a/python/src/com/jetbrains/python/sdk/poetry/PyPoetrySdkFlavor.kt +++ b/python/src/com/jetbrains/python/sdk/poetry/PyPoetrySdkFlavor.kt @@ -1,7 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.jetbrains.python.sdk.poetry -import com.intellij.python.community.impl.poetry.icons.PythonCommunityImplPoetryIcons +import com.intellij.python.community.impl.poetry.common.icons.PythonCommunityImplPoetryCommonIcons import com.jetbrains.python.sdk.flavors.CPythonSdkFlavor import com.jetbrains.python.sdk.flavors.PyFlavorData import com.jetbrains.python.sdk.flavors.PythonFlavorProvider @@ -13,7 +13,7 @@ import javax.swing.Icon */ object PyPoetrySdkFlavor : CPythonSdkFlavor() { - override fun getIcon(): Icon = PythonCommunityImplPoetryIcons.Poetry + override fun getIcon(): Icon = PythonCommunityImplPoetryCommonIcons.Poetry override fun getFlavorDataClass(): Class = PyFlavorData.Empty::class.java override fun isValidSdkPath(pathStr: String): Boolean = false diff --git a/python/src/com/jetbrains/python/sdk/uv/UvSdkFlavorAndData.kt b/python/src/com/jetbrains/python/sdk/uv/UvSdkFlavorAndData.kt index aced2e4385c9..945beceed7b9 100644 --- a/python/src/com/jetbrains/python/sdk/uv/UvSdkFlavorAndData.kt +++ b/python/src/com/jetbrains/python/sdk/uv/UvSdkFlavorAndData.kt @@ -1,7 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.jetbrains.python.sdk.uv -import com.intellij.python.community.impl.uv.icons.PythonCommunityImplUVIcons +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons import com.jetbrains.python.sdk.PythonSdkAdditionalData import com.jetbrains.python.sdk.flavors.CPythonSdkFlavor import com.jetbrains.python.sdk.flavors.PyFlavorData @@ -68,7 +68,7 @@ class UvSdkAdditionalData : PythonSdkAdditionalData { } object UvSdkFlavor : CPythonSdkFlavor() { - override fun getIcon(): Icon = PythonCommunityImplUVIcons.UV + override fun getIcon(): Icon = PythonCommunityImplUVCommonIcons.UV override fun getFlavorDataClass(): Class = PyFlavorData.Empty::class.java override fun isValidSdkPath(pathStr: String): Boolean { diff --git a/python/src/com/jetbrains/python/sdk/uv/UvSdkProvider.kt b/python/src/com/jetbrains/python/sdk/uv/UvSdkProvider.kt index fca35ca5737a..5337d68a52d8 100644 --- a/python/src/com/jetbrains/python/sdk/uv/UvSdkProvider.kt +++ b/python/src/com/jetbrains/python/sdk/uv/UvSdkProvider.kt @@ -4,7 +4,7 @@ package com.jetbrains.python.sdk.uv import com.intellij.openapi.module.Module import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.projectRoots.SdkAdditionalData -import com.intellij.python.community.impl.uv.icons.PythonCommunityImplUVIcons +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons import com.jetbrains.python.PyBundle import com.jetbrains.python.sdk.PyInterpreterInspectionQuickFixData import com.jetbrains.python.sdk.PySdkProvider @@ -34,7 +34,7 @@ class UvSdkProvider : PySdkProvider { override fun getSdkAdditionalText(sdk: Sdk): String? = if (sdk.isUv) sdk.versionString else null override fun getSdkIcon(sdk: Sdk): Icon? { - return if (sdk.isUv) PythonCommunityImplUVIcons.UV else null + return if (sdk.isUv) PythonCommunityImplUVCommonIcons.UV else null } override fun loadAdditionalDataForSdk(element: Element): SdkAdditionalData? { diff --git a/python/src/com/jetbrains/python/sdk/uv/UvSystemPythonProvider.kt b/python/src/com/jetbrains/python/sdk/uv/UvSystemPythonProvider.kt index 18c62e187bee..d467502be62d 100644 --- a/python/src/com/jetbrains/python/sdk/uv/UvSystemPythonProvider.kt +++ b/python/src/com/jetbrains/python/sdk/uv/UvSystemPythonProvider.kt @@ -3,7 +3,9 @@ package com.jetbrains.python.sdk.uv import com.intellij.platform.eel.EelApi import com.intellij.platform.eel.provider.localEel -import com.intellij.python.community.impl.uv.UV_UI_INFO +import com.intellij.python.community.impl.uv.common.UV_TOOL_ID +import com.intellij.python.community.impl.uv.common.UV_UI_INFO +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons import com.intellij.python.community.services.systemPython.SystemPythonProvider import com.jetbrains.python.PyToolUIInfo import com.jetbrains.python.PythonBinary diff --git a/python/src/com/jetbrains/python/sdk/uv/run/UvRunConfigurationType.kt b/python/src/com/jetbrains/python/sdk/uv/run/UvRunConfigurationType.kt index 9025f346cca3..ed058718fe52 100644 --- a/python/src/com/jetbrains/python/sdk/uv/run/UvRunConfigurationType.kt +++ b/python/src/com/jetbrains/python/sdk/uv/run/UvRunConfigurationType.kt @@ -3,7 +3,7 @@ package com.jetbrains.python.sdk.uv.run import com.intellij.execution.configurations.ConfigurationTypeBase import com.intellij.openapi.util.NotNullLazyValue -import com.intellij.python.community.impl.uv.icons.PythonCommunityImplUVIcons +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons import com.jetbrains.python.PyBundle import com.jetbrains.python.icons.PythonIcons @@ -14,7 +14,7 @@ internal class UvRunConfigurationType : UV_CONFIGURATION_ID, PyBundle.message("uv.run.configuration.type.display.name"), PyBundle.message("uv.run.configuration.type.description"), - NotNullLazyValue.createValue { PythonCommunityImplUVIcons.UV }, + NotNullLazyValue.createValue { PythonCommunityImplUVCommonIcons.UV }, ) { init { addFactory(UvRunConfigurationFactory(this)) diff --git a/python/src/com/jetbrains/python/uv/sdk/evolution/UvSelectSdkProvider.kt b/python/src/com/jetbrains/python/uv/sdk/evolution/UvSelectSdkProvider.kt index 158d05947fca..8db648962f63 100644 --- a/python/src/com/jetbrains/python/uv/sdk/evolution/UvSelectSdkProvider.kt +++ b/python/src/com/jetbrains/python/uv/sdk/evolution/UvSelectSdkProvider.kt @@ -1,7 +1,7 @@ package com.jetbrains.python.uv.sdk.evolution import com.intellij.openapi.ui.popup.ListSeparator -import com.intellij.python.community.impl.uv.icons.PythonCommunityImplUVIcons +import com.intellij.python.community.impl.uv.common.icons.PythonCommunityImplUVCommonIcons import com.jetbrains.python.Result import com.jetbrains.python.errorProcessing.PyResult import com.jetbrains.python.sdk.basePath @@ -24,7 +24,7 @@ import kotlin.collections.component2 private class UvSelectSdkProvider() : EvoSelectSdkProvider { override fun getTreeElement(evoModuleSdk: EvoModuleSdk): EvoTreeLazyNodeElement { - val icon = PythonCommunityImplUVIcons.UV + val icon = PythonCommunityImplUVCommonIcons.UV return EvoTreeLazyNodeElement("uv", icon) { getUvExecutable() ?: return@EvoTreeLazyNodeElement PyResult.localizedError(PyBundle.message("evolution.uv.executable.is.not.found"))