PY-82580: pyproject.toml refactoring to combine all pyproject.toml EPs to single API

The main idea is to decouple tool implementation from low-level platform APIs: Open project processor, workspace model e.t.c.
Implementing `spi.Tool` should be enough to introduce new tool.

GitOrigin-RevId: 1177b57fc0eee1ca2c88cac5b20618a6170bf521
This commit is contained in:
Ilya.Kazakevich
2025-10-01 02:21:16 +00:00
committed by intellij-monorepo-bot
parent fab7ea8eb3
commit 2888d207d9
75 changed files with 1276 additions and 2602 deletions
@@ -76,19 +76,14 @@
<pluginSuggestionProvider order="first" implementation="com.jetbrains.python.suggestions.PycharmProSuggestionProvider"/>
<postStartupActivity implementation="com.jetbrains.python.poetry.PoetryPyProjectTomlPostStartupActivity"/>
<!--Poetry project model-->
<projectOpenProcessor implementation="com.jetbrains.python.projectModel.poetry.PoetryProjectOpenProcessor"/>
<externalSystemUnlinkedProjectAware implementation="com.jetbrains.python.projectModel.poetry.PoetryUnlinkedProjectAware"/>
<postStartupActivity implementation="com.jetbrains.python.projectModel.poetry.PoetryProjectAware$PoetrySyncStartupActivity"/>
<!--uv project model-->
<projectOpenProcessor implementation="com.jetbrains.python.projectModel.uv.UvProjectOpenProcessor"/>
<externalSystemUnlinkedProjectAware implementation="com.jetbrains.python.projectModel.uv.UvUnlinkedProjectAware"/>
<postStartupActivity implementation="com.jetbrains.python.projectModel.uv.UvProjectAware$UvSyncStartupActivity"/>
<virtualFileCustomDataProvider implementation="com.jetbrains.python.psi.PyLangLevelVirtualFileCustomDataProvider"/>
</extensions>
<extensions defaultExtensionNs="com.intellij.python.pyproject.model">
<tool implementation="com.jetbrains.python.projectModel.poetry.PoetryTool"/>
<tool implementation="com.jetbrains.python.projectModel.uv.UvTool"/>
</extensions>
<projectListeners>
<listener
class="com.jetbrains.python.inspections.PyInterpreterInspection$Visitor$CacheCleaner"
@@ -100,10 +95,6 @@
topic="com.jetbrains.python.packaging.common.PythonPackageManagementListener"/>
<listener class="com.jetbrains.python.statistics.PyPackageDaemonListener"
topic="com.intellij.codeInsight.daemon.DaemonCodeAnalyzer$DaemonListener"/>
<listener class="com.jetbrains.python.projectModel.poetry.PoetryProjectAware$PoetryListener"
topic="com.jetbrains.python.projectModel.poetry.PoetrySettingsListener"/>
<listener class="com.jetbrains.python.projectModel.uv.UvProjectAware$UvListener"
topic="com.jetbrains.python.projectModel.uv.UvSettingsListener"/>
</projectListeners>
<extensions defaultExtensionNs="com.intellij">
@@ -684,8 +675,6 @@
<!-- Setting up cross-module dependencies -->
<registryKey key="python.detect.cross.module.dependencies" defaultValue="false"
description="Try to detect and automatically set-up module dependencies in a multi-module project"/>
<registryKey key="python.pyproject.model" defaultValue="true" restartRequired="true"
description="Automatically set up multi-module pyproject.toml-based projects"/>
<feedback.idleFeedbackSurvey implementation="com.jetbrains.python.statistics.feedback.PythonJobSurvey"/>
<statistics.counterUsagesCollector implementationClass="com.jetbrains.python.statistics.feedback.PythonJobStatisticsCollector"/>
@@ -1072,12 +1061,6 @@
<add-to-group group-id="MarkRootGroup" anchor="after" relative-to-action="MarkSourceRoot"/>
</action>
<action id="Python.PoetrySync" class="com.jetbrains.python.projectModel.poetry.PoetrySyncAction"/>
<action id="Python.PoetryLink" class="com.jetbrains.python.projectModel.poetry.PoetryLinkAction"/>
<action id="Python.UvSync" class="com.jetbrains.python.projectModel.uv.UvSyncAction"/>
<action id="Python.UvLink" class="com.jetbrains.python.projectModel.uv.UvLinkAction"/>
<!--suppress PluginXmlI18n -->
<group id="Internal.Python" internal="true" popup="true" text="Python">
<!--suppress PluginXmlI18n -->