pip Interface: added menu action for pip cache management.

Wed, 17 Jun 2020 17:12:21 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 17 Jun 2020 17:12:21 +0200
changeset 7626
7f643d41464e
parent 7625
6448a86f3ff2
child 7627
812ee8c0a91a
child 7628
f904d0eef264

pip Interface: added menu action for pip cache management.

docs/changelog file | annotate | diff | comparison | revisions
eric6/APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
eric6/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
eric6/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.PipInterface.Pip.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html file | annotate | diff | comparison | revisions
eric6/PipInterface/Pip.py file | annotate | diff | comparison | revisions
eric6/PipInterface/PipPackagesWidget.py file | annotate | diff | comparison | revisions
eric6/i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_de.qm file | annotate | diff | comparison | revisions
eric6/i18n/eric6_de.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_empty.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_en.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_es.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_it.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
eric6/i18n/eric6_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/docs/changelog	Tue Jun 16 20:03:23 2020 +0200
+++ b/docs/changelog	Wed Jun 17 17:12:21 2020 +0200
@@ -1,7 +1,9 @@
 Change Log
 ----------
-Version 20.6:
+Version 20.7:
 - bug fixes
+- pip Interface
+  -- added menu action for pip cache management
 - Code Style Checker
   -- changed the dialog to allow the selection of checker categories
   -- added several security related checks (ported from bandit)
--- a/eric6/APIs/Python3/eric6.api	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/APIs/Python3/eric6.api	Wed Jun 17 17:12:21 2020 +0200
@@ -2741,6 +2741,9 @@
 eric6.PipInterface.Pip.Pip.DefaultIndexUrlPip?7
 eric6.PipInterface.Pip.Pip.DefaultIndexUrlXml?7
 eric6.PipInterface.Pip.Pip.DefaultPyPiUrl?7
+eric6.PipInterface.Pip.Pip.cacheList?4(venvName)
+eric6.PipInterface.Pip.Pip.cachePurge?4(venvName)
+eric6.PipInterface.Pip.Pip.cacheRemove?4(venvName)
 eric6.PipInterface.Pip.Pip.getIndexUrl?4()
 eric6.PipInterface.Pip.Pip.getIndexUrlXml?4()
 eric6.PipInterface.Pip.Pip.getInstalledPackages?4(envName, localPackages=True, notRequired=False, usersite=False)
@@ -2756,6 +2759,7 @@
 eric6.PipInterface.Pip.Pip.installRequirements?4(venvName)
 eric6.PipInterface.Pip.Pip.repairPip?4(venvName)
 eric6.PipInterface.Pip.Pip.runProcess?4(args, interpreter)
+eric6.PipInterface.Pip.Pip.showCacheInfo?4(venvName)
 eric6.PipInterface.Pip.Pip.uninstallPackages?4(packages, venvName)
 eric6.PipInterface.Pip.Pip.uninstallRequirements?4(venvName)
 eric6.PipInterface.Pip.Pip.upgradePackages?4(packages, venvName, userSite=False)
Binary file eric6/Documentation/Help/source.qch has changed
--- a/eric6/Documentation/Help/source.qhp	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/Documentation/Help/source.qhp	Wed Jun 17 17:12:21 2020 +0200
@@ -10608,6 +10608,9 @@
       <keyword name="Pip (Constructor)" id="Pip (Constructor)" ref="eric6.PipInterface.Pip.html#Pip.__init__" />
       <keyword name="Pip (Module)" id="Pip (Module)" ref="eric6.PipInterface.Pip.html" />
       <keyword name="Pip.__checkUpgradePyQt" id="Pip.__checkUpgradePyQt" ref="eric6.PipInterface.Pip.html#Pip.__checkUpgradePyQt" />
