diff -r 66e67cc6b161 -r ef315a1fdd4a src/eric7/PipInterface/Pip.py --- a/src/eric7/PipInterface/Pip.py Wed Dec 06 15:49:54 2023 +0100 +++ b/src/eric7/PipInterface/Pip.py Wed Dec 06 16:33:04 2023 +0100 @@ -324,7 +324,7 @@ p for p in packages if p.lower() - in [ + in ( "pyqt6", "pyqt6-sip", "pyqt6-webengine", @@ -333,7 +333,7 @@ "pyqt6-qt6", "pyqt6-webengine-qt6", "pyqt6-charts-qt6", - ] + ) ] return bool(pyqtPackages) @@ -350,6 +350,32 @@ ericPackages = [p for p in packages if p.lower() == "eric-ide"] return bool(ericPackages) + def __filterUpgradePackages(self, packages): + """ + Private method to filter out the packages that cannot be upgraded without + stopping eric first. + + @param packages list of packages to upgrade + @type list of str + @return list of packages that can be upgraded + @rtype list of str + """ + return [ + p + for p in packages + if p.lower() not in ( + "eric-ide", + "pyqt6", + "pyqt6-sip", + "pyqt6-webengine", + "pyqt6-charts", + "pyqt6-qscintilla", + "pyqt6-qt6", + "pyqt6-webengine-qt6", + "pyqt6-charts-qt6", + ) + ] + def upgradePackages(self, packages, venvName, userSite=False): """ Public method to upgrade the given list of packages. @@ -377,12 +403,17 @@ if upgradeEric or upgradePyQt: try: if upgradeEric and upgradePyQt: - self.__ui.upgradeEricPyQt() + res = self.__ui.upgradeEricPyQt() elif upgradeEric: - self.__ui.upgradeEric() + res = self.__ui.upgradeEric() elif upgradePyQt: - self.__ui.upgradePyQt() - return None # should not be reached; play it safe + res = self.__ui.upgradePyQt() + else: + return None # should not be reached; play it safe + + if not res: + # user rejected PyQt6 and/or eric-ide/eric7 update + packages = self.__filterUpgradePackages(packages) except AttributeError: return False