PipPackagesWidget: made the cache actions dependent on pip version of selected environment.

Sat, 04 Jul 2020 11:34:37 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 04 Jul 2020 11:34:37 +0200
changeset 7641
21ea4fd50b0a
parent 7640
f9bb7c8c60d8
child 7642
72721823d453
child 7644
4d3482939af3

PipPackagesWidget: made the cache actions dependent on pip version of selected environment.

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.DebugClients.Python.DebugClientBase.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.DebugClients.Python.ThreadExtension.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Globals.__init__.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.PluginCodeStyleChecker.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Plugins.PluginTabnanny.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.__init__.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.pyclbr.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.Utilities.ModuleParser.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.SyntaxChecker.html file | annotate | diff | comparison | revisions
eric6/Documentation/Source/index-eric6.Utilities.ClassBrowsers.html file | annotate | diff | comparison | revisions
eric6/Globals/__init__.py file | annotate | diff | comparison | revisions
eric6/PipInterface/PipPackagesWidget.py file | annotate | diff | comparison | revisions
--- a/eric6/APIs/Python3/eric6.api	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/APIs/Python3/eric6.api	Sat Jul 04 11:34:37 2020 +0200
@@ -298,10 +298,9 @@
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.getCoding?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.getRunning?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.handleJsonCommand?4(jsonStr)
-eric6.DebugClients.Python.DebugClientBase.DebugClientBase.input?4(prompt)
+eric6.DebugClients.Python.DebugClientBase.DebugClientBase.input?4(prompt, echo=True)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.main?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.progTerminated?4(status, message="")
-eric6.DebugClients.Python.DebugClientBase.DebugClientBase.raw_input?4(prompt, echo)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.readReady?4(stream)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.run_call?4(scriptname, func, *args)
 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.sendCallTrace?4(event, fromInfo, toInfo)
@@ -321,7 +320,6 @@
 eric6.DebugClients.Python.DebugClientBase.DebugClientFork?4()
 eric6.DebugClients.Python.DebugClientBase.DebugClientInput?4(prompt="")
 eric6.DebugClients.Python.DebugClientBase.DebugClientInstance?7
-eric6.DebugClients.Python.DebugClientBase.DebugClientRawInput?4(prompt="", echo=True)
 eric6.DebugClients.Python.DebugClientBase.DebugClientSetRecursionLimit?4(limit)
 eric6.DebugClients.Python.DebugClientCapabilities.HasAll?7
 eric6.DebugClients.Python.DebugClientCapabilities.HasCompleter?7
@@ -399,7 +397,6 @@
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.unlockClient?4()
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension.updateThreadList?4()
 eric6.DebugClients.Python.ThreadExtension.ThreadExtension?1()
-eric6.DebugClients.Python.ThreadExtension.ThreadWrapper.timer?7
 eric6.DebugClients.Python.ThreadExtension.ThreadWrapper?1(*args, **kwargs)
 eric6.DebugClients.Python.ThreadExtension.TimerWrapper?1(interval, function, *args, **kwargs)
 eric6.DebugClients.Python.ThreadExtension._qtThreadNumber?8
@@ -1842,7 +1839,7 @@
 eric6.Globals.toDict?4(value)
 eric6.Globals.toList?4(value)
 eric6.Globals.translate?4(*args)
-eric6.Globals.versionToTuple?4(version)
+eric6.Globals.versionToTuple?4(version, length=3)
 eric6.Graphics.ApplicationDiagramBuilder.ApplicationDiagramBuilder.buildDiagram?4()
 eric6.Graphics.ApplicationDiagramBuilder.ApplicationDiagramBuilder.getPersistenceData?4()
 eric6.Graphics.ApplicationDiagramBuilder.ApplicationDiagramBuilder.parsePersistenceData?4(version, data)