+      <keyword name="Pip.cacheList" id="Pip.cacheList" ref="eric6.PipInterface.Pip.html#Pip.cacheList" />
+      <keyword name="Pip.cachePurge" id="Pip.cachePurge" ref="eric6.PipInterface.Pip.html#Pip.cachePurge" />
+      <keyword name="Pip.cacheRemove" id="Pip.cacheRemove" ref="eric6.PipInterface.Pip.html#Pip.cacheRemove" />
       <keyword name="Pip.getIndexUrl" id="Pip.getIndexUrl" ref="eric6.PipInterface.Pip.html#Pip.getIndexUrl" />
       <keyword name="Pip.getIndexUrlXml" id="Pip.getIndexUrlXml" ref="eric6.PipInterface.Pip.html#Pip.getIndexUrlXml" />
       <keyword name="Pip.getInstalledPackages" id="Pip.getInstalledPackages" ref="eric6.PipInterface.Pip.html#Pip.getInstalledPackages" />
@@ -10623,6 +10626,7 @@
       <keyword name="Pip.installRequirements" id="Pip.installRequirements" ref="eric6.PipInterface.Pip.html#Pip.installRequirements" />
       <keyword name="Pip.repairPip" id="Pip.repairPip" ref="eric6.PipInterface.Pip.html#Pip.repairPip" />
       <keyword name="Pip.runProcess" id="Pip.runProcess" ref="eric6.PipInterface.Pip.html#Pip.runProcess" />
+      <keyword name="Pip.showCacheInfo" id="Pip.showCacheInfo" ref="eric6.PipInterface.Pip.html#Pip.showCacheInfo" />
       <keyword name="Pip.uninstallPackages" id="Pip.uninstallPackages" ref="eric6.PipInterface.Pip.html#Pip.uninstallPackages" />
       <keyword name="Pip.uninstallRequirements" id="Pip.uninstallRequirements" ref="eric6.PipInterface.Pip.html#Pip.uninstallRequirements" />
       <keyword name="Pip.upgradePackages" id="Pip.upgradePackages" ref="eric6.PipInterface.Pip.html#Pip.upgradePackages" />
@@ -10698,12 +10702,16 @@
       <keyword name="PipPackagesWidget.__pipConfigure" id="PipPackagesWidget.__pipConfigure" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__pipConfigure" />
       <keyword name="PipPackagesWidget.__populateEnvironments" id="PipPackagesWidget.__populateEnvironments" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__populateEnvironments" />
       <keyword name="PipPackagesWidget.__processSearchResult" id="PipPackagesWidget.__processSearchResult" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__processSearchResult" />
+      <keyword name="PipPackagesWidget.__purgeCache" id="PipPackagesWidget.__purgeCache" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__purgeCache" />
       <keyword name="PipPackagesWidget.__refreshPackagesList" id="PipPackagesWidget.__refreshPackagesList" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__refreshPackagesList" />
+      <keyword name="PipPackagesWidget.__removeCachedFiles" id="PipPackagesWidget.__removeCachedFiles" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__removeCachedFiles" />
       <keyword name="PipPackagesWidget.__repairPip" id="PipPackagesWidget.__repairPip" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__repairPip" />
       <keyword name="PipPackagesWidget.__score" id="PipPackagesWidget.__score" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__score" />
       <keyword name="PipPackagesWidget.__search" id="PipPackagesWidget.__search" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__search" />
       <keyword name="PipPackagesWidget.__searchError" id="PipPackagesWidget.__searchError" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__searchError" />
       <keyword name="PipPackagesWidget.__selectedUpdateableItems" id="PipPackagesWidget.__selectedUpdateableItems" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__selectedUpdateableItems" />
+      <keyword name="PipPackagesWidget.__showCacheInfo" id="PipPackagesWidget.__showCacheInfo" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showCacheInfo" />
+      <keyword name="PipPackagesWidget.__showCacheList" id="PipPackagesWidget.__showCacheList" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showCacheList" />
       <keyword name="PipPackagesWidget.__showPackageDetails" id="PipPackagesWidget.__showPackageDetails" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showPackageDetails" />
       <keyword name="PipPackagesWidget.__showSearchedDetails" id="PipPackagesWidget.__showSearchedDetails" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__showSearchedDetails" />
       <keyword name="PipPackagesWidget.__transformHits" id="PipPackagesWidget.__transformHits" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__transformHits" />
