diff -r d2fb44007ed3 -r 8bb763e85937 src/eric7/PipInterface/PipPackagesWidget.py --- a/src/eric7/PipInterface/PipPackagesWidget.py Wed Sep 13 17:46:12 2023 +0200 +++ b/src/eric7/PipInterface/PipPackagesWidget.py Thu Sep 14 15:54:56 2023 +0200 @@ -292,10 +292,10 @@ @type bool """ if not shutdown: + # the project entry is always at index 1 if self.environmentsComboBox.currentIndex() == 1: self.environmentsComboBox.setCurrentIndex(0) - # the project entry is always at index 1 self.environmentsComboBox.removeItem(1) def __populateEnvironments(self): @@ -441,7 +441,6 @@ with EricOverrideCursor(): # 1. populate with installed packages - self.packagesList.setUpdatesEnabled(False) installedPackages = self.__pip.getInstalledPackages( venvName, localPackages=self.localCheckBox.isChecked(), @@ -450,41 +449,60 @@ ) for package, version in installedPackages: QTreeWidgetItem(self.packagesList, [package, version, "", ""]) - self.packagesList.setUpdatesEnabled(True) + self.packagesList.sortItems( + PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder + ) + self.packagesList.resizeColumnToContents( + PipPackagesWidget.PackageColumn + ) + self.packagesList.resizeColumnToContents( + PipPackagesWidget.InstalledVersionColumn + ) + QApplication.processEvents() + + # 2. update with vulnerability information + if self.vulnerabilityCheckBox.isChecked(): + self.__updateVulnerabilityData() + self.packagesList.resizeColumnToContents( + PipPackagesWidget.VulnerabilityColumn + ) self.statusLabel.setText(self.tr("Getting outdated packages...")) QApplication.processEvents() - # 2. update with update information - self.packagesList.setUpdatesEnabled(False) - outdatedPackages = self.__pip.getOutdatedPackages( + # 3. update with update information + self.__pip.getOutdatedPackages( venvName, localPackages=self.localCheckBox.isChecked(), notRequired=self.notRequiredCheckBox.isChecked(), usersite=self.userCheckBox.isChecked(), + callback=self.__updateOutdatedInfo, ) - for package, _version, latest in outdatedPackages: - items = self.packagesList.findItems( - package, - Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive, - ) - if items: - itm = items[0] - itm.setText( - PipPackagesWidget.AvailableVersionColumn, latest - ) - QApplication.processEvents() + + else: + self.__updateActionButtons() + self.__updateSearchActionButtons() + self.__updateSearchButton() + self.__updateSearchMoreButton(False) + + def __updateOutdatedInfo(self, outdatedPackages): + """ + Private method to process the list of outdated packages. - # 3. update with vulnerability information - if self.vulnerabilityCheckBox.isChecked(): - self.__updateVulnerabilityData() - - self.packagesList.sortItems( - PipPackagesWidget.PackageColumn, Qt.SortOrder.AscendingOrder - ) - for col in range(self.packagesList.columnCount()): - self.packagesList.resizeColumnToContents(col) - self.packagesList.setUpdatesEnabled(True) - self.statusLabel.hide() + @param outdatedPackages list of tuples containing the package name, + installed version and available version + @type list of tuple of (str, str, str) + """ + for package, _version, latest in outdatedPackages: + items = self.packagesList.findItems( + package, + Qt.MatchFlag.MatchExactly | Qt.MatchFlag.MatchCaseSensitive, + ) + if items: + items[0].setText(PipPackagesWidget.AvailableVersionColumn, latest) + self.packagesList.resizeColumnToContents( + PipPackagesWidget.AvailableVersionColumn + ) + self.statusLabel.hide() self.__updateActionButtons() self.__updateSearchActionButtons() @@ -611,6 +629,8 @@ self.vulnerabilitiesInfoWidget.clear() self.infoWidget.tabBar().hide() + self.__updateActionButtons() + @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem) def on_packagesList_currentItemChanged(self, curr, prev): """