1. Delete `intellij.python.community.impl.xml` (move content to `PythonCore` plugin). It is necessary to fix incorrect dependencies: `PythonCore`, `Pythonid` include the same module.
2. Fixed dependencies: if some plugin/module needs Python core functionality, then it should depend on `PythonCore`.
Co-authored-by: Vladimir Koshelev <Vladimir.Koshelev@jetbrains.com>
Merge-request: IJ-MR-136158
Merged-by: Egor Eliseev <Egor.Eliseev@jetbrains.com>
GitOrigin-RevId: ce9ed4c17f601ee1ca2b6cf608f4e30fdac1d879
Layout:
JPS modules
`intellij.python.community`
`intellij.python.community.impl`
`intellij.python.parser`
`intellij.python.psi`
`intellij.python.psi.impl`
`intellij.python.ast`
use package `com.jetbrains.python`
and go to `intellij.python.community.impl` v2 module
JPS module
`intellij.python`
uses package `com.intellij.python.pro`
and goes to `intellij.python/pro` v2 module
Both v2 modules (along with lots of others) come with
`PythonId` (prof) or `PythonCore` (community) plugins
DS bundles `intellij.python.community.impl`
Idea and other Mini IDEs get `PythonCore` or `PythonId` plugin that bundle modules for Idea and mini IDEs
GitOrigin-RevId: 98f418c52d90d51b9adf3250c561f2c36c767e2d
Icons removed from SDK package (no need to have a separate class for it), ultimate icons moved out of community module.
There are only 3 icon packages in community:
* `PythonParserIcons`
* `PythonPsiApiIcons`
* `PythonIcons` (aka `intellij.python.community.impl`)
Latter two have `.json` mapper to replace old icons with new one for New UI which is included into corresponding `.xml` file.
GitOrigin-RevId: 0438ad4485b5a82a89c81ec63ae6e575d5bb52de
The new version of the new project wizard has been stable for more than a year. Anymore, we don't need fallback to old one.
GitOrigin-RevId: 1351f238d7b44a775e0cfaf61fcfadb09fbbc702
Otherwise, calling `ProjectStructureConfigurable.reset` leads to packages updates for every python interpreter registered in the IDE and all these updates can stuck in `PyPIPackageUtil.loadPackages`.
GitOrigin-RevId: 3bf23eea9fe562b7ea314ae2cdd37cb9203a54f9
You can now create a Python project either via the New Project node or via framework-specific nodes: Django, Flask, FastAPI.
GitOrigin-RevId: 690c9f6571c91e8a60c12efe932dc9b7efafe0cd
They're confusing, and their reason for existence is much better served with "No Python/Ruby interpreter configured" editor notifications
GitOrigin-RevId: 4c6705d5aa61476dfaedcf0fe79f56caa2833823
Completion contributors already wrapped in `DumbModeAccessType.RELIABLE_DATA_ONLY.ignoreDumbMode` in `CompletionProgressIndicator#calculateItems` so we don't need any extra-wrappings to prevent IndexNotReadyException
(cherry picked from commit 83c120ed2502474f3ddcfa2a52c6e9552d02e55e)
IJ-CR-14512
GitOrigin-RevId: e806ecb879708a75a8e7f544ea6d16a0648ca069
Python project base directory stored in context was ignored during looking for virtual envs because module was not passed.
Such inner venv did not have a precedence in sorting by the same reason.
GitOrigin-RevId: 99bf42d3c9c254878e944cbfc186bdd26b8e580b
Otherwise, some typeshed directory could be considered as a package and name would be resolved to it even if the corresponding python package is not installed (PyTypeShed.maySearchForStubInRoot is ignored in this case).
GitOrigin-RevId: c453b28655b710f092c9ece3d868a0ee5141c0dd
Main change: setup detected sdk.
Iterate through modules and configure python for all of them instead of doing so file by file.
GitOrigin-RevId: 6a19eeaa42aa78e1b959a413e2533ad33fca810b
This commit introduces ModuleConfigurationState::getCurrentRootModel method which can be used if we need to just read the current state of the model and don't need to modify it, and explicit 'getModifiableRootModel' method. The old 'getRootModel' method is deprecated and all its usages are replaced by usages of one of the new methods. This way we avoid creating unnecessary instances of ModifiableRootModel to improve performance and avoid exceptions (EA-251419) which may happen if ModifiableRootModel is created during commit (when ClasspathPanelImpl creates modifiable model to update the table during processing 'rootsChanged').
GitOrigin-RevId: 4cbd410ed6039a5ee652d2585bdeee429baf7df7
SdkModificator is not well supported in PythonSdkUpdater and editable copy could play its role instead.
The consequence is that changes are applied only after OK is clicked in `Show All` dialog.
Previously it could be came over by creating sdk modificator for original sdk.
GitOrigin-RevId: 5415eb3bb6c971342b1c1ff576c44bc4571d0bde
Previous synchronization of background updates in PythonSdkUpdater was flawed.
It didn't prevent us from launching several concurrent updates for the same
SDK, but only blocked subsequent refresh tasks on a BlockingSet, still showing
the corresponding progress indicators, piling up threads and exhausting system
resources.
The new implementation attempts to enforce the following policy: no two updates
for the same SDK can be run concurrently, and all subsequent updates for an SDK
already being refreshed are squashed and queued to be executed once it finished.
We also adjusted PythonSdkUpdater interface to better indicate synchronization
of individual methods. The old update() method, which performed a few of update
operations in a blocking fashion, is now deprecated and replaced with more
explicit scheduleUpdate(), always asynchronous, and internal
updateVersionAndPathsSynchronouslyAndScheduleRemaining() that replicates the old
behavior for the time being due to a number of existing usages, but is to be
revised. Synchronous version and paths refreshes are now performed under a modal
progress indicator.
The legacy updating mechanism can be restored as a fallback if
"python.use.new.sdk.updater" Registry flag is reset.
Additionally, internal PyUpdateProjectSdk action was added for diagnostic.
These changes are a result of a joint effort with Alexey Kniazev.
GitOrigin-RevId: 6260cda7a22c4f5932f7d78eb6660a50e2b972b6
This patch replaces hard coded strings with i18n properties in idea-ui
Signed-off-by: Nikita Eshkeev <nikita.eshkeev@jetbrains.com>
GitOrigin-RevId: f481ab904b8648a9f0d68d4de91e1f31c01be49f