--- a/eric6/Documentation/Source/eric6.PipInterface.Pip.html	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/Documentation/Source/eric6.PipInterface.Pip.html	Wed Jun 17 17:12:21 2020 +0200
@@ -77,6 +77,18 @@
 <td>Private method to check, if an upgrade of PyQt packages is attempted.</td>
 </tr>
 <tr>
+<td><a href="#Pip.cacheList">cacheList</a></td>
+<td>Public method to list files contained in the pip cache.</td>
+</tr>
+<tr>
+<td><a href="#Pip.cachePurge">cachePurge</a></td>
+<td>Public method to remove all files from the pip cache.</td>
+</tr>
+<tr>
+<td><a href="#Pip.cacheRemove">cacheRemove</a></td>
+<td>Public method to remove files from the pip cache.</td>
+</tr>
+<tr>
 <td><a href="#Pip.getIndexUrl">getIndexUrl</a></td>
 <td>Public method to get the index URL for PyPI.</td>
 </tr>
@@ -137,6 +149,10 @@
 <td>Public method to execute the current pip with the given arguments.</td>
 </tr>
 <tr>
+<td><a href="#Pip.showCacheInfo">showCacheInfo</a></td>
+<td>Public method to show some information about the pip cache.</td>
+</tr>
+<tr>
 <td><a href="#Pip.uninstallPackages">uninstallPackages</a></td>
 <td>Public method to uninstall the given list of packages.</td>
 </tr>
@@ -195,6 +211,48 @@
 bool
 </dd>
 </dl>
+<a NAME="Pip.cacheList" ID="Pip.cacheList"></a>
+<h4>Pip.cacheList</h4>
+<b>cacheList</b>(<i>venvName</i>)
+
+<p>
+        Public method to list files contained in the pip cache.
+</p>
+<dl>
+
+<dt><i>venvName</i> (str)</dt>
+<dd>
+name of the virtual environment to be used
+</dd>
+</dl>
+<a NAME="Pip.cachePurge" ID="Pip.cachePurge"></a>
+<h4>Pip.cachePurge</h4>
+<b>cachePurge</b>(<i>venvName</i>)
+
+<p>
+        Public method to remove all files from the pip cache.
+</p>
+<dl>
+
+<dt><i>venvName</i> (str)</dt>
+<dd>
+name of the virtual environment to be used
+</dd>
+</dl>
+<a NAME="Pip.cacheRemove" ID="Pip.cacheRemove"></a>
+<h4>Pip.cacheRemove</h4>
+<b>cacheRemove</b>(<i>venvName</i>)
+
+<p>
+        Public method to remove files from the pip cache.
+</p>
+<dl>
+
+<dt><i>venvName</i> (str)</dt>
+<dd>
+name of the virtual environment to be used
+</dd>
+</dl>
 <a NAME="Pip.getIndexUrl" ID="Pip.getIndexUrl"></a>
 <h4>Pip.getIndexUrl</h4>
 <b>getIndexUrl</b>(<i></i>)
@@ -570,6 +628,20 @@
 tuple of (bool, str)
 </dd>
 </dl>
+<a NAME="Pip.showCacheInfo" ID="Pip.showCacheInfo"></a>
+<h4>Pip.showCacheInfo</h4>
+<b>showCacheInfo</b>(<i>venvName</i>)
+
+<p>
+        Public method to show some information about the pip cache.
+</p>
+<dl>
+
+<dt><i>venvName</i> (str)</dt>
+<dd>
+name of the virtual environment to be used
+</dd>
+</dl>
 <a NAME="Pip.uninstallPackages" ID="Pip.uninstallPackages"></a>
 <h4>Pip.uninstallPackages</h4>
 <b>uninstallPackages</b>(<i>packages, venvName</i>)
--- a/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html	Wed Jun 17 17:12:21 2020 +0200
@@ -149,10 +149,18 @@
 <td>Private method to process the search result data from PyPI.</td>
 </tr>
 <tr>
+<td><a href="#PipPackagesWidget.__purgeCache">__purgeCache</a></td>
+<td>Private slot to empty the pip cache.</td>
+</tr>
+<tr>
 <td><a href="#PipPackagesWidget.__refreshPackagesList">__refreshPackagesList</a></td>
 <td>Private method to referesh the packages list.</td>
 </tr>
 <tr>