@@ -3009,7 +3006,6 @@
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.ComplexityChecker.LineComplexityVisitor?1()
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.DocStyleChecker.Codes?7
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.DocStyleChecker.run?4()
-eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.DocStyleChecker.unpackArgs?4()
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.DocStyleChecker?1(source, filename, select, ignore, expected, repeat, maxLineLength=79, docType="pep257")
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.DocStyleContext.contextType?4()
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.DocStyleContext.end?4()
@@ -3081,7 +3077,6 @@
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker.MixedcaseRegexp?7
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker.UppercaseRegexp?7
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker.run?4()
-eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker.unpackArgs?4()
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.NamingStyleChecker?1(tree, filename, options)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.checkAssertUsed?4(reportError, context, config)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.assert.getChecks?4()
@@ -3109,7 +3104,6 @@
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.DeepAssignation.isAssigned?4(node)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.DeepAssignation.isAssignedIn?4(items)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.DeepAssignation?1(varName, ignoreNodes=None)
-eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.PY2?7
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.checkDjangoXssVulnerability?4(reportError, context, config)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.checkPotentialRisk?4(reportError, node)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.evaluateCall?4(call, parent, ignoreNodes=None)
Binary file eric6/Documentation/Help/source.qch has changed
--- a/eric6/Documentation/Help/source.qhp	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Help/source.qhp	Sat Jul 04 11:34:37 2020 +0200
@@ -3184,7 +3184,6 @@
       <keyword name="DebugClientBase.input" id="DebugClientBase.input" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.input" />
       <keyword name="DebugClientBase.main" id="DebugClientBase.main" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.main" />
       <keyword name="DebugClientBase.progTerminated" id="DebugClientBase.progTerminated" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.progTerminated" />
-      <keyword name="DebugClientBase.raw_input" id="DebugClientBase.raw_input" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.raw_input" />
       <keyword name="DebugClientBase.readReady" id="DebugClientBase.readReady" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.readReady" />
       <keyword name="DebugClientBase.run_call" id="DebugClientBase.run_call" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.run_call" />
       <keyword name="DebugClientBase.sendCallTrace" id="DebugClientBase.sendCallTrace" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientBase.sendCallTrace" />
@@ -3204,7 +3203,6 @@
       <keyword name="DebugClientClose" id="DebugClientClose" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientClose" />
       <keyword name="DebugClientFork" id="DebugClientFork" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientFork" />
       <keyword name="DebugClientInput" id="DebugClientInput" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientInput" />
-      <keyword name="DebugClientRawInput" id="DebugClientRawInput" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientRawInput" />
       <keyword name="DebugClientSetRecursionLimit" id="DebugClientSetRecursionLimit" ref="eric6.DebugClients.Python.DebugClientBase.html#DebugClientSetRecursionLimit" />
       <keyword name="DebugClients (Package)" id="DebugClients (Package)" ref="index-eric6.DebugClients.html" />
       <keyword name="DebugConfig (Module)" id="DebugConfig (Module)" ref="eric6.DebugClients.Python.DebugConfig.html" />
@@ -3653,7 +3651,6 @@
       <keyword name="DocStyleChecker.__checkReturnType" id="DocStyleChecker.__checkReturnType" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__checkReturnType" />
       <keyword name="DocStyleChecker.__checkSummary" id="DocStyleChecker.__checkSummary" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__checkSummary" />
       <keyword name="DocStyleChecker.__checkTripleDoubleQuotes" id="DocStyleChecker.__checkTripleDoubleQuotes" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__checkTripleDoubleQuotes" />
-      <keyword name="DocStyleChecker.__checkUnicode" id="DocStyleChecker.__checkUnicode" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__checkUnicode" />
       <keyword name="DocStyleChecker.__error" id="DocStyleChecker.__error" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__error" />
       <keyword name="DocStyleChecker.__getArgNames" id="DocStyleChecker.__getArgNames" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__getArgNames" />
       <keyword name="DocStyleChecker.__getSummaryLine" id="DocStyleChecker.__getSummaryLine" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__getSummaryLine" />
@@ -3671,7 +3668,6 @@
       <keyword name="DocStyleChecker.__resetReadline" id="DocStyleChecker.__resetReadline" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__resetReadline" />
       <keyword name="DocStyleChecker.__skipIndentedBlock" id="DocStyleChecker.__skipIndentedBlock" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.__skipIndentedBlock" />
       <keyword name="DocStyleChecker.run" id="DocStyleChecker.run" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.run" />
