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
We are slowly moving all tools to the separate modules to register them as EP. On the front we might have `ToolId` only. To map it to an icon we will use EP.
GitOrigin-RevId: 3cd0ad9f8da4a69739c8f632a6305ddd7c29d62d
Our tool detection approach varies a lot. We have different logic for
uv, poetry and other tools. Also, uv detection is not suspendable and
doesn't have any explicit thread requirements, even though it performs
I/O operations.
This change makes such detection unified and suspendable (where
possible) and moves it to BGT.
GitOrigin-RevId: 18e9c4cc085c8d373c82ad2874033b53711f09c6
Before the changes, there wasn't any mechanism to detect that
environment was already created (for example, .venv exists in the
project). In these situations, during SDK creation we could've created
another environment which was not expected by users.
With these changes, it's now possible to detect in the configurator that
environment already exists, and use it when creating SDK.
Merge-request: IJ-MR-177317
Merged-by: Alexey Katsman <alexey.katsman@jetbrains.com>
GitOrigin-RevId: dd0cf0c02b18e90022e9ec828b7f9ad2282cd5b3
This commit enables check only for modules WITH a Kotlin facet
Bazel generator was updated as well
GitOrigin-RevId: 90a3427d4b5a3ebc29e257693cb3748ac09bfc6a
API changes:
Class `Args` is not used to provide arguments for commands. Previous implementation was incompatible with Targets.
Instead of `Path` we now accept `BinaryToExec` which is either Eel or Target based.
Impl:
`ExecServiceImpl` now delegates execution to `com.intellij.python.community.execService.impl.processLaunchers`: there are two functions (Eel and Targets)
Merge-request: IJ-MR-171488
Merged-by: Ilya Kazakevich <ilya.kazakevich@jetbrains.com>
GitOrigin-RevId: 4c4ac7023e6605caaacb1880d60faf145b4160bf
Use `ExecService` `api.kt` to exec any binary and extensions from `execService.python/api.kt` for python-specific things (i.e helpers)
GitOrigin-RevId: bb217798a9d1ee886c4b12220ec1f66a5ef08336
According to feedback, the name `upgrade` confuses people.
We refused `getEelApi` because this call usually implies a getter, and a getter usually implies some lightweight operation.
We refused `make`, `convert`, `get` and other short methods because they're as confusing as `upgrade`.
GitOrigin-RevId: 56adf5362f93bc4f98954db79c039e5e898b4550
It is not convenient to use progress reporting: it is sometimes better to collect it explicitly to customize output
GitOrigin-RevId: 79a68ec8b35540cfdc6aab4fda54245a7a270247
1. `ProcessOutput` is a legacy thing with some redundant flags: replaced with modern `EelProcessExecutionResult`.
2. There was a bug in `ProcessInteractiveHandler`: one could fetch all data from stdout, and we then did that again to get a result. That leads to an empty result. It is now fixed, see `executeInteractive` doc.
GitOrigin-RevId: 7fa57f8110a202a32a3531ff6507d42a270075a3
* PythonPackageManagerJobService.kt added to manage tool jobs
* Base PythonPackageManagerAction.kt was added to cover all python package manager actions
* Implementations for Poetry / Hatch / uv
* Poetry pyproject.toml watcher was removed (replaced with poetry actions)
GitOrigin-RevId: 0bbc5a7802826674140ca1c80be27b6cd7d0f59e
DO:
For upper-level (public) API use `PyResult`.
(Optionally) for low-level APIs inside your modules use python `Result<S, E>`.
Represent errors as `PyError` whenever possible.
Report `PyError` to `ErrorSink` at the top of your code.
DON'T:
Use `kotlin.Result`
Use `PyExecutionException`
Use any exception to represent user errors.
GitOrigin-RevId: 4ecf69e1fae8be9192cd33b90e0147c725a98964
HatchService is the middle layer API and has the CliBasedHatchService implementation.
For now it allows to:
* manage virtual environments
* detect if the project is managed by Hatch (hatch.toml or [tool.hatch.*] sections in project.toml)
* create a new project structure (might be reused in 'welcome script' on new projects)
GitOrigin-RevId: f19210180e69bfd968bcc4cfdcf3a1b7925e3841
on MacOS X there is a symlink /private/var to /var. TempDir fixture returns a path without it, i.e. "/var/....". But the real path is "/private/var/...".
GitOrigin-RevId: 58b14d9ebe565396cb5e0acb5ee00795ac4e459e