[pycharm] PY-87123 Synchronize build files
[pycharm] PY-87123 Add icons for process weight
[pycharm] PY-87123 Extract Pipenv icons/mapper into a pipenv module
[pycharm] PY-87123 Extract Conda icons/mapper into a separate module
[pycharm] PY-87459 Fix process tree autoscroll
Fixes an issue in which the process tree would not automatically scroll up
after new processes are added.
[pycharm] PY-87112 Change the icon of the tool window to a new one
[pycharm] PY-87123 Rename `Styling` object to `OutputSectionStyling`
This is done to match the naming of `TreeSectionStyling`.
[pycharm] PY-87123 Render spinner instead of an icon for running processes
[pycharm] PY-87123 Refactor TreeSection
* Extract tree content into its own composable
* Extract styling values into a styling object
* Remove redundant icons that can be constructed programmatically
[pycharm] PY-87123 Address feedback
[pycharm] PY-87123 Implement custom styling for critical errors
Critical errors are ones that are displayed to the user via the error sink.
[pycharm] PY-87123 Add tool-dependant icons to POTW process tree
[pycharm] PY-87123 Implement ProcessOutputIconMapping extension point
The extension point provides a way for tooling-related modules to define
custom mapping between file extensions and icons that should be used by
the Process Output Tool Window.
Merge-request: IJ-MR-189367
Merged-by: David Lysenko <david.lysenko@jetbrains.com>
GitOrigin-RevId: 0d728779f04f2066e929954681ec7a23741f5f74
Even though project configurators are light, we still do not want to run 2000 `hatch` concurrently.
Conda is heavy, no more than 2 of them should ever be launched to freeze user OS.
We introduce a dead-simple API (see `ExecOptions.weight`) and use it to solve aforementioned cases.
GitOrigin-RevId: da20031c74824fc36288ddb57639e07d3a9ea5a3
Instead of old `addManuallyAddedInterpreter` we now have two functions: one that requires system python and one that doesn't.
Both functions register system python if provided, but the latter one accepts any python (venv included).
Various "selectors" use these functions.
We also make sure no non-system python is set to `baseInterpreters`: base are always system!
As a bonus, we show "system" or "virtual env" title near interpreter.
It now checks that python is system (see `ensureSystemPython`).
Non-system pythons are never reported, and `registerSystemPython` also returns an error for non-system pythons
We need `execGetBoolFromStdout` for the further changes
Merge-request: IJ-MR-182415
Merged-by: Ilya Kazakevich <ilya.kazakevich@jetbrains.com>
GitOrigin-RevId: 2950f5f0cd2745c12987a92e40774d366568f312
While closing remote stream should lead to `EOF` (`-1`), `read` might still throw `IOException`.
This is documented by the `read` contract, and we face it when underlying stream gets closed i.e: one thread was blocked by `read` and another one called `close`.
GitOrigin-RevId: 6cb291a720fbaab85909dee5291f6f68d820ece7
Currently, we don't have a special 'visible for testing' variant of the visibility modifier, so we need to mark such modules as internal to avoid errors after the visibility checks are enabled at runtime.
Reviewed in IJ-MR-180677.
GitOrigin-RevId: 1dcff728cc567e0c9c4055285b279402b7e5e030
* too-wide catch block because some types like DockerRemoteRequest throw base RuntimeException instead of anything meaningful, need to change platform code first
GitOrigin-RevId: 869bd4892b82be39d42a082a83bf1191c8d404f2
There was a problem with detecting system-wide pythons, which relied on
binary not being a part of conda env or virtualenv. But it led to
unrelated Hatch and Poetry pythons automatically configured as
interpreters in new projects. Another problem is that free-threaded
python was chosen as default interpreter with highest priority because
of the newest version.
This change uses SystemPythonService to detect system pythons properly,
also free-threaded python used as a default interpreter only if it's the
only available option.
Merge-request: IJ-MR-179008
Merged-by: Alexey Katsman <alexey.katsman@jetbrains.com>
GitOrigin-RevId: f32238b063575a125642ee91984ed45ba47010ec
Pip packaging tool used legacy process handler, which led to undetached
processes being spawned and even process leaks if they are really long
running. This led to flaky tests that were trying to delete temporary
directories after the test was finished, and at the same time process
was still running and creating __pycache__ directories there. That's
where a DirectoryNotEmptyException was thrown leading to a test failure.
The whole problem was fixed by using a new ExecService instead of a
legacy process handler. Also unused register keys `python.packaging.tool.use.project.location.as.working.dir` and `python.packaging.tool.upload.project` have been removed.
Merge-request: IJ-MR-176080
Merged-by: Alexey Katsman <alexey.katsman@jetbrains.com>
GitOrigin-RevId: 31c02fc8c25abd5941518958e7e2651f3771bad1
This commit enables check only for modules WITH a Kotlin facet
Bazel generator was updated as well
GitOrigin-RevId: 90a3427d4b5a3ebc29e257693cb3748ac09bfc6a
Look `src/com/jetbrains/python/sdk/sdkExecApi.kt` for method that executes SDK and returns a process.
See `PySdkOnTargetTest` as a usage example.
Merge-request: IJ-MR-171740
Merged-by: Ilya Kazakevich <ilya.kazakevich@jetbrains.com>
GitOrigin-RevId: a7e9b6995eba7ae1fa71019b370acca2d98738d2