-      <keyword name="DocStyleChecker.unpackArgs" id="DocStyleChecker.unpackArgs" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleChecker.unpackArgs" />
       <keyword name="DocStyleContext" id="DocStyleContext" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleContext" />
       <keyword name="DocStyleContext (Constructor)" id="DocStyleContext (Constructor)" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleContext.__init__" />
       <keyword name="DocStyleContext.contextType" id="DocStyleContext.contextType" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html#DocStyleContext.contextType" />
@@ -10158,7 +10154,6 @@
       <keyword name="NamingStyleChecker.__visitNode" id="NamingStyleChecker.__visitNode" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html#NamingStyleChecker.__visitNode" />
       <keyword name="NamingStyleChecker.__visitTree" id="NamingStyleChecker.__visitTree" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html#NamingStyleChecker.__visitTree" />
       <keyword name="NamingStyleChecker.run" id="NamingStyleChecker.run" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html#NamingStyleChecker.run" />
-      <keyword name="NamingStyleChecker.unpackArgs" id="NamingStyleChecker.unpackArgs" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html#NamingStyleChecker.unpackArgs" />
       <keyword name="NannyNag" id="NannyNag" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag" />
       <keyword name="NannyNag (Constructor)" id="NannyNag (Constructor)" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.__init__" />
       <keyword name="NannyNag.get_line" id="NannyNag.get_line" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_line" />
@@ -10677,6 +10672,7 @@
       <keyword name="PipPackagesWidget (Module)" id="PipPackagesWidget (Module)" ref="eric6.PipInterface.PipPackagesWidget.html" />
       <keyword name="PipPackagesWidget.__aboutToShowPipMenu" id="PipPackagesWidget.__aboutToShowPipMenu" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__aboutToShowPipMenu" />
       <keyword name="PipPackagesWidget.__allUpdateableItems" id="PipPackagesWidget.__allUpdateableItems" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__allUpdateableItems" />
+      <keyword name="PipPackagesWidget.__availablePipVersion" id="PipPackagesWidget.__availablePipVersion" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__availablePipVersion" />
       <keyword name="PipPackagesWidget.__editConfiguration" id="PipPackagesWidget.__editConfiguration" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__editConfiguration" />
       <keyword name="PipPackagesWidget.__editUserConfiguration" id="PipPackagesWidget.__editUserConfiguration" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__editUserConfiguration" />
       <keyword name="PipPackagesWidget.__editVirtualenvConfiguration" id="PipPackagesWidget.__editVirtualenvConfiguration" ref="eric6.PipInterface.PipPackagesWidget.html#PipPackagesWidget.__editVirtualenvConfiguration" />
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html	Sat Jul 04 11:34:37 2020 +0200
@@ -53,11 +53,7 @@
 </tr>
 <tr>
 <td><a href="#DebugClientInput">DebugClientInput</a></td>
-<td>Replacement for the standard input() builtin (Python 2).</td>
-</tr>
-<tr>
-<td><a href="#DebugClientRawInput">DebugClientRawInput</a></td>
-<td>Replacement for the standard raw_input() builtin (Python 2) and the standard input() builtin (Python 3).</td>
+<td>Replacement for the standard input() builtin.</td>
 </tr>
 <tr>
 <td><a href="#DebugClientSetRecursionLimit">DebugClientSetRecursionLimit</a></td>
@@ -220,7 +216,7 @@
 </tr>
 <tr>
 <td><a href="#DebugClientBase.input">input</a></td>
-<td>Public method to implement input() (Python 2) using the event loop.</td>
+<td>Public method to implement input() using the event loop.</td>
 </tr>
 <tr>
 <td><a href="#DebugClientBase.main">main</a></td>
@@ -231,10 +227,6 @@
 <td>Public method to tell the debugger that the program has terminated.</td>
 </tr>
 <tr>
-<td><a href="#DebugClientBase.raw_input">raw_input</a></td>
-<td>Public method to implement raw_input() / input() using the event loop.</td>
-</tr>
-<tr>
 <td><a href="#DebugClientBase.readReady">readReady</a></td>
 <td>Public method called when there is data ready to be read.</td>
 </tr>
