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
The non-impl modules for these plugins now contain more or less just their plugin.xml files
that declare corresponding dependencies.
GitOrigin-RevId: 84fc4761a595912d676cff1e2ab58fba03a8cd22