Commit Graph

106 Commits

Author SHA1 Message Date
David Lysenko
7906446900 PY-87123
[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
2026-02-10 21:28:26 +00:00
Ilya.Kazakevich
13045f4379 cleanup [python]: remove deprecated symbols.
If you need venv, use `createVenv(sdk.asBinToExecute()`.

GitOrigin-RevId: d2a2bd6df749ad22bf13496bd11595504a9da5cd
2026-02-04 06:51:26 +00:00
Leonid Shalupov
188b7ef96f IJI-3282 Optimize imports
GitOrigin-RevId: 3b5c00d8ff20b8d0bb6005bc450921085d2da9b2
2026-01-31 17:03:42 +00:00
David Lysenko
91e37f4863 [pycharm] PY-86863 Add support for real-time output
Merge-request: IJ-MR-187872
Merged-by: David Lysenko <david.lysenko@jetbrains.com>

GitOrigin-RevId: ab88c9cd73c1f51dbe53b62e66af506b24113eca
2026-01-14 19:26:58 +00:00
Mikhail Filippov
ea41f7932a [build] IJI-2993 enable progressive mode for Kotlin
GitOrigin-RevId: f506021c20fc3b3e5ef692c9092592e3bf247036
2026-01-14 11:00:39 +00:00
Anton Efimchuk
4f5b07293f PY-86778 [python] Migrate Python test environments from local builds to prebuilt standalone distributions
Replace Gradle-based local Python compilation with prebuilt standalone distributions
downloaded from JetBrains cache redirector. Introduces provider-based architecture
for test environment management with improved JUnit4/JUnit5 integration.

Key changes:
- Remove setup-test-environment Gradle module and build infrastructure
- Introduce python-test-env modules (core, common, plain, conda, uv, junit4, junit5)
- Implement PyEnvironmentProvider/PyEnvironmentSpec abstractions
- Add JUnit5 annotations (@RequiresPoetry, @RequiresUv, @RunOnEnvironments)
- Implement caching system with PyEnvDownloadCache and variant-specific directories
- Predefined environments like: VANILLA_2_7, VANILLA_3_11, VANILLA_3_12, VANILLA_3_13

Benefits:
- Faster test environment provisioning (no compilation required)
- Consistent cross-platform behavior with identical Python builds
- Improved reliability by eliminating platform-specific build failures
- Better test framework integration with parameterized environment testing

GitOrigin-RevId: a44957c3014f9e1fc7dbec347a7e245675f999c1
2026-01-10 00:33:44 +00:00
Vladimir Krivosheev
a0a2234f29 IJPL-224042 IJ-MR-184958 IJ-MR-184993 IJ-MR-179029 IJ-MR-184126 IJ-MR-181153 IJ-MR-146078 IJ-MR-175479 IJ-MR-186058 fix direct use of hamcrest
GitOrigin-RevId: d6df96d87f85db8966bbe260afe071992832593d
2025-12-20 16:34:23 +00:00
Mikhail Filippov
7744eca84a [build] IJPL-220367 bump Kotlin language and API versions
GitOrigin-RevId: c58c2f2ca3e4fbbe5116bd19119345174b7db32f
2025-12-20 13:35:48 +00:00
Vladimir Krivosheev
6240c724bf IJPL-224042 IJ-MR-184958 IJ-MR-184993 IJ-MR-179029 IJ-MR-184126 IJ-MR-181153 IJ-MR-146078 IJ-MR-175479 IJ-MR-186058 fix direct usage of libraries (we fixed corresponding test)
GitOrigin-RevId: 63c484ecb4165e5a254e2b91d49c7980b7c29b44
2025-12-20 11:39:46 +00:00
Vitaly Legchilkin
971b906415 PY-85211 mark pre-target sdks as invalid (we don't support them anymore)
GitOrigin-RevId: 1cb0b31bcb00a1a9f70fad91f082facb7b517183
2025-12-10 21:08:52 +00:00
Vladimir Krivosheev
56bf43d2a9 IJPL-220739 IJ-MR-179029 IJ-MR-175479 IJ-MR-184126 convert kotlinx-coroutines-core lib to product module
GitOrigin-RevId: cb29d371d95f2e59ea722906c35dacf87992de97
2025-12-01 21:40:00 +00:00
Ilya.Kazakevich
40bb816185 [python] PY-85791: Introduce ExecOptions.weight to limit concurrent processes.
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
2025-11-29 23:31:55 +00:00
Andrii Zinchenko
092344bb30 [eel] IJPL-217770: Decouple EelDescriptor and EelMachine through EelMachineProvider
GitOrigin-RevId: 407055c63d852a064a689679f49a0beb06b8d205
2025-11-28 20:54:11 +00:00
David Lysenko
f411d556ed [pycharm] PY-85729 Add a stress env test
GitOrigin-RevId: 409f4fa6ba8a7dcec36aa515d809491352c327a3
2025-11-21 20:13:25 +00:00
David Lysenko
aa573b51d9 [pycharm] PY-85729 Minor cosmetic fixes
GitOrigin-RevId: 15eca2e26845487429fb324051d504ff2567ea27
2025-11-21 20:13:25 +00:00
David Lysenko
6f055e65b8 [pycharm] PY-85729 Fix potential OOM: adjust limits
GitOrigin-RevId: b58e62b11750ebc0088dd42a6aa11ef0f63f6486
2025-11-21 20:13:24 +00:00
Ilya Kazakevich
679db704aa [python]: PY-85585 : Do not display vens as system pythons in "Add new interpreter" window.
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
2025-11-19 14:24:40 +00:00
David Lysenko
b8d538a947 [pycharm] PY-85618 Expose target information
Merge-request: IJ-MR-182369
Merged-by: David Lysenko <david.lysenko@jetbrains.com>

GitOrigin-RevId: 3a29771c841058d1591ae79eee71887ce495d15e
2025-11-17 13:34:26 +00:00
Andrii Zinchenko
00785c162c [eel] PY-85575, IJPL-172898: add EelTargetEnvironmentTest
GitOrigin-RevId: adbfbfc527baa9ada97d8acf11c01be43df44db9
2025-11-13 17:00:42 +00:00
Marcus Mews
5b1ecdc550 PY-57566 Support PEP 660 editable installs
GitOrigin-RevId: 21a49e6a178ea9cf2c09dfc3b66ae129a9d0bb51
2025-11-13 09:00:41 +00:00
Vladimir.Koshelev
4420ac1e90 [python] PY-85206 increase timeout
GitOrigin-RevId: 0769b50e35160dda55214bc431b915d1955311cd
2025-11-07 16:39:23 +00:00
Ilya.Kazakevich
d9d73d80a8 [python] PY-85433: Survive IOException thrown by read.
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
2025-11-07 13:26:07 +00:00
Nikolay Chashnikov
9888c763e4 [plugin model] use internal visibility for content modules which are used from test plugins (IJPL-206556)
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
2025-11-04 10:12:54 +00:00
Alexey Katsman
ea82fe5cc2 [python] PY-83881 Provide python info during environment detection
GitOrigin-RevId: 4e424c8fa9c08ce3cd497586f5f13e5a5816f52a
2025-10-31 17:55:16 +00:00
David Lysenko
72f575fa9b PY-85090
[pycharm] PY-85090 Improve close detection for LoggingProcess

[pycharm] PY-85090 Address feedback

[pycharm] PY-85090 Add empty screen when contexts are selected

[pycharm] PY-85090 Change expand/collapse all logic

[pycharm] PY-85090 Improve collapse all/expand all logic

[pycharm] PY-85090 Add bulk read override


Merge-request: IJ-MR-179958
Merged-by: David Lysenko <david.lysenko@jetbrains.com>

GitOrigin-RevId: 00b7b0dd121eeebcb5920514ca8a535520f71160
2025-10-25 10:41:56 +00:00
Vitaly Legchilkin
c983a10dc4 [python] (PY-84946) catch RuntimeException in target execution
* 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
2025-10-22 08:32:38 +00:00
David Lysenko
b7bfaba4ab [pycharm] PY-81494 Fix deadlocking code
Merge-request: IJ-MR-179432
Merged-by: David Lysenko <david.lysenko@jetbrains.com>

GitOrigin-RevId: ef580c3f707d8f8c4f9f853e5569cdeddadd2e8c
2025-10-21 21:24:59 +00:00
Alexey Katsman
efa8a7a246 [python] PY-84777 Use system pythons as a fallback for SDK configuration
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
2025-10-21 12:52:02 +00:00
David Lysenko
f9835df460 PY-81494
[pycharm] PY-81494 Fix further flakiness

[pycharm] PY-81494 Address feedback

[pycharm] PY-81494 Fix flakiness

[pycharm] PY-81494 Separate modules

[pycharm] PY-81494 Fix tests

[pycharm] PY-81494 Change waitFor to awaitExit for coroutines

[pycharm] PY-81494 Configuration fixes

[pycharm] PY-81494 Add usage statistics

[pycharm] PY-81494 Address feedback

[pycharm] PY-81494 Add more limit tests

[pycharm] PY-81494 Post-rebase fixes

[pycharm] PY-81494 Implement logging tests

[pycharm] PY-81494 Final design adjustments

[pycharm] PY-81494 Refactor flows

[pycharm] PY-81494 Add more OutputSection tests

[pycharm] PY-81494 Add Toolbar tests

[pycharm] PY-81494 Add InterText tests

[pycharm] PY-81494 Add FilterActionGroup tests

[pycharm] PY-81494 Add EmptyContainerNotice tests

[pycharm] PY-81494 Add CollapsibleListSection tests

[pycharm] PY-81494 Add ActionIconButton tests

[pycharm] PY-81494 Address feedback

[pycharm] PY-81494 Address feedback

[pycharm] PY-81494 Post-rebase fixes

[pycharm] PY-81494 Address initial feedback

[pycharm] PY-81494 Fix existing tests & add new to tree

[pycharm] PY-81494 Implement copy to clipboard button

[pycharm] PY-81494 Amend design

[pycharm] PY-81494 Begin implementing output tests

[pycharm] PY-81494 Refactor file structure

[pycharm] PY-81494 Implement tests for process list

[pycharm] PY-81494 wip tests for process list

[pycharm] PY-81494 Finishing touches

[pycharm] PY-81494 Consolidate list logic in the model

[pycharm] PY-81494 Add logging limits

[pycharm] PY-81494 Implement open tool window on exec service error

[pycharm] PY-81494 Implement open command in terminal

[pycharm] PY-81494 Add expansion actions

[pycharm] PY-81494 Implement categorization by coroutine names

[pycharm] PY-81494 Memorize expansion states between tool window openings

[pycharm] PY-81494 Memorize scroll state between tool window openings

[pycharm] PY-81494 Introduce collapsible section for process info

[pycharm] PY-81494 Implement view setting filtering

[pycharm] PY-81494 Refactor process logging to use shared flows

[pycharm] PY-81494 Implement tests for ProcessList composable

[pycharm] PY-81494 Implement process toolwindow prototype


Merge-request: IJ-MR-176106
Merged-by: David Lysenko <david.lysenko@jetbrains.com>

GitOrigin-RevId: 16ffe4980f92254afd269f5c65bb5cf4d5d78fc9
2025-10-21 07:58:13 +00:00
Vitaly Legchilkin
5d1d4f7c80 [python] (PY-78749) support ssh upload
Merge-request: IJ-MR-178510
Merged-by: Vitaly Legchilkin <Vitaly.Legchilkin@jetbrains.com>

GitOrigin-RevId: 1085eccff5433c0902aac46d648c9f536241e5d5
2025-10-15 17:54:06 +00:00
Vitaly Legchilkin
8cd1721c45 [python] catch ServerRuntimeException from target SDKs
* Docker client throws it when docker agent is not available for example.

GitOrigin-RevId: 4e3a06467423ecbb0862beb5a7f8c692181855c9
2025-10-13 22:54:32 +00:00
Vitaly Legchilkin
5e2028d129 [python] (PY-78749) single dialog for all types of Python SDKs
+ old dialogs were removed

GitOrigin-RevId: 00ed85ba578c6419373d8605ed50954e7aa58f0a
2025-10-13 22:54:32 +00:00
Alexey Katsman
0c509dbb23 PY-82666 Fix undetached process cancellation when running packaging tool
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
2025-10-05 17:18:24 +00:00
Vladimir Krivosheev
d7875f7d97 IJPL-209419 remove unused dependency on intellij.platform.eel.impl
GitOrigin-RevId: 4335e0cc630a881691909b11cc23b140acccbbc1
2025-10-03 15:08:44 +00:00
Ilia Kirianovskii
f43aa95086 [bazel] Update build files (IJI-3062)
GitOrigin-RevId: 98a67396a48bddc3d084cc93c50ae2f2017bfe8c
2025-09-29 00:11:15 +00:00
Vladimir Krivosheev
1b3c93d736 IJ-CR-146078 IJPL-209510 use kotlinx-serialization core and json product modules instead of jps lib (except fleet - no idea what to do)
GitOrigin-RevId: b74e1ac62eb7917aac3d5edb4bbfd2be2a4a191e
2025-09-26 20:36:41 +00:00
Vladimir.Koshelev
c5b44ca085 [python] PY-84398 get rid of package prefix in python modules.
It doesn't work. Sad, but true.

GitOrigin-RevId: c6cf4f2971ce813a2ce18afb2dcee22c2c5dad75
2025-09-26 15:15:29 +00:00
Vladimir.Koshelev
ba393efaa7 [python] PY-84398 get rid of embedded loading rules in PythonCore plugin, fix related issues
GitOrigin-RevId: 54f4bb333e0ca06a002a86c75f0bbc474863253e
2025-09-26 15:15:29 +00:00
Ilia Kirianovskii
0a0f0f4ba8 [python] Add intellij.python.community.execService._test module descriptor to run tests in dev-mode (IJPL-116621)
GitOrigin-RevId: 4ac875d629c57ba44248cb6028145dc550c77d76
2025-09-25 00:06:41 +00:00
Ilia Kirianovskii
6f8920da99 [bazel] Update build files (IJI-3062)
GitOrigin-RevId: 2394c1289e33945f7640f249b17cbf34b31fd695
2025-09-23 09:25:59 +00:00
Ilya.Kazakevich
0fecbf2ca1 Python: report wrong version string
GitOrigin-RevId: ebdcf4f5be07bd1a7ff4bffd2b81a7114c2f283e
2025-09-02 14:46:47 +00:00
Ilya.Kazakevich
85d34e9c0e Python: drop unused symbols
GitOrigin-RevId: 6d571b57c6e5abe2ac88765b1c73b7f31bb1503b
2025-09-01 18:57:34 +00:00
Nikolay Chashnikov
4f63150cff [intellij project configuration] change JVM target level from 17 to 21 in Kotlin facets (IJPL-176259)
GitOrigin-RevId: d518be3562a359b9d4034c2972d7c8444741b7f0
2025-08-30 07:50:09 +00:00
Ilya.Kazakevich
0cf893efdf Python: support getting version for python on target.
See test for usage example

GitOrigin-RevId: aa65f15d294585040c3cdadc2ef3057c85136a19
2025-08-27 22:56:52 +00:00
Aleksei.Cherepanov
c7515bfd3a KTIJ-35250 [Bazel] Promote "Missing dependency superclass" warning to error (part 2)
This commit enables check only for modules WITH a Kotlin facet
Bazel generator was updated as well

GitOrigin-RevId: 90a3427d4b5a3ebc29e257693cb3748ac09bfc6a
2025-08-24 18:49:00 +00:00
Ilia Kirianovskii
dc268560b6 [bazel] Update build files (IJI-2835)
GitOrigin-RevId: 275260ab73f59d3c08f0b4cb9f4c89b74054094a
2025-08-20 08:49:22 +00:00
Vitaly Legchilkin
eb336fedc2 [python] show execution command and outputs for conda runner in case of parsing failures (PY-76274)
+ ZeroCodeStdoutParserTransformer  
 + ZeroCodeJsonParserTransformer
 + add transformer showcase


Merge-request: IJ-MR-172758
Merged-by: Vitaly Legchilkin <Vitaly.Legchilkin@jetbrains.com>

GitOrigin-RevId: 1f293e8725a986eaed2a6050a3c6a240441f09fe
2025-08-19 08:09:48 +00:00
Ilya.Kazakevich
c51f227a33 PyCharm tests: shutdown targets when process dies
GitOrigin-RevId: 7036b78a905017b418cecc8d16659bcdcdee4f9e
2025-08-13 22:20:51 +00:00
Ilya Kazakevich
ec7562bf07 Python: Introduce API to get process from SDK via ExecService
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
2025-08-08 19:08:05 +00:00
Ilya.Kazakevich
12960161ff Python: Introduce functions to call code against SDK:
See `sdkExecApi.kt`

GitOrigin-RevId: 0014b607ee6efa058e9144cfb208c7e75dff1e47
2025-08-06 23:27:57 +00:00