@@ -835,10 +827,10 @@
 </dl>
 <a NAME="DebugClientBase.input" ID="DebugClientBase.input"></a>
 <h4>DebugClientBase.input</h4>
-<b>input</b>(<i>prompt</i>)
+<b>input</b>(<i>prompt, echo=True</i>)
 
 <p>
-        Public method to implement input() (Python 2) using the event loop.
+        Public method to implement input() using the event loop.
 </p>
 <dl>
 
@@ -846,11 +838,15 @@
 <dd>
 the prompt to be shown (string)
 </dd>
+<dt><i>echo</i></dt>
+<dd>
+Flag indicating echoing of the input (boolean)
+</dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
 <dd>
-the entered string evaluated as a Python expresion
+the entered string
 </dd>
 </dl>
 <a NAME="DebugClientBase.main" ID="DebugClientBase.main"></a>
@@ -878,30 +874,6 @@
 status message
 </dd>
 </dl>
-<a NAME="DebugClientBase.raw_input" ID="DebugClientBase.raw_input"></a>
-<h4>DebugClientBase.raw_input</h4>
-<b>raw_input</b>(<i>prompt, echo</i>)
-
-<p>
-        Public method to implement raw_input() / input() using the event loop.
-</p>
-<dl>
-
-<dt><i>prompt</i></dt>
-<dd>
-the prompt to be shown (string)
-</dd>
-<dt><i>echo</i></dt>
-<dd>
-Flag indicating echoing of the input (boolean)
-</dd>
-</dl>
-<dl>
-<dt>Returns:</dt>
-<dd>
-the entered string
-</dd>
-</dl>
 <a NAME="DebugClientBase.readReady" ID="DebugClientBase.readReady"></a>
 <h4>DebugClientBase.readReady</h4>
 <b>readReady</b>(<i>stream</i>)
@@ -1264,7 +1236,7 @@
 <b>DebugClientInput</b>(<i>prompt=""</i>)
 
 <p>
-    Replacement for the standard input() builtin (Python 2).
+    Replacement for the standard input() builtin.
 </p>
 <p>
     This function works with the split debugger.
@@ -1291,43 +1263,6 @@
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
-<a NAME="DebugClientRawInput" ID="DebugClientRawInput"></a>
-<h2>DebugClientRawInput</h2>
-<b>DebugClientRawInput</b>(<i>prompt="", echo=True</i>)
-
-<p>
-    Replacement for the standard raw_input() builtin (Python 2) and
-    the standard input() builtin (Python 3).
-</p>
-<p>
-    This function works with the split debugger.
-</p>
-<dl>
-
-<dt><i>prompt</i> (str)</dt>
-<dd>
-prompt to be shown
-</dd>
-<dt><i>echo</i> (bool)</dt>
-<dd>
-flag indicating echoing of the input
-</dd>
-</dl>
-<dl>
-<dt>Returns:</dt>
-<dd>
-result of the raw_input()/input() call
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-str
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-<hr />
 <a NAME="DebugClientSetRecursionLimit" ID="DebugClientSetRecursionLimit"></a>
 <h2>DebugClientSetRecursionLimit</h2>
 <b>DebugClientSetRecursionLimit</b>(<i>limit</i>)
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.ThreadExtension.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.DebugClients.Python.ThreadExtension.html	Sat Jul 04 11:34:37 2020 +0200
@@ -524,7 +524,7 @@
 <h3>Class Attributes</h3>
 
 <table>
-<tr><td>timer</td></tr>
+<tr><td>None</td></tr>
 </table>
 <h3>Class Methods</h3>
 
--- a/eric6/Documentation/Source/eric6.Globals.__init__.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Globals.__init__.html	Sat Jul 04 11:34:37 2020 +0200
@@ -532,7 +532,7 @@
 </p>
 <dl>
 
-<dt><i>txt</i> (str, bytes, bytearray, unicode)</dt>
+<dt><i>txt</i> (str, bytes, bytearray)</dt>
 <dd>
 Python string to be converted
 </dd>