+<td><a href="#PipPackagesWidget.__removeCachedFiles">__removeCachedFiles</a></td>
+<td>Private slot to remove files from the pip cache.</td>
+</tr>
+<tr>
 <td><a href="#PipPackagesWidget.__repairPip">__repairPip</a></td>
 <td>Private slot to repair the pip installation of the selected environment.</td>
 </tr>
@@ -173,6 +181,14 @@
 <td>Private method to get a list of selected items that can be updated.</td>
 </tr>
 <tr>
+<td><a href="#PipPackagesWidget.__showCacheInfo">__showCacheInfo</a></td>
+<td>Private slot to show information about the cache.</td>
+</tr>
+<tr>
+<td><a href="#PipPackagesWidget.__showCacheList">__showCacheList</a></td>
+<td>Private slot to show a list of cached files.</td>
+</tr>
+<tr>
 <td><a href="#PipPackagesWidget.__showPackageDetails">__showPackageDetails</a></td>
 <td>Private method to populate the package details dialog.</td>
 </tr>
@@ -521,6 +537,13 @@
 result data with hits in the first element
 </dd>
 </dl>
+<a NAME="PipPackagesWidget.__purgeCache" ID="PipPackagesWidget.__purgeCache"></a>
+<h4>PipPackagesWidget.__purgeCache</h4>
+<b>__purgeCache</b>(<i></i>)
+
+<p>
+        Private slot to empty the pip cache.
+</p>
 <a NAME="PipPackagesWidget.__refreshPackagesList" ID="PipPackagesWidget.__refreshPackagesList"></a>
 <h4>PipPackagesWidget.__refreshPackagesList</h4>
 <b>__refreshPackagesList</b>(<i></i>)
@@ -528,6 +551,13 @@
 <p>
         Private method to referesh the packages list.
 </p>
+<a NAME="PipPackagesWidget.__removeCachedFiles" ID="PipPackagesWidget.__removeCachedFiles"></a>
+<h4>PipPackagesWidget.__removeCachedFiles</h4>
+<b>__removeCachedFiles</b>(<i></i>)
+
+<p>
+        Private slot to remove files from the pip cache.
+</p>
 <a NAME="PipPackagesWidget.__repairPip" ID="PipPackagesWidget.__repairPip"></a>
 <h4>PipPackagesWidget.__repairPip</h4>
 <b>__repairPip</b>(<i></i>)
@@ -610,6 +640,20 @@
 list of QTreeWidgetItem
 </dd>
 </dl>
+<a NAME="PipPackagesWidget.__showCacheInfo" ID="PipPackagesWidget.__showCacheInfo"></a>
+<h4>PipPackagesWidget.__showCacheInfo</h4>
+<b>__showCacheInfo</b>(<i></i>)
+
+<p>
+        Private slot to show information about the cache.
+</p>
+<a NAME="PipPackagesWidget.__showCacheList" ID="PipPackagesWidget.__showCacheList"></a>
+<h4>PipPackagesWidget.__showCacheList</h4>
+<b>__showCacheList</b>(<i></i>)
+
+<p>
+        Private slot to show a list of cached files.
+</p>
 <a NAME="PipPackagesWidget.__showPackageDetails" ID="PipPackagesWidget.__showPackageDetails"></a>
 <h4>PipPackagesWidget.__showPackageDetails</h4>
 <b>__showPackageDetails</b>(<i>packageName, packageVersion</i>)
--- a/eric6/PipInterface/Pip.py	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/PipInterface/Pip.py	Wed Jun 17 17:12:21 2020 +0200
@@ -13,7 +13,7 @@
 import json
 
 from PyQt5.QtCore import pyqtSlot, QObject, QProcess, QUrl, QCoreApplication
-from PyQt5.QtWidgets import QDialog
+from PyQt5.QtWidgets import QDialog, QInputDialog, QLineEdit
 from PyQt5.QtNetwork import (
     QNetworkAccessManager, QNetworkRequest, QNetworkReply
 )
@@ -660,3 +660,96 @@
                     pass
         
         return result
