eric7/PipInterface/Pip.py

branch
eric7
changeset 8973
ad4848b7fd9b
parent 8972
54816b8f740f
child 8976
ca442cd49b9e
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
     #######################################################################

eric ide

mercurial