@@ -670,7 +670,7 @@
 <hr />
 <a NAME="versionToTuple" ID="versionToTuple"></a>
 <h2>versionToTuple</h2>
-<b>versionToTuple</b>(<i>version</i>)
+<b>versionToTuple</b>(<i>version, length=3</i>)
 
 <p>
     Module function to convert a version string into a tuple.
@@ -686,6 +686,10 @@
 <dd>
 version string
 </dd>
+<dt><i>length</i> (int)</dt>
+<dd>
+desired length of the version tuple
+</dd>
 </dl>
 <dl>
 <dt>Returns:</dt>
--- a/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html	Sat Jul 04 11:34:37 2020 +0200
@@ -81,6 +81,10 @@
 <td>Private method to get a list of all items that can be updated.</td>
 </tr>
 <tr>
+<td><a href="#PipPackagesWidget.__availablePipVersion">__availablePipVersion</a></td>
+<td>Private method to get the pip version of the selected environment.</td>
+</tr>
+<tr>
 <td><a href="#PipPackagesWidget.__editConfiguration">__editConfiguration</a></td>
 <td>Private method to edit a configuration.</td>
 </tr>
@@ -363,6 +367,26 @@
 list of QTreeWidgetItem
 </dd>
 </dl>
+<a NAME="PipPackagesWidget.__availablePipVersion" ID="PipPackagesWidget.__availablePipVersion"></a>
+<h4>PipPackagesWidget.__availablePipVersion</h4>
+<b>__availablePipVersion</b>(<i></i>)
+
+<p>
+        Private method to get the pip version of the selected environment.
+</p>
+<dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the version number or tuple with all zeros
+            in case pip is not available
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of int
+</dd>
+</dl>
 <a NAME="PipPackagesWidget.__editConfiguration" ID="PipPackagesWidget.__editConfiguration"></a>
 <h4>PipPackagesWidget.__editConfiguration</h4>
 <b>__editConfiguration</b>(<i>venvName=""</i>)
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html	Sat Jul 04 11:34:37 2020 +0200
@@ -102,7 +102,7 @@
 </tr>
 <tr>
 <td><a href="#CodeStyleFixer.__fixD112">__fixD112</a></td>
-<td>Private method to fix docstring 'r' or 'u' in leading quotes.</td>
+<td>Private method to fix docstring 'r' in leading quotes.</td>
 </tr>
 <tr>
 <td><a href="#CodeStyleFixer.__fixD121">__fixD121</a></td>
@@ -477,10 +477,10 @@
 <b>__fixD112</b>(<i>code, line, pos</i>)
 
 <p>
-        Private method to fix docstring 'r' or 'u' in leading quotes.
+        Private method to fix docstring 'r' in leading quotes.
 </p>
 <p>
-        Codes: D112, D113
+        Codes: D112
 </p>
 <dl>
 
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html	Sat Jul 04 11:34:37 2020 +0200
@@ -181,16 +181,12 @@
 <td>Private method to check, that all docstrings are surrounded by triple double quotes.</td>
 </tr>
 <tr>
-<td><a href="#DocStyleChecker.__checkUnicode">__checkUnicode</a></td>
-<td>Private method to check, that all docstrings containing unicode characters are surrounded by unicode triple double quotes.</td>
-</tr>
-<tr>
 <td><a href="#DocStyleChecker.__error">__error</a></td>
 <td>Private method to record an issue.</td>
 </tr>
 <tr>
 <td><a href="#DocStyleChecker.__getArgNames">__getArgNames</a></td>
-<td></td>
+<td>Private method to get the argument names of a function node.</td>
 </tr>
 <tr>
 <td><a href="#DocStyleChecker.__getSummaryLine">__getSummaryLine</a></td>
@@ -252,10 +248,6 @@
 <td><a href="#DocStyleChecker.run">run</a></td>
 <td>Public method to check the given source for violations of doc string conventions.</td>
 </tr>