+    
+    #######################################################################
+    ## Cache handling methods below
+    #######################################################################
+    
+    def showCacheInfo(self, venvName):
+        """
+        Public method to show some information about the pip cache.
+        
+        @param venvName name of the virtual environment to be used
+        @type str
+        """
+        if venvName:
+            interpreter = self.getVirtualenvInterpreter(venvName)
+            if interpreter:
+                args = ["-m", "pip", "cache", "info"]
+                dia = PipDialog(self.tr("Cache Info"))
+                res = dia.startProcess(interpreter, args, showArgs=False)
+                if res:
+                    dia.exec_()
+    
+    def cacheList(self, venvName):
+        """
+        Public method to list files contained in the pip cache.
+        
+        @param venvName name of the virtual environment to be used
+        @type str
+        """
+        if venvName:
+            interpreter = self.getVirtualenvInterpreter(venvName)
+            if interpreter:
+                pattern, ok = QInputDialog.getText(
+                    None,
+                    self.tr("List Cached Files"),
+                    self.tr("Enter a file pattern (empty for all):"),
+                    QLineEdit.Normal)
+                
+                if ok:
+                    args = ["-m", "pip", "cache", "list"]
+                    if pattern.strip():
+                        args.append(pattern.strip())
+                    dia = PipDialog(self.tr("List Cached Files"))
+                    res = dia.startProcess(interpreter, args,
+                                           showArgs=False)
+                    if res:
+                        dia.exec_()
+    
+    def cacheRemove(self, venvName):
+        """
+        Public method to remove files from the pip cache.
+        
+        @param venvName name of the virtual environment to be used
+        @type str
+        """
+        if venvName:
+            interpreter = self.getVirtualenvInterpreter(venvName)
+            if interpreter:
+                pattern, ok = QInputDialog.getText(
+                    None,
+                    self.tr("Remove Cached Files"),
+                    self.tr("Enter a file pattern:"),
+                    QLineEdit.Normal)
+                
+                if ok and pattern.strip():
+                    args = ["-m", "pip", "cache", "remove", pattern.strip()]
+                    dia = PipDialog(self.tr("Remove Cached Files"))
+                    res = dia.startProcess(interpreter, args,
+                                           showArgs=False)
+                    if res:
+                        dia.exec_()
+    
+    def cachePurge(self, venvName):
+        """
+        Public method to remove all files from the pip cache.
+        
+        @param venvName name of the virtual environment to be used
+        @type str
+        """
+        if venvName:
+            interpreter = self.getVirtualenvInterpreter(venvName)
+            if interpreter:
+                ok = E5MessageBox.yesNo(
+                    None,
+                    self.tr("Purge Cache"),
+                    self.tr("Do you really want to purge the pip cache? All"
+                            " files need to be downloaded again."))
+                if ok:
+                    args = ["-m", "pip", "cache", "purge"]
+                    dia = PipDialog(self.tr("Purge Cache"))
+                    res = dia.startProcess(interpreter, args,
+                                           showArgs=False)
+                    if res:
+                        dia.exec_()
--- a/eric6/PipInterface/PipPackagesWidget.py	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/PipInterface/PipPackagesWidget.py	Wed Jun 17 17:12:21 2020 +0200
@@ -938,6 +938,19 @@
             self.tr("Generate Requirements..."),
             self.__generateRequirements)
         self.__pipMenu.addSeparator()
