PY-79488 Prototype multimodule Poetry project support

Whenever a pyproject.toml file is found in a new IJ project root
(without .idea) we register the corresponding root as managed by Poetry
in `.idea/poetry.xml` (so called "linking") and then read all
pyproject.toml in the project tree setting up the corresponding IJ
modules and dependencies between them (so called "syncing").
The changes are persisted in the workspace model cache, there are
no additional config files, besides `.idea/poetry.xml`.

If a new pyproject.xml module is added to the root of an existing
project, we ask user whether its project model should be applied.

When a pyproject.toml is then changed in the editor or externally,
we either automatically apply the changes (reloading) or ask
a user about it, depending on the settings in
"Settings | Build, Execution, Deployment | Build Tools".

If automatic linking and syncing doesn't work for some reason
(e.g. there is no top-level pyproject.toml as in grazie-ml),
there are manual actions "Link All Poetry Projects" and
"Sync All Poetry Projects".

GitOrigin-RevId: 77a480cdf56d45f22c943acbad3a7c20d5eb56a5
This commit is contained in:
Mikhail Golubev
2025-02-27 21:26:41 +02:00
committed by intellij-monorepo-bot
parent 5c8fdbc73c
commit 9131e29041
20 changed files with 879 additions and 1 deletions

View File

@@ -145,5 +145,7 @@
<orderEntry type="library" name="io.github.z4kn4fein.semver.jvm" level="project" />
<orderEntry type="module" module-name="intellij.python.pyproject" />
<orderEntry type="module" module-name="intellij.python.hatch" />
<orderEntry type="module" module-name="intellij.platform.externalSystem.impl" />
<orderEntry type="module" module-name="intellij.platform.externalSystem" />
</component>
</module>