-<tr>
-<td><a href="#DocStyleChecker.unpackArgs">unpackArgs</a></td>
-<td>Local helper function to unpack function argument names.</td>
-</tr>
 </table>
 <h3>Static Methods</h3>
 
@@ -805,25 +797,6 @@
 context of the docstring (DocStyleContext)
 </dd>
 </dl>
-<a NAME="DocStyleChecker.__checkUnicode" ID="DocStyleChecker.__checkUnicode"></a>
-<h4>DocStyleChecker.__checkUnicode</h4>
-<b>__checkUnicode</b>(<i>docstringContext, context</i>)
-
-<p>
-        Private method to check, that all docstrings containing unicode
-        characters are surrounded by unicode triple double quotes.
-</p>
-<dl>
-
-<dt><i>docstringContext</i></dt>
-<dd>
-docstring context (DocStyleContext)
-</dd>
-<dt><i>context</i></dt>
-<dd>
-context of the docstring (DocStyleContext)
-</dd>
-</dl>
 <a NAME="DocStyleChecker.__error" ID="DocStyleChecker.__error"></a>
 <h4>DocStyleChecker.__error</h4>
 <b>__error</b>(<i>lineNumber, offset, code, *args</i>)
@@ -854,6 +827,23 @@
 <h4>DocStyleChecker.__getArgNames</h4>
 <b>__getArgNames</b>(<i>node</i>)
 
+<p>
+        Private method to get the argument names of a function node.
+</p>
+<dl>
+
+<dt><i>node</i></dt>
+<dd>
+AST node to extract arguments names from
+</dd>
+</dl>
+<dl>
+<dt>Returns:</dt>
+<dd>
+tuple of two list of argument names, one for arguments
+            and one for keyword arguments (tuple of list of string)
+</dd>
+</dl>
 <a NAME="DocStyleChecker.__getSummaryLine" ID="DocStyleChecker.__getSummaryLine"></a>
 <h4>DocStyleChecker.__getSummaryLine</h4>
 <b>__getSummaryLine</b>(<i>docstringContext</i>)
@@ -1093,26 +1083,6 @@
         Public method to check the given source for violations of doc string
         conventions.
 </p>
-<a NAME="DocStyleChecker.unpackArgs" ID="DocStyleChecker.unpackArgs"></a>
-<h4>DocStyleChecker.unpackArgs</h4>
-<b>unpackArgs</b>(<i></i>)
-
-<p>
-                Local helper function to unpack function argument names.
-</p>
-<dl>
-
-<dt><i>args</i></dt>
-<dd>
-list of AST node arguments
-</dd>
-</dl>
-<dl>
-<dt>Returns:</dt>
-<dd>
-list of argument names (list of string)
-</dd>
-</dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html	Sat Jul 04 11:34:37 2020 +0200
@@ -132,10 +132,6 @@
 <td><a href="#NamingStyleChecker.run">run</a></td>
 <td>Public method run by the pycodestyle.py checker.</td>
 </tr>
-<tr>
-<td><a href="#NamingStyleChecker.unpackArgs">unpackArgs</a></td>
-<td>Local helper function to unpack function argument names.</td>
-</tr>
 </table>
 <h3>Static Methods</h3>
 
@@ -516,26 +512,6 @@
             checker function
 </dd>
 </dl>
-<a NAME="NamingStyleChecker.unpackArgs" ID="NamingStyleChecker.unpackArgs"></a>
-<h4>NamingStyleChecker.unpackArgs</h4>
-<b>unpackArgs</b>(<i></i>)
-
-<p>
-                Local helper function to unpack function argument names.
-</p>
-<dl>
-
-<dt><i>args</i></dt>
-<dd>
-list of AST node arguments
-</dd>
-</dl>
-<dl>
-<dt>Returns:</dt>
-<dd>
-list of argument names (list of string)
-</dd>
-</dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html	Sat Jul 04 11:34:37 2020 +0200
@@ -28,7 +28,7 @@
 <h3>Global Attributes</h3>
 
 <table>
-<tr><td>PY2</td></tr>
+<tr><td>None</td></tr>
 </table>
 <h3>Classes</h3>
 
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html	Sat Jul 04 11:34:37 2020 +0200
@@ -23,7 +23,7 @@
 <h1>eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck</h1>
 
 <p>