+        self.__cacheInfoAct = self.__pipMenu.addAction(
+            self.tr("Show Cache Info..."),
+            self.__showCacheInfo)
+        self.__cacheShowListAct = self.__pipMenu.addAction(
+            self.tr("Show Cached Files..."),
+            self.__showCacheList)
+        self.__cacheRemoveAct = self.__pipMenu.addAction(
+            self.tr("Remove Cached Files..."),
+            self.__removeCachedFiles)
+        self.__cachePurgeAct = self.__pipMenu.addAction(
+            self.tr("Purge Cache..."),
+            self.__purgeCache)
+        self.__pipMenu.addSeparator()
         # editUserConfigAct
         self.__pipMenu.addAction(
             self.tr("Edit User Configuration..."),
@@ -973,6 +986,11 @@
         self.__uninstallRequirementsAct.setEnabled(enablePip)
         self.__generateRequirementsAct.setEnabled(enablePip)
         
+        self.__cacheInfoAct.setEnabled(enablePip)
+        self.__cacheShowListAct.setEnabled(enablePip)
+        self.__cacheRemoveAct.setEnabled(enablePip)
+        self.__cachePurgeAct.setEnabled(enablePip)
+        
         self.__editVirtualenvConfigAct.setEnabled(enable)
     
     @pyqtSlot()
@@ -1140,3 +1158,39 @@
         Private slot to open the configuration page.
         """
         e5App().getObject("UserInterface").showPreferences("pipPage")
+    
+    @pyqtSlot()
+    def __showCacheInfo(self):
+        """
+        Private slot to show information about the cache.
+        """
+        venvName = self.environmentsComboBox.currentText()
+        if venvName:
+            self.__pip.showCacheInfo(venvName)
+    
+    @pyqtSlot()
+    def __showCacheList(self):
+        """
+        Private slot to show a list of cached files.
+        """
+        venvName = self.environmentsComboBox.currentText()
+        if venvName:
+            self.__pip.cacheList(venvName)
+    
+    @pyqtSlot()
+    def __removeCachedFiles(self):
+        """
+        Private slot to remove files from the pip cache.
+        """
+        venvName = self.environmentsComboBox.currentText()
+        if venvName:
+            self.__pip.cacheRemove(venvName)
+    
+    @pyqtSlot()
+    def __purgeCache(self):
+        """
+        Private slot to empty the pip cache.
+        """
+        venvName = self.environmentsComboBox.currentText()
+        if venvName:
+            self.__pip.cachePurge(venvName)
--- a/eric6/i18n/eric6_cs.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_cs.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -50728,6 +50728,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -51510,7 +51545,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -51535,28 +51570,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished">Konfigurovat...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished">Konfigurovat...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
Binary file eric6/i18n/eric6_de.qm has changed
--- a/eric6/i18n/eric6_de.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_de.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -47701,6 +47701,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation>Sie versuchen ein Upgrade von PyQt Paketen. Dies könnte für die laufende Python Instanz ({0}) fehlschlagen. Soll fortgefahren werden?</translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation>Zwischenspeicherinformationen</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation>Liste zwischengespeicherte Dateien</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation>Gib ein Dateinamenmuster ein (leer für alle):</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation>Zwischengespeicherte Dateien Löschen</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation>Gib ein Dateinamenmuster ein:</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation>Zwischenspeicher Leeren</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation>Soll der pip Zwischenspeicher wirklich geleert werden? Alle Dateien müssen neu heruntergeladen werden.</translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -48454,7 +48489,7 @@
         <translation>Pip reparieren</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation>Pakete installieren</translation>
     </message>
@@ -48479,29 +48514,49 @@
         <translation>Anforderungen erzeugen...</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation>Nutzerkonfiguration bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation>Umgebungskonfiguration bearbeiten...</translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation>Einstellungen...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation>Konfiguration bearbeiten</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation>Es konnte kein gültiger Konfigurationspfad ermittelt werden. Abbruch</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation>Zwischenspeicherinfo...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation>Zwischengespeicherte Dateien...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation>Zwischengespeicherte Dateien löschen...</translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation>Einstellungen...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation>Konfiguration bearbeiten</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
-        <translation>Es konnte kein gültiger Konfigurationspfad ermittelt werden. Abbruch</translation>
+        <source>Purge Cache...</source>
+        <translation>Zwischenspeicher leeren...</translation>
     </message>
 </context>
 <context>
--- a/eric6/i18n/eric6_empty.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_empty.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -47456,6 +47456,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -48208,7 +48243,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -48233,28 +48268,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
--- a/eric6/i18n/eric6_en.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_en.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -47497,6 +47497,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -48250,7 +48285,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -48275,28 +48310,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
--- a/eric6/i18n/eric6_es.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_es.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -47719,6 +47719,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation>Se está intentando actualizar a nueva versión de packages PyQt. Esto podría no funcionar para la instancia actual de Python ({0}). ¿Desea continuar?</translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -48472,7 +48507,7 @@
         <translation>Reparar Pip</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation>Instalar Packages</translation>
     </message>
@@ -48497,29 +48532,49 @@
         <translation>Generar Requisitos...</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation>Editar Configuración de Usuario...</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation>Editar Configuración de Entorno...</translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation>Configurar...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation>Editar Configuración</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation>No hay una ruta válida de configuración determinada. Abortando</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation>Configurar...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation>Editar Configuración</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
-        <translation>No hay una ruta válida de configuración determinada. Abortando</translation>
+        <source>Purge Cache...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
--- a/eric6/i18n/eric6_fr.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_fr.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -49896,6 +49896,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -50677,7 +50712,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -50702,28 +50737,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished">Configuration...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished">Configuration...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
--- a/eric6/i18n/eric6_it.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_it.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -52362,6 +52362,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -53143,7 +53178,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -53168,28 +53203,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished">Configura...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished">Configura...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
--- a/eric6/i18n/eric6_pt.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_pt.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -51724,6 +51724,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -52515,7 +52550,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -52540,28 +52575,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished">Configurar...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished">Configurar...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
--- a/eric6/i18n/eric6_ru.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_ru.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -47796,6 +47796,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation>Вы пытаетесь обновить PyQt пакеты. Это может не работать для текущего экземпляра Python ({0}). Вы хотите продолжить?</translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -48550,7 +48585,7 @@
         <translation>Восстановить Pip</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation>Установить пакеты</translation>
     </message>
@@ -48575,29 +48610,49 @@
         <translation>Генерация зависимостей...</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation>Правка конфигурации пользователя...</translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation>Правка конфигурации среды окружения...</translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation>Настроить...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation>Правка конфигурации</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation>Не определен допустимый путь конфигурации. Прерывание</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation>Настроить...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation>Правка конфигурации</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
-        <translation>Не определен допустимый путь конфигурации. Прерывание</translation>
+        <source>Purge Cache...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
--- a/eric6/i18n/eric6_tr.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_tr.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -50905,6 +50905,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -51686,7 +51721,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -51711,28 +51746,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished">Ayarlanıyor...</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished">Ayarlanıyor...</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
--- a/eric6/i18n/eric6_zh_CN.ts	Tue Jun 16 20:03:23 2020 +0200
+++ b/eric6/i18n/eric6_zh_CN.ts	Wed Jun 17 17:12:21 2020 +0200
@@ -51540,6 +51540,41 @@
         <source>You are trying to upgrade PyQt packages. This might not work for the current instance of Python ({0}). Do you want to continue?</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="679"/>
+        <source>Cache Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="704"/>
+        <source>List Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="694"/>
+        <source>Enter a file pattern (empty for all):</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="728"/>
+        <source>Remove Cached Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="720"/>
+        <source>Enter a file pattern:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="751"/>
+        <source>Purge Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/Pip.py" line="744"/>
+        <source>Do you really want to purge the pip cache? All files need to be downloaded again.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>PipDialog</name>
@@ -52325,7 +52360,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1015"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1033"/>
         <source>Install Packages</source>
         <translation type="unfinished"></translation>
     </message>
@@ -52350,28 +52385,48 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="942"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="955"/>
         <source>Edit User Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="945"/>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="958"/>
         <source>Edit Environment Configuration...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="963"/>
+        <source>Configure...</source>
+        <translation type="unfinished">配置…</translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>Edit Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="1146"/>
+        <source>No valid configuration path determined. Aborting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="941"/>
+        <source>Show Cache Info...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="944"/>
+        <source>Show Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PipInterface/PipPackagesWidget.py" line="947"/>
+        <source>Remove Cached Files...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../PipInterface/PipPackagesWidget.py" line="950"/>
-        <source>Configure...</source>
-        <translation type="unfinished">配置…</translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>Edit Configuration</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PipInterface/PipPackagesWidget.py" line="1128"/>
-        <source>No valid configuration path determined. Aborting</source>
+        <source>Purge Cache...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>

eric ide

mercurial