diff -r 54816b8f740f -r ad4848b7fd9b eric7/PipInterface/Pip.py --- a/eric7/PipInterface/Pip.py Sun Mar 06 19:53:19 2022 +0100 +++ b/eric7/PipInterface/Pip.py Mon Mar 07 19:18:46 2022 +0100 @@ -740,6 +740,37 @@ return result + def getPackageVersions(self, name): + """ + Public method to get a list of versions available for the given + package. + + @param name package name + @type str + @return list of available versions + @rtype list of str + """ + result = [] + + if name: + url = "{0}/{1}/json".format(self.getIndexUrlPypi(), name) + request = QNetworkRequest(QUrl(url)) + reply = self.__networkManager.get(request) + while not reply.isFinished(): + QCoreApplication.processEvents() + QThread.msleep(100) + + reply.deleteLater() + if reply.error() == QNetworkReply.NetworkError.NoError: + dataStr = str(reply.readAll(), + Preferences.getSystem("IOEncoding"), + 'replace') + with contextlib.suppress(Exception): + data = json.loads(dataStr) + result = list(data["releases"].keys()) + + return result + ####################################################################### ## Cache handling methods below #######################################################################