-Module implementing the syntax check for Python 2/3.
+Module implementing the syntax check for Python 3.
 </p>
 <h3>Global Attributes</h3>
 
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html	Sat Jul 04 11:34:37 2020 +0200
@@ -137,7 +137,7 @@
 </tr>
 <tr>
 <td><a href="#SyntaxCheckService.serviceErrorPy3">serviceErrorPy3</a></td>
-<td>Public method handling service errors for Python 2.</td>
+<td>Public method handling service errors for Python 3.</td>
 </tr>
 <tr>
 <td><a href="#SyntaxCheckService.serviceErrorYAML">serviceErrorYAML</a></td>
@@ -375,7 +375,7 @@
 <b>serviceErrorPy3</b>(<i>fx, lang, fn, msg</i>)
 
 <p>
-        Public method handling service errors for Python 2.
+        Public method handling service errors for Python 3.
 </p>
 <dl>
 
--- a/eric6/Documentation/Source/eric6.Plugins.PluginCodeStyleChecker.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.PluginCodeStyleChecker.html	Sat Jul 04 11:34:37 2020 +0200
@@ -151,7 +151,7 @@
 </tr>
 <tr>
 <td><a href="#CodeStyleCheckerPlugin.serviceErrorPy3">serviceErrorPy3</a></td>
-<td>Public slot handling service errors for Python 2.</td>
+<td>Public slot handling service errors for Python 3.</td>
 </tr>
 <tr>
 <td><a href="#CodeStyleCheckerPlugin.styleBatchCheck">styleBatchCheck</a></td>
@@ -392,7 +392,7 @@
 <b>serviceErrorPy3</b>(<i>fx, lang, fn, msg</i>)
 
 <p>
-        Public slot handling service errors for Python 2.
+        Public slot handling service errors for Python 3.
 </p>
 <dl>
 
--- a/eric6/Documentation/Source/eric6.Plugins.PluginTabnanny.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Plugins.PluginTabnanny.html	Sat Jul 04 11:34:37 2020 +0200
@@ -155,7 +155,7 @@
 </tr>
 <tr>
 <td><a href="#TabnannyPlugin.serviceErrorPy3">serviceErrorPy3</a></td>
-<td>Public slot handling service errors for Python 2.</td>
+<td>Public slot handling service errors for Python 3.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -404,7 +404,7 @@
 <b>serviceErrorPy3</b>(<i>fx, lang, fn, msg</i>)
 
 <p>
-        Public slot handling service errors for Python 2.
+        Public slot handling service errors for Python 3.
 </p>
 <dl>
 
--- a/eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.__init__.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.__init__.html	Sat Jul 04 11:34:37 2020 +0200
@@ -34,7 +34,6 @@
 <li>CORBA IDL</li>
 <li>JavaScript</li>
 <li>ProtoBuf</li>
-<li>Python 2</li>
 <li>Python 3</li>
 <li>Ruby</li>
 </ul>
--- a/eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.pyclbr.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.pyclbr.html	Sat Jul 04 11:34:37 2020 +0200
@@ -29,9 +29,6 @@
 Parse enough of a Python file to recognize class and method definitions and
 to find out the superclasses of a class as well as its attributes.
 </p>
-<p>
-This is module is based on pyclbr found in the Python 2.2.2 distribution.
-</p>
 <h3>Global Attributes</h3>
 
 <table>
--- a/eric6/Documentation/Source/eric6.Utilities.ModuleParser.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.Utilities.ModuleParser.html	Sat Jul 04 11:34:37 2020 +0200
@@ -26,9 +26,6 @@
 Parse a Python module file.
 </p>
 <p>
-This module is based on pyclbr.py as of Python 2.2.2
-</p>
-<p>
 <b>BUGS</b> (from pyclbr.py)
 <ul>
 <li>Code that doesn't pass tabnanny or python -t will confuse it, unless
--- a/eric6/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html	Sat Jul 04 11:34:37 2020 +0200
@@ -459,7 +459,7 @@
 </p>
 <dl>
 
-<dt><i>prefixes</i> (list of str (Python 2) or list of bytes (Python 3))</dt>
+<dt><i>prefixes</i> (list of bytes)</dt>
 <dd>
 list of hash prefixes to find
 </dd>
--- a/eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.SyntaxChecker.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.SyntaxChecker.html	Sat Jul 04 11:34:37 2020 +0200
@@ -31,7 +31,7 @@
 
 <tr>
 <td><a href="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html">SyntaxCheck</a></td>
-<td>Module implementing the syntax check for Python 2/3.</td>
+<td>Module implementing the syntax check for Python 3.</td>
 </tr>
 <tr>
 <td><a href="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html">SyntaxCheckService</a></td>
--- a/eric6/Documentation/Source/index-eric6.Utilities.ClassBrowsers.html	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Documentation/Source/index-eric6.Utilities.ClassBrowsers.html	Sat Jul 04 11:34:37 2020 +0200
@@ -33,7 +33,6 @@
 <li>CORBA IDL</li>
 <li>JavaScript</li>
 <li>ProtoBuf</li>
-<li>Python 2</li>
 <li>Python 3</li>
 <li>Ruby</li>
 </ul>
--- a/eric6/Globals/__init__.py	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/Globals/__init__.py	Sat Jul 04 11:34:37 2020 +0200
@@ -351,7 +351,7 @@
 ###############################################################################
 
 
-def versionToTuple(version):
+def versionToTuple(version, length=3):
     """
     Module function to convert a version string into a tuple.
     
@@ -361,6 +361,8 @@
     
     @param version version string
     @type str
+    @param length desired length of the version tuple
+    @type int
     @return version tuple without the suffix
     @rtype tuple of int
     """
@@ -370,8 +372,9 @@
     version = re.split(r"[^\d.]", version)[0]
     for part in version.split("."):
         versionParts.append(int(part))
+    versionParts.extend([0] * length)
     
-    return tuple(versionParts)
+    return tuple(versionParts[:length])
 
 
 def qVersionTuple():
--- a/eric6/PipInterface/PipPackagesWidget.py	Fri Jul 03 17:37:11 2020 +0200
+++ b/eric6/PipInterface/PipPackagesWidget.py	Sat Jul 04 11:34:37 2020 +0200
@@ -26,6 +26,7 @@
 from .Ui_PipPackagesWidget import Ui_PipPackagesWidget
 
 import UI.PixmapCache
+import Globals
 
 
 class PipPackagesWidget(QWidget, Ui_PipPackagesWidget):
@@ -154,6 +155,24 @@
         
         return available
     
+    def __availablePipVersion(self):
+        """
+        Private method to get the pip version of the selected environment.
+        
+        @return tuple containing the version number or tuple with all zeros
+            in case pip is not available
+        @rtype tuple of int
+        """
+        pipVersionTuple = (0, 0, 0)
+        venvName = self.environmentsComboBox.currentText()
+        if venvName:
+            pipList = self.packagesList.findItems(
+                "pip", Qt.MatchExactly | Qt.MatchCaseSensitive)
+            if len(pipList) > 0:
+                pipVersionTuple = Globals.versionToTuple(pipList[0].text(1))
+        
+        return pipVersionTuple
+    
     #######################################################################
     ## Slots handling widget signals below
     #######################################################################
@@ -974,6 +993,7 @@
         """
         enable = bool(self.environmentsComboBox.currentText())
         enablePip = self.__isPipAvailable()
+        enablePipCache = self.__availablePipVersion() >= (20, 1, 0)
         
         self.__installPipAct.setEnabled(not enablePip)
         self.__installPipUserAct.setEnabled(not enablePip)
@@ -986,10 +1006,10 @@
         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.__cacheInfoAct.setEnabled(enablePipCache)
+        self.__cacheShowListAct.setEnabled(enablePipCache)
+        self.__cacheRemoveAct.setEnabled(enablePipCache)
+        self.__cachePurgeAct.setEnabled(enablePipCache)
         
         self.__editVirtualenvConfigAct.setEnabled(enable)
     

eric ide

mercurial