Sun, 05 Jul 2020 11:11:24 +0200
Merged with default to track recent development.
--- a/docs/changelog Wed Jun 17 17:14:12 2020 +0200 +++ b/docs/changelog Sun Jul 05 11:11:24 2020 +0200 @@ -2,11 +2,15 @@ ---------- Version 20.7: - bug fixes +- General + - removed support for Python2 + - removed support for Qt4 (PyQt4 and pyside) - 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) + -- extended the dialog to show a list of files still to be checked -- updated pycodestyle to version 2.6.0 - Syntax Checker -- updated pyflakes to version 2.2.0
--- a/eric6.e4p Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6.e4p Sun Jul 05 11:11:24 2020 +0200 @@ -711,7 +711,6 @@ <Source>eric6/Preferences/ConfigurationPages/CooperationPage.py</Source> <Source>eric6/Preferences/ConfigurationPages/CorbaPage.py</Source> <Source>eric6/Preferences/ConfigurationPages/DebuggerGeneralPage.py</Source> - <Source>eric6/Preferences/ConfigurationPages/DebuggerPython2Page.py</Source> <Source>eric6/Preferences/ConfigurationPages/DebuggerPython3Page.py</Source> <Source>eric6/Preferences/ConfigurationPages/DiffColoursPage.py</Source> <Source>eric6/Preferences/ConfigurationPages/EditorAPIsPage.py</Source> @@ -1878,7 +1877,6 @@ <Form>eric6/Preferences/ConfigurationPages/CooperationPage.ui</Form> <Form>eric6/Preferences/ConfigurationPages/CorbaPage.ui</Form> <Form>eric6/Preferences/ConfigurationPages/DebuggerGeneralPage.ui</Form> - <Form>eric6/Preferences/ConfigurationPages/DebuggerPython2Page.ui</Form> <Form>eric6/Preferences/ConfigurationPages/DebuggerPython3Page.ui</Form> <Form>eric6/Preferences/ConfigurationPages/DiffColoursPage.ui</Form> <Form>eric6/Preferences/ConfigurationPages/EditorAPIsPage.ui</Form> @@ -2119,6 +2117,9 @@ <Other>eric6/APIs/MicroPython/circuitpython.api</Other> <Other>eric6/APIs/MicroPython/microbit.api</Other> <Other>eric6/APIs/MicroPython/micropython.api</Other> + <Other>eric6/APIs/Python/zope-2.10.7.api</Other> + <Other>eric6/APIs/Python/zope-2.11.2.api</Other> + <Other>eric6/APIs/Python/zope-3.3.1.api</Other> <Other>eric6/APIs/Python3/PyQt4.bas</Other> <Other>eric6/APIs/Python3/PyQt5.bas</Other> <Other>eric6/APIs/Python3/PyQtChart.bas</Other> @@ -2126,9 +2127,6 @@ <Other>eric6/APIs/Python3/QScintilla2.bas</Other> <Other>eric6/APIs/Python3/eric6.api</Other> <Other>eric6/APIs/Python3/eric6.bas</Other> - <Other>eric6/APIs/Python/zope-2.10.7.api</Other> - <Other>eric6/APIs/Python/zope-2.11.2.api</Other> - <Other>eric6/APIs/Python/zope-3.3.1.api</Other> <Other>eric6/APIs/QSS/qss.api</Other> <Other>eric6/APIs/Ruby/Ruby-1.8.7.api</Other> <Other>eric6/APIs/Ruby/Ruby-1.8.7.bas</Other> @@ -2875,6 +2873,91 @@ <bool>True</bool> </value> <key> + <string>SecurityChecker</string> + </key> + <value> + <dict> + <key> + <string>CheckTypedException</string> + </key> + <value> + <bool>False</bool> + </value> + <key> + <string>HardcodedTmpDirectories</string> + </key> + <value> + <list> + <string>/tmp</string> + <string>/var/tmp</string> + <string>/dev/shm</string> + <string>~/tmp</string> + </list> + </value> + <key> + <string>InsecureHashes</string> + </key> + <value> + <list> + <string>md4</string> + <string>md5</string> + <string>sha</string> + <string>sha1</string> + </list> + </value> + <key> + <string>InsecureSslProtocolVersions</string> + </key> + <value> + <list> + <string>PROTOCOL_SSLv2</string> + <string>SSLv2_METHOD</string> + <string>SSLv23_METHOD</string> + <string>PROTOCOL_SSLv3</string> + <string>PROTOCOL_TLSv1</string> + <string>SSLv3_METHOD</string> + <string>TLSv1_METHOD</string> + </list> + </value> + <key> + <string>WeakKeySizeDsaHigh</string> + </key> + <value> + <string>1024</string> + </value> + <key> + <string>WeakKeySizeDsaMedium</string> + </key> + <value> + <string>2048</string> + </value> + <key> + <string>WeakKeySizeEcHigh</string> + </key> + <value> + <string>160</string> + </value> + <key> + <string>WeakKeySizeEcMedium</string> + </key> + <value> + <string>224</string> + </value> + <key> + <string>WeakKeySizeRsaHigh</string> + </key> + <value> + <string>1024</string> + </value> + <key> + <string>WeakKeySizeRsaMedium</string> + </key> + <value> + <string>2048</string> + </value> + </dict> + </value> + <key> <string>ShowIgnored</string> </key> <value>
--- a/eric6/APIs/Python3/eric6.api Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/APIs/Python3/eric6.api Sun Jul 05 11:11:24 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 @@ -718,8 +715,7 @@ eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.shutdown?4() eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemote?4(port, runInConsole, venvName, originalPathString, workingDir=None) eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole, venvName, originalPathString, workingDir=None) -eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython?1(debugServer, passive, pythonVariant) -eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython2?4(debugServer, passive) +eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython?1(debugServer, passive) eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython3?4(debugServer, passive) eric6.Debugger.DebuggerInterfacePython.getRegistryData?4() eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog.getAddData?4() @@ -1843,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) @@ -2963,6 +2959,7 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_addBuiltinButton_clicked?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_builtinsAssignmentList_itemSelectionChanged?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_buttonBox_clicked?4(button) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_cancelButton_clicked?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_excludeMessagesSelectButton_clicked?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.on_fixButton_clicked?4() @@ -2981,7 +2978,7 @@ eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.positionRole?7 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.prepare?4(fileList, project) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog.start?4(fn, save=False, repeat=None) -eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog?1(styleCheckService, parent=None) +eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.CodeStyleCheckerDialog?1(styleCheckService, project=None, parent=None) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCodeSelectionDialog.CodeStyleCodeSelectionDialog.getSelectedCodes?4() eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCodeSelectionDialog.CodeStyleCodeSelectionDialog?1(codes, categories, showFixCodes, parent=None) eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.CodeStyleFixer.finalize?4() @@ -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) @@ -3431,7 +3425,6 @@ eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.removeLanguage?4(lang) eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.serviceErrorJSON?4(fx, lang, fn, msg) eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.serviceErrorJavaScript?4(fx, lang, fn, msg) -eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.serviceErrorPy2?4(fx, lang, fn, msg) eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.serviceErrorPy3?4(fx, lang, fn, msg) eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.serviceErrorYAML?4(fx, lang, fn, msg) eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.syntaxBatchCheck?4(argumentsList) @@ -3554,7 +3547,6 @@ eric6.Plugins.PluginCodeStyleChecker.CodeStyleCheckerPlugin.cancelStyleBatchCheck?4() eric6.Plugins.PluginCodeStyleChecker.CodeStyleCheckerPlugin.deactivate?4() eric6.Plugins.PluginCodeStyleChecker.CodeStyleCheckerPlugin.error?7 -eric6.Plugins.PluginCodeStyleChecker.CodeStyleCheckerPlugin.serviceErrorPy2?4(fx, lang, fn, msg) eric6.Plugins.PluginCodeStyleChecker.CodeStyleCheckerPlugin.serviceErrorPy3?4(fx, lang, fn, msg) eric6.Plugins.PluginCodeStyleChecker.CodeStyleCheckerPlugin.styleBatchCheck?4(argumentsList) eric6.Plugins.PluginCodeStyleChecker.CodeStyleCheckerPlugin.styleCheck?4(lang, filename, source, args) @@ -3624,7 +3616,6 @@ eric6.Plugins.PluginTabnanny.TabnannyPlugin.indentBatchCheck?4(argumentsList) eric6.Plugins.PluginTabnanny.TabnannyPlugin.indentCheck?4(lang, filename, source) eric6.Plugins.PluginTabnanny.TabnannyPlugin.indentChecked?7 -eric6.Plugins.PluginTabnanny.TabnannyPlugin.serviceErrorPy2?4(fx, lang, fn, msg) eric6.Plugins.PluginTabnanny.TabnannyPlugin.serviceErrorPy3?4(fx, lang, fn, msg) eric6.Plugins.PluginTabnanny.TabnannyPlugin?1(ui) eric6.Plugins.PluginTabnanny.author?7 @@ -6247,11 +6238,6 @@ eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel.setColor?4(key, bgcolour) eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.PreviewModel?1() eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.create?4(dlg) -eric6.Preferences.ConfigurationPages.DebuggerPython2Page.DebuggerPython2Page.on_refreshButton_clicked?4() -eric6.Preferences.ConfigurationPages.DebuggerPython2Page.DebuggerPython2Page.on_venvDlgButton_clicked?4() -eric6.Preferences.ConfigurationPages.DebuggerPython2Page.DebuggerPython2Page.save?4() -eric6.Preferences.ConfigurationPages.DebuggerPython2Page.DebuggerPython2Page?1() -eric6.Preferences.ConfigurationPages.DebuggerPython2Page.create?4(dlg) eric6.Preferences.ConfigurationPages.DebuggerPython3Page.DebuggerPython3Page.on_refreshButton_clicked?4() eric6.Preferences.ConfigurationPages.DebuggerPython3Page.DebuggerPython3Page.on_venvDlgButton_clicked?4() eric6.Preferences.ConfigurationPages.DebuggerPython3Page.DebuggerPython3Page.save?4() @@ -6740,7 +6726,6 @@ eric6.Preferences.getProjectBrowserFlags?4(key, prefClass=Prefs) eric6.Preferences.getProtobuf?4(key, prefClass=Prefs) eric6.Preferences.getPython?4(key, prefClass=Prefs) -eric6.Preferences.getQt4DocDir?4(prefClass=Prefs) eric6.Preferences.getQt5DocDir?4(prefClass=Prefs) eric6.Preferences.getQt?4(key, prefClass=Prefs) eric6.Preferences.getQtTranslationsDir?4(prefClass=Prefs) @@ -6998,7 +6983,6 @@ eric6.Project.Project.Project.isProjectProtocol?4(fn) eric6.Project.Project.Project.isProjectResource?4(fn) eric6.Project.Project.Project.isProjectSource?4(fn) -eric6.Project.Project.Project.isPy2Project?4() eric6.Project.Project.Project.isPy3Project?4() eric6.Project.Project.Project.isPythonProject?4() eric6.Project.Project.Project.isRubyProject?4() @@ -8748,7 +8732,6 @@ eric6.UI.BrowserModel.BrowserFileItem.isPixmapFile?4() eric6.UI.BrowserModel.BrowserFileItem.isProjectFile?4() eric6.UI.BrowserModel.BrowserFileItem.isProtobufFile?4() -eric6.UI.BrowserModel.BrowserFileItem.isPython2File?4() eric6.UI.BrowserModel.BrowserFileItem.isPython3File?4() eric6.UI.BrowserModel.BrowserFileItem.isResourcesFile?4() eric6.UI.BrowserModel.BrowserFileItem.isRubyFile?4() @@ -9821,7 +9804,7 @@ eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog.on_pythonExecPicker_textChanged?4(txt) eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog.on_remoteCheckBox_toggled?4(checked) eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog.on_targetDirectoryPicker_textChanged?4(txt) -eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog?1(manager, venvName="", venvDirectory="", venvInterpreter="", venvVariant=3, isGlobal=False, isConda=False, isRemote=False, execPath="", parent=None) +eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog?1(manager, venvName="", venvDirectory="", venvInterpreter="", isGlobal=False, isConda=False, isRemote=False, execPath="", parent=None) eric6.VirtualEnv.VirtualenvConfigurationDialog.VirtualenvConfigurationDialog.getData?4() eric6.VirtualEnv.VirtualenvConfigurationDialog.VirtualenvConfigurationDialog.on_condaButton_toggled?4(checked) eric6.VirtualEnv.VirtualenvConfigurationDialog.VirtualenvConfigurationDialog.on_condaCloneButton_clicked?4() @@ -9844,7 +9827,7 @@ eric6.VirtualEnv.VirtualenvInterpreterSelectionDialog.VirtualenvInterpreterSelectionDialog.on_pythonExecPicker_textChanged?4(txt) eric6.VirtualEnv.VirtualenvInterpreterSelectionDialog.VirtualenvInterpreterSelectionDialog?1(venvName, venvDirectory, parent=None) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.DefaultKey?7 -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.addVirtualEnv?4(venvName, venvDirectory, venvInterpreter="", venvVariant=3, isGlobal=False, isConda=False, isRemote=False, execPath="") +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.addVirtualEnv?4(venvName, venvDirectory, venvInterpreter="", isGlobal=False, isConda=False, isRemote=False, execPath="") eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.createVirtualEnv?4() eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.deleteVirtualEnvs?4(venvNames) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getDefaultEnvironment?4() @@ -9853,15 +9836,13 @@ eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvExecPath?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvInterpreter?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvNames?4(noRemote=False) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvNamesForVariant?4(variant) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvVariant?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.isCondaEnvironment?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.isGlobalEnvironment?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.isRemoteEnvironment?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.isUnique?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.removeVirtualEnvs?4(venvNames) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.renameVirtualEnv?4(oldVenvName, venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal, isConda, isRemote, execPath) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.setVirtualEnv?4(venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal, isConda, isRemote, execPath) +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.renameVirtualEnv?4(oldVenvName, venvName, venvDirectory, venvInterpreter, isGlobal, isConda, isRemote, execPath) +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.setVirtualEnv?4(venvName, venvDirectory, venvInterpreter, isGlobal, isConda, isRemote, execPath) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.showVirtualenvManagerDialog?4(modal=False) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.shutdown?4() eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.virtualEnvironmentAdded?7
--- a/eric6/APIs/Python3/eric6.bas Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/APIs/Python3/eric6.bas Sun Jul 05 11:11:24 2020 +0200 @@ -132,7 +132,6 @@ DebuggerPropertiesDialog QDialog Ui_DebuggerPropertiesDialog DebuggerPropertiesReader XMLStreamReaderBase DebuggerPropertiesWriter XMLStreamWriterBase -DebuggerPython2Page ConfigurationPageBase Ui_DebuggerPython2Page DebuggerPython3Page ConfigurationPageBase Ui_DebuggerPython3Page DeepLEngine TranslationEngine DefaultResolver BaseResolver
--- a/eric6/CodeTemplates/impl_pyqt.py.tmpl Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing $CLASSNAME$. -""" - -from PyQt4.QtCore import pyqtSlot -from PyQt4.QtGui import $SUPERCLASS$ - -from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ - - -class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): - """ - Class documentation goes here. - """ - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent widget - @type QWidget - """ - super($CLASSNAME$, self).__init__(parent) - self.setupUi(self)
--- a/eric6/CodeTemplates/impl_pyqt.py2.tmpl Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing $CLASSNAME$. -""" - -from PyQt4.QtCore import pyqtSignature -from PyQt4.QtGui import $SUPERCLASS$ - -from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ - - -class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): - """ - Class documentation goes here. - """ - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent widget - @type QWidget - """ - $SUPERCLASS$.__init__(self, parent) - self.setupUi(self)
--- a/eric6/CodeTemplates/impl_pyqt5.py2.tmpl Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing $CLASSNAME$. -""" - -from PyQt5.QtCore import pyqtSlot -from PyQt5.QtWidgets import $SUPERCLASS$ - -from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ - - -class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): - """ - Class documentation goes here. - """ - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent widget - @type QWidget - """ - super($CLASSNAME$, self).__init__(parent) - self.setupUi(self)
--- a/eric6/CodeTemplates/impl_pyside.py.tmpl Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing $CLASSNAME$. -""" - -from PySide.QtCore import Slot -from PySide.QtGui import $SUPERCLASS$ - -from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ - - -class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): - """ - Class documentation goes here. - """ - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent widget - @type QWidget - """ - $SUPERCLASS$.__init__(self, parent) - self.setupUi(self)
--- a/eric6/CodeTemplates/impl_pyside.py2.tmpl Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing $CLASSNAME$. -""" - -from PySide.QtCore import Slot -from PySide.QtGui import $SUPERCLASS$ - -from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ - - -class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): - """ - Class documentation goes here. - """ - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent widget - @type QWidget - """ - $SUPERCLASS$.__init__(self, parent) - self.setupUi(self)
--- a/eric6/CodeTemplates/impl_pyside2.py2.tmpl Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -""" -Module implementing $CLASSNAME$. -""" - -from PySide2.QtCore import Slot -from PySide2.QtWidgets import $SUPERCLASS$ - -from .Ui_$FORMFILE$ import Ui_$FORMCLASS$ - - -class $CLASSNAME$($SUPERCLASS$, Ui_$FORMCLASS$): - """ - Class documentation goes here. - """ - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent widget - @type QWidget - """ - super($CLASSNAME$, self).__init__(parent) - self.setupUi(self)
--- a/eric6/CondaInterface/Conda.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/CondaInterface/Conda.py Sun Jul 05 11:11:24 2020 +0200 @@ -597,7 +597,7 @@ try: packages = json.loads(output) ok = "error" not in packages - except Exception: + except Exception: # secok # return values for errors is already set pass
--- a/eric6/DataViews/PyProfileDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DataViews/PyProfileDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -9,7 +9,7 @@ import os -import pickle +import pickle # secok from PyQt5.QtCore import Qt from PyQt5.QtWidgets import ( @@ -242,7 +242,7 @@ return try: f = open(fname, 'rb') - self.stats = pickle.load(f) + self.stats = pickle.load(f) # secok f.close() except (EnvironmentError, pickle.PickleError, EOFError): E5MessageBox.critical(
--- a/eric6/DebugClients/Python/AsyncFile.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/AsyncFile.py Sun Jul 05 11:11:24 2020 +0200 @@ -12,12 +12,6 @@ from DebugUtilities import prepareJsonCommand -try: - unicode -except NameError: - unicode = str - raw_input = input - def AsyncPendingWrite(file): """ @@ -180,7 +174,7 @@ """ self.__checkMode('r') - buf = raw_input() + buf = input() if size >= 0: buf = buf[:size] return buf @@ -278,7 +272,7 @@ """ self.__checkMode('r') - line = raw_input() + '\n' + line = input() + '\n' if sizehint >= 0: line = line[:sizehint] return line @@ -370,6 +364,3 @@ @type list of str """ self.write("".join(lines)) - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/BreakpointWatch.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/BreakpointWatch.py Sun Jul 05 11:11:24 2020 +0200 @@ -162,7 +162,7 @@ # Ignore count applies only to those bpt hits where the # condition evaluates to true. try: - val = eval(b.cond, frame.f_globals, frame.f_locals) + val = eval(b.cond, frame.f_globals, frame.f_locals) # secok if val: if b.ignore > 0: b.ignore -= 1 @@ -295,6 +295,7 @@ continue try: val = eval(b.compiledCond, frame.f_globals, frame.f_locals) + # secok if b.created: if frame in b.values: continue @@ -323,10 +324,6 @@ continue else: return (b, True) - except Exception: + except Exception: # secok continue return (None, False) - - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DCTestResult.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DCTestResult.py Sun Jul 05 11:11:24 2020 +0200 @@ -128,6 +128,3 @@ if self.__dbgClient.readstream in rrdy: self.__dbgClient.readReady(self.__dbgClient.readstream) - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DebugBase.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DebugBase.py Sun Jul 05 11:11:24 2020 +0200 @@ -17,14 +17,8 @@ from BreakpointWatch import Breakpoint, Watch -if sys.version_info[0] == 2: - import thread as _thread - from inspect import getargvalues, formatargvalues -else: - import _thread - from DebugUtilities import getargvalues, formatargvalues - unicode = str - basestring = str +import _thread +from DebugUtilities import getargvalues, formatargvalues gRecursionLimit = 64 @@ -169,7 +163,7 @@ import __pypy__ __pypy__.locals_to_fast(cf) return - except Exception: + except Exception: # secok pass ctypes.pythonapi.PyFrame_LocalsToFast( @@ -383,10 +377,7 @@ if frame is None: frame = sys._getframe().f_back # Skip set_trace method - if sys.version_info[0] == 2: - stopOnHandleCommand = self._dbgClient.handleJsonCommand.func_code - else: - stopOnHandleCommand = self._dbgClient.handleJsonCommand.__code__ + stopOnHandleCommand = self._dbgClient.handleJsonCommand.__code__ frame.f_trace = self.trace_dispatch while frame.f_back is not None: @@ -461,7 +452,7 @@ sys.settrace(self.trace_dispatch) try: - exec(cmd, globalsDict, localsDict) + exec(cmd, globalsDict, localsDict) # secok atexit._run_exitfuncs() self._dbgClient.progTerminated(0) exitcode = 0 @@ -626,10 +617,7 @@ lineNo = frame.f_code.co_firstlineno lineNumbers = [lineNo] - if sys.version_info[0] == 2: - co_lnotab = map(ord, frame.f_code.co_lnotab[1::2]) - else: - co_lnotab = frame.f_code.co_lnotab[1::2] + co_lnotab = frame.f_code.co_lnotab[1::2] # No need to handle special case if a lot of lines between # (e.g. closure), because the additional lines won't cause a bp @@ -816,7 +804,6 @@ if exctype in [SyntaxError, IndentationError]: try: - # tuple could only occure on Python 2, but not always! if type(excval) == tuple: message, details = excval filename, lineno, charno, text = details @@ -877,13 +864,7 @@ else: exctypetxt = str(exctype) - if sys.version_info[0] == 2: - try: - excvaltxt = unicode(excval).encode(self._dbgClient.getCoding()) - except UnicodeError: - excvaltxt = str(excval) - else: - excvaltxt = str(excval) + excvaltxt = str(excval) # Don't step into libraries, which are used by our debugger methods if exctb is not None: @@ -931,14 +912,7 @@ @param exctype type of the exception @return exception name (string) """ - if sys.version_info[0] == 2: - if type(exctype) in [types.ClassType, # Python up to 2.4 - types.TypeType]: # Python 2.5+ - return exctype.__name__ - else: - return exctype - else: - return exctype.__name__ + return str(exctype).replace("<class '", "").replace("'>", "") def __extract_stack(self, exctb): """ @@ -968,7 +942,7 @@ if excval is None: exitcode = 0 message = "" - elif isinstance(excval, basestring): + elif isinstance(excval, str): exitcode = 1 message = excval elif isinstance(excval, bytes): @@ -979,7 +953,7 @@ message = "" elif isinstance(excval, SystemExit): code = excval.code - if isinstance(code, basestring): + if isinstance(code, str): exitcode = 1 message = code elif isinstance(code, bytes): @@ -1060,6 +1034,3 @@ except AttributeError: # if frame is None return True - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DebugClient.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DebugClient.py Sun Jul 05 11:11:24 2020 +0200 @@ -34,6 +34,3 @@ if __name__ == '__main__': debugClient = DebugClient() debugClient.main() - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DebugClientBase.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DebugClientBase.py Sun Jul 05 11:11:24 2020 +0200 @@ -35,40 +35,16 @@ from BreakpointWatch import Breakpoint, Watch ##from MultiProcessDebugExtension import patchNewProcessFunctions -if sys.version_info[0] == 2: - from inspect import getargvalues, formatargvalues -else: - unichr = chr - from DebugUtilities import getargvalues, formatargvalues +from DebugUtilities import getargvalues, formatargvalues DebugClientInstance = None ############################################################################### -def DebugClientRawInput(prompt="", echo=True): - """ - Replacement for the standard raw_input() builtin (Python 2) and - the standard input() builtin (Python 3). - - This function works with the split debugger. - - @param prompt prompt to be shown - @type str - @param echo flag indicating echoing of the input - @type bool - @return result of the raw_input()/input() call - @rtype str - """ - if DebugClientInstance is None or not DebugClientInstance.redirect: - return DebugClientOrigRawInput(prompt) - - return DebugClientInstance.raw_input(prompt, echo) - - def DebugClientInput(prompt=""): """ - Replacement for the standard input() builtin (Python 2). + Replacement for the standard input() builtin. This function works with the split debugger. @@ -82,39 +58,14 @@ return DebugClientInstance.input(prompt) -# Use our own input() and on Python 2 raw_input(). -if sys.version_info[0] == 2: - try: - DebugClientOrigRawInput = __builtins__.__dict__['raw_input'] - __builtins__.__dict__['raw_input'] = DebugClientRawInput - except (AttributeError, KeyError): - try: - import __main__ - DebugClientOrigRawInput = __main__.__builtins__.__dict__[ - 'raw_input' - ] - __main__.__builtins__.__dict__['raw_input'] = DebugClientRawInput - except (AttributeError, KeyError): - DebugClientOrigRawInput = lambda x: '' # __IGNORE_WARNING__ - - try: - DebugClientOrigInput = __builtins__.__dict__['input'] - __builtins__.__dict__['input'] = DebugClientInput - except (AttributeError, KeyError): - try: - import __main__ - DebugClientOrigInput = __main__.__builtins__.__dict__['input'] - __main__.__builtins__.__dict__['input'] = DebugClientInput - except (AttributeError, KeyError): - DebugClientOrigInput = lambda x: '' # __IGNORE_WARNING__ -else: - try: - DebugClientOrigInput = __builtins__.__dict__['input'] - __builtins__.__dict__['input'] = DebugClientRawInput - except (AttributeError, KeyError): - import __main__ - DebugClientOrigInput = __main__.__builtins__.__dict__['input'] - __main__.__builtins__.__dict__['input'] = DebugClientRawInput +# Use our own input(). +try: + DebugClientOrigInput = __builtins__.__dict__['input'] + __builtins__.__dict__['input'] = DebugClientInput +except (AttributeError, KeyError): + import __main__ + DebugClientOrigInput = __main__.__builtins__.__dict__['input'] + __main__.__builtins__.__dict__['input'] = DebugClientInput ############################################################################### @@ -293,9 +244,9 @@ return self.__coding = default - def raw_input(self, prompt, echo): + def input(self, prompt, echo=True): """ - Public method to implement raw_input() / input() using the event loop. + Public method to implement input() using the event loop. @param prompt the prompt to be shown (string) @param echo Flag indicating echoing of the input (boolean) @@ -308,15 +259,6 @@ self.eventLoop(True) return self.rawLine - def input(self, prompt): - """ - Public method to implement input() (Python 2) using the event loop. - - @param prompt the prompt to be shown (string) - @return the entered string evaluated as a Python expresion - """ - return eval(self.raw_input(prompt, True)) - def sessionClose(self, terminate=True): """ Public method to close the session with the debugger and optionally @@ -326,7 +268,7 @@ """ try: self.set_quit() - except Exception: + except Exception: # secok pass self.debugging = False @@ -355,13 +297,6 @@ with codecs.open(filename, encoding=self.__coding) as fp: statement = fp.read() - if sys.version_info[0] == 2: - lines = statement.splitlines(True) - for lineno, line in enumerate(lines[:2]): - lines[lineno] = self.coding_re.sub('', line) - - statement = unicode('').join(lines) # __IGNORE_WARNING__ - try: code = compile(statement + '\n', filename, mode) except SyntaxError: @@ -403,9 +338,6 @@ method = commandDict["method"] params = commandDict["params"] - if "filename" in params and sys.version_info[0] == 2: - params["filename"] = params["filename"].encode( - sys.getfilesystemencoding()) if method == "RequestVariables": self.__dumpVariables( @@ -441,7 +373,7 @@ }) elif method == "RequestCapabilities": - clientType = "Python2" if sys.version_info[0] == 2 else "Python3" + clientType = "Python3" self.sendJsonCommand("ResponseCapabilities", { "capabilities": self.__clientCapabilities(), "clientType": clientType @@ -616,13 +548,10 @@ self.debugMod.__dict__['__file__'] = sys.argv[0] sys.modules['__main__'] = self.debugMod script = '' - if sys.version_info[0] == 2: - script = 'execfile({0!r})'.format(sys.argv[0]) - else: - with codecs.open(sys.argv[0], encoding=self.__coding) as fp: - script = fp.read() - if script and not script.endswith('\n'): - script += '\n' + with codecs.open(sys.argv[0], encoding=self.__coding) as fp: + script = fp.read() + if script and not script.endswith('\n'): + script += '\n' if script: self.running = sys.argv[0] @@ -666,7 +595,7 @@ try: if self.running is None: - exec(code, self.debugMod.__dict__) + exec(code, self.debugMod.__dict__) # secok else: if self.currentThread is None: # program has terminated @@ -694,15 +623,15 @@ if "sys" in _globals: __stdout = _globals["sys"].stdout _globals["sys"].stdout = self.writestream - exec(code, _globals, _locals) + exec(code, _globals, _locals) # secok _globals["sys"].stdout = __stdout elif "sys" in _locals: __stdout = _locals["sys"].stdout _locals["sys"].stdout = self.writestream - exec(code, _globals, _locals) + exec(code, _globals, _locals) # secok _locals["sys"].stdout = __stdout else: - exec(code, _globals, _locals) + exec(code, _globals, _locals) # secok self.currentThread.storeFrameLocals(self.framenr) except SystemExit as exc: @@ -1447,9 +1376,6 @@ @return the converted filename (string) """ if os.path.isabs(fn): - if sys.version_info[0] == 2: - fn = fn.decode(sys.getfilesystemencoding()) - return fn # Check the cache. @@ -1462,9 +1388,6 @@ nafn = os.path.normcase(afn) if os.path.exists(nafn): - if sys.version_info[0] == 2: - afn = afn.decode(sys.getfilesystemencoding()) - self._fncache[fn] = afn d = os.path.dirname(afn) if (d not in sys.path) and (d not in self.dircache): @@ -1671,7 +1594,7 @@ def __formatQtVariable(self, value, qttype): """ - Private method to produce a formatted output of a simple Qt4/Qt5 type. + Private method to produce a formatted output of a simple Qt5 type. @param value variable to be formatted @param qttype type of the Qt variable to be formatted (string) @@ -1682,7 +1605,7 @@ varlist = [] if qttype == 'QChar': varlist.append( - ("", "QChar", "{0}".format(unichr(value.unicode())))) + ("", "QChar", "{0}".format(chr(value.unicode())))) varlist.append(("", "int", "{0:d}".format(value.unicode()))) elif qttype == 'QByteArray': varlist.append( @@ -1875,7 +1798,7 @@ # special handling for '__builtins__' (it's way too big) if key == '__builtins__': - rvalue = '<module __builtin__ (built-in)>' + rvalue = '<module builtins (built-in)>' valtype = 'module' if ConfigVarTypeStrings.index(valtype) in filterList: continue @@ -2415,6 +2338,3 @@ sysPath.insert(0, firstEntry) sysPath.insert(0, '') return sysPath - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DebugClientCapabilities.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DebugClientCapabilities.py Sun Jul 05 11:11:24 2020 +0200 @@ -17,6 +17,3 @@ HasAll = (HasDebugger | HasInterpreter | HasProfiler | HasCoverage | HasCompleter | HasUnittest | HasShell) - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DebugConfig.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DebugConfig.py Sun Jul 05 11:11:24 2020 +0200 @@ -19,14 +19,11 @@ 'method', 'property', 'generator', 'function', 'builtin_function_or_method', 'code', 'module', 'ellipsis', 'traceback', 'frame', 'other', 'frozenset', 'bytes', - # Special case for Python 2: don't add 'instancemethod' to - # ConfigVarTypeFilters and leave it always at last position - 'instancemethod' ] BatchSize = 200 ConfigQtNames = ( - 'PyQt5.', 'PyQt4.', 'PySide2.', 'PySide.', 'Shiboken.EnumType' + 'PyQt5.', 'PySide2.', 'Shiboken.EnumType' ) ConfigKnownQtTypes = ( '.QChar', '.QByteArray', '.QString', '.QStringList', '.QPoint', '.QPointF', @@ -36,6 +33,3 @@ '.QDomComment', '.QDomDocument', '.QDomElement', '.QDomText', '.QHostAddress', '.EnumType' ) - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DebugUtilities.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DebugUtilities.py Sun Jul 05 11:11:24 2020 +0200 @@ -320,6 +320,3 @@ modifiedArguments.extend(args) return modifiedArguments - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/DebugVariables.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/DebugVariables.py Sun Jul 05 11:11:24 2020 +0200 @@ -7,17 +7,12 @@ Module implementing classes and functions to dump variable contents. """ -import sys - from DebugConfig import ConfigQtNames, ConfigKnownQtTypes, BatchSize # # This code was inspired by pydevd. # -if sys.version_info[0] > 2: - basestring = str - ############################################################ ## Classes implementing resolvers for various compund types ############################################################ @@ -58,7 +53,7 @@ try: attribute = getattr(var, name) d[name] = attribute - except Exception: + except Exception: # secok pass # if we can't get it, simply ignore it return d @@ -91,7 +86,7 @@ try: attribute = getattr(var, name) d[name] = attribute - except Exception: + except Exception: # secok pass # if we can't get it, simply ignore it yield -1, d @@ -141,7 +136,7 @@ @return string representation of the given key @rtype str """ - if isinstance(key, basestring): + if isinstance(key, str): key = repr(key) # Special handling for Python2 unicode strings and bytes object # Raw and f-Strings are always converted to (unicode) str @@ -653,12 +648,12 @@ try: _TypeMap.append((long, None)) # __IGNORE_WARNING__ - except Exception: + except Exception: # secok pass # not available on all Python versions try: _TypeMap.append((unicode, None)) # __IGNORE_WARNING__ - except Exception: + except Exception: # secok pass # not available on all Python versions try: @@ -720,6 +715,3 @@ resolver = defaultResolver return typeName, typeStr, resolver - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/FlexCompleter.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/FlexCompleter.py Sun Jul 05 11:11:24 2020 +0200 @@ -48,11 +48,7 @@ </ul> """ -try: - import __builtin__ as builtins -except ImportError: - import builtins - +import builtins import __main__ __all__ = ["Completer"] @@ -151,7 +147,7 @@ 'else'}: word = word + ' ' matches.append(word) - for nspace in [builtins.__dict__, self.namespace]: + for nspace in [self.namespace, builtins.__dict__]: for word, val in nspace.items(): if word[:n] == text and word not in seen: seen.add(word) @@ -180,7 +176,7 @@ return [] expr, attr = m.group(1, 3) try: - thisobject = eval(expr, self.namespace) + thisobject = eval(expr, self.namespace) # secok except Exception: return [] @@ -206,7 +202,7 @@ match = "{0}.{1}".format(expr, word) try: val = getattr(thisobject, word) - except Exception: + except Exception: # secok pass # Include even if attribute not set else: match = self._callable_postfix(val, match) @@ -235,4 +231,4 @@ return ret # -# eflag: noqa = M702, M111 +# eflag: noqa = M111
--- a/eric6/DebugClients/Python/ModuleLoader.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/ModuleLoader.py Sun Jul 05 11:11:24 2020 +0200 @@ -40,8 +40,8 @@ 'greenlet', 'subprocess', 'multiprocessing', - 'PyQt4.QtCore', 'PyQt5.QtCore', - 'PySide.QtCore', 'PySide2.QtCore', + 'PyQt5.QtCore', + 'PySide2.QtCore', ) sys.meta_path.insert(0, self) @@ -100,8 +100,7 @@ ## Add hook for *.QThread and *.QProcess elif ( - fullname in ('PyQt4.QtCore', 'PyQt5.QtCore', - 'PySide.QtCore', 'PySide2.QtCore') and + fullname in ('PyQt5.QtCore', 'PySide2.QtCore') and not hasattr(module, 'eric6_patched') ): module.eric6_patched = True
--- a/eric6/DebugClients/Python/MultiProcessDebugExtension.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/MultiProcessDebugExtension.py Sun Jul 05 11:11:24 2020 +0200 @@ -61,6 +61,7 @@ return getattr(os, originalName)(path, *args) return newExecl + def patchNewProcessFunctions(multiprocessEnabled, debugClient): """ Function to patch the process creation functions to support multiprocess
--- a/eric6/DebugClients/Python/MultiprocessingExtension.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/MultiprocessingExtension.py Sun Jul 05 11:11:24 2020 +0200 @@ -16,7 +16,6 @@ _originalBootstrap = None - def patchMultiprocessing(module, debugClient): """ Function to patch the multiprocessing module. @@ -66,6 +65,7 @@ ) except Exception: print("Exception during multiprocessing bootstrap init:") + # __IGNORE_WARNING_M801__ traceback.print_exc(file=sys.stdout) sys.stdout.flush() raise
--- a/eric6/DebugClients/Python/PyProfile.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/PyProfile.py Sun Jul 05 11:11:24 2020 +0200 @@ -11,7 +11,6 @@ import profile import atexit import pickle -import sys class PyProfile(profile.Profile): @@ -54,10 +53,10 @@ try: cache = open(self.timingCache, 'rb') - timings = marshal.load(cache) + timings = marshal.load(cache) # secok if isinstance(timings, dict): self.timings = timings - except Exception: + except (EnvironmentError, EOFError, ValueError, TypeError): pass finally: cache.close() @@ -70,7 +69,7 @@ try: cache = open(self.timingCache, 'wb') marshal.dump(self.timings, cache) - except Exception: + except EnvironmentError: pass finally: cache.close() @@ -87,7 +86,7 @@ try: f = open(file, 'wb') self.create_stats() - pickle.dump(self.stats, f, 2) + pickle.dump(self.stats, f, 4) except (EnvironmentError, pickle.PickleError): pass finally: @@ -119,10 +118,7 @@ @param frame the frame object @return fixed up file name (string) """ - if sys.version_info[0] == 2: - versionExt = '.py2' - else: - versionExt = '.py3' + versionExt = '.py3' # get module name from __file__ if (not isinstance(frame, profile.Profile.fake_frame) and @@ -154,10 +150,11 @@ rpt, rit, ret, rfn, rframe, rcur = self.cur if not isinstance(rframe, profile.Profile.fake_frame): assert rframe.f_back is frame.f_back, ("Bad call", rfn, + # secok rframe, rframe.f_back, frame, frame.f_back) self.trace_dispatch_return(rframe, 0) - assert (self.cur is None or + assert (self.cur is None or # secok frame.f_back is self.cur[-2]), ("Bad call", self.cur[-3]) fcode = frame.f_code @@ -181,6 +178,3 @@ # the C function returned "c_return": profile.Profile.trace_dispatch_return, } - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/ThreadExtension.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/ThreadExtension.py Sun Jul 05 11:11:24 2020 +0200 @@ -10,11 +10,7 @@ import os import sys -if sys.version_info[0] == 2: - import thread as _thread -else: - import _thread - +import _thread import threading from DebugBase import DebugBase @@ -310,10 +306,7 @@ module.Thread = ThreadWrapper # Special handling of threading.(_)Timer - if sys.version_info[0] == 2: - timer = module._Timer - else: - timer = module.Timer + timer = module.Timer class TimerWrapper(timer, ThreadWrapper): """ @@ -326,10 +319,7 @@ super(TimerWrapper, self).__init__( interval, function, *args, **kwargs) - if sys.version_info[0] == 2: - module._Timer = TimerWrapper - else: - module.Timer = TimerWrapper + module.Timer = TimerWrapper # Special handling of threading._DummyThread class DummyThreadWrapper(module._DummyThread, ThreadWrapper): @@ -422,6 +412,3 @@ module.QThread = QThreadWrapper module.QRunnable = QRunnableWrapper - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/eric6dbgstub.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/eric6dbgstub.py Sun Jul 05 11:11:24 2020 +0200 @@ -85,6 +85,3 @@ if debugger: debugger.startDebugger(enableTrace=enableTrace, exceptions=exceptions, tracePython=tracePython, redirect=redirect) - -# -# eflag: noqa = M702
--- a/eric6/DebugClients/Python/getpass.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DebugClients/Python/getpass.py Sun Jul 05 11:11:24 2020 +0200 @@ -49,13 +49,10 @@ @return Password entered by the user @rtype str """ - return input(prompt, False) + return input(prompt, False) # secok unix_getpass = getpass win_getpass = getpass default_getpass = getpass fallback_getpass = getpass - -# -# eflag: noqa = M702
--- a/eric6/Debugger/Config.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Debugger/Config.py Sun Jul 05 11:11:24 2020 +0200 @@ -11,8 +11,6 @@ from PyQt5.QtCore import QT_TRANSLATE_NOOP # Variables type definition -# Special case for Python 2: don't add 'instancemethod'. It's renamed to -# 'method' in DebugClientBase.py to be identical to Python 3 ConfigVarTypeDispStrings = { '__': QT_TRANSLATE_NOOP('Variable Types', 'Hidden Attributes'), 'NoneType': QT_TRANSLATE_NOOP('Variable Types', 'None'), @@ -61,7 +59,7 @@ 'float': 6, 'complex': 7, 'str': 8, - 'unicode': 9, + 'unicode': 9, # Not used anymore but keep to avoid reassignment 'tuple': 10, 'list': 11, 'dict': 12,
--- a/eric6/Debugger/DebugClientCapabilities.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Debugger/DebugClientCapabilities.py Sun Jul 05 11:11:24 2020 +0200 @@ -17,6 +17,3 @@ HasAll = (HasDebugger | HasInterpreter | HasProfiler | HasCoverage | HasCompleter | HasUnittest | HasShell) - -# -# eflag: noqa = M702
--- a/eric6/Debugger/DebugServer.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Debugger/DebugServer.py Sun Jul 05 11:11:24 2020 +0200 @@ -9,7 +9,6 @@ import os -import sys from PyQt5.QtCore import pyqtSignal, pyqtSlot, QModelIndex from PyQt5.QtNetwork import ( @@ -201,7 +200,7 @@ self.networkInterface = Preferences.getDebugger("NetworkInterface") if self.networkInterface == "all": - hostAddress = QHostAddress("0.0.0.0") # QHostAddress.Any) + hostAddress = QHostAddress("0.0.0.0") # QHostAddress.Any) # secok elif self.networkInterface == "allv6": hostAddress = QHostAddress("::") # QHostAddress.AnyIPv6) else: @@ -229,14 +228,6 @@ self.clientType = Preferences.Prefs.settings.value('DebugClient/Type') if self.clientType is None: self.clientType = 'Python3' - # Change clientType if dependent interpreter does not exist anymore - # (maybe deinstalled,...) - elif self.clientType == 'Python2' and Preferences.getDebugger( - "Python2VirtualEnv") == '' and sys.version_info[0] >= 3: - self.clientType = 'Python3' - elif self.clientType == 'Python3' and Preferences.getDebugger( - "Python3VirtualEnv") == '' and sys.version_info[0] == 2: - self.clientType = 'Python2' self.lastClientType = '' self.__autoClearShell = False
--- a/eric6/Debugger/DebugUI.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Debugger/DebugUI.py Sun Jul 05 11:11:24 2020 +0200 @@ -834,9 +834,7 @@ cap = self.debugServer.getClientCapabilities(language) break else: - if editor.isPy2File(): - cap = self.debugServer.getClientCapabilities('Python2') - elif editor.isPy3File(): + if editor.isPy3File(): cap = self.debugServer.getClientCapabilities('Python3') elif editor.isRubyFile(): cap = self.debugServer.getClientCapabilities('Ruby')
--- a/eric6/Debugger/DebuggerInterfacePython.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Debugger/DebuggerInterfacePython.py Sun Jul 05 11:11:24 2020 +0200 @@ -33,10 +33,10 @@ class DebuggerInterfacePython(QObject): """ - Class implementing the debugger interface for the debug server for Python 2 - and Python 3. + Class implementing the debugger interface for the debug server for + Python 3. """ - def __init__(self, debugServer, passive, pythonVariant): + def __init__(self, debugServer, passive): """ Constructor @@ -44,8 +44,6 @@ @type DebugServer @param passive flag indicating passive connection mode @type bool - @param pythonVariant Python variant to instantiate for - @type str (one of Python2 or Python3) """ super(DebuggerInterfacePython, self).__init__() @@ -56,7 +54,6 @@ self.debugServer = debugServer self.passive = passive self.process = None - self.__variant = pythonVariant self.__startedVenv = "" self.queue = [] @@ -180,15 +177,11 @@ global origPathEnv if not venvName: - if self.__variant == "Python2": - venvName = Preferences.getDebugger("Python2VirtualEnv") - else: - venvName = Preferences.getDebugger("Python3VirtualEnv") + venvName = Preferences.getDebugger("Python3VirtualEnv") venvManager = e5App().getObject("VirtualEnvManager") interpreter = venvManager.getVirtualenvInterpreter(venvName) execPath = venvManager.getVirtualenvExecPath(venvName) - if (interpreter == "" and - int(self.__variant[-1]) == sys.version_info[0]): + if interpreter == "": # use the interpreter used to run eric for identical variants interpreter = sys.executable.replace("w.exe", ".exe") if interpreter == "": @@ -196,36 +189,25 @@ None, self.tr("Start Debugger"), self.tr( - """<p>No suitable {0} environment configured.</p>""") - .format(self.__variant)) + """<p>No suitable Python3 environment configured.</p>""") + ) return None, False, "" - if self.__variant == "Python2": - debugClientType = Preferences.getDebugger("DebugClientType") - else: - debugClientType = Preferences.getDebugger("DebugClientType3") + debugClientType = Preferences.getDebugger("DebugClientType3") if debugClientType == "standard": debugClient = os.path.join(getConfig('ericDir'), "DebugClients", "Python", "DebugClient.py") else: - if self.__variant == "Python2": - debugClient = Preferences.getDebugger("DebugClient") - else: - debugClient = Preferences.getDebugger("DebugClient3") + debugClient = Preferences.getDebugger("DebugClient3") if debugClient == "": debugClient = os.path.join(sys.path[0], "DebugClients", "Python", "DebugClient.py") - if self.__variant == "Python2": - redirect = str(Preferences.getDebugger("PythonRedirect")) - noencoding = (Preferences.getDebugger("PythonNoEncoding") and - '--no-encoding' or '') - else: - redirect = str(Preferences.getDebugger("Python3Redirect")) - noencoding = (Preferences.getDebugger("Python3NoEncoding") and - '--no-encoding' or '') + redirect = str(Preferences.getDebugger("Python3Redirect")) + noencoding = (Preferences.getDebugger("Python3NoEncoding") and + '--no-encoding' or '') multiprocessEnabled = ( '--multiprocess' if Preferences.getDebugger("MultiProcessEnabled") else '' @@ -378,9 +360,7 @@ if not venvName: venvName = project.getDebugProperty("VIRTUALENV") if not venvName: - if project.getProjectLanguage() == "Python2": - venvName = Preferences.getDebugger("Python2VirtualEnv") - elif project.getProjectLanguage() == "Python3": + if project.getProjectLanguage() == "Python3": venvName = Preferences.getDebugger("Python3VirtualEnv") redirect = str(project.getDebugProperty("REDIRECT")) @@ -395,17 +375,18 @@ venvManager = e5App().getObject("VirtualEnvManager") interpreter = venvManager.getVirtualenvInterpreter(venvName) execPath = venvManager.getVirtualenvExecPath(venvName) - if (interpreter == "" and - project.getProjectLanguage().startswith("Python") and - sys.version_info[0] == int(project.getProjectLanguage()[-1])): + if ( + interpreter == "" and + project.getProjectLanguage().startswith("Python") + ): interpreter = sys.executable.replace("w.exe", ".exe") if interpreter == "": E5MessageBox.critical( None, self.tr("Start Debugger"), self.tr( - """<p>No suitable {0} environment configured.</p>""") - .format(self.__variant)) + """<p>No suitable Python3 environment configured.</p>""") + ) return None, self.__isNetworked, "" if project.getDebugProperty("REMOTEDEBUGGER"): @@ -1624,21 +1605,6 @@ sock.flush() -def createDebuggerInterfacePython2(debugServer, passive): - """ - Module function to create a debugger interface instance. - - - @param debugServer reference to the debug server - @type DebugServer - @param passive flag indicating passive connection mode - @type bool - @return instantiated debugger interface - @rtype DebuggerInterfacePython - """ - return DebuggerInterfacePython(debugServer, passive, "Python2") - - def createDebuggerInterfacePython3(debugServer, passive): """ Module function to create a debugger interface instance. @@ -1651,7 +1617,7 @@ @return instantiated debugger interface @rtype DebuggerInterfacePython """ - return DebuggerInterfacePython(debugServer, passive, "Python3") + return DebuggerInterfacePython(debugServer, passive) def getRegistryData(): @@ -1664,13 +1630,6 @@ function @rtype list of tuple of (str, int, list of str, function) """ - py2Exts = [] - for ext in Preferences.getDebugger("PythonExtensions").split(): - if ext.startswith("."): - py2Exts.append(ext) - else: - py2Exts.append(".{0}".format(ext)) - py3Exts = [] for ext in Preferences.getDebugger("Python3Extensions").split(): if ext.startswith("."): @@ -1679,15 +1638,7 @@ py3Exts.append(".{0}".format(ext)) registryData = [] - if py2Exts and (Preferences.getDebugger("Python2VirtualEnv") or - sys.version_info[0] == 2): - registryData.append( - ("Python2", ClientDefaultCapabilities, py2Exts, - createDebuggerInterfacePython2) - ) - - if py3Exts and (Preferences.getDebugger("Python3VirtualEnv") or - sys.version_info[0] >= 3): + if py3Exts: registryData.append( ("Python3", ClientDefaultCapabilities, py3Exts, createDebuggerInterfacePython3)
--- a/eric6/Debugger/VariablesViewer.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Debugger/VariablesViewer.py Sun Jul 05 11:11:24 2020 +0200 @@ -197,12 +197,9 @@ if VariableItem.rx_nonprintable.indexIn(dvalue) == -1: try: dvalue = ast.literal_eval(dvalue) - except Exception: + except Exception: # secok pass - try: - dvalue = str(dvalue) - except UnicodeDecodeError: # Never reached under Python 3 - dvalue = unicode(dvalue, 'utf-8') # __IGNORE_WARNING__ + dvalue = str(dvalue) self.value = dvalue
--- a/eric6/Documentation/Help/source.qhp Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Help/source.qhp Sun Jul 05 11:11:24 2020 +0200 @@ -735,7 +735,6 @@ <section title="eric6.Preferences.ConfigurationPages.CooperationPage" ref="eric6.Preferences.ConfigurationPages.CooperationPage.html" /> <section title="eric6.Preferences.ConfigurationPages.CorbaPage" ref="eric6.Preferences.ConfigurationPages.CorbaPage.html" /> <section title="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html" /> - <section title="eric6.Preferences.ConfigurationPages.DebuggerPython2Page" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html" /> <section title="eric6.Preferences.ConfigurationPages.DebuggerPython3Page" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html" /> <section title="eric6.Preferences.ConfigurationPages.DiffColoursPage" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html" /> <section title="eric6.Preferences.ConfigurationPages.EditorAPIsPage" ref="eric6.Preferences.ConfigurationPages.EditorAPIsPage.html" /> @@ -2183,7 +2182,6 @@ <keyword name="BrowserFileItem.isPixmapFile" id="BrowserFileItem.isPixmapFile" ref="eric6.UI.BrowserModel.html#BrowserFileItem.isPixmapFile" /> <keyword name="BrowserFileItem.isProjectFile" id="BrowserFileItem.isProjectFile" ref="eric6.UI.BrowserModel.html#BrowserFileItem.isProjectFile" /> <keyword name="BrowserFileItem.isProtobufFile" id="BrowserFileItem.isProtobufFile" ref="eric6.UI.BrowserModel.html#BrowserFileItem.isProtobufFile" /> - <keyword name="BrowserFileItem.isPython2File" id="BrowserFileItem.isPython2File" ref="eric6.UI.BrowserModel.html#BrowserFileItem.isPython2File" /> <keyword name="BrowserFileItem.isPython3File" id="BrowserFileItem.isPython3File" ref="eric6.UI.BrowserModel.html#BrowserFileItem.isPython3File" /> <keyword name="BrowserFileItem.isResourcesFile" id="BrowserFileItem.isResourcesFile" ref="eric6.UI.BrowserModel.html#BrowserFileItem.isResourcesFile" /> <keyword name="BrowserFileItem.isRubyFile" id="BrowserFileItem.isRubyFile" ref="eric6.UI.BrowserModel.html#BrowserFileItem.isRubyFile" /> @@ -2550,18 +2548,21 @@ <keyword name="CodeStyleCheckerDialog.__itemFixable" id="CodeStyleCheckerDialog.__itemFixable" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__itemFixable" /> <keyword name="CodeStyleCheckerDialog.__modifyFixedResultItem" id="CodeStyleCheckerDialog.__modifyFixedResultItem" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__modifyFixedResultItem" /> <keyword name="CodeStyleCheckerDialog.__modifyOptions" id="CodeStyleCheckerDialog.__modifyOptions" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__modifyOptions" /> + <keyword name="CodeStyleCheckerDialog.__prepareProgress" id="CodeStyleCheckerDialog.__prepareProgress" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__prepareProgress" /> <keyword name="CodeStyleCheckerDialog.__processError" id="CodeStyleCheckerDialog.__processError" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__processError" /> <keyword name="CodeStyleCheckerDialog.__processResult" id="CodeStyleCheckerDialog.__processResult" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__processResult" /> <keyword name="CodeStyleCheckerDialog.__resetStatistics" id="CodeStyleCheckerDialog.__resetStatistics" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__resetStatistics" /> <keyword name="CodeStyleCheckerDialog.__resort" id="CodeStyleCheckerDialog.__resort" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__resort" /> <keyword name="CodeStyleCheckerDialog.__selectCodes" id="CodeStyleCheckerDialog.__selectCodes" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__selectCodes" /> <keyword name="CodeStyleCheckerDialog.__updateFixerStatistics" id="CodeStyleCheckerDialog.__updateFixerStatistics" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__updateFixerStatistics" /> + <keyword name="CodeStyleCheckerDialog.__updateProgress" id="CodeStyleCheckerDialog.__updateProgress" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__updateProgress" /> <keyword name="CodeStyleCheckerDialog.__updateStatistics" id="CodeStyleCheckerDialog.__updateStatistics" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.__updateStatistics" /> <keyword name="CodeStyleCheckerDialog.check" id="CodeStyleCheckerDialog.check" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.check" /> <keyword name="CodeStyleCheckerDialog.checkBatch" id="CodeStyleCheckerDialog.checkBatch" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.checkBatch" /> <keyword name="CodeStyleCheckerDialog.on_addBuiltinButton_clicked" id="CodeStyleCheckerDialog.on_addBuiltinButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_addBuiltinButton_clicked" /> <keyword name="CodeStyleCheckerDialog.on_builtinsAssignmentList_itemSelectionChanged" id="CodeStyleCheckerDialog.on_builtinsAssignmentList_itemSelectionChanged" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_builtinsAssignmentList_itemSelectionChanged" /> <keyword name="CodeStyleCheckerDialog.on_buttonBox_clicked" id="CodeStyleCheckerDialog.on_buttonBox_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_buttonBox_clicked" /> + <keyword name="CodeStyleCheckerDialog.on_cancelButton_clicked" id="CodeStyleCheckerDialog.on_cancelButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_cancelButton_clicked" /> <keyword name="CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked" id="CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked" /> <keyword name="CodeStyleCheckerDialog.on_excludeMessagesSelectButton_clicked" id="CodeStyleCheckerDialog.on_excludeMessagesSelectButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_excludeMessagesSelectButton_clicked" /> <keyword name="CodeStyleCheckerDialog.on_fixButton_clicked" id="CodeStyleCheckerDialog.on_fixButton_clicked" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html#CodeStyleCheckerDialog.on_fixButton_clicked" /> @@ -2596,7 +2597,6 @@ <keyword name="CodeStyleCheckerPlugin.batchJobDone" id="CodeStyleCheckerPlugin.batchJobDone" ref="eric6.Plugins.PluginCodeStyleChecker.html#CodeStyleCheckerPlugin.batchJobDone" /> <keyword name="CodeStyleCheckerPlugin.cancelStyleBatchCheck" id="CodeStyleCheckerPlugin.cancelStyleBatchCheck" ref="eric6.Plugins.PluginCodeStyleChecker.html#CodeStyleCheckerPlugin.cancelStyleBatchCheck" /> <keyword name="CodeStyleCheckerPlugin.deactivate" id="CodeStyleCheckerPlugin.deactivate" ref="eric6.Plugins.PluginCodeStyleChecker.html#CodeStyleCheckerPlugin.deactivate" /> - <keyword name="CodeStyleCheckerPlugin.serviceErrorPy2" id="CodeStyleCheckerPlugin.serviceErrorPy2" ref="eric6.Plugins.PluginCodeStyleChecker.html#CodeStyleCheckerPlugin.serviceErrorPy2" /> <keyword name="CodeStyleCheckerPlugin.serviceErrorPy3" id="CodeStyleCheckerPlugin.serviceErrorPy3" ref="eric6.Plugins.PluginCodeStyleChecker.html#CodeStyleCheckerPlugin.serviceErrorPy3" /> <keyword name="CodeStyleCheckerPlugin.styleBatchCheck" id="CodeStyleCheckerPlugin.styleBatchCheck" ref="eric6.Plugins.PluginCodeStyleChecker.html#CodeStyleCheckerPlugin.styleBatchCheck" /> <keyword name="CodeStyleCheckerPlugin.styleCheck" id="CodeStyleCheckerPlugin.styleCheck" ref="eric6.Plugins.PluginCodeStyleChecker.html#CodeStyleCheckerPlugin.styleCheck" /> @@ -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" /> @@ -3538,13 +3536,6 @@ <keyword name="DebuggerPropertiesWriter (Constructor)" id="DebuggerPropertiesWriter (Constructor)" ref="eric6.E5XML.DebuggerPropertiesWriter.html#DebuggerPropertiesWriter.__init__" /> <keyword name="DebuggerPropertiesWriter (Module)" id="DebuggerPropertiesWriter (Module)" ref="eric6.E5XML.DebuggerPropertiesWriter.html" /> <keyword name="DebuggerPropertiesWriter.writeXML" id="DebuggerPropertiesWriter.writeXML" ref="eric6.E5XML.DebuggerPropertiesWriter.html#DebuggerPropertiesWriter.writeXML" /> - <keyword name="DebuggerPython2Page" id="DebuggerPython2Page" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html#DebuggerPython2Page" /> - <keyword name="DebuggerPython2Page (Constructor)" id="DebuggerPython2Page (Constructor)" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html#DebuggerPython2Page.__init__" /> - <keyword name="DebuggerPython2Page (Module)" id="DebuggerPython2Page (Module)" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html" /> - <keyword name="DebuggerPython2Page.__populateAndSetVenvComboBox" id="DebuggerPython2Page.__populateAndSetVenvComboBox" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html#DebuggerPython2Page.__populateAndSetVenvComboBox" /> - <keyword name="DebuggerPython2Page.on_refreshButton_clicked" id="DebuggerPython2Page.on_refreshButton_clicked" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html#DebuggerPython2Page.on_refreshButton_clicked" /> - <keyword name="DebuggerPython2Page.on_venvDlgButton_clicked" id="DebuggerPython2Page.on_venvDlgButton_clicked" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html#DebuggerPython2Page.on_venvDlgButton_clicked" /> - <keyword name="DebuggerPython2Page.save" id="DebuggerPython2Page.save" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html#DebuggerPython2Page.save" /> <keyword name="DebuggerPython3Page" id="DebuggerPython3Page" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html#DebuggerPython3Page" /> <keyword name="DebuggerPython3Page (Constructor)" id="DebuggerPython3Page (Constructor)" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html#DebuggerPython3Page.__init__" /> <keyword name="DebuggerPython3Page (Module)" id="DebuggerPython3Page (Module)" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html" /> @@ -3660,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" /> @@ -3678,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" /> @@ -9879,7 +9868,6 @@ <keyword name="MiniEditor.__getWord" id="MiniEditor.__getWord" ref="eric6.QScintilla.MiniEditor.html#MiniEditor.__getWord" /> <keyword name="MiniEditor.__initContextMenu" id="MiniEditor.__initContextMenu" ref="eric6.QScintilla.MiniEditor.html#MiniEditor.__initContextMenu" /> <keyword name="MiniEditor.__initContextMenuLanguages" id="MiniEditor.__initContextMenuLanguages" ref="eric6.QScintilla.MiniEditor.html#MiniEditor.__initContextMenuLanguages" /> - <keyword name="MiniEditor.__isPy2File" id="MiniEditor.__isPy2File" ref="eric6.QScintilla.MiniEditor.html#MiniEditor.__isPy2File" /> <keyword name="MiniEditor.__languageMenuTriggered" id="MiniEditor.__languageMenuTriggered" ref="eric6.QScintilla.MiniEditor.html#MiniEditor.__languageMenuTriggered" /> <keyword name="MiniEditor.__loadEditorConfig" id="MiniEditor.__loadEditorConfig" ref="eric6.QScintilla.MiniEditor.html#MiniEditor.__loadEditorConfig" /> <keyword name="MiniEditor.__loadEditorConfigObject" id="MiniEditor.__loadEditorConfigObject" ref="eric6.QScintilla.MiniEditor.html#MiniEditor.__loadEditorConfigObject" /> @@ -10166,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" /> @@ -10685,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" /> @@ -11298,7 +11286,6 @@ <keyword name="Project.isProjectProtocol" id="Project.isProjectProtocol" ref="eric6.Project.Project.html#Project.isProjectProtocol" /> <keyword name="Project.isProjectResource" id="Project.isProjectResource" ref="eric6.Project.Project.html#Project.isProjectResource" /> <keyword name="Project.isProjectSource" id="Project.isProjectSource" ref="eric6.Project.Project.html#Project.isProjectSource" /> - <keyword name="Project.isPy2Project" id="Project.isPy2Project" ref="eric6.Project.Project.html#Project.isPy2Project" /> <keyword name="Project.isPy3Project" id="Project.isPy3Project" ref="eric6.Project.Project.html#Project.isPy3Project" /> <keyword name="Project.isPythonProject" id="Project.isPythonProject" ref="eric6.Project.Project.html#Project.isPythonProject" /> <keyword name="Project.isRubyProject" id="Project.isRubyProject" ref="eric6.Project.Project.html#Project.isRubyProject" /> @@ -14455,7 +14442,6 @@ <keyword name="SyntaxCheckService.removeLanguage" id="SyntaxCheckService.removeLanguage" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html#SyntaxCheckService.removeLanguage" /> <keyword name="SyntaxCheckService.serviceErrorJSON" id="SyntaxCheckService.serviceErrorJSON" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html#SyntaxCheckService.serviceErrorJSON" /> <keyword name="SyntaxCheckService.serviceErrorJavaScript" id="SyntaxCheckService.serviceErrorJavaScript" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html#SyntaxCheckService.serviceErrorJavaScript" /> - <keyword name="SyntaxCheckService.serviceErrorPy2" id="SyntaxCheckService.serviceErrorPy2" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html#SyntaxCheckService.serviceErrorPy2" /> <keyword name="SyntaxCheckService.serviceErrorPy3" id="SyntaxCheckService.serviceErrorPy3" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html#SyntaxCheckService.serviceErrorPy3" /> <keyword name="SyntaxCheckService.serviceErrorYAML" id="SyntaxCheckService.serviceErrorYAML" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html#SyntaxCheckService.serviceErrorYAML" /> <keyword name="SyntaxCheckService.syntaxBatchCheck" id="SyntaxCheckService.syntaxBatchCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html#SyntaxCheckService.syntaxBatchCheck" /> @@ -14632,7 +14618,6 @@ <keyword name="TabnannyPlugin.deactivate" id="TabnannyPlugin.deactivate" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.deactivate" /> <keyword name="TabnannyPlugin.indentBatchCheck" id="TabnannyPlugin.indentBatchCheck" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.indentBatchCheck" /> <keyword name="TabnannyPlugin.indentCheck" id="TabnannyPlugin.indentCheck" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.indentCheck" /> - <keyword name="TabnannyPlugin.serviceErrorPy2" id="TabnannyPlugin.serviceErrorPy2" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.serviceErrorPy2" /> <keyword name="TabnannyPlugin.serviceErrorPy3" id="TabnannyPlugin.serviceErrorPy3" ref="eric6.Plugins.PluginTabnanny.html#TabnannyPlugin.serviceErrorPy3" /> <keyword name="Tabview" id="Tabview" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview" /> <keyword name="Tabview (Constructor)" id="Tabview (Constructor)" ref="eric6.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.__init__" /> @@ -15426,12 +15411,9 @@ <keyword name="UserInterface.__showPluginInfo" id="UserInterface.__showPluginInfo" ref="eric6.UI.UserInterface.html#UserInterface.__showPluginInfo" /> <keyword name="UserInterface.__showPluginToolsMenu" id="UserInterface.__showPluginToolsMenu" ref="eric6.UI.UserInterface.html#UserInterface.__showPluginToolsMenu" /> <keyword name="UserInterface.__showPrevious" id="UserInterface.__showPrevious" ref="eric6.UI.UserInterface.html#UserInterface.__showPrevious" /> - <keyword name="UserInterface.__showPyQt4Doc" id="UserInterface.__showPyQt4Doc" ref="eric6.UI.UserInterface.html#UserInterface.__showPyQt4Doc" /> <keyword name="UserInterface.__showPyQt5Doc" id="UserInterface.__showPyQt5Doc" ref="eric6.UI.UserInterface.html#UserInterface.__showPyQt5Doc" /> <keyword name="UserInterface.__showPySideDoc" id="UserInterface.__showPySideDoc" ref="eric6.UI.UserInterface.html#UserInterface.__showPySideDoc" /> - <keyword name="UserInterface.__showPython2Doc" id="UserInterface.__showPython2Doc" ref="eric6.UI.UserInterface.html#UserInterface.__showPython2Doc" /> <keyword name="UserInterface.__showPythonDoc" id="UserInterface.__showPythonDoc" ref="eric6.UI.UserInterface.html#UserInterface.__showPythonDoc" /> - <keyword name="UserInterface.__showQt4Doc" id="UserInterface.__showQt4Doc" ref="eric6.UI.UserInterface.html#UserInterface.__showQt4Doc" /> <keyword name="UserInterface.__showQt5Doc" id="UserInterface.__showQt5Doc" ref="eric6.UI.UserInterface.html#UserInterface.__showQt5Doc" /> <keyword name="UserInterface.__showQtDoc" id="UserInterface.__showQtDoc" ref="eric6.UI.UserInterface.html#UserInterface.__showQtDoc" /> <keyword name="UserInterface.__showSettingsMenu" id="UserInterface.__showSettingsMenu" ref="eric6.UI.UserInterface.html#UserInterface.__showSettingsMenu" /> @@ -16136,8 +16118,6 @@ <keyword name="VirtualenvManager.getVirtualenvExecPath" id="VirtualenvManager.getVirtualenvExecPath" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvExecPath" /> <keyword name="VirtualenvManager.getVirtualenvInterpreter" id="VirtualenvManager.getVirtualenvInterpreter" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvInterpreter" /> <keyword name="VirtualenvManager.getVirtualenvNames" id="VirtualenvManager.getVirtualenvNames" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvNames" /> - <keyword name="VirtualenvManager.getVirtualenvNamesForVariant" id="VirtualenvManager.getVirtualenvNamesForVariant" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvNamesForVariant" /> - <keyword name="VirtualenvManager.getVirtualenvVariant" id="VirtualenvManager.getVirtualenvVariant" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvVariant" /> <keyword name="VirtualenvManager.isCondaEnvironment" id="VirtualenvManager.isCondaEnvironment" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.isCondaEnvironment" /> <keyword name="VirtualenvManager.isGlobalEnvironment" id="VirtualenvManager.isGlobalEnvironment" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.isGlobalEnvironment" /> <keyword name="VirtualenvManager.isRemoteEnvironment" id="VirtualenvManager.isRemoteEnvironment" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.isRemoteEnvironment" /> @@ -17168,7 +17148,6 @@ <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.CooperationPage.html#create" /> <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.CorbaPage.html#create" /> <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#create" /> - <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html#create" /> <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html#create" /> <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#create" /> <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.EditorAPIsPage.html#create" /> @@ -17232,7 +17211,6 @@ <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsPySvn.html#createConfigurationPage" /> <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsSubversion.html#createConfigurationPage" /> <keyword name="createDebuggerInterfaceNone" id="createDebuggerInterfaceNone" ref="eric6.Debugger.DebuggerInterfaceNone.html#createDebuggerInterfaceNone" /> - <keyword name="createDebuggerInterfacePython2" id="createDebuggerInterfacePython2" ref="eric6.Debugger.DebuggerInterfacePython.html#createDebuggerInterfacePython2" /> <keyword name="createDebuggerInterfacePython3" id="createDebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython.html#createDebuggerInterfacePython3" /> <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#createDefaultConfig" /> <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#createDefaultConfig" /> @@ -17524,7 +17502,6 @@ <keyword name="getPythonModulesDirectory" id="getPythonModulesDirectory" ref="eric6.Globals.__init__.html#getPythonModulesDirectory" /> <keyword name="getPythonVersion" id="getPythonVersion" ref="eric6.Utilities.__init__.html#getPythonVersion" /> <keyword name="getQt" id="getQt" ref="eric6.Preferences.__init__.html#getQt" /> - <keyword name="getQt4DocDir" id="getQt4DocDir" ref="eric6.Preferences.__init__.html#getQt4DocDir" /> <keyword name="getQt5DocDir" id="getQt5DocDir" ref="eric6.Preferences.__init__.html#getQt5DocDir" /> <keyword name="getQtBinariesPath" id="getQtBinariesPath" ref="eric6.Globals.__init__.html#getQtBinariesPath" /> <keyword name="getQtMacBundle" id="getQtMacBundle" ref="eric6.Utilities.__init__.html#getQtMacBundle" /> @@ -18634,7 +18611,6 @@ <file>eric6.Preferences.ConfigurationPages.CooperationPage.html</file> <file>eric6.Preferences.ConfigurationPages.CorbaPage.html</file> <file>eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html</file> - <file>eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html</file> <file>eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html</file> <file>eric6.Preferences.ConfigurationPages.DiffColoursPage.html</file> <file>eric6.Preferences.ConfigurationPages.EditorAPIsPage.html</file>
--- a/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.DebugClients.Python.DebugClientBase.html Sun Jul 05 11:11:24 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> @@ -140,7 +136,7 @@ </tr> <tr> <td><a href="#DebugClientBase.__formatQtVariable">__formatQtVariable</a></td> -<td>Private method to produce a formatted output of a simple Qt4/Qt5 type.</td> +<td>Private method to produce a formatted output of a simple Qt5 type.</td> </tr> <tr> <td><a href="#DebugClientBase.__formatVariablesList">__formatVariablesList</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> @@ -467,7 +459,7 @@ <b>__formatQtVariable</b>(<i>value, qttype</i>) <p> - Private method to produce a formatted output of a simple Qt4/Qt5 type. + Private method to produce a formatted output of a simple Qt5 type. </p> <dl> @@ -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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.DebugClients.Python.ThreadExtension.html Sun Jul 05 11:11:24 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.Debugger.DebuggerInterfacePython.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html Sun Jul 05 11:11:24 2020 +0200 @@ -36,7 +36,7 @@ <tr> <td><a href="#DebuggerInterfacePython">DebuggerInterfacePython</a></td> -<td>Class implementing the debugger interface for the debug server for Python 2 and Python 3.</td> +<td>Class implementing the debugger interface for the debug server for Python 3.</td> </tr> </table> <h3>Functions</h3> @@ -44,10 +44,6 @@ <table> <tr> -<td><a href="#createDebuggerInterfacePython2">createDebuggerInterfacePython2</a></td> -<td>Module function to create a debugger interface instance.</td> -</tr> -<tr> <td><a href="#createDebuggerInterfacePython3">createDebuggerInterfacePython3</a></td> <td>Module function to create a debugger interface instance.</td> </tr> @@ -62,8 +58,8 @@ <h2>DebuggerInterfacePython</h2> <p> - Class implementing the debugger interface for the debug server for Python 2 - and Python 3. + Class implementing the debugger interface for the debug server for + Python 3. </p> <h3>Derived from</h3> QObject @@ -282,7 +278,7 @@ <a NAME="DebuggerInterfacePython.__init__" ID="DebuggerInterfacePython.__init__"></a> <h4>DebuggerInterfacePython (Constructor)</h4> -<b>DebuggerInterfacePython</b>(<i>debugServer, passive, pythonVariant</i>) +<b>DebuggerInterfacePython</b>(<i>debugServer, passive</i>) <p> Constructor @@ -297,10 +293,6 @@ <dd> flag indicating passive connection mode </dd> -<dt><i>pythonVariant</i> (str (one of Python2 or Python3))</dt> -<dd> -Python variant to instantiate for -</dd> </dl> <a NAME="DebuggerInterfacePython.__askForkTo" ID="DebuggerInterfacePython.__askForkTo"></a> <h4>DebuggerInterfacePython.__askForkTo</h4> @@ -1224,42 +1216,6 @@ <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> -<a NAME="createDebuggerInterfacePython2" ID="createDebuggerInterfacePython2"></a> -<h2>createDebuggerInterfacePython2</h2> -<b>createDebuggerInterfacePython2</b>(<i>debugServer, passive</i>) - -<p> - Module function to create a debugger interface instance. -</p> -<p> - -</p> -<dl> - -<dt><i>debugServer</i> (DebugServer)</dt> -<dd> -reference to the debug server -</dd> -<dt><i>passive</i> (bool)</dt> -<dd> -flag indicating passive connection mode -</dd> -</dl> -<dl> -<dt>Returns:</dt> -<dd> -instantiated debugger interface -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -DebuggerInterfacePython -</dd> -</dl> -<div align="right"><a href="#top">Up</a></div> -<hr /> -<hr /> <a NAME="createDebuggerInterfacePython3" ID="createDebuggerInterfacePython3"></a> <h2>createDebuggerInterfacePython3</h2> <b>createDebuggerInterfacePython3</b>(<i>debugServer, passive</i>)
--- a/eric6/Documentation/Source/eric6.E5Gui.E5LineEdit.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Gui.E5LineEdit.html Sun Jul 05 11:11:24 2020 +0200 @@ -115,6 +115,13 @@ (E5LineEdit.RightSide, E5LineEdit.LeftSide) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad parameter value +</dd> +</dl> <a NAME="E5ClearableLineEdit.__textChanged" ID="E5ClearableLineEdit.__textChanged"></a> <h4>E5ClearableLineEdit.__textChanged</h4> <b>__textChanged</b>(<i>txt</i>)
--- a/eric6/Documentation/Source/eric6.E5Gui.E5MessageBox.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Gui.E5MessageBox.html Sun Jul 05 11:11:24 2020 +0200 @@ -397,6 +397,13 @@ flag indicating the selection of the Retry button (boolean) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad parameter value +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> @@ -483,6 +490,13 @@ flag indicating the selection of the Yes button (boolean) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad parameter value +</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.E5Gui.E5ModelToolBar.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Gui.E5ModelToolBar.html Sun Jul 05 11:11:24 2020 +0200 @@ -209,6 +209,13 @@ reference to the event (QDropEvent) </dd> </dl> +<dl> + +<dt>Raises <b>RuntimeError</b>:</dt> +<dd> +raised to indicate an invalid model index +</dd> +</dl> <a NAME="E5ModelToolBar.eventFilter" ID="E5ModelToolBar.eventFilter"></a> <h4>E5ModelToolBar.eventFilter</h4> <b>eventFilter</b>(<i>obj, evt</i>) @@ -294,6 +301,13 @@ reference to the event (QMouseEvent) </dd> </dl> +<dl> + +<dt>Raises <b>RuntimeError</b>:</dt> +<dd> +raised to indicate an invalid model index +</dd> +</dl> <a NAME="E5ModelToolBar.resetFlags" ID="E5ModelToolBar.resetFlags"></a> <h4>E5ModelToolBar.resetFlags</h4> <b>resetFlags</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.E5Gui.E5PathPicker.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Gui.E5PathPicker.html Sun Jul 05 11:11:24 2020 +0200 @@ -940,6 +940,13 @@ picker mode </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad parameter value +</dd> +</dl> <a NAME="E5PathPickerBase.setNameFilters" ID="E5PathPickerBase.setNameFilters"></a> <h4>E5PathPickerBase.setNameFilters</h4> <b>setNameFilters</b>(<i>filters</i>)
--- a/eric6/Documentation/Source/eric6.E5Gui.E5TextEditSearchWidget.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Gui.E5TextEditSearchWidget.html Sun Jul 05 11:11:24 2020 +0200 @@ -312,6 +312,13 @@ type of the attached edit widget </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad parameter value +</dd> +</dl> <a NAME="E5TextEditSearchWidget.keyPressEvent" ID="E5TextEditSearchWidget.keyPressEvent"></a> <h4>E5TextEditSearchWidget.keyPressEvent</h4> <b>keyPressEvent</b>(<i>event</i>)
--- a/eric6/Documentation/Source/eric6.E5Gui.E5TreeWidget.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Gui.E5TreeWidget.html Sun Jul 05 11:11:24 2020 +0200 @@ -410,6 +410,13 @@ default mode (ItemsCollapsed, ItemsExpanded) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad parameter value +</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.E5Network.E5Ftp.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Network.E5Ftp.html Sun Jul 05 11:11:24 2020 +0200 @@ -88,7 +88,7 @@ </tr> <tr> <td><a href="#E5Ftp.login">login</a></td> -<td>Public method to login to the FTP server.</td> +<td></td> </tr> <tr> <td><a href="#E5Ftp.setProxy">setProxy</a></td> @@ -203,119 +203,6 @@ <h4>E5Ftp.login</h4> <b>login</b>(<i>user="", password="", acct=""</i>) -<p> - Public method to login to the FTP server. -</p> -<p> - This extended method respects the FTP proxy configuration. There are - many different FTP proxy products available. But unfortunately there - is no standard for how o traverse a FTP proxy. The lis below shows - the sequence of commands used. -</p> -<p> - <table> - <tr><td>user</td><td>Username for remote host</td></tr> - <tr><td>pass</td><td>Password for remote host</td></tr> - <tr><td>pruser</td><td>Username for FTP proxy</td></tr> - <tr><td>prpass</td><td>Password for FTP proxy</td></tr> - <tr><td>remote.host</td><td>Hostname of the remote FTP server</td> - </tr> - </table> -</p> -<p> - <dl> - <dt>E5FtpProxyType.NoProxy:</dt> - <dd> - USER user<br/> - PASS pass - </dd> - <dt>E5FtpProxyType.NonAuthorizing:</dt> - <dd> - USER user@remote.host<br/> - PASS pass - </dd> - <dt>E5FtpProxyType.UserAtServer:</dt> - <dd> - USER pruser<br/> - PASS prpass<br/> - USER user@remote.host<br/> - PASS pass - </dd> - <dt>E5FtpProxyType.Site:</dt> - <dd> - USER pruser<br/> - PASS prpass<br/> - SITE remote.site<br/> - USER user<br/> - PASS pass - </dd> - <dt>E5FtpProxyType.Open:</dt> - <dd> - USER pruser<br/> - PASS prpass<br/> - OPEN remote.site<br/> - USER user<br/> - PASS pass - </dd> - <dt>E5FtpProxyType.UserAtProxyuserAtServer:</dt> - <dd> - USER user@pruser@remote.host<br/> - PASS pass@prpass - </dd> - <dt>E5FtpProxyType.ProxyuserAtServer:</dt> - <dd> - USER pruser@remote.host<br/> - PASS prpass<br/> - USER user<br/> - PASS pass - </dd> - <dt>E5FtpProxyType.AuthResp:</dt> - <dd> - USER user@remote.host<br/> - PASS pass<br/> - AUTH pruser<br/> - RESP prpass - </dd> - <dt>E5FtpProxyType.Bluecoat:</dt> - <dd> - USER user@remote.host pruser<br/> - PASS pass<br/> - ACCT prpass - </dd> - </dl> -</p> -<dl> - -<dt><i>user</i></dt> -<dd> -username for the remote host (string) -</dd> -<dt><i>password</i></dt> -<dd> -password for the remote host (string) -</dd> -<dt><i>acct</i></dt> -<dd> -accounting information for the remote host (string) -</dd> -</dl> -<dl> -<dt>Returns:</dt> -<dd> -response sent by the remote host (string) -</dd> -</dl> -<dl> - -<dt>Raises <b>E5FtpProxyError</b>:</dt> -<dd> -raised to indicate a proxy related issue -</dd> -<dt>Raises <b>ftplib.error_reply</b>:</dt> -<dd> -raised to indicate an FTP error reply -</dd> -</dl> <a NAME="E5Ftp.setProxy" ID="E5Ftp.setProxy"></a> <h4>E5Ftp.setProxy</h4> <b>setProxy</b>(<i>proxyType=E5FtpProxyType.NoProxy, proxyHost="", proxyPort=ftplib.FTP_PORT, proxyUser="", proxyPassword="", proxyAccount=""</i>)
--- a/eric6/Documentation/Source/eric6.E5Network.E5XmlRpcClient.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Network.E5XmlRpcClient.html Sun Jul 05 11:11:24 2020 +0200 @@ -184,6 +184,14 @@ with error code and error string (function) </dd> </dl> +<dl> + +<dt>Raises <b>TypeError</b>:</dt> +<dd> +raised to indicate an illegal 'args' parameter + type +</dd> +</dl> <a NAME="E5XmlRpcClient.setUrl" ID="E5XmlRpcClient.setUrl"></a> <h4>E5XmlRpcClient.setUrl</h4> <b>setUrl</b>(<i>url</i>)
--- a/eric6/Documentation/Source/eric6.E5Utilities.E5Cache.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.E5Utilities.E5Cache.html Sun Jul 05 11:11:24 2020 +0200 @@ -154,6 +154,13 @@ maximum number of entries that may be stored in the cache </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an illegal 'size' parameter +</dd> +</dl> <a NAME="E5Cache.__adjustToSize" ID="E5Cache.__adjustToSize"></a> <h4>E5Cache.__adjustToSize</h4> <b>__adjustToSize</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Globals.__init__.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Globals.__init__.html Sun Jul 05 11:11:24 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.HexEdit.HexEditSearchReplaceWidget.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.HexEdit.HexEditSearchReplaceWidget.html Sun Jul 05 11:11:24 2020 +0200 @@ -257,6 +257,14 @@ str </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an invalid dataFormat + parameter +</dd> +</dl> <a NAME="HexEditSearchReplaceWidget.__convertText" ID="HexEditSearchReplaceWidget.__convertText"></a> <h4>HexEditSearchReplaceWidget.__convertText</h4> <b>__convertText</b>(<i>txt, oldFormat, newFormat</i>) @@ -423,6 +431,14 @@ bytearray </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an invalid dataFormat + parameter +</dd> +</dl> <a NAME="HexEditSearchReplaceWidget.findPrevNext" ID="HexEditSearchReplaceWidget.findPrevNext"></a> <h4>HexEditSearchReplaceWidget.findPrevNext</h4> <b>findPrevNext</b>(<i>prev=False</i>)
--- a/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.PipInterface.PipPackagesWidget.html Sun Jul 05 11:11:24 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.CodeStyleCheckerDialog.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleCheckerDialog.html Sun Jul 05 11:11:24 2020 +0200 @@ -149,6 +149,10 @@ <td>Private method to modify the options based on eflag: entries.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.__prepareProgress">__prepareProgress</a></td> +<td>Private method to prepare the progress tab for the next run.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.__processError">__processError</a></td> <td>Private slot to process an error indication from the service.</td> </tr> @@ -173,6 +177,10 @@ <td>Private method to update the collected fixer related statistics.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.__updateProgress">__updateProgress</a></td> +<td>Private method to update the progress tab.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.__updateStatistics">__updateStatistics</a></td> <td>Private method to update the collected statistics.</td> </tr> @@ -197,6 +205,10 @@ <td>Private slot called by a button of the button box clicked.</td> </tr> <tr> +<td><a href="#CodeStyleCheckerDialog.on_cancelButton_clicked">on_cancelButton_clicked</a></td> +<td>Private slot to handle the "Cancel" button press.</td> +</tr> +<tr> <td><a href="#CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked">on_deleteBuiltinButton_clicked</a></td> <td>Private slot to delete the selected items from the list.</td> </tr> @@ -273,7 +285,7 @@ <a NAME="CodeStyleCheckerDialog.__init__" ID="CodeStyleCheckerDialog.__init__"></a> <h4>CodeStyleCheckerDialog (Constructor)</h4> -<b>CodeStyleCheckerDialog</b>(<i>styleCheckService, parent=None</i>) +<b>CodeStyleCheckerDialog</b>(<i>styleCheckService, project=None, parent=None</i>) <p> Constructor @@ -284,6 +296,11 @@ <dd> reference to the service </dd> +<dt><i>project</i> (Project)</dt> +<dd> +reference to the project if called on project or project + browser level +</dd> <dt><i>parent</i> (QWidget)</dt> <dd> reference to the parent widget @@ -646,6 +663,13 @@ list </dd> </dl> +<a NAME="CodeStyleCheckerDialog.__prepareProgress" ID="CodeStyleCheckerDialog.__prepareProgress"></a> +<h4>CodeStyleCheckerDialog.__prepareProgress</h4> +<b>__prepareProgress</b>(<i></i>) + +<p> + Private method to prepare the progress tab for the next run. +</p> <a NAME="CodeStyleCheckerDialog.__processError" ID="CodeStyleCheckerDialog.__processError"></a> <h4>CodeStyleCheckerDialog.__processError</h4> <b>__processError</b>(<i>fn, msg</i>) @@ -741,6 +765,20 @@ reference to the code style fixer </dd> </dl> +<a NAME="CodeStyleCheckerDialog.__updateProgress" ID="CodeStyleCheckerDialog.__updateProgress"></a> +<h4>CodeStyleCheckerDialog.__updateProgress</h4> +<b>__updateProgress</b>(<i>fn</i>) + +<p> + Private method to update the progress tab. +</p> +<dl> + +<dt><i>fn</i> (str)</dt> +<dd> +filename of the just checked file +</dd> +</dl> <a NAME="CodeStyleCheckerDialog.__updateStatistics" ID="CodeStyleCheckerDialog.__updateStatistics"></a> <h4>CodeStyleCheckerDialog.__updateStatistics</h4> <b>__updateStatistics</b>(<i>statistics, fixer, ignoredErrors, securityOk</i>) @@ -823,6 +861,13 @@ button that was clicked </dd> </dl> +<a NAME="CodeStyleCheckerDialog.on_cancelButton_clicked" ID="CodeStyleCheckerDialog.on_cancelButton_clicked"></a> +<h4>CodeStyleCheckerDialog.on_cancelButton_clicked</h4> +<b>on_cancelButton_clicked</b>(<i></i>) + +<p> + Private slot to handle the "Cancel" button press. +</p> <a NAME="CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked" ID="CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked"></a> <h4>CodeStyleCheckerDialog.on_deleteBuiltinButton_clicked</h4> <b>on_deleteBuiltinButton_clicked</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleFixer.html Sun Jul 05 11:11:24 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> @@ -1938,6 +1938,13 @@ flag indicating a change was done (boolean) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad 'logical' parameter +</dd> +</dl> <a NAME="CodeStyleFixer.__fixW291" ID="CodeStyleFixer.__fixW291"></a> <h4>CodeStyleFixer.__fixW291</h4> <b>__fixW291</b>(<i>code, line, pos</i>)
--- a/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.DocStyleChecker.html Sun Jul 05 11:11:24 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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.NamingStyleChecker.html Sun Jul 05 11:11:24 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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html Sun Jul 05 11:11:24 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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html Sun Jul 05 11:11:24 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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.html Sun Jul 05 11:11:24 2020 +0200 @@ -136,12 +136,8 @@ <td>Public method handling service errors for JavaScript.</td> </tr> <tr> -<td><a href="#SyntaxCheckService.serviceErrorPy2">serviceErrorPy2</a></td> -<td>Public method handling service errors for Python 2.</td> -</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> @@ -374,38 +370,12 @@ message text (string) </dd> </dl> -<a NAME="SyntaxCheckService.serviceErrorPy2" ID="SyntaxCheckService.serviceErrorPy2"></a> -<h4>SyntaxCheckService.serviceErrorPy2</h4> -<b>serviceErrorPy2</b>(<i>fx, lang, fn, msg</i>) - -<p> - Public method handling service errors for Python 2. -</p> -<dl> - -<dt><i>fx</i></dt> -<dd> -service name (string) -</dd> -<dt><i>lang</i></dt> -<dd> -language (string) -</dd> -<dt><i>fn</i></dt> -<dd> -file name (string) -</dd> -<dt><i>msg</i></dt> -<dd> -message text (string) -</dd> -</dl> <a NAME="SyntaxCheckService.serviceErrorPy3" ID="SyntaxCheckService.serviceErrorPy3"></a> <h4>SyntaxCheckService.serviceErrorPy3</h4> <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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.PluginCodeStyleChecker.html Sun Jul 05 11:11:24 2020 +0200 @@ -150,12 +150,8 @@ <td>Public method to deactivate this plugin.</td> </tr> <tr> -<td><a href="#CodeStyleCheckerPlugin.serviceErrorPy2">serviceErrorPy2</a></td> -<td>Public slot handling service errors for Python 2.</td> -</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> @@ -391,38 +387,12 @@ <p> Public method to deactivate this plugin. </p> -<a NAME="CodeStyleCheckerPlugin.serviceErrorPy2" ID="CodeStyleCheckerPlugin.serviceErrorPy2"></a> -<h4>CodeStyleCheckerPlugin.serviceErrorPy2</h4> -<b>serviceErrorPy2</b>(<i>fx, lang, fn, msg</i>) - -<p> - Public slot handling service errors for Python 2. -</p> -<dl> - -<dt><i>fx</i></dt> -<dd> -service name (string) -</dd> -<dt><i>lang</i></dt> -<dd> -language (string) -</dd> -<dt><i>fn</i></dt> -<dd> -file name (string) -</dd> -<dt><i>msg</i></dt> -<dd> -message text (string) -</dd> -</dl> <a NAME="CodeStyleCheckerPlugin.serviceErrorPy3" ID="CodeStyleCheckerPlugin.serviceErrorPy3"></a> <h4>CodeStyleCheckerPlugin.serviceErrorPy3</h4> <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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.PluginTabnanny.html Sun Jul 05 11:11:24 2020 +0200 @@ -154,12 +154,8 @@ <td>Public method to prepare an indentation check on one Python source file.</td> </tr> <tr> -<td><a href="#TabnannyPlugin.serviceErrorPy2">serviceErrorPy2</a></td> -<td>Public slot handling service errors for Python 2.</td> -</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> @@ -403,38 +399,12 @@ string containing the code to check (string) </dd> </dl> -<a NAME="TabnannyPlugin.serviceErrorPy2" ID="TabnannyPlugin.serviceErrorPy2"></a> -<h4>TabnannyPlugin.serviceErrorPy2</h4> -<b>serviceErrorPy2</b>(<i>fx, lang, fn, msg</i>) - -<p> - Public slot handling service errors for Python 2. -</p> -<dl> - -<dt><i>fx</i></dt> -<dd> -service name (string) -</dd> -<dt><i>lang</i></dt> -<dd> -language (string) -</dd> -<dt><i>fn</i></dt> -<dd> -file name (string) -</dd> -<dt><i>msg</i></dt> -<dd> -message text (string) -</dd> -</dl> <a NAME="TabnannyPlugin.serviceErrorPy3" ID="TabnannyPlugin.serviceErrorPy3"></a> <h4>TabnannyPlugin.serviceErrorPy3</h4> <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.PluginWizardQFileDialog.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.PluginWizardQFileDialog.html Sun Jul 05 11:11:24 2020 +0200 @@ -141,7 +141,7 @@ <dt><i>variant</i> (int)</dt> <dd> variant of code to be generated - (-1 = E5FileDialog, 0 = unknown, 4 = PyQt4, 5 = PyQt5) + (-1 = E5FileDialog, 0 = unknown, 5 = PyQt5) </dd> </dl> <dl>
--- a/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsGit.GitDiffDialog.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsGit.GitDiffDialog.html Sun Jul 05 11:11:24 2020 +0200 @@ -255,6 +255,14 @@ flag indicating a refreshable diff (boolean) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad value for the 'diffMode' + parameter. +</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.VcsPlugins.vcsGit.GitDiffGenerator.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsGit.GitDiffGenerator.html Sun Jul 05 11:11:24 2020 +0200 @@ -285,6 +285,14 @@ flag indicating the start status (boolean) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad value for the 'diffMode' + parameter. +</dd> +</dl> <a NAME="GitDiffGenerator.stopProcesses" ID="GitDiffGenerator.stopProcesses"></a> <h4>GitDiffGenerator.stopProcesses</h4> <b>stopProcesses</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.ProjectHelper.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.ProjectHelper.html Sun Jul 05 11:11:24 2020 +0200 @@ -146,6 +146,14 @@ verify mode (string; one of 'large', 'lfa' or 'lfc') </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad value for the + 'mode' parameter. +</dd> +</dl> <a NAME="LargefilesProjectHelper.__hgLfconvert" ID="LargefilesProjectHelper.__hgLfconvert"></a> <h4>LargefilesProjectHelper.__hgLfconvert</h4> <b>__hgLfconvert</b>(<i>direction</i>) @@ -161,6 +169,14 @@ 'largefiles' or 'normal') </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad value for the + 'direction' parameter. +</dd> +</dl> <a NAME="LargefilesProjectHelper.initActions" ID="LargefilesProjectHelper.initActions"></a> <h4>LargefilesProjectHelper.initActions</h4> <b>initActions</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.largefiles.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.largefiles.html Sun Jul 05 11:11:24 2020 +0200 @@ -182,6 +182,14 @@ file name of the current project file (string) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad value for the + 'direction' parameter. +</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.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Plugins.WizardPlugins.FileDialogWizard.FileDialogWizardDialog.html Sun Jul 05 11:11:24 2020 +0200 @@ -98,7 +98,7 @@ </tr> <tr> <td><a href="#FileDialogWizardDialog.getCode">getCode</a></td> -<td>Public method to get the source code for Qt4 and Qt5.</td> +<td>Public method to get the source code for Qt5.</td> </tr> <tr> <td><a href="#FileDialogWizardDialog.on_bTest_clicked">on_bTest_clicked</a></td> @@ -131,7 +131,7 @@ <dt><i>dialogVariant</i> (int)</dt> <dd> variant of the file dialog to be generated - (-1 = E5FileDialog, 0 = unknown, 4 = PyQt4, 5 = PyQt5) + (-1 = E5FileDialog, 0 = unknown, 5 = PyQt5) </dd> <dt><i>parent</i> (QWidget)</dt> <dd> @@ -211,7 +211,7 @@ <b>getCode</b>(<i>indLevel, indString</i>) <p> - Public method to get the source code for Qt4 and Qt5. + Public method to get the source code for Qt5. </p> <dl>
--- a/eric6/Documentation/Source/eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -<!DOCTYPE html> -<html><head> -<title>eric6.Preferences.ConfigurationPages.DebuggerPython2Page</title> -<meta charset="UTF-8"> -<style> -body { - background: #EDECE6; - margin: 0em 1em 10em 1em; - color: black; -} - -h1 { color: white; background: #85774A; } -h2 { color: white; background: #85774A; } -h3 { color: white; background: #9D936E; } -h4 { color: white; background: #9D936E; } - -a { color: #BA6D36; } - -</style> -</head> -<body> -<a NAME="top" ID="top"></a> -<h1>eric6.Preferences.ConfigurationPages.DebuggerPython2Page</h1> - -<p> -Module implementing the Debugger Python2 configuration page. -</p> -<h3>Global Attributes</h3> - -<table> -<tr><td>None</td></tr> -</table> -<h3>Classes</h3> - -<table> - -<tr> -<td><a href="#DebuggerPython2Page">DebuggerPython2Page</a></td> -<td>Class implementing the Debugger Python2 configuration page.</td> -</tr> -</table> -<h3>Functions</h3> - -<table> - -<tr> -<td><a href="#create">create</a></td> -<td>Module function to create the configuration page.</td> -</tr> -</table> -<hr /> -<hr /> -<a NAME="DebuggerPython2Page" ID="DebuggerPython2Page"></a> -<h2>DebuggerPython2Page</h2> - -<p> - Class implementing the Debugger Python2 configuration page. -</p> -<h3>Derived from</h3> -ConfigurationPageBase, Ui_DebuggerPython2Page -<h3>Class Attributes</h3> - -<table> -<tr><td>None</td></tr> -</table> -<h3>Class Methods</h3> - -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> - -<table> - -<tr> -<td><a href="#DebuggerPython2Page.__init__">DebuggerPython2Page</a></td> -<td>Constructor</td> -</tr> -<tr> -<td><a href="#DebuggerPython2Page.__populateAndSetVenvComboBox">__populateAndSetVenvComboBox</a></td> -<td>Private method to populate and set the virtual environment combo box.</td> -</tr> -<tr> -<td><a href="#DebuggerPython2Page.on_refreshButton_clicked">on_refreshButton_clicked</a></td> -<td>Private slot handling a click of the refresh button.</td> -</tr> -<tr> -<td><a href="#DebuggerPython2Page.on_venvDlgButton_clicked">on_venvDlgButton_clicked</a></td> -<td>Private slot to show the virtual environment manager dialog.</td> -</tr> -<tr> -<td><a href="#DebuggerPython2Page.save">save</a></td> -<td>Public slot to save the Debugger Python configuration.</td> -</tr> -</table> -<h3>Static Methods</h3> - -<table> -<tr><td>None</td></tr> -</table> - -<a NAME="DebuggerPython2Page.__init__" ID="DebuggerPython2Page.__init__"></a> -<h4>DebuggerPython2Page (Constructor)</h4> -<b>DebuggerPython2Page</b>(<i></i>) - -<p> - Constructor -</p> -<a NAME="DebuggerPython2Page.__populateAndSetVenvComboBox" ID="DebuggerPython2Page.__populateAndSetVenvComboBox"></a> -<h4>DebuggerPython2Page.__populateAndSetVenvComboBox</h4> -<b>__populateAndSetVenvComboBox</b>(<i></i>) - -<p> - Private method to populate and set the virtual environment combo box. -</p> -<a NAME="DebuggerPython2Page.on_refreshButton_clicked" ID="DebuggerPython2Page.on_refreshButton_clicked"></a> -<h4>DebuggerPython2Page.on_refreshButton_clicked</h4> -<b>on_refreshButton_clicked</b>(<i></i>) - -<p> - Private slot handling a click of the refresh button. -</p> -<a NAME="DebuggerPython2Page.on_venvDlgButton_clicked" ID="DebuggerPython2Page.on_venvDlgButton_clicked"></a> -<h4>DebuggerPython2Page.on_venvDlgButton_clicked</h4> -<b>on_venvDlgButton_clicked</b>(<i></i>) - -<p> - Private slot to show the virtual environment manager dialog. -</p> -<a NAME="DebuggerPython2Page.save" ID="DebuggerPython2Page.save"></a> -<h4>DebuggerPython2Page.save</h4> -<b>save</b>(<i></i>) - -<p> - Public slot to save the Debugger Python configuration. -</p> -<div align="right"><a href="#top">Up</a></div> -<hr /> -<hr /> -<a NAME="create" ID="create"></a> -<h2>create</h2> -<b>create</b>(<i>dlg</i>) - -<p> - Module function to create the configuration page. -</p> -<dl> - -<dt><i>dlg</i></dt> -<dd> -reference to the configuration dialog -</dd> -</dl> -<dl> -<dt>Returns:</dt> -<dd> -reference to the instantiated page (ConfigurationPageBase) -</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.Preferences.__init__.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Preferences.__init__.html Sun Jul 05 11:11:24 2020 +0200 @@ -198,10 +198,6 @@ <td>Module function to retrieve the various Qt settings.</td> </tr> <tr> -<td><a href="#getQt4DocDir">getQt4DocDir</a></td> -<td>Module function to retrieve the Qt4DocDir setting.</td> -</tr> -<tr> <td><a href="#getQt5DocDir">getQt5DocDir</a></td> <td>Module function to retrieve the Qt5DocDir setting.</td> </tr> @@ -1522,29 +1518,6 @@ <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> -<a NAME="getQt4DocDir" ID="getQt4DocDir"></a> -<h2>getQt4DocDir</h2> -<b>getQt4DocDir</b>(<i>prefClass=Prefs</i>) - -<p> - Module function to retrieve the Qt4DocDir setting. -</p> -<dl> - -<dt><i>prefClass</i></dt> -<dd> -preferences class used as the storage area -</dd> -</dl> -<dl> -<dt>Returns:</dt> -<dd> -the requested Qt4DocDir setting (string) -</dd> -</dl> -<div align="right"><a href="#top">Up</a></div> -<hr /> -<hr /> <a NAME="getQt5DocDir" ID="getQt5DocDir"></a> <h2>getQt5DocDir</h2> <b>getQt5DocDir</b>(<i>prefClass=Prefs</i>)
--- a/eric6/Documentation/Source/eric6.Project.Project.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Project.Project.html Sun Jul 05 11:11:24 2020 +0200 @@ -905,16 +905,12 @@ <td>Public method used to check, if the passed in filename belongs to the project sources.</td> </tr> <tr> -<td><a href="#Project.isPy2Project">isPy2Project</a></td> -<td>Public method to check, if this project is a Python2 project.</td> -</tr> -<tr> <td><a href="#Project.isPy3Project">isPy3Project</a></td> <td>Public method to check, if this project is a Python3 project.</td> </tr> <tr> <td><a href="#Project.isPythonProject">isPythonProject</a></td> -<td>Public method to check, if this project is a Python2 or Python3 project.</td> +<td>Public method to check, if this project is a Python3 or MicroPython project.</td> </tr> <tr> <td><a href="#Project.isRubyProject">isRubyProject</a></td> @@ -3397,19 +3393,6 @@ flag indicating membership (boolean) </dd> </dl> -<a NAME="Project.isPy2Project" ID="Project.isPy2Project"></a> -<h4>Project.isPy2Project</h4> -<b>isPy2Project</b>(<i></i>) - -<p> - Public method to check, if this project is a Python2 project. -</p> -<dl> -<dt>Returns:</dt> -<dd> -flag indicating a Python2 project (boolean) -</dd> -</dl> <a NAME="Project.isPy3Project" ID="Project.isPy3Project"></a> <h4>Project.isPy3Project</h4> <b>isPy3Project</b>(<i></i>) @@ -3428,7 +3411,7 @@ <b>isPythonProject</b>(<i></i>) <p> - Public method to check, if this project is a Python2 or Python3 + Public method to check, if this project is a Python3 or MicroPython project. </p> <dl>
--- a/eric6/Documentation/Source/eric6.Project.ProjectFormsBrowser.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Project.ProjectFormsBrowser.html Sun Jul 05 11:11:24 2020 +0200 @@ -145,7 +145,7 @@ </tr> <tr> <td><a href="#ProjectFormsBrowser.__generateDialogCode">__generateDialogCode</a></td> -<td>Private method to generate dialog code for the form (Qt4 only).</td> +<td>Private method to generate dialog code for the form (Qt only).</td> </tr> <tr> <td><a href="#ProjectFormsBrowser.__newForm">__newForm</a></td> @@ -165,11 +165,11 @@ </tr> <tr> <td><a href="#ProjectFormsBrowser.__readStderr">__readStderr</a></td> -<td>Private slot to handle the readyReadStandardError signal of the pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process.</td> +<td>Private slot to handle the readyReadStandardError signal of the pyuic5/pyside2-uic process.</td> </tr> <tr> <td><a href="#ProjectFormsBrowser.__readStdout">__readStdout</a></td> -<td>Private slot to handle the readyReadStandardOutput signal of the pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process.</td> +<td>Private slot to handle the readyReadStandardOutput signal of the pyuic5/pyside2-uic process.</td> </tr> <tr> <td><a href="#ProjectFormsBrowser.__resetUiCompiler">__resetUiCompiler</a></td> @@ -369,7 +369,7 @@ <b>__generateDialogCode</b>(<i></i>) <p> - Private method to generate dialog code for the form (Qt4 only). + Private method to generate dialog code for the form (Qt only). </p> <a NAME="ProjectFormsBrowser.__newForm" ID="ProjectFormsBrowser.__newForm"></a> <h4>ProjectFormsBrowser.__newForm</h4> @@ -413,7 +413,7 @@ <p> Private slot to handle the readyReadStandardError signal of the - pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. + pyuic5/pyside2-uic process. </p> <a NAME="ProjectFormsBrowser.__readStdout" ID="ProjectFormsBrowser.__readStdout"></a> <h4>ProjectFormsBrowser.__readStdout</h4> @@ -421,7 +421,7 @@ <p> Private slot to handle the readyReadStandardOutput signal of the - pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. + pyuic5/pyside2-uic process. </p> <a NAME="ProjectFormsBrowser.__resetUiCompiler" ID="ProjectFormsBrowser.__resetUiCompiler"></a> <h4>ProjectFormsBrowser.__resetUiCompiler</h4>
--- a/eric6/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html Sun Jul 05 11:11:24 2020 +0200 @@ -136,11 +136,11 @@ </tr> <tr> <td><a href="#ProjectResourcesBrowser.__readStderr">__readStderr</a></td> -<td>Private slot to handle the readyReadStandardError signal of the pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process.</td> +<td>Private slot to handle the readyReadStandardError signal of the pyrcc5/pyside2-rcc/ process.</td> </tr> <tr> <td><a href="#ProjectResourcesBrowser.__readStdout">__readStdout</a></td> -<td>Private slot to handle the readyReadStandardOutput signal of the pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process.</td> +<td>Private slot to handle the readyReadStandardOutput signal of the pyrcc5/pyside2-rcc process.</td> </tr> <tr> <td><a href="#ProjectResourcesBrowser.__showContextMenu">__showContextMenu</a></td> @@ -351,7 +351,7 @@ <p> Private slot to handle the readyReadStandardError signal of the - pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. + pyrcc5/pyside2-rcc/ process. </p> <a NAME="ProjectResourcesBrowser.__readStdout" ID="ProjectResourcesBrowser.__readStdout"></a> <h4>ProjectResourcesBrowser.__readStdout</h4> @@ -359,7 +359,7 @@ <p> Private slot to handle the readyReadStandardOutput signal of the - pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. + pyrcc5/pyside2-rcc process. </p> <a NAME="ProjectResourcesBrowser.__showContextMenu" ID="ProjectResourcesBrowser.__showContextMenu"></a> <h4>ProjectResourcesBrowser.__showContextMenu</h4>
--- a/eric6/Documentation/Source/eric6.Project.ProjectTranslationsBrowser.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Project.ProjectTranslationsBrowser.html Sun Jul 05 11:11:24 2020 +0200 @@ -130,7 +130,7 @@ </tr> <tr> <td><a href="#ProjectTranslationsBrowser.__generateTSFile">__generateTSFile</a></td> -<td>Private method used to run pylupdate4/pylupdate5/pyside-lupdate to generate the .ts files.</td> +<td>Private method used to run pylupdate5/pyside2-lupdate to generate the .ts files.</td> </tr> <tr> <td><a href="#ProjectTranslationsBrowser.__generateTSFileDone">__generateTSFileDone</a></td> @@ -150,7 +150,7 @@ </tr> <tr> <td><a href="#ProjectTranslationsBrowser.__readStderrLupdate">__readStderrLupdate</a></td> -<td>Private slot to handle the readyReadStandardError signal of the pylupdate4/pylupdate5/pyside-lupdate/pyside2-lupdate process.</td> +<td>Private slot to handle the readyReadStandardError signal of the pylupdate5/pyside2-lupdate process.</td> </tr> <tr> <td><a href="#ProjectTranslationsBrowser.__readStdout">__readStdout</a></td> @@ -335,7 +335,7 @@ <b>__generateTSFile</b>(<i>noobsolete=False, generateAll=True</i>) <p> - Private method used to run pylupdate4/pylupdate5/pyside-lupdate to + Private method used to run pylupdate5/pyside2-lupdate to generate the .ts files. </p> <dl> @@ -419,7 +419,7 @@ <p> Private slot to handle the readyReadStandardError signal of the - pylupdate4/pylupdate5/pyside-lupdate/pyside2-lupdate process. + pylupdate5/pyside2-lupdate process. </p> <dl>
--- a/eric6/Documentation/Source/eric6.QScintilla.Editor.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.QScintilla.Editor.html Sun Jul 05 11:11:24 2020 +0200 @@ -434,7 +434,7 @@ </tr> <tr> <td><a href="#Editor.__getPyVersion">__getPyVersion</a></td> -<td>Private method to return the Python main version (2 or 3) or 0 if it's not a Python file at all.</td> +<td>Private method to return the Python main version or 0 if it's not a Python file at all.</td> </tr> <tr> <td><a href="#Editor.__getSaveFileName">__getSaveFileName</a></td> @@ -2549,13 +2549,13 @@ <b>__getPyVersion</b>(<i></i>) <p> - Private method to return the Python main version (2 or 3) or 0 if it's + Private method to return the Python main version or 0 if it's not a Python file at all. </p> <dl> <dt>Returns:</dt> <dd> -Python version (2 or 3) or 0 if it's not a Python file (int) +Python version or 0 if it's not a Python file (int) </dd> </dl> <a NAME="Editor.__getSaveFileName" ID="Editor.__getSaveFileName"></a> @@ -5569,7 +5569,13 @@ <dl> <dt>Returns:</dt> <dd> -flag indicating a Python2 file (boolean) +flag reporting always False +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl> <a NAME="Editor.isPy3File" ID="Editor.isPy3File"></a> @@ -5595,7 +5601,7 @@ <dl> <dt>Returns:</dt> <dd> -flag indicating a Python (2 or 3) file (boolean) +flag indicating a Python3 file (boolean) </dd> </dl> <a NAME="Editor.isRubyFile" ID="Editor.isRubyFile"></a>
--- a/eric6/Documentation/Source/eric6.QScintilla.MiniEditor.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.QScintilla.MiniEditor.html Sun Jul 05 11:11:24 2020 +0200 @@ -185,10 +185,6 @@ <td>Private method used to setup the Languages context sub menu.</td> </tr> <tr> -<td><a href="#MiniEditor.__isPy2File">__isPy2File</a></td> -<td>Private method to return a flag indicating a Python 2 file.</td> -</tr> -<tr> <td><a href="#MiniEditor.__languageMenuTriggered">__languageMenuTriggered</a></td> <td>Private method to handle the selection of a lexer language.</td> </tr> @@ -749,19 +745,6 @@ reference to the generated menu (QMenu) </dd> </dl> -<a NAME="MiniEditor.__isPy2File" ID="MiniEditor.__isPy2File"></a> -<h4>MiniEditor.__isPy2File</h4> -<b>__isPy2File</b>(<i></i>) - -<p> - Private method to return a flag indicating a Python 2 file. -</p> -<dl> -<dt>Returns:</dt> -<dd> -flag indicating a Python 2 file (boolean) -</dd> -</dl> <a NAME="MiniEditor.__languageMenuTriggered" ID="MiniEditor.__languageMenuTriggered"></a> <h4>MiniEditor.__languageMenuTriggered</h4> <b>__languageMenuTriggered</b>(<i>act</i>)
--- a/eric6/Documentation/Source/eric6.Snapshot.SnapshotRegionGrabber.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Snapshot.SnapshotRegionGrabber.html Sun Jul 05 11:11:24 2020 +0200 @@ -158,6 +158,14 @@ SnapshotRegionGrabber.Ellipse) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a bad value for the 'mode' + parameter +</dd> +</dl> <a NAME="SnapshotRegionGrabber.__grabRect" ID="SnapshotRegionGrabber.__grabRect"></a> <h4>SnapshotRegionGrabber.__grabRect</h4> <b>__grabRect</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.UI.BrowserModel.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.UI.BrowserModel.html Sun Jul 05 11:11:24 2020 +0200 @@ -913,10 +913,6 @@ <td>Public method to check, if this file is a Google Protocol Buffer file.</td> </tr> <tr> -<td><a href="#BrowserFileItem.isPython2File">isPython2File</a></td> -<td>Public method to check, if this file is a Python script.</td> -</tr> -<tr> <td><a href="#BrowserFileItem.isPython3File">isPython3File</a></td> <td>Public method to check, if this file is a Python3 script.</td> </tr> @@ -1143,19 +1139,6 @@ bool </dd> </dl> -<a NAME="BrowserFileItem.isPython2File" ID="BrowserFileItem.isPython2File"></a> -<h4>BrowserFileItem.isPython2File</h4> -<b>isPython2File</b>(<i></i>) - -<p> - Public method to check, if this file is a Python script. -</p> -<dl> -<dt>Returns:</dt> -<dd> -flag indicating a Python file (boolean) -</dd> -</dl> <a NAME="BrowserFileItem.isPython3File" ID="BrowserFileItem.isPython3File"></a> <h4>BrowserFileItem.isPython3File</h4> <b>isPython3File</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.UI.UserInterface.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.UI.UserInterface.html Sun Jul 05 11:11:24 2020 +0200 @@ -671,30 +671,18 @@ <td>Private slot used to show the previous tab or file.</td> </tr> <tr> -<td><a href="#UserInterface.__showPyQt4Doc">__showPyQt4Doc</a></td> -<td>Private slot to show the PyQt4 documentation.</td> -</tr> -<tr> <td><a href="#UserInterface.__showPyQt5Doc">__showPyQt5Doc</a></td> <td>Private slot to show the PyQt5 documentation.</td> </tr> <tr> <td><a href="#UserInterface.__showPySideDoc">__showPySideDoc</a></td> -<td>Private slot to show the PySide/PySide2 documentation.</td> -</tr> -<tr> -<td><a href="#UserInterface.__showPython2Doc">__showPython2Doc</a></td> -<td>Private slot to show the Python 2 documentation.</td> +<td>Private slot to show the PySide2 documentation.</td> </tr> <tr> <td><a href="#UserInterface.__showPythonDoc">__showPythonDoc</a></td> <td>Private slot to show the Python 3 documentation.</td> </tr> <tr> -<td><a href="#UserInterface.__showQt4Doc">__showQt4Doc</a></td> -<td>Private slot to show the Qt4 documentation.</td> -</tr> -<tr> <td><a href="#UserInterface.__showQt5Doc">__showQt5Doc</a></td> <td>Private slot to show the Qt5 documentation.</td> </tr> @@ -2302,13 +2290,6 @@ <p> Private slot used to show the previous tab or file. </p> -<a NAME="UserInterface.__showPyQt4Doc" ID="UserInterface.__showPyQt4Doc"></a> -<h4>UserInterface.__showPyQt4Doc</h4> -<b>__showPyQt4Doc</b>(<i></i>) - -<p> - Private slot to show the PyQt4 documentation. -</p> <a NAME="UserInterface.__showPyQt5Doc" ID="UserInterface.__showPyQt5Doc"></a> <h4>UserInterface.__showPyQt5Doc</h4> <b>__showPyQt5Doc</b>(<i></i>) @@ -2318,25 +2299,18 @@ </p> <a NAME="UserInterface.__showPySideDoc" ID="UserInterface.__showPySideDoc"></a> <h4>UserInterface.__showPySideDoc</h4> -<b>__showPySideDoc</b>(<i>variant</i>) +<b>__showPySideDoc</b>(<i>variant="2"</i>) <p> - Private slot to show the PySide/PySide2 documentation. + Private slot to show the PySide2 documentation. </p> <dl> <dt><i>variant</i> (str)</dt> <dd> -PySide variant (1 or 2) +PySide variant (2) </dd> </dl> -<a NAME="UserInterface.__showPython2Doc" ID="UserInterface.__showPython2Doc"></a> -<h4>UserInterface.__showPython2Doc</h4> -<b>__showPython2Doc</b>(<i></i>) - -<p> - Private slot to show the Python 2 documentation. -</p> <a NAME="UserInterface.__showPythonDoc" ID="UserInterface.__showPythonDoc"></a> <h4>UserInterface.__showPythonDoc</h4> <b>__showPythonDoc</b>(<i></i>) @@ -2344,13 +2318,6 @@ <p> Private slot to show the Python 3 documentation. </p> -<a NAME="UserInterface.__showQt4Doc" ID="UserInterface.__showQt4Doc"></a> -<h4>UserInterface.__showQt4Doc</h4> -<b>__showQt4Doc</b>(<i></i>) - -<p> - Private slot to show the Qt4 documentation. -</p> <a NAME="UserInterface.__showQt5Doc" ID="UserInterface.__showQt5Doc"></a> <h4>UserInterface.__showQt5Doc</h4> <b>__showQt5Doc</b>(<i></i>)
--- a/eric6/Documentation/Source/eric6.Utilities.BackgroundClient.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.BackgroundClient.html Sun Jul 05 11:11:24 2020 +0200 @@ -237,6 +237,13 @@ <p> Public method implementing the main loop of the client. </p> +<dl> + +<dt>Raises <b>RuntimeError</b>:</dt> +<dd> +raised if hashes don't match +</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.Utilities.BackgroundService.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.BackgroundService.html Sun Jul 05 11:11:24 2020 +0200 @@ -175,6 +175,13 @@ language of the incomming connection (str) </dd> </dl> +<dl> + +<dt>Raises <b>RuntimeError</b>:</dt> +<dd> +raised if hashes don't match +</dd> +</dl> <a NAME="BackgroundService.__send" ID="BackgroundService.__send"></a> <h4>BackgroundService.__send</h4> <b>__send</b>(<i>fx, lang, fn, data</i>)
--- a/eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.__init__.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.__init__.html Sun Jul 05 11:11:24 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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.ClassBrowsers.pyclbr.html Sun Jul 05 11:11:24 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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.ModuleParser.html Sun Jul 05 11:11:24 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.Utilities.PySideImporter.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.PySideImporter.html Sun Jul 05 11:11:24 2020 +0200 @@ -23,7 +23,7 @@ <h1>eric6.Utilities.PySideImporter</h1> <p> -Module to check for the presence of PySide/PySide2 by importing it. +Module to check for the presence of PySide2 by importing it. </p> <h3>Global Attributes</h3>
--- a/eric6/Documentation/Source/eric6.Utilities.__init__.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.__init__.html Sun Jul 05 11:11:24 2020 +0200 @@ -61,7 +61,7 @@ </tr> <tr> <td><a href="#checkPyside">checkPyside</a></td> -<td>Module function to check the presence of PySide/PySide2.</td> +<td>Module function to check the presence of PySide2.</td> </tr> <tr> <td><a href="#compactPath">compactPath</a></td> @@ -141,7 +141,7 @@ </tr> <tr> <td><a href="#generatePySideToolPath">generatePySideToolPath</a></td> -<td>Module function to generate the executable path for a PySide/PySide2 tool.</td> +<td>Module function to generate the executable path for a PySide2 tool.</td> </tr> <tr> <td><a href="#generateQtToolName">generateQtToolName</a></td> @@ -583,26 +583,25 @@ <b>checkPyside</b>(<i>variant="2"</i>) <p> - Module function to check the presence of PySide/PySide2. + Module function to check the presence of PySide2. </p> <dl> <dt><i>variant</i> (str)</dt> <dd> -indicator for the PySide variant +indicator for the PySide variant (not used) </dd> </dl> <dl> <dt>Returns:</dt> <dd> -list of two flags indicating the presence of PySide/PySide2 for - Python2 and PySide/PySide2 for Python3 +flags indicating the presence of PySide2 </dd> </dl> <dl> <dt>Return Type:</dt> <dd> -tuple of (bool, bool) +bool </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -762,7 +761,7 @@ <dl> <dt>Returns:</dt> <dd> -Python version if file is Python2 or Python3 (int) +Python version if file is Python3 (int) </dd> </dl> <div align="right"><a href="#top">Up</a></div> @@ -1160,7 +1159,7 @@ <b>generatePySideToolPath</b>(<i>toolname, variant="2"</i>) <p> - Module function to generate the executable path for a PySide/PySide2 tool. + Module function to generate the executable path for a PySide2 tool. </p> <dl> @@ -1170,13 +1169,13 @@ </dd> <dt><i>variant</i> (str)</dt> <dd> -indicator for the PySide variant +indicator for the PySide variant (not used) </dd> </dl> <dl> <dt>Returns:</dt> <dd> -the PySide/PySide2 tool path with extension +the PySide2 tool path with extension </dd> </dl> <dl>
--- a/eric6/Documentation/Source/eric6.Utilities.crypto.py3AES.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.Utilities.crypto.py3AES.html Sun Jul 05 11:11:24 2020 +0200 @@ -930,6 +930,13 @@ decrypted data (bytes) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an invalid key size +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> @@ -961,6 +968,13 @@ encrypted data prepended with the initialization vector (bytes) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an invalid key size +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> <hr />
--- a/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvAddEditDialog.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvAddEditDialog.html Sun Jul 05 11:11:24 2020 +0200 @@ -113,7 +113,7 @@ <a NAME="VirtualenvAddEditDialog.__init__" ID="VirtualenvAddEditDialog.__init__"></a> <h4>VirtualenvAddEditDialog (Constructor)</h4> -<b>VirtualenvAddEditDialog</b>(<i>manager, venvName="", venvDirectory="", venvInterpreter="", venvVariant=3, isGlobal=False, isConda=False, isRemote=False, execPath="", parent=None</i>) +<b>VirtualenvAddEditDialog</b>(<i>manager, venvName="", venvDirectory="", venvInterpreter="", isGlobal=False, isConda=False, isRemote=False, execPath="", parent=None</i>) <p> Constructor @@ -136,10 +136,6 @@ <dd> Python interpreter of the virtual environment </dd> -<dt><i>venvVariant</i> (int)</dt> -<dd> -Python variant of the virtual environment -</dd> <dt><i>isGlobal</i> (bool)</dt> <dd> flag indicating a global environment @@ -180,17 +176,16 @@ <dt>Returns:</dt> <dd> tuple containing the logical name, the directory, the - interpreter of the virtual environment, the Python variant, - a flag indicating a global environment, a flag indicating an - Anaconda environment, aflag indicating a remotely accessed - environment and a string to be prepended to the PATH environment - variable + interpreter of the virtual environment, a flag indicating a + global environment, a flag indicating an Anaconda environment, + a flag indicating a remotely accessed environment and a string + to be prepended to the PATH environment variable </dd> </dl> <dl> <dt>Return Type:</dt> <dd> -tuple of (str, str, str, int, bool, bool, bool, str) +tuple of (str, str, str, bool, bool, bool, str) </dd> </dl> <a NAME="VirtualenvAddEditDialog.on_anacondaCheckBox_clicked" ID="VirtualenvAddEditDialog.on_anacondaCheckBox_clicked"></a>
--- a/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvInterpreterSelectionDialog.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvInterpreterSelectionDialog.html Sun Jul 05 11:11:24 2020 +0200 @@ -132,14 +132,13 @@ <dl> <dt>Returns:</dt> <dd> -tuple containing the path of the selected Python interpreter - and the Python variant +path of the selected Python interpreter </dd> </dl> <dl> <dt>Return Type:</dt> <dd> -tuple of (str, int) +str </dd> </dl> <a NAME="VirtualenvInterpreterSelectionDialog.on_pythonExecPicker_textChanged" ID="VirtualenvInterpreterSelectionDialog.on_pythonExecPicker_textChanged"></a>
--- a/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvManager.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.VirtualEnv.VirtualenvManager.html Sun Jul 05 11:11:24 2020 +0200 @@ -140,14 +140,6 @@ <td>Public method to get a list of defined virtual environments.</td> </tr> <tr> -<td><a href="#VirtualenvManager.getVirtualenvNamesForVariant">getVirtualenvNamesForVariant</a></td> -<td>Public method to get a list of virtual environments for a given Python variant.</td> -</tr> -<tr> -<td><a href="#VirtualenvManager.getVirtualenvVariant">getVirtualenvVariant</a></td> -<td>Public method to get the variant of a virtual environment.</td> -</tr> -<tr> <td><a href="#VirtualenvManager.isCondaEnvironment">isCondaEnvironment</a></td> <td>Public method to test, if a given environment is an Anaconda environment.</td> </tr> @@ -247,7 +239,7 @@ </p> <a NAME="VirtualenvManager.addVirtualEnv" ID="VirtualenvManager.addVirtualEnv"></a> <h4>VirtualenvManager.addVirtualEnv</h4> -<b>addVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter="", venvVariant=3, isGlobal=False, isConda=False, isRemote=False, execPath=""</i>) +<b>addVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter="", isGlobal=False, isConda=False, isRemote=False, execPath=""</i>) <p> Public method to add a virtual environment. @@ -266,10 +258,6 @@ <dd> interpreter of the virtual environment </dd> -<dt><i>venvVariant</i> (int)</dt> -<dd> -Python variant of the virtual environment -</dd> <dt><i>isGlobal</i> (bool)</dt> <dd> flag indicating a global environment @@ -460,59 +448,6 @@ list of str </dd> </dl> -<a NAME="VirtualenvManager.getVirtualenvNamesForVariant" ID="VirtualenvManager.getVirtualenvNamesForVariant"></a> -<h4>VirtualenvManager.getVirtualenvNamesForVariant</h4> -<b>getVirtualenvNamesForVariant</b>(<i>variant</i>) - -<p> - Public method to get a list of virtual environments for a given - Python variant. -</p> -<dl> - -<dt><i>variant</i> (int)</dt> -<dd> -Python variant (2 or 3) -</dd> -</dl> -<dl> -<dt>Returns:</dt> -<dd> -list of defined virtual environments -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -list of str -</dd> -</dl> -<a NAME="VirtualenvManager.getVirtualenvVariant" ID="VirtualenvManager.getVirtualenvVariant"></a> -<h4>VirtualenvManager.getVirtualenvVariant</h4> -<b>getVirtualenvVariant</b>(<i>venvName</i>) - -<p> - Public method to get the variant of a virtual environment. -</p> -<dl> - -<dt><i>venvName</i> (str)</dt> -<dd> -logical name for the virtual environment -</dd> -</dl> -<dl> -<dt>Returns:</dt> -<dd> -Python variant of the environment -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -str -</dd> -</dl> <a NAME="VirtualenvManager.isCondaEnvironment" ID="VirtualenvManager.isCondaEnvironment"></a> <h4>VirtualenvManager.isCondaEnvironment</h4> <b>isCondaEnvironment</b>(<i>venvName</i>) @@ -635,7 +570,7 @@ </dl> <a NAME="VirtualenvManager.renameVirtualEnv" ID="VirtualenvManager.renameVirtualEnv"></a> <h4>VirtualenvManager.renameVirtualEnv</h4> -<b>renameVirtualEnv</b>(<i>oldVenvName, venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal, isConda, isRemote, execPath</i>) +<b>renameVirtualEnv</b>(<i>oldVenvName, venvName, venvDirectory, venvInterpreter, isGlobal, isConda, isRemote, execPath</i>) <p> Public method to substitute a virtual environment entry with a new @@ -659,10 +594,6 @@ <dd> interpreter of the virtual environment </dd> -<dt><i>venvVariant</i> (int)</dt> -<dd> -Python variant of the virtual environment -</dd> <dt><i>isGlobal</i> (bool)</dt> <dd> flag indicating a global environment @@ -683,7 +614,7 @@ </dl> <a NAME="VirtualenvManager.setVirtualEnv" ID="VirtualenvManager.setVirtualEnv"></a> <h4>VirtualenvManager.setVirtualEnv</h4> -<b>setVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal, isConda, isRemote, execPath</i>) +<b>setVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter, isGlobal, isConda, isRemote, execPath</i>) <p> Public method to change a virtual environment. @@ -702,10 +633,6 @@ <dd> interpreter of the virtual environment </dd> -<dt><i>venvVariant</i> (int)</dt> -<dd> -Python variant of the virtual environment -</dd> <dt><i>isGlobal</i> (bool)</dt> <dd> flag indicating a global environment
--- a/eric6/Documentation/Source/eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html Sun Jul 05 11:11:24 2020 +0200 @@ -158,7 +158,7 @@ <dl> <dt>Return Type:</dt> <dd> -list of str +set of str </dd> </dl> <a NAME="QtHelpDocumentationSelectionDialog.on_deleteAllButton_clicked" ID="QtHelpDocumentationSelectionDialog.on_deleteAllButton_clicked"></a>
--- a/eric6/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html Sun Jul 05 11:11:24 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 Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/index-eric6.Plugins.CheckerPlugins.SyntaxChecker.html Sun Jul 05 11:11:24 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.Preferences.ConfigurationPages.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/index-eric6.Preferences.ConfigurationPages.html Sun Jul 05 11:11:24 2020 +0200 @@ -54,10 +54,6 @@ <td>Module implementing the Debugger General configuration page.</td> </tr> <tr> -<td><a href="eric6.Preferences.ConfigurationPages.DebuggerPython2Page.html">DebuggerPython2Page</a></td> -<td>Module implementing the Debugger Python2 configuration page.</td> -</tr> -<tr> <td><a href="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html">DebuggerPython3Page</a></td> <td>Module implementing the Debugger Python3 configuration page.</td> </tr>
--- a/eric6/Documentation/Source/index-eric6.Utilities.ClassBrowsers.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/index-eric6.Utilities.ClassBrowsers.html Sun Jul 05 11:11:24 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/Documentation/Source/index-eric6.Utilities.html Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Documentation/Source/index-eric6.Utilities.html Sun Jul 05 11:11:24 2020 +0200 @@ -79,7 +79,7 @@ </tr> <tr> <td><a href="eric6.Utilities.PySideImporter.html">PySideImporter</a></td> -<td>Module to check for the presence of PySide/PySide2 by importing it.</td> +<td>Module to check for the presence of PySide2 by importing it.</td> </tr> <tr> <td><a href="eric6.Utilities.__init__.html">Utilities</a></td>
--- a/eric6/DocumentationTools/Config.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DocumentationTools/Config.py Sun Jul 05 11:11:24 2020 +0200 @@ -32,6 +32,3 @@ 'LinkColor': 'link-color', } - -# -# eflag: noqa = M702
--- a/eric6/DocumentationTools/QtHelpGenerator.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DocumentationTools/QtHelpGenerator.py Sun Jul 05 11:11:24 2020 +0200 @@ -12,7 +12,7 @@ import sys import os import shutil -import subprocess +import subprocess # secok from Utilities import ( joinext, relpath, html_encode, getQtBinariesPath, generateQtToolName, @@ -280,7 +280,7 @@ shutil.copy( os.path.join(self.outputDir, HelpProjectFile), self.htmlDir) os.chdir(self.htmlDir) - subprocess.call([ + subprocess.call([ # secok qhelpgeneratorExe, HelpProjectFile, "-o", os.path.join(self.outputDir, HelpHelpFile)]) os.remove(HelpProjectFile) @@ -296,7 +296,7 @@ sys.stdout.flush() sys.stderr.flush() os.chdir(self.outputDir) - subprocess.call([ + subprocess.call([ # secok qcollectiongeneratorExe, HelpCollectionProjectFile, "-o", HelpCollectionFile])
--- a/eric6/DocumentationTools/__init__.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/DocumentationTools/__init__.py Sun Jul 05 11:11:24 2020 +0200 @@ -8,10 +8,6 @@ """ supportedExtensionsDictForApis = { - "Python2": [".py2", ".pyw2", ".ptl"], "Python3": [".py", ".pyw", ".py3", ".pyw3"], "Ruby": [".rb"] } - -# -# eflag: noqa = M702
--- a/eric6/E5Gui/E5LineEdit.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Gui/E5LineEdit.py Sun Jul 05 11:11:24 2020 +0200 @@ -253,8 +253,10 @@ @keyparam inactiveText text to be shown on inactivity (string) @keyparam side side the clear button should be shown at (E5LineEdit.RightSide, E5LineEdit.LeftSide) + @exception ValueError raised to indicate a bad parameter value """ - assert side in [E5LineEdit.RightSide, E5LineEdit.LeftSide] + if side not in [E5LineEdit.RightSide, E5LineEdit.LeftSide]: + raise ValueError("Bad value for 'side' parameter.") super(E5ClearableLineEdit, self).__init__(parent, inactiveText)
--- a/eric6/E5Gui/E5MessageBox.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Gui/E5MessageBox.py Sun Jul 05 11:11:24 2020 +0200 @@ -235,8 +235,10 @@ default button (boolean) @param textFormat format of the text (Qt.TextFormat) @return flag indicating the selection of the Yes button (boolean) + @exception ValueError raised to indicate a bad parameter value """ - assert icon in [Critical, Information, Question, Warning] + if icon not in [Critical, Information, Question, Warning]: + raise ValueError("Bad value for 'icon' parameter.") res = __messageBox( parent, title, text, icon, @@ -257,8 +259,10 @@ Warning) @param textFormat format of the text (Qt.TextFormat) @return flag indicating the selection of the Retry button (boolean) + @exception ValueError raised to indicate a bad parameter value """ - assert icon in [Critical, Information, Question, Warning] + if icon not in [Critical, Information, Question, Warning]: + raise ValueError("Bad value for 'icon' parameter.") res = __messageBox( parent, title, text, icon,
--- a/eric6/E5Gui/E5ModelToolBar.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Gui/E5ModelToolBar.py Sun Jul 05 11:11:24 2020 +0200 @@ -102,7 +102,8 @@ """ Protected slot to build the tool bar. """ - assert self.__model is not None + if self.__model is None: + return self.clear() @@ -197,6 +198,7 @@ Protected method to handle drop events. @param evt reference to the event (QDropEvent) + @exception RuntimeError raised to indicate an invalid model index """ if self.__model is not None: act = self.actionAt(evt.pos()) @@ -205,7 +207,8 @@ row = self.__model.rowCount(self.__root) else: idx = self.index(act) - assert idx.isValid() + if not idx.isValid(): + raise RuntimeError("invalid index") row = idx.row() if self.__model.hasChildren(idx): parentIndex = idx @@ -224,6 +227,7 @@ Protected method to handle mouse move events. @param evt reference to the event (QMouseEvent) + @exception RuntimeError raised to indicate an invalid model index """ if self.__model is None: super(E5ModelToolBar, self).mouseMoveEvent(evt) @@ -245,7 +249,8 @@ return idx = self.index(act) - assert idx.isValid() + if not idx.isValid(): + raise RuntimeError("invalid index") drag = QDrag(self) drag.setMimeData(self.__model.mimeData([idx]))
--- a/eric6/E5Gui/E5PathPicker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Gui/E5PathPicker.py Sun Jul 05 11:11:24 2020 +0200 @@ -135,8 +135,10 @@ @param mode picker mode @type E5PathPickerModes + @exception ValueError raised to indicate a bad parameter value """ - assert mode in E5PathPickerModes + if mode not in E5PathPickerModes: + raise ValueError("Bad value for 'mode' parameter.") oldMode = self.__mode self.__mode = mode
--- a/eric6/E5Gui/E5TextEditSearchWidget.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Gui/E5TextEditSearchWidget.py Sun Jul 05 11:11:24 2020 +0200 @@ -185,8 +185,10 @@ @type QTextEdit, QWebEngineView or QWebView @param editType type of the attached edit widget @type str (one of "QTextEdit", "QWebEngineView" or "QWebView") + @exception ValueError raised to indicate a bad parameter value """ - assert editType in ["QTextEdit", "QWebEngineView", "QWebView"] + if editType not in ["QTextEdit", "QWebEngineView", "QWebView"]: + raise ValueError("Bad value for 'editType' parameter.") self.__textedit = textedit self.__texteditType = editType
--- a/eric6/E5Gui/E5ToolButton.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Gui/E5ToolButton.py Sun Jul 05 11:11:24 2020 +0200 @@ -90,13 +90,12 @@ @param menu reference to the tool button menu @type QMenu """ - assert menu is not None - - if self.__menu: - self.__menu.aboutToHide.disconnect(self.__menuAboutToHide) - - self.__menu = menu - self.__menu.aboutToHide.connect(self.__menuAboutToHide) + if menu is not None: + if self.__menu: + self.__menu.aboutToHide.disconnect(self.__menuAboutToHide) + + self.__menu = menu + self.__menu.aboutToHide.connect(self.__menuAboutToHide) def showMenuInside(self): """
--- a/eric6/E5Gui/E5TreeWidget.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Gui/E5TreeWidget.py Sun Jul 05 11:11:24 2020 +0200 @@ -48,9 +48,11 @@ Public method to set the default item show mode. @param mode default mode (ItemsCollapsed, ItemsExpanded) + @exception ValueError raised to indicate a bad parameter value """ - assert mode in [E5TreeWidget.ItemsCollapsed, - E5TreeWidget.ItemsExpanded] + if mode not in [E5TreeWidget.ItemsCollapsed, + E5TreeWidget.ItemsExpanded]: + raise ValueError("Bad value for 'mode' parameter.") self.__showMode = mode
--- a/eric6/E5Network/E5Ftp.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Network/E5Ftp.py Sun Jul 05 11:11:24 2020 +0200 @@ -9,7 +9,7 @@ """ -import ftplib +import ftplib # secok from socket import _GLOBAL_DEFAULT_TIMEOUT @@ -61,7 +61,7 @@ Class implementing an extension to the Python FTP class to support FTP proxies. """ - def __init__(self, host="", user="", password="", acct="", + def __init__(self, host="", user="", password="", acct="", # secok proxyType=E5FtpProxyType.NoProxy, proxyHost="", proxyPort=ftplib.FTP_PORT, proxyUser="", proxyPassword="", proxyAccount="", timeout=_GLOBAL_DEFAULT_TIMEOUT): @@ -167,7 +167,7 @@ return super(E5Ftp, self).connect( self.__host, self.__port, self.__timeout) - def login(self, user="", password="", acct=""): + def login(self, user="", password="", acct=""): # secok """ Public method to login to the FTP server. @@ -257,7 +257,7 @@ user = "anonymous" if not password: # make sure it is a string - password = "" + password = "" # secok if not acct: # make sure it is a string acct = "" @@ -326,7 +326,7 @@ if resp[0] == "3": resp = self.sendcmd("ACCT " + acct) if resp[0] != "2": - raise ftplib.error_reply(resp) + raise ftplib.error_reply(resp) # secok if self.__proxyType == E5FtpProxyType.AuthResp: # authorize to the FTP proxy
--- a/eric6/E5Network/E5GoogleMailHelpers.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Network/E5GoogleMailHelpers.py Sun Jul 05 11:11:24 2020 +0200 @@ -13,8 +13,8 @@ import Globals SCOPES = 'https://www.googleapis.com/auth/gmail.send' -CLIENT_SECRET_FILE = 'eric_client_secret.json' -TOKEN_FILE = 'eric_python_email_send_token.json' +CLIENT_SECRET_FILE = 'eric_client_secret.json' # secok +TOKEN_FILE = 'eric_python_email_send_token.json' # secok APPLICATION_NAME = 'Eric Python Send Email' RequiredPackages = (
--- a/eric6/E5Network/E5RFC6266.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Network/E5RFC6266.py Sun Jul 05 11:11:24 2020 +0200 @@ -225,10 +225,10 @@ self.assocs = dict(assocs) # So we can change values if 'filename*' in self.assocs: param = self.assocs['filename*'] - assert isinstance(param, ExtDispositionParm) - self.assocs['filename*'] = ( - parse_ext_value(param.value).string - ) + if isinstance(param, ExtDispositionParm): + self.assocs['filename*'] = ( + parse_ext_value(param.value).string + ) def filename(self): """
--- a/eric6/E5Network/E5XmlRpcClient.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Network/E5XmlRpcClient.py Sun Jul 05 11:11:24 2020 +0200 @@ -71,9 +71,11 @@ result as a tuple (function) @param errorCallback method to be called in case of an error with error code and error string (function) + @exception TypeError raised to indicate an illegal 'args' parameter + type """ - assert isinstance(args, tuple), \ - "argument must be tuple or Fault instance" + if not isinstance(args, tuple): + raise TypeError("argument 'args' must be tuple") data = xmlrpc.dumps(args, method).encode("utf-8") reply = self.__networkManager.post(
--- a/eric6/E5Utilities/E5Cache.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5Utilities/E5Cache.py Sun Jul 05 11:11:24 2020 +0200 @@ -25,8 +25,10 @@ @param size maximum number of entries that may be stored in the cache @type int + @exception ValueError raised to indicate an illegal 'size' parameter """ - assert size >= 0 + if size < 0: + raise ValueError("'size' parameter must be positive.") self.__size = size @@ -83,10 +85,9 @@ cache @type int """ - assert newSize >= 0 - - self.__size = newSize - self.__adjustToSize() + if newSize >= 0: + self.__size = newSize + self.__adjustToSize() def getMaximumCacheTime(self): """
--- a/eric6/E5XML/Config.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5XML/Config.py Sun Jul 05 11:11:24 2020 +0200 @@ -44,6 +44,3 @@ # version number of the web browser spell check dictionaries list file dictionariesListFileFormatVersion = "1.0" - -# -# eflag: noqa = M702
--- a/eric6/E5XML/ProjectReader.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5XML/ProjectReader.py Sun Jul 05 11:11:24 2020 +0200 @@ -68,8 +68,8 @@ ) self.project.pdata["PROGLANGUAGE"] = self.readElementText() if self.project.pdata["PROGLANGUAGE"] == "Python": - # convert Python to the more specific Python2 - self.project.pdata["PROGLANGUAGE"] = "Python2" + # convert Python to the more specific Python3 + self.project.pdata["PROGLANGUAGE"] = "Python3" elif self.name() == "ProjectType": self.project.pdata["PROJECTTYPE"] = self.readElementText() elif self.name() == "Description":
--- a/eric6/E5XML/XMLStreamReaderBase.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5XML/XMLStreamReaderBase.py Sun Jul 05 11:11:24 2020 +0200 @@ -8,7 +8,7 @@ """ -import pickle +import pickle # secok import base64 from PyQt5.QtCore import QXmlStreamReader, QCoreApplication @@ -162,9 +162,6 @@ val = float(real) + float(imag) * 1j elif self.name() == "string": val = self.readElementText() - elif self.name() == "unicode": - # backward compatibility to 4.6 - val = self.readElementText() elif self.name() == "bytes": by = bytes([int(b) for b in self.readElementText().split(",")]) @@ -198,7 +195,7 @@ continue b64 = self.readElementText() pic = base64.b64decode(b64.encode("ASCII")) - val = pickle.loads(pic) + val = pickle.loads(pic) # secok else: self._skipUnknownElement() except ValueError as err:
--- a/eric6/E5XML/XMLStreamWriterBase.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/E5XML/XMLStreamWriterBase.py Sun Jul 05 11:11:24 2020 +0200 @@ -8,7 +8,7 @@ """ -import pickle +import pickle # secok import base64 from PyQt5.QtCore import QXmlStreamWriter
--- a/eric6/Globals/__init__.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Globals/__init__.py Sun Jul 05 11:11:24 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(): @@ -422,7 +425,7 @@ Module function to convert a Python string into a QByteArray. @param txt Python string to be converted - @type str, bytes, bytearray, unicode + @type str, bytes, bytearray @return converted QByteArray @rtype QByteArray """
--- a/eric6/Graphics/ApplicationDiagramBuilder.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Graphics/ApplicationDiagramBuilder.py Sun Jul 05 11:11:24 2020 +0200 @@ -54,7 +54,6 @@ """ import Utilities.ModuleParser extensions = ( - Preferences.getPython("PythonExtensions") + Preferences.getPython("Python3Extensions") + ['.rb'] )
--- a/eric6/Graphics/ImportsDiagramBuilder.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Graphics/ImportsDiagramBuilder.py Sun Jul 05 11:11:24 2020 +0200 @@ -79,13 +79,11 @@ """ import Utilities.ModuleParser extensions = ( - Preferences.getPython("PythonExtensions") + Preferences.getPython("Python3Extensions") ) moduleDict = {} modules = [] for ext in ( - Preferences.getPython("PythonExtensions") + Preferences.getPython("Python3Extensions") ): modules.extend(glob.glob(Utilities.normjoinpath(
--- a/eric6/Graphics/PackageDiagramBuilder.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Graphics/PackageDiagramBuilder.py Sun Jul 05 11:11:24 2020 +0200 @@ -75,13 +75,10 @@ supportedExt = ( ['*{0}'.format(ext) for ext in - Preferences.getPython("PythonExtensions")] + - ['*{0}'.format(ext) for ext in Preferences.getPython("Python3Extensions")] + ['*.rb'] ) extensions = ( - Preferences.getPython("PythonExtensions") + Preferences.getPython("Python3Extensions") + ['.rb'] ) @@ -131,13 +128,10 @@ supportedExt = ( ['*{0}'.format(ext) for ext in - Preferences.getPython("PythonExtensions")] + - ['*{0}'.format(ext) for ext in Preferences.getPython("Python3Extensions")] + ['*.rb'] ) extensions = ( - Preferences.getPython("PythonExtensions") + Preferences.getPython("Python3Extensions") + ['.rb'] )
--- a/eric6/Graphics/UMLClassDiagramBuilder.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Graphics/UMLClassDiagramBuilder.py Sun Jul 05 11:11:24 2020 +0200 @@ -73,7 +73,6 @@ try: extensions = ( - Preferences.getPython("PythonExtensions") + Preferences.getPython("Python3Extensions") + ['.rb'] )
--- a/eric6/HexEdit/HexEditMainWindow.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/HexEdit/HexEditMainWindow.py Sun Jul 05 11:11:24 2020 +0200 @@ -1392,9 +1392,10 @@ @return the requested history list @rtype list of tuples of (int, str) """ - assert key in ['search', 'replace'] + if key in ['search', 'replace']: + return self.__srHistory[key] - return self.__srHistory[key] + return [] @pyqtSlot() def __showFileMenu(self):
--- a/eric6/HexEdit/HexEditSearchReplaceWidget.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/HexEdit/HexEditSearchReplaceWidget.py Sun Jul 05 11:11:24 2020 +0200 @@ -542,8 +542,11 @@ @type str @return converted text @rtype bytearray + @exception ValueError raised to indicate an invalid dataFormat + parameter """ - assert dataFormat in self.__formatAndValidators.keys() + if dataFormat not in self.__formatAndValidators.keys(): + raise ValueError("Bad value for 'dataFormat' parameter.") if dataFormat == "hex": # hex format ba = bytearray(QByteArray.fromHex( @@ -571,8 +574,11 @@ @type str @return formatted text @rtype str + @exception ValueError raised to indicate an invalid dataFormat + parameter """ - assert dataFormat in self.__formatAndValidators.keys() + if dataFormat not in self.__formatAndValidators.keys(): + raise ValueError("Bad value for 'dataFormat' parameter.") if dataFormat == "hex": # hex format txt = "{0:x}".format(self.__bytearray2int(array))
--- a/eric6/HexEdit/HexEditWidget.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/HexEdit/HexEditWidget.py Sun Jul 05 11:11:24 2020 +0200 @@ -662,10 +662,9 @@ @param ch byte to insert @type int in the range 0x00 to 0xff """ - assert ch in range(0, 256) - - self.__undoStack.insert(pos, ch) - self.__refresh() + if ch in range(0, 256): + self.__undoStack.insert(pos, ch) + self.__refresh() def remove(self, pos, length=1): """ @@ -688,10 +687,9 @@ @param ch byte to replace with @type int in the range 0x00 to 0xff """ - assert ch in range(0, 256) - - self.__undoStack.overwrite(pos, ch) - self.__refresh() + if ch in range(0, 256): + self.__undoStack.overwrite(pos, ch) + self.__refresh() def insertByteArray(self, pos, byteArray): """
--- a/eric6/MicroPython/MicroPythonCommandsInterface.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/MicroPython/MicroPythonCommandsInterface.py Sun Jul 05 11:11:24 2020 +0200 @@ -402,16 +402,15 @@ @type str @exception IOError raised to indicate an issue with the device """ - assert dirname - - commands = [ - "import os as __os_", - "__os_.chdir('{0}')".format(dirname), - "del __os_", - ] - out, err = self.execute(commands) - if err: - raise IOError(self.__shortError(err)) + if dirname: + commands = [ + "import os as __os_", + "__os_.chdir('{0}')".format(dirname), + "del __os_", + ] + out, err = self.execute(commands) + if err: + raise IOError(self.__shortError(err)) def pwd(self): """ @@ -443,16 +442,15 @@ @type str @exception IOError raised to indicate an issue with the device """ - assert filename - - commands = [ - "import os as __os_", - "__os_.remove('{0}')".format(filename), - "del __os_", - ] - out, err = self.execute(commands) - if err: - raise IOError(self.__shortError(err)) + if filename: + commands = [ + "import os as __os_", + "__os_.remove('{0}')".format(filename), + "del __os_", + ] + out, err = self.execute(commands) + if err: + raise IOError(self.__shortError(err)) def rmrf(self, name, recursive=False, force=False): """ @@ -468,40 +466,41 @@ @rtype bool @exception IOError raised to indicate an issue with the device """ - assert name + if name: + commands = [ + "import os as __os_", + "\n".join([ + "def remove_file(name, recursive=False, force=False):", + " try:", + " mode = __os_.stat(name)[0]", + " if mode & 0x4000 != 0:", + " if recursive:", + " for file in __os_.listdir(name):", + " success = remove_file(" + "name + '/' + file, recursive, force)", + " if not success and not force:", + " return False", + " __os_.rmdir(name)", + " else:", + " if not force:", + " return False", + " else:", + " __os_.remove(name)", + " except:", + " if not force:", + " return False", + " return True", + ]), + "print(remove_file('{0}', {1}, {2}))".format(name, recursive, + force), + "del __os_, remove_file", + ] + out, err = self.execute(commands) + if err: + raise IOError(self.__shortError(err)) + return ast.literal_eval(out.decode("utf-8")) - commands = [ - "import os as __os_", - "\n".join([ - "def remove_file(name, recursive=False, force=False):", - " try:", - " mode = __os_.stat(name)[0]", - " if mode & 0x4000 != 0:", - " if recursive:", - " for file in __os_.listdir(name):", - " success = remove_file(name + '/' + file," - " recursive, force)", - " if not success and not force:", - " return False", - " __os_.rmdir(name)", - " else:", - " if not force:", - " return False", - " else:", - " __os_.remove(name)", - " except:", - " if not force:", - " return False", - " return True", - ]), - "print(remove_file('{0}', {1}, {2}))".format(name, recursive, - force), - "del __os_, remove_file", - ] - out, err = self.execute(commands) - if err: - raise IOError(self.__shortError(err)) - return ast.literal_eval(out.decode("utf-8")) + return False def mkdir(self, dirname): """ @@ -511,16 +510,15 @@ @type str @exception IOError raised to indicate an issue with the device """ - assert dirname - - commands = [ - "import os as __os_", - "__os_.mkdir('{0}')".format(dirname), - "del __os_", - ] - out, err = self.execute(commands) - if err: - raise IOError(self.__shortError(err)) + if dirname: + commands = [ + "import os as __os_", + "__os_.mkdir('{0}')".format(dirname), + "del __os_", + ] + out, err = self.execute(commands) + if err: + raise IOError(self.__shortError(err)) def rmdir(self, dirname): """ @@ -530,16 +528,15 @@ @type str @exception IOError raised to indicate an issue with the device """ - assert dirname - - commands = [ - "import os as __os_", - "__os_.rmdir('{0}')".format(dirname), - "del __os_", - ] - out, err = self.execute(commands) - if err: - raise IOError(self.__shortError(err)) + if dirname: + commands = [ + "import os as __os_", + "__os_.rmdir('{0}')".format(dirname), + "del __os_", + ] + out, err = self.execute(commands) + if err: + raise IOError(self.__shortError(err)) def put(self, hostFileName, deviceFileName=None): """
--- a/eric6/PipInterface/Pip.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/PipInterface/Pip.py Sun Jul 05 11:11:24 2020 +0200 @@ -655,7 +655,7 @@ 'replace') try: result = json.loads(data) - except Exception: + except Exception: # secok # ignore JSON exceptions pass
--- a/eric6/PipInterface/PipPackagesWidget.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/PipInterface/PipPackagesWidget.py Sun Jul 05 11:11:24 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)
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/AnnotationsChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/AnnotationsChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -163,13 +163,6 @@ @rtype ast.Module """ source = "".join(self.__source) - # Check type for py2: if not str it's unicode - if sys.version_info[0] == 2: - try: - source = source.encode('utf-8') - except UnicodeError: - pass - return compile(source, self.__filename, 'exec', ast.PyCF_ONLY_AST) def run(self):
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/AstUtilities.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/AstUtilities.py Sun Jul 05 11:11:24 2020 +0200 @@ -135,10 +135,7 @@ @return flag indicating a bytes @rtype bool """ - return ( - sys.version_info[0] >= 3 and - isinstance(node, ast.Bytes) - ) + return isinstance(node, ast.Bytes) def isBaseString(node): """ @@ -149,10 +146,7 @@ @return flag indicating a bytes or string @rtype bool """ - typ = (ast.Str,) - if sys.version_info[0] > 2: - typ += (ast.Bytes,) - return isinstance(node, typ) + return isinstance(node, (ast.Str, ast.Bytes)) def isNameConstant(node): """ @@ -181,7 +175,7 @@ elif isinstance(node, ast.Str): return node.s - elif sys.version_info[0] > 2 and isinstance(node, ast.Bytes): + elif isinstance(node, ast.Bytes): return node.s elif isinstance(node, ast.NameConstant):
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -7,11 +7,7 @@ Module implementing the code style checker. """ -try: # Only for Py2 - import Queue as queue -except ImportError: - import queue - +import queue import ast import sys import multiprocessing @@ -286,12 +282,6 @@ @rtype tuple of (dict, dict) or tuple of (None, None) """ src = "".join(source) - # Check type for py2: if not str it's unicode - if sys.version_info[0] == 2: - try: - src = src.encode('utf-8') - except UnicodeError: - pass try: ast.parse(src, filename, 'exec') @@ -364,14 +354,6 @@ fixer = None if not errors: - # avoid 'Encoding declaration in unicode string' exception on Python2 - if sys.version_info[0] == 2: - if encoding == 'utf-8-bom': - enc = 'utf-8' - else: - enc = encoding - source = [line.encode(enc) for line in source] - if includeMessages: select = [s.strip() for s in includeMessages.split(',') if s.strip()] @@ -524,6 +506,3 @@ }) return stats, results - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -90,12 +90,15 @@ noFiles = 1 hasResults = 2 - def __init__(self, styleCheckService, parent=None): + def __init__(self, styleCheckService, project=None, parent=None): """ Constructor @param styleCheckService reference to the service @type CodeStyleCheckService + @param project reference to the project if called on project or project + browser level + @type Project @param parent reference to the parent widget @type QWidget """ @@ -103,6 +106,8 @@ self.setupUi(self) self.setWindowFlags(Qt.Window) + self.__project = project + self.optionsTabWidget.setCurrentIndex(0) self.excludeMessagesSelectButton.setIcon( @@ -141,18 +146,10 @@ self.ecMediumRiskCombo.addItems( CodeStyleCheckerDialog.cryptoBitSelectionsEc) - self.statisticsButton = self.buttonBox.addButton( - self.tr("Statistics..."), QDialogButtonBox.ActionRole) - self.statisticsButton.setToolTip( - self.tr("Press to show some statistics for the last run")) self.statisticsButton.setEnabled(False) - self.showButton = self.buttonBox.addButton( - self.tr("Show"), QDialogButtonBox.ActionRole) - self.showButton.setToolTip( - self.tr("Press to show all files containing an issue")) self.showButton.setEnabled(False) + self.cancelButton.setEnabled(True) self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) - self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) self.resultList.headerItem().setText(self.resultList.columnCount(), "") self.resultList.header().setSortIndicator(0, Qt.AscendingOrder) @@ -410,8 +407,8 @@ self.__forProject = True self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True) - self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False) self.buttonBox.button(QDialogButtonBox.Close).setDefault(True) + self.cancelButton.setEnabled(False) self.__data = self.__project.getData("CHECKERSPARMS", "Pep8Checker") if ( @@ -559,6 +556,26 @@ self.__cleanupData() + def __prepareProgress(self): + """ + Private method to prepare the progress tab for the next run. + """ + self.progressList.clear() + if len(self.files) > 0: + self.checkProgress.setMaximum(len(self.files)) + self.checkProgressLabel.setVisible(len(self.files) > 1) + self.checkProgress.setVisible(len(self.files) > 1) + if len(self.files) > 1: + if self.__project: + self.progressList.addItems([ + os.path.join("...", self.__project.getRelativePath(f)) + for f in self.files + ]) + else: + self.progressList.addItems(self.files) + + QApplication.processEvents() + def start(self, fn, save=False, repeat=None): """ Public slot to start the code style check. @@ -573,12 +590,12 @@ if self.__project is None: self.__project = e5App().getObject("Project") - self.mainWidget.setCurrentWidget(self.runTab) + self.mainWidget.setCurrentWidget(self.progressTab) self.cancelled = False self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) - self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True) - self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) + self.cancelButton.setEnabled(True) + self.cancelButton.setDefault(True) self.statisticsButton.setEnabled(False) self.showButton.setEnabled(False) self.fixButton.setEnabled(False) @@ -596,14 +613,13 @@ self.files = fn[:] elif os.path.isdir(fn): self.files = [] - extensions = set(Preferences.getPython("PythonExtensions") + - Preferences.getPython("Python3Extensions")) + extensions = set(Preferences.getPython("Python3Extensions")) for ext in extensions: self.files.extend(Utilities.direntries( fn, True, '*{0}'.format(ext), 0)) else: self.files = [fn] - + # filter the list depending on the filter string if self.files: filterString = self.excludeFilesEdit.text() @@ -614,19 +630,16 @@ f for f in self.files if not fnmatch.fnmatch(f, fileFilter.strip()) ] - + self.__errorItem = None self.__resetStatistics() self.__clearErrors(self.files) self.__cleanupData() + self.__prepareProgress() if len(self.files) > 0: self.securityNoteLabel.setVisible( "S" in self.__getCategories(True, asList=True)) - self.checkProgress.setMaximum(len(self.files)) - self.checkProgressLabel.setVisible(len(self.files) > 1) - self.checkProgress.setVisible(len(self.files) > 1) - QApplication.processEvents() # extract the configuration values excludeMessages = self.__assembleExcludeMessages() @@ -715,6 +728,7 @@ self.files.sort() if len(self.files) == 1: self.__batch = False + self.mainWidget.setCurrentWidget(self.resultsTab) self.check() else: self.__batch = True @@ -953,13 +967,32 @@ self.resultList.setSortingEnabled(True) self.resultList.setUpdatesEnabled(True) - self.checkProgress.setValue(self.progress) - self.checkProgressLabel.setPath(fn) - QApplication.processEvents() + self.__updateProgress(fn) if not self.__batch: self.check() + def __updateProgress(self, fn): + """ + Private method to update the progress tab. + + @param fn filename of the just checked file + @type str + """ + if self.__project: + fn = os.path.join("...", self.__project.getRelativePath(fn)) + + self.checkProgress.setValue(self.progress) + self.checkProgressLabel.setPath(fn) + + # remove file from the list of jobs to do + fileItems = self.progressList.findItems(fn, Qt.MatchExactly) + if fileItems: + row = self.progressList.row(fileItems[0]) + self.progressList.takeItem(row) + + QApplication.processEvents() + def __finish(self): """ Private slot called when the code style check finished or the user @@ -970,8 +1003,8 @@ self.cancelled = True self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True) - self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False) self.buttonBox.button(QDialogButtonBox.Close).setDefault(True) + self.cancelButton.setEnabled(False) self.statisticsButton.setEnabled(True) self.showButton.setEnabled(True) self.startButton.setEnabled(True) @@ -995,6 +1028,8 @@ self.checkProgress.setVisible(False) self.checkProgressLabel.setVisible(False) + + self.mainWidget.setCurrentWidget(self.resultsTab) def __getEol(self, fn): """ @@ -1548,6 +1583,17 @@ # Update UI with default values self.on_loadDefaultButton_clicked() + @pyqtSlot() + def on_cancelButton_clicked(self): + """ + Private slot to handle the "Cancel" button press. + """ + if self.__batch: + self.styleCheckService.cancelStyleBatchCheck() + QTimer.singleShot(1000, self.__finish) + else: + self.__finish() + @pyqtSlot(QAbstractButton) def on_buttonBox_clicked(self, button): """ @@ -1558,16 +1604,6 @@ """ if button == self.buttonBox.button(QDialogButtonBox.Close): self.close() - elif button == self.buttonBox.button(QDialogButtonBox.Cancel): - if self.__batch: - self.styleCheckService.cancelStyleBatchCheck() - QTimer.singleShot(1000, self.__finish) - else: - self.__finish() - elif button == self.showButton: - self.on_showButton_clicked() - elif button == self.statisticsButton: - self.on_statisticsButton_clicked() def __clearErrors(self, files): """
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui Sun Jul 05 11:11:24 2020 +0200 @@ -1141,9 +1141,105 @@ </item> </layout> </widget> - <widget class="QWidget" name="runTab"> + <widget class="QWidget" name="progressTab"> <attribute name="title"> - <string>Run</string> + <string>Progress</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_11"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_12"> + <item> + <widget class="QListWidget" name="progressList"> + <property name="toolTip"> + <string>Shows the list of files still to be checked</string> + </property> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::NoSelection</enum> + </property> + <property name="textElideMode"> + <enum>Qt::ElideMiddle</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="E5SqueezeLabelPath" name="checkProgressLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="checkProgress"> + <property name="toolTip"> + <string>Shows the progress of the code style check</string> + </property> + <property name="value"> + <number>0</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="format"> + <string>%v/%m Files</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line_3"> + <property name="lineWidth"> + <number>2</number> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_11"> + <item> + <widget class="QPushButton" name="cancelButton"> + <property name="text"> + <string>Cancel</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_5"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="resultsTab"> + <attribute name="title"> + <string>Results</string> </attribute> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> @@ -1195,35 +1291,6 @@ </column> </widget> </item> - <item> - <widget class="E5SqueezeLabelPath" name="checkProgressLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item> - <widget class="QProgressBar" name="checkProgress"> - <property name="toolTip"> - <string>Shows the progress of the code style check</string> - </property> - <property name="value"> - <number>0</number> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="format"> - <string>%v/%m Files</string> - </property> - </widget> - </item> </layout> </item> <item> @@ -1259,6 +1326,36 @@ </widget> </item> <item> + <widget class="Line" name="line_4"> + <property name="lineWidth"> + <number>2</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="showButton"> + <property name="toolTip"> + <string>Press to show all files containing an issue</string> + </property> + <property name="text"> + <string>Show</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="statisticsButton"> + <property name="toolTip"> + <string>Press to show some statistics for the last run</string> + </property> + <property name="text"> + <string>Statistics...</string> + </property> + </widget> + </item> + <item> <spacer name="verticalSpacer_4"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -1283,7 +1380,7 @@ <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Close</set> + <set>QDialogButtonBox::Close</set> </property> </widget> </item> @@ -1348,13 +1445,17 @@ <tabstop>ecHighRiskCombo</tabstop> <tabstop>ecMediumRiskCombo</tabstop> <tabstop>typedExceptionsCheckBox</tabstop> - <tabstop>resetDefaultButton</tabstop> + <tabstop>startButton</tabstop> <tabstop>loadDefaultButton</tabstop> <tabstop>storeDefaultButton</tabstop> - <tabstop>startButton</tabstop> + <tabstop>resetDefaultButton</tabstop> + <tabstop>progressList</tabstop> + <tabstop>cancelButton</tabstop> <tabstop>resultList</tabstop> + <tabstop>restartButton</tabstop> <tabstop>fixButton</tabstop> - <tabstop>restartButton</tabstop> + <tabstop>showButton</tabstop> + <tabstop>statisticsButton</tabstop> </tabstops> <resources/> <connections>
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleFixer.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleFixer.py Sun Jul 05 11:11:24 2020 +0200 @@ -7,16 +7,10 @@ Module implementing a class to fix certain code style issues. """ -from __future__ import unicode_literals -try: - # Python 2 - from StringIO import StringIO # __IGNORE_EXCEPTION__ -except ImportError: - # Python 3 - from io import StringIO # __IGNORE_WARNING__ import os import re import tokenize +from io import StringIO # CodeStyleCheckerDialog tries to import FixableCodeStyleIssues which fails # under Python3. So ignore it. @@ -26,8 +20,8 @@ pass FixableCodeStyleIssues = [ - "D111", "D112", "D113", "D121", "D131", "D141", - "D142", "D143", "D144", "D145", + "D111", "D112", "D121", "D131", "D141", "D142", + "D143", "D144", "D145", "D221", "D222", "D231", "D242", "D243", "D244", "D245", "D246", "D247", "E101", "E111", "E121", "E122", "E123", "E124", @@ -108,7 +102,6 @@ self.__fixes = { "D111": self.__fixD111, "D112": self.__fixD112, - "D113": self.__fixD112, "D121": self.__fixD121, "D131": self.__fixD131, "D141": self.__fixD141, @@ -471,8 +464,11 @@ @param pos position inside line (integer) @param logical logical line structure @return flag indicating a change was done (boolean) + @exception ValueError raised to indicate a bad 'logical' parameter """ - assert logical + if not logical: + raise ValueError("Bad value for 'logical' parameter.") + ls, _, original = logical rewrapper = IndentationWrapper(original) @@ -554,9 +550,9 @@ def __fixD112(self, code, line, pos): """ - Private method to fix docstring 'r' or 'u' in leading quotes. + Private method to fix docstring 'r' in leading quotes. - Codes: D112, D113 + Codes: D112 @param code code of the issue @type str @@ -572,8 +568,6 @@ line = line - 1 if code == "D112": insertChar = "r" - elif code == "D113": - insertChar = "u" else: return (0, "", 0) @@ -2139,7 +2133,6 @@ want = have else: want = 0 - assert want >= 0 have2want[have] = want diff = want - have if diff == 0 or have == 0: @@ -2302,8 +2295,6 @@ logical.append(text) previous = t logical_line = ''.join(logical) - assert logical_line.lstrip() == logical_line - assert logical_line.rstrip() == logical_line return logical_line def pep8Expected(self): @@ -2465,7 +2456,6 @@ if parens[idx]: parens[idx] -= 1 break - assert len(indent) == depth + 1 if start[1] not in indent_chances: indent_chances[start[1]] = text @@ -2577,7 +2567,6 @@ indent = self.__getIndent(self.__text) source = self.__text[len(indent):] - assert source.lstrip() == source sio = StringIO(source) # Check for multi line string. @@ -2809,9 +2798,6 @@ indent + first.strip() + self.__eol) elif tokenType == tokenize.OP and tokenString != '=': # Don't break on '=' after keyword as this violates PEP 8. - - assert tokenType != tokenize.INDENT - offset = tkn[2][1] + 1 first = source[:offset]
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/ComplexityChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/ComplexityChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -253,6 +253,3 @@ return ( (sortedList[medianIndex] + sortedList[medianIndex + 1]) / 2.0 ) - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/DocStyleChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -12,15 +12,10 @@ # pep257.py (version 0.2.4). # -try: - # Python 2 - from StringIO import StringIO # __IGNORE_EXCEPTION__ -except ImportError: - # Python 3 - from io import StringIO # __IGNORE_WARNING__ import tokenize import ast import sys +from io import StringIO try: ast.AsyncFunctionDef # __IGNORE_EXCEPTION__ @@ -40,11 +35,7 @@ @param startLine line number the context starts in the source (integer) @param contextType type of the context object (string) """ - if sys.version_info[0] == 2: - stringTypes = (str, unicode) # __IGNORE_WARNING__ - else: - stringTypes = str - if isinstance(source, stringTypes): + if isinstance(source, str): self.__source = source.splitlines(True) else: self.__source = source[:] @@ -132,7 +123,7 @@ """ Codes = [ "D101", "D102", "D103", "D104", "D105", - "D111", "D112", "D113", + "D111", "D112", "D121", "D122", "D130", "D131", "D132", "D133", "D134", "D141", "D142", "D143", "D144", "D145", @@ -163,8 +154,6 @@ @keyparam docType type of the documentation strings (string, one of 'eric' or 'pep257') """ - assert docType in ("eric", "pep257") - self.__select = tuple(select) self.__ignore = ('',) if select else tuple(ignore) self.__expected = expected[:] @@ -215,7 +204,6 @@ "docstring": [ (self.__checkTripleDoubleQuotes, ("D111",)), (self.__checkBackslashes, ("D112",)), - (self.__checkUnicode, ("D113",)), (self.__checkOneLiner, ("D121",)), (self.__checkIndent, ("D122",)), (self.__checkSummary, ("D130",)), @@ -255,7 +243,6 @@ "docstring": [ (self.__checkTripleDoubleQuotes, ("D111",)), (self.__checkBackslashes, ("D112",)), - (self.__checkUnicode, ("D113",)), (self.__checkIndent, ("D122",)), (self.__checkSummary, ("D130",)), (self.__checkEricEndsWithPeriod, ("D231",)), @@ -362,12 +349,6 @@ return source = "".join(self.__source) - # Check type for py2: if not str it's unicode - if sys.version_info[0] == 2: - try: - source = source.encode('utf-8') - except UnicodeError: - pass try: compile(source, self.__filename, 'exec', ast.PyCF_ONLY_AST) except (SyntaxError, TypeError): @@ -447,62 +428,30 @@ summaries.append(line2) return summaries, lineno - if sys.version_info[0] < 3: - def __getArgNames(self, node): - """ - Private method to get the argument names of a function node. - - @param node AST node to extract arguments names from - @return tuple of two list of argument names, one for arguments - and one for keyword arguments (tuple of list of string) - """ - def unpackArgs(args): - """ - Local helper function to unpack function argument names. - - @param args list of AST node arguments - @return list of argument names (list of string) - """ - ret = [] - for arg in args: - if isinstance(arg, ast.Tuple): - ret.extend(unpackArgs(arg.elts)) - else: - ret.append(arg.id) - return ret - - arguments = unpackArgs(node.args.args) - if node.args.vararg is not None: + def __getArgNames(self, node): + """ + Private method to get the argument names of a function node. + + @param node AST node to extract arguments names from + @return tuple of two list of argument names, one for arguments + and one for keyword arguments (tuple of list of string) + """ + arguments = [] + arguments.extend([arg.arg for arg in node.args.args]) + if node.args.vararg is not None: + if sys.version_info < (3, 4, 0): arguments.append(node.args.vararg) - kwarguments = [] - if node.args.kwarg is not None: + else: + arguments.append(node.args.vararg.arg) + + kwarguments = [] + kwarguments.extend([arg.arg for arg in node.args.kwonlyargs]) + if node.args.kwarg is not None: + if sys.version_info < (3, 4, 0): kwarguments.append(node.args.kwarg) - return arguments, kwarguments - else: - def __getArgNames(self, node): # __IGNORE_WARNING__ - """ - Private method to get the argument names of a function node. - - @param node AST node to extract arguments names from - @return tuple of two list of argument names, one for arguments - and one for keyword arguments (tuple of list of string) - """ - arguments = [] - arguments.extend([arg.arg for arg in node.args.args]) - if node.args.vararg is not None: - if sys.version_info < (3, 4, 0): - arguments.append(node.args.vararg) - else: - arguments.append(node.args.vararg.arg) - - kwarguments = [] - kwarguments.extend([arg.arg for arg in node.args.kwonlyargs]) - if node.args.kwarg is not None: - if sys.version_info < (3, 4, 0): - kwarguments.append(node.args.kwarg) - else: - kwarguments.append(node.args.kwarg.arg) - return arguments, kwarguments + else: + kwarguments.append(node.args.kwarg.arg) + return arguments, kwarguments ################################################################## ## Parsing functionality below @@ -822,24 +771,6 @@ if "\\" in docstring and not docstring.startswith('r"""'): self.__error(docstringContext.start(), 0, "D112") - def __checkUnicode(self, docstringContext, context): - """ - Private method to check, that all docstrings containing unicode - characters are surrounded by unicode triple double quotes. - - @param docstringContext docstring context (DocStyleContext) - @param context context of the docstring (DocStyleContext) - """ - if docstringContext is None: - return - - docstring = docstringContext.ssource().strip() - if ( - not docstring.startswith('u"""') and - any(ord(char) > 127 for char in docstring) - ): - self.__error(docstringContext.start(), 0, "D113") - def __checkOneLiner(self, docstringContext, context): """ Private method to check, that one-liner docstrings fit on @@ -853,7 +784,8 @@ lines = docstringContext.source() if len(lines) > 1: - nonEmptyLines = [l for l in lines if l.strip().strip('\'"')] + nonEmptyLines = [line for line in lines + if line.strip().strip('\'"')] if len(nonEmptyLines) == 1: modLen = len(context.indent() + '"""' + nonEmptyLines[0].strip() + '"""') @@ -879,11 +811,11 @@ if len(lines) == 1: return - nonEmptyLines = [l.rstrip() for l in lines[1:] if l.strip()] + nonEmptyLines = [line.rstrip() for line in lines[1:] if line.strip()] if not nonEmptyLines: return - indent = min(len(l) - len(l.strip()) for l in nonEmptyLines) + indent = min(len(line) - len(line.strip()) for line in nonEmptyLines) if context.contextType() == "module": expectedIndent = 0 else: @@ -1510,6 +1442,3 @@ if firstWord != 'public': self.__error(docstringContext.start() + lineNumber, 0, "D232", 'public') - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/MiscellaneousChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/MiscellaneousChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -151,14 +151,9 @@ self.__pep3101FormatRegex = re.compile( r'^(?:[^\'"]*[\'"][^\'"]*[\'"])*\s*%|^\s*%') - if sys.version_info >= (3, 0): - import builtins - self.__builtins = [b for b in dir(builtins) - if b not in self.BuiltinsWhiteList] - else: - import __builtin__ - self.__builtins = [b for b in dir(__builtin__) - if b not in self.BuiltinsWhiteList] + import builtins + self.__builtins = [b for b in dir(builtins) + if b not in self.BuiltinsWhiteList] # statistics counters self.counters = {} @@ -292,13 +287,6 @@ @rtype ast.AST """ source = "".join(self.__source) - # Check type for py2: if not str it's unicode - if sys.version_info[0] == 2: - try: - source = source.encode('utf-8') - except UnicodeError: - pass - return compile(source, self.__filename, 'exec', ast.PyCF_ONLY_AST) def run(self): @@ -533,7 +521,7 @@ visitor.visit(self.__tree) for node in visitor.nodes: text = node.s - if sys.version_info[0] > 2 and isinstance(text, bytes): + if isinstance(text, bytes): try: text = text.decode(coding) except UnicodeDecodeError: @@ -711,22 +699,13 @@ elif any(isinstance(node, functionDef) for functionDef in functionDefs): # (asynchronous) function definition - if sys.version_info >= (3, 0): - for arg in node.args.args: - if ( - isinstance(arg, ast.arg) and - arg.arg in self.__builtins - ): - self.__error(arg.lineno - 1, arg.col_offset, - "M132", arg.arg) - else: - for arg in node.args.args: - if ( - isinstance(arg, ast.Name) and - arg.id in self.__builtins - ): - self.__error(arg.lineno - 1, arg.col_offset, - "M132", arg.id) + for arg in node.args.args: + if ( + isinstance(arg, ast.arg) and + arg.arg in self.__builtins + ): + self.__error(arg.lineno - 1, arg.col_offset, + "M132", arg.arg) def __checkComprehensions(self): """ @@ -962,23 +941,20 @@ """ Private method to check use of naive datetime functions. """ - if sys.version_info[0] >= 3: - # this check is only performed for Python 3 - - # step 1: generate an augmented node tree containing parent info - # for each child node - tree = self.__generateTree() - for node in ast.walk(tree): - for childNode in ast.iter_child_nodes(node): - childNode._dtCheckerParent = node - - # step 2: perform checks and report issues - visitor = DateTimeVisitor() - visitor.visit(tree) - for violation in visitor.violations: - node = violation[0] - reason = violation[1] - self.__error(node.lineno - 1, node.col_offset, reason) + # step 1: generate an augmented node tree containing parent info + # for each child node + tree = self.__generateTree() + for node in ast.walk(tree): + for childNode in ast.iter_child_nodes(node): + childNode._dtCheckerParent = node + + # step 2: perform checks and report issues + visitor = DateTimeVisitor() + visitor.visit(tree) + for violation in visitor.violations: + node = violation[0] + reason = violation[1] + self.__error(node.lineno - 1, node.col_offset, reason) def __checkSysVersion(self): """ @@ -1384,16 +1360,12 @@ @param node reference to the node to be processed @type ast.Call """ - if sys.version_info >= (3, 0): - validPaths = ("six", "future.utils", "builtins") - methodsDict = { - "M521": ("iterkeys", "itervalues", "iteritems", "iterlists"), - "M522": ("viewkeys", "viewvalues", "viewitems", "viewlists"), - "M523": ("next",), - } - else: - validPaths = () - methodsDict = {} + validPaths = ("six", "future.utils", "builtins") + methodsDict = { + "M521": ("iterkeys", "itervalues", "iteritems", "iterlists"), + "M522": ("viewkeys", "viewvalues", "viewitems", "viewlists"), + "M523": ("next",), + } if isinstance(node.func, ast.Attribute): for code, methods in methodsDict.items(): @@ -1450,13 +1422,12 @@ """ callPath = list(composeCallPath(node)) - if '.'.join(callPath) == 'sys.maxint' and sys.version_info >= (3, 0): + if '.'.join(callPath) == 'sys.maxint': self.violations.append((node, "M504")) elif ( len(callPath) == 2 and - callPath[1] == 'message' and - sys.version_info >= (2, 6) + callPath[1] == 'message' ): name = callPath[0] for elem in reversed(self.__nodeStack[:-1]): @@ -1475,7 +1446,7 @@ # By using 'hasattr' below we're ignoring starred arguments, slices # and tuples for simplicity. assignTargets = {t.id for t in node.targets if hasattr(t, 'id')} - if '__metaclass__' in assignTargets and sys.version_info >= (3, 0): + if '__metaclass__' in assignTargets: self.violations.append((node, "M524")) elif len(node.targets) == 1: @@ -1785,13 +1756,10 @@ @type ast.AST @return flag indicating the node contains a None value """ - if sys.version_info[0] > 2: - return ( - AstUtilities.isNameConstant(node) and - AstUtilities.getValue(node) is None - ) - else: - return isinstance(node, ast.Name) and node.id == "None" + return ( + AstUtilities.isNameConstant(node) and + AstUtilities.getValue(node) is None + ) def __resultExists(self): """ @@ -1850,7 +1818,6 @@ try: okNodes = (ast.Return, ast.Raise, ast.While, ast.Try) except AttributeError: - # Py2 okNodes = (ast.Return, ast.Raise, ast.While) if not isinstance(node, okNodes): self.violations.append((node, "M833")) @@ -2323,4 +2290,4 @@ self.generic_visit(node) # -# eflag: noqa = M702, M891 +# eflag: noqa = M891
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/NamingStyleChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/NamingStyleChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -188,27 +188,9 @@ @param node AST node to extract arguments names from @return list of argument names (list of string) """ - if sys.version_info[0] >= 3: - posArgs = [arg.arg for arg in node.args.args] - kwOnly = [arg.arg for arg in node.args.kwonlyargs] - return posArgs + kwOnly - else: - def unpackArgs(args): - """ - Local helper function to unpack function argument names. - - @param args list of AST node arguments - @return list of argument names (list of string) - """ - ret = [] - for arg in args: - if isinstance(arg, ast.Tuple): - ret.extend(unpackArgs(arg.elts)) - else: - ret.append(arg.id) - return ret - - return unpackArgs(node.args.args) + posArgs = [arg.arg for arg in node.args.args] + kwOnly = [arg.arg for arg in node.args.kwonlyargs] + return posArgs + kwOnly def __error(self, node, code): """ @@ -457,6 +439,3 @@ yield self.__error(node, "N813") elif self.UppercaseRegexp.match(name.asname): yield self.__error(node, "N814") - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/awsHardcodedPassword.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/awsHardcodedPassword.py Sun Jul 05 11:11:24 2020 +0200 @@ -13,7 +13,7 @@ # # Original Copyright 2020 CMCRC (devcdt@cmcrc.com) # -# License: GPLv3 +# Original License: GPLv3 # from collections import Counter @@ -21,6 +21,7 @@ import re import string + def getChecks(): """ Public method to get a dictionary with checks handled by this module.
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/blackListCalls.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/blackListCalls.py Sun Jul 05 11:11:24 2020 +0200 @@ -211,7 +211,7 @@ # argument name as an actual import module name. # Will produce None if argument is not a literal or identifier. if name in ["importlib.import_module", "importlib.__import__"]: - name = context.call_args[0] + name = context.callArgs[0] for code in _blacklists: qualnames, severity = _blacklists[code]
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/djangoXssVulnerability.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/djangoXssVulnerability.py Sun Jul 05 11:11:24 2020 +0200 @@ -16,12 +16,9 @@ # import ast -import sys import AstUtilities -PY2 = sys.version_info[0] == 2 - def getChecks(): """ @@ -85,8 +82,7 @@ isParam = False if isinstance(parent, ast.FunctionDef): for name in parent.args.args: - argName = name.id if PY2 else name.arg - if argName == xssVar.id: + if name.arg == xssVar.id: isParam = True break @@ -179,28 +175,13 @@ assigned = self.isAssignedIn(node.body) elif isinstance(node, ast.With): - if PY2: - if node.optional_vars.id == self.__varName.id: + for withitem in node.items: + varId = getattr(withitem.optional_vars, 'id', None) + if varId == self.__varName.id: assigned = node else: assigned = self.isAssignedIn(node.body) - else: - for withitem in node.items: - varId = getattr(withitem.optional_vars, 'id', None) - if varId == self.__varName.id: - assigned = node - else: - assigned = self.isAssignedIn(node.body) - elif PY2 and isinstance(node, ast.TryFinally): - assigned = [] - assigned.extend(self.isAssignedIn(node.body)) - assigned.extend(self.isAssignedIn(node.finalbody)) - elif PY2 and isinstance(node, ast.TryExcept): - assigned = [] - assigned.extend(self.isAssignedIn(node.body)) - assigned.extend(self.isAssignedIn(node.handlers)) - assigned.extend(self.isAssignedIn(node.orelse)) - elif not PY2 and isinstance(node, ast.Try): + elif isinstance(node, ast.Try): assigned = [] assigned.extend(self.isAssignedIn(node.body)) assigned.extend(self.isAssignedIn(node.handlers)) @@ -252,8 +233,7 @@ if isinstance(xssVar, ast.Name): if isinstance(parent, ast.FunctionDef): for name in parent.args.args: - argName = name.id if PY2 else name.arg - if argName == xssVar.id: + if name.arg == xssVar.id: return False # Params are not secure analyser = DeepAssignation(xssVar, ignoreNodes) @@ -316,17 +296,11 @@ call.func.attr == 'format' ): evaluate = True - if call.keywords or (PY2 and call.kwargs): + if call.keywords: evaluate = False if evaluate: args = list(call.args) - if ( - PY2 and - call.starargs and - isinstance(call.starargs, (ast.List, ast.Tuple)) - ): - args.extend(call.starargs.elts) numSecure = 0 for arg in args: @@ -343,7 +317,6 @@ else: break elif ( - not PY2 and isinstance(arg, ast.Starred) and isinstance(arg.value, (ast.List, ast.Tuple)) ): @@ -372,19 +345,13 @@ newCall = ast.Call() newCall.args = [] newCall.args = [] - if PY2: - newCall.starargs = None newCall.keywords = None - if PY2: - newCall.kwargs = None newCall.lineno = var.lineno newCall.func = ast.Attribute() newCall.func.value = var.left newCall.func.attr = 'format' if isinstance(var.right, ast.Tuple): newCall.args = var.right.elts - elif PY2 and isinstance(var.right, ast.Dict): - newCall.kwargs = var.right else: newCall.args = [var.right]
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/exec.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/exec.py Sun Jul 05 11:11:24 2020 +0200 @@ -15,8 +15,6 @@ # SPDX-License-Identifier: Apache-2.0 # -import sys - def getChecks(): """ @@ -26,18 +24,11 @@ list of codes @rtype dict """ - if sys.version_info[0] == 2: - return { - "Exec": [ - (checkExecUsed, ("S102",)), - ], - } - else: - return { - "Call": [ - (checkExecUsed, ("S102",)), - ], - } + return { + "Call": [ + (checkExecUsed, ("S102",)), + ], + } def checkExecUsed(reportError, context, config): @@ -51,10 +42,7 @@ @param config dictionary with configuration data @type dict """ - if ( - sys.version_info[0] == 2 or - context.callFunctionNameQual == 'exec' - ): + if context.callFunctionNameQual == 'exec': reportError( context.node.lineno - 1, context.node.col_offset,
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalBindAllInterfaces.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalBindAllInterfaces.py Sun Jul 05 11:11:24 2020 +0200 @@ -42,7 +42,7 @@ @param config dictionary with configuration data @type dict """ - if context.stringVal == '0.0.0.0': + if context.stringVal == '0.0.0.0': # secok reportError( context.node.lineno - 1, context.node.col_offset,
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalHardcodedPassword.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/generalHardcodedPassword.py Sun Jul 05 11:11:24 2020 +0200 @@ -17,7 +17,6 @@ import ast import re -import sys import AstUtilities @@ -154,12 +153,8 @@ # go through all (param, value)s and look for candidates for key, val in zip(context.node.args.args, defs): - isPy3Arg = True - if sys.version_info[0] > 2: - isPy3Arg = isinstance(key, ast.arg) - if isinstance(key, ast.Name) or isPy3Arg: - check = key.arg if sys.version_info[0] > 2 else key.id # Py3 - if AstUtilities.isString(val) and RE_CANDIDATES.search(check): + if isinstance(key, ast.Name) or isinstance(key, ast.arg): + if AstUtilities.isString(val) and RE_CANDIDATES.search(key.arg): reportError( context.node.lineno - 1, context.node.col_offset,
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionShell.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/injectionShell.py Sun Jul 05 11:11:24 2020 +0200 @@ -17,7 +17,6 @@ import ast import re -import sys import AstUtilities @@ -91,10 +90,7 @@ result = bool(val.keys) elif isinstance(val, ast.Name) and val.id in ['False', 'None']: result = False - elif ( - sys.version_info[0] >= 3 and - AstUtilities.isNameConstant(val) - ): + elif AstUtilities.isNameConstant(val): result = val.value else: result = True
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/weakCryptographicKey.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/weakCryptographicKey.py Sun Jul 05 11:11:24 2020 +0200 @@ -170,6 +170,7 @@ 2048) return _classifyKeySize(reportError, config, keyType, keySize, context.node) + return False def checkWeakCryptographicKey(reportError, context, config):
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -224,13 +224,6 @@ @rtype ast.AST """ source = "".join(self.__source) - # Check type for py2: if not str it's unicode - if sys.version_info[0] == 2: - try: - source = source.encode('utf-8') - except UnicodeError: - pass - return compile(source, self.__filename, 'exec', ast.PyCF_ONLY_AST) def getConfig(self):
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityContext.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityContext.py Sun Jul 05 11:11:24 2020 +0200 @@ -180,7 +180,6 @@ """ val = self.stringVal if val is not None: - # it's any of str or unicode in py2, or str in py3 return val.encode('unicode_escape') val = self.bytesVal @@ -267,20 +266,10 @@ elif isinstance(literal, ast.Name): literalValue = literal.id - # NameConstants are only part of the AST in Python 3. NameConstants - # tend to refer to things like True and False. This prevents them from - # being re-assigned in Python 3. - elif ( - sys.version_info[0] >= 3 and - AstUtilities.isNameConstant(literal) - ): + elif AstUtilities.isNameConstant(literal): literalValue = str(literal.value) - # Bytes are only part of the AST in Python 3 - elif ( - sys.version_info[0] >= 3 and - AstUtilities.isBytes(literal) - ): + elif AstUtilities.isBytes(literal): literalValue = literal.s else:
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityDefaults.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityDefaults.py Sun Jul 05 11:11:24 2020 +0200 @@ -10,6 +10,7 @@ SecurityDefaults = { # generalHardcodedTmp.py "hardcoded_tmp_directories": ["/tmp", "/var/tmp", "/dev/shm", "~/tmp"], + # secok # insecureHashlibNew.py "insecure_hashes": ['md4', 'md5', 'sha', 'sha1'],
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityUtils.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/SecurityUtils.py Sun Jul 05 11:11:24 2020 +0200 @@ -160,7 +160,7 @@ prefix = aliases[val] else: prefix = deepgetattr(node, 'value.id') - except Exception: + except Exception: # secok # We can't get the fully qualified name for an attr, just return # its base name. pass
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/Security/translations.py Sun Jul 05 11:11:24 2020 +0200 @@ -364,10 +364,10 @@ # hardcoded AWS passwords "S801": QCoreApplication.translate( "Security", - "Possible hardcoded AWS access key ID: {0:r}"), + "Possible hardcoded AWS access key ID: {0}"), "S802": QCoreApplication.translate( "Security", - "Possible hardcoded AWS secret access key: {0:r}"), + "Possible hardcoded AWS secret access key: {0}"), # Syntax error "S999": QCoreApplication.translate( @@ -410,8 +410,8 @@ "S609": ["os.system"], - "S801": ["A1B2C3D4E5F6G7H8I9J0"], - "S802": ["aA1bB2cC3dD4/eE5fF6gG7+hH8iI9jJ0=kKlLM+="], + "S801": ["A1B2C3D4E5F6G7H8I9J0"], # secok + "S802": ["aA1bB2cC3dD4/eE5fF6gG7+hH8iI9jJ0=kKlLM+="], # secok "S999": ["SyntaxError", "Invalid Syntax"], }
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/eradicate.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/eradicate.py Sun Jul 05 11:11:24 2020 +0200 @@ -21,9 +21,6 @@ """Removes commented-out Python code.""" -from __future__ import print_function -from __future__ import unicode_literals - import difflib import io import os
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/mccabe.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/mccabe.py Sun Jul 05 11:11:24 2020 +0200 @@ -3,7 +3,6 @@ http://nedbatchelder.com/blog/200803/python_code_complexity_microtool.html MIT License. """ -from __future__ import with_statement import collections import ast @@ -215,6 +214,3 @@ self.dispatch_list(node.body) visitAsyncWith = visitWith - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/pycodestyle.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/pycodestyle.py Sun Jul 05 11:11:24 2020 +0200 @@ -49,7 +49,6 @@ 700 statements 900 syntax error """ -from __future__ import with_statement # # This is a modified version to make the original pycodestyle.py better @@ -2828,4 +2827,4 @@ if __name__ == '__main__': _main() # -# eflag: noqa = D2, M601, M701, M702, M801 +# eflag: noqa = D2, M601, M801
--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Sun Jul 05 11:11:24 2020 +0200 @@ -305,9 +305,6 @@ "D112": QCoreApplication.translate( "DocStyleChecker", 'docstring containing \\ not surrounded by r"""'), - "D113": QCoreApplication.translate( - "DocStyleChecker", - 'docstring containing unicode character not surrounded by u"""'), "D121": QCoreApplication.translate( "DocStyleChecker", "one-liner docstring on multiple lines"), "D122": QCoreApplication.translate(
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheck.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheck.py Sun Jul 05 11:11:24 2020 +0200 @@ -4,17 +4,12 @@ # """ -Module implementing the syntax check for Python 2/3. +Module implementing the syntax check for Python 3. """ -try: # Only for Py2 - import Queue as queue -except ImportError: - import queue - +import queue import ast import re -import sys import traceback import multiprocessing @@ -66,13 +61,6 @@ if codestring and codestring[-1] != '\n': codestring = codestring + '\n' - - # Check type for py2: if not str it's unicode - if sys.version_info[0] == 2: - try: - codestring = codestring.encode('utf-8') - except UnicodeError: - pass return codestring @@ -229,19 +217,9 @@ (file name, line number, column, codestring (only at syntax errors), the message, a list with arguments for the message) """ - try: - import builtins - except ImportError: - import __builtin__ as builtins # __IGNORE_WARNING__ + import builtins try: - if sys.version_info[0] == 2: - file_enc = filename.encode(sys.getfilesystemencoding()) - else: - file_enc = filename - - # It also encode the code back to avoid 'Encoding declaration in - # unicode string' exception on Python2 codestring = normalizeCode(codestring) # Check for VCS conflict markers @@ -251,7 +229,7 @@ start, i = conflict.span() lineindex = 1 + codestring.count("\n", 0, start) return [{'error': - (file_enc, lineindex, 0, "", + (filename, lineindex, 0, "", "VCS conflict marker found") }] @@ -261,18 +239,16 @@ except ImportError: return [{'error': (filename, 0, 0, '', 'Quixote plugin not found.')}] - template = quixote.ptl_compile.Template(codestring, file_enc) + template = quixote.ptl_compile.Template(codestring, filename) template.compile() else: module = builtins.compile( - codestring, file_enc, 'exec', ast.PyCF_ONLY_AST) + codestring, filename, 'exec', ast.PyCF_ONLY_AST) except SyntaxError as detail: index = 0 code = "" error = "" lines = traceback.format_exception_only(SyntaxError, detail) - if sys.version_info[0] == 2: - lines = [x.decode(sys.getfilesystemencoding()) for x in lines] match = re.match(r'\s*File "(.+)", line (\d+)', lines[0].replace('<string>', filename)) if match is not None: @@ -307,7 +283,7 @@ line = detail.lineno error = detail.msg return [{'error': (fn, line, 0, "", error)}] - except Exception: + except Exception: # secok pass # pyflakes @@ -346,6 +322,3 @@ results.append((filename, err.lineno, 0, "FLAKES_ERROR", msg, [])) return [{'warnings': results}] - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckService.py Sun Jul 05 11:11:24 2020 +0200 @@ -9,8 +9,6 @@ check. """ -from __future__ import unicode_literals - from PyQt5.QtCore import QObject, pyqtSignal from E5Gui.E5Application import e5App @@ -179,9 +177,12 @@ Public method to cancel all batch jobs. """ for lang in self.getLanguages(): - env = self.__supportedLanguages[lang][0] - self.backgroundService.requestCancel( - 'batch_{0}Syntax'.format(lang), env) + try: + env = self.__supportedLanguages[lang][0] + self.backgroundService.requestCancel( + 'batch_{0}Syntax'.format(lang), env) + except KeyError: + continue def __serviceError(self, fn, msg): """ @@ -192,25 +193,9 @@ """ self.error.emit(fn, msg) - def serviceErrorPy2(self, fx, lang, fn, msg): - """ - Public method handling service errors for Python 2. - - @param fx service name (string) - @param lang language (string) - @param fn file name (string) - @param msg message text (string) - """ - if fx in ['Python2Syntax', 'batch_Python2Syntax']: - if fx == 'Python2Syntax': - self.__serviceError(fn, msg) - else: - self.__serviceError(self.tr("Python 2 batch check"), msg) - self.batchJobDone(fx, lang) - def serviceErrorPy3(self, fx, lang, fn, msg): """ - Public method handling service errors for Python 2. + Public method handling service errors for Python 3. @param fx service name (string) @param lang language (string) @@ -280,7 +265,6 @@ @param lang language (string) """ if fx in [ - 'Python2Syntax', 'batch_Python2Syntax', 'Python3Syntax', 'batch_Python3Syntax', 'JavaScriptSyntax', 'batch_JavaScriptSyntax', 'YAMLSyntax', 'batch_YAMLSyntax',
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/__init__.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/__init__.py Sun Jul 05 11:11:24 2020 +0200 @@ -279,6 +279,3 @@ - Add reporting for some types of import shadowing. - Improve reporting of unbound locals """ - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/checker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/checker.py Sun Jul 05 11:11:24 2020 +0200 @@ -2254,6 +2254,3 @@ left = right self.handleChildren(node) - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/messages.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/messages.py Sun Jul 05 11:11:24 2020 +0200 @@ -4,7 +4,7 @@ # # Original (c) 2005 Divmod, Inc. See __init__.py file for details # -# This module is based on pyflakes for Python2 and Python3, but was modified to +# This module is based on pyflakes, but was modified to # be integrated into eric6 """ @@ -834,6 +834,3 @@ """ message_id = 'F48' message = "'...' %% ... `*` specifier requires sequence" - -# -# eflag: noqa = M702
--- a/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/SyntaxChecker/pyflakes/translations.py Sun Jul 05 11:11:24 2020 +0200 @@ -179,7 +179,6 @@ @return translated and formatted message (string) """ if message_id in _messages: - # Avoid leading "u" at Python2 unicode strings msg = _messages[message_id].replace("{0!r}", "'{0}'") msg = msg.replace("{1!r}", "'{1}'") return msg.format(*message_args)
--- a/eric6/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py Sun Jul 05 11:11:24 2020 +0200 @@ -18,8 +18,6 @@ @exception ValueError The tokenize module is too old. """ -from __future__ import unicode_literals - # Released to the public domain, by Tim Peters, 15 April 1998. # XXX Note: this is now a standard library module.
--- a/eric6/Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/Tabnanny/TabnannyDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -155,8 +155,7 @@ self.files = fn elif os.path.isdir(fn): self.files = [] - extensions = set(Preferences.getPython("PythonExtensions") + - Preferences.getPython("Python3Extensions")) + extensions = set(Preferences.getPython("Python3Extensions")) for ext in extensions: self.files.extend( Utilities.direntries(fn, True, '*{0}'.format(ext), 0))
--- a/eric6/Plugins/PluginCodeStyleChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/PluginCodeStyleChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -72,11 +72,6 @@ path = os.path.join( os.path.dirname(__file__), 'CheckerPlugins', 'CodeStyleChecker') self.backgroundService.serviceConnect( - 'style', 'Python2', path, 'CodeStyleChecker', - self.__translateStyleCheck, - onErrorCallback=self.serviceErrorPy2, - onBatchDone=self.batchJobDone) - self.backgroundService.serviceConnect( 'style', 'Python3', path, 'CodeStyleChecker', self.__translateStyleCheck, onErrorCallback=self.serviceErrorPy3, @@ -96,25 +91,9 @@ """ self.error.emit(fn, msg) - def serviceErrorPy2(self, fx, lang, fn, msg): - """ - Public slot handling service errors for Python 2. - - @param fx service name (string) - @param lang language (string) - @param fn file name (string) - @param msg message text (string) - """ - if fx in ['style', 'batch_style'] and lang == 'Python2': - if fx == 'style': - self.__serviceError(fn, msg) - else: - self.__serviceError(self.tr("Python 2 batch check"), msg) - self.batchJobDone(fx, lang) - def serviceErrorPy3(self, fx, lang, fn, msg): """ - Public slot handling service errors for Python 2. + Public slot handling service errors for Python 3. @param fx service name (string) @param lang language (string) @@ -179,7 +158,7 @@ """ if lang is None: lang = 'Python{0}'.format(determinePythonVersion(filename, source)) - if lang not in ['Python2', 'Python3']: + if lang != 'Python3': return data = [source, args] @@ -195,30 +174,27 @@ @type list of tuple of (str, str, list) """ data = { - "Python2": [], "Python3": [], } for filename, source, args in argumentsList: lang = 'Python{0}'.format(determinePythonVersion(filename, source)) - if lang not in ['Python2', 'Python3']: + if lang != 'Python3': continue else: data[lang].append((filename, source, args)) self.queuedBatches = [] - for lang in ['Python2', 'Python3']: - if data[lang]: - self.queuedBatches.append(lang) - self.backgroundService.enqueueRequest('batch_style', lang, "", - data[lang]) - self.batchesFinished = False + if data['Python3']: + self.queuedBatches.append('Python3') + self.backgroundService.enqueueRequest('batch_style', 'Python3', "", + data['Python3']) + self.batchesFinished = False def cancelStyleBatchCheck(self): """ Public method to cancel all batch jobs. """ - for lang in ['Python2', 'Python3']: - self.backgroundService.requestCancel('batch_style', lang) + self.backgroundService.requestCancel('batch_style', 'Python3') def __translateStyleCheck(self, fn, codeStyleCheckerStats, results): """ @@ -340,7 +316,7 @@ if menuName == "Checks" and self.__projectAct is not None: self.__projectAct.setEnabled( e5App().getObject("Project").getProjectLanguage() in - ["Python3", "Python2", "Python", "MicroPython"]) + ["Python3", "MicroPython"]) def __projectBrowserShowMenu(self, menuName, menu): """ @@ -353,7 +329,7 @@ if ( menuName == "Checks" and e5App().getObject("Project").getProjectLanguage() in - ["Python3", "Python2", "Python", "MicroPython"] + ["Python3", "MicroPython"] ): self.__projectBrowserMenu = menu if self.__projectBrowserAct is None: @@ -381,8 +357,7 @@ files = [os.path.join(ppath, file) for file in project.pdata["SOURCES"] if file.endswith( - tuple(Preferences.getPython("Python3Extensions")) + - tuple(Preferences.getPython("PythonExtensions")))] + tuple(Preferences.getPython("Python3Extensions")))] from CheckerPlugins.CodeStyleChecker import CodeStyleCheckerDialog self.__projectCodeStyleCheckerDialog = (
--- a/eric6/Plugins/PluginSyntaxChecker.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/PluginSyntaxChecker.py Sun Jul 05 11:11:24 2020 +0200 @@ -66,20 +66,12 @@ 'SyntaxChecker') self.syntaxCheckService.addLanguage( - 'Python2', 'Python2', path, 'SyntaxCheck', - self.__getPythonOptions, - lambda: Preferences.getPython("PythonExtensions"), - self.__translateSyntaxCheck, - self.syntaxCheckService.serviceErrorPy2) - - self.syntaxCheckService.addLanguage( 'Python3', 'Python3', path, 'SyntaxCheck', self.__getPythonOptions, lambda: Preferences.getPython("Python3Extensions"), self.__translateSyntaxCheck, self.syntaxCheckService.serviceErrorPy3) - # Jasy isn't yet compatible to Python2 self.syntaxCheckService.addLanguage( 'JavaScript', 'Python3', path, 'jsCheckSyntax',
--- a/eric6/Plugins/PluginTabnanny.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/PluginTabnanny.py Sun Jul 05 11:11:24 2020 +0200 @@ -7,6 +7,7 @@ Module implementing the Tabnanny plugin. """ +# TODO: remove tabnanny as it is obsolete import os @@ -68,11 +69,6 @@ path = os.path.join( os.path.dirname(__file__), 'CheckerPlugins', 'Tabnanny') self.backgroundService.serviceConnect( - 'indent', 'Python2', path, 'Tabnanny', - lambda *args: self.indentChecked.emit(*args), - onErrorCallback=self.serviceErrorPy2, - onBatchDone=self.batchJobDone) - self.backgroundService.serviceConnect( 'indent', 'Python3', path, 'Tabnanny', lambda *args: self.indentChecked.emit(*args), onErrorCallback=self.serviceErrorPy3, @@ -90,25 +86,9 @@ """ self.error.emit(fn, msg) - def serviceErrorPy2(self, fx, lang, fn, msg): - """ - Public slot handling service errors for Python 2. - - @param fx service name (string) - @param lang language (string) - @param fn file name (string) - @param msg message text (string) - """ - if fx in ['indent', 'batch_indent'] and lang == 'Python2': - if fx == 'indent': - self.__serviceError(fn, msg) - else: - self.__serviceError(self.tr("Python 2 batch check"), msg) - self.batchJobDone(fx, lang) - def serviceErrorPy3(self, fx, lang, fn, msg): """ - Public slot handling service errors for Python 2. + Public slot handling service errors for Python 3. @param fx service name (string) @param lang language (string) @@ -164,7 +144,7 @@ """ if lang is None: lang = 'Python{0}'.format(determinePythonVersion(filename, source)) - if lang not in ['Python2', 'Python3']: + if lang != 'Python3': return self.backgroundService.enqueueRequest( @@ -179,30 +159,27 @@ containing filename and source (string, string) """ data = { - "Python2": [], "Python3": [], } for filename, source in argumentsList: lang = 'Python{0}'.format(determinePythonVersion(filename, source)) - if lang not in ['Python2', 'Python3']: + if lang != 'Python3': continue else: data[lang].append((filename, source)) self.queuedBatches = [] - for lang in ['Python2', 'Python3']: - if data[lang]: - self.queuedBatches.append(lang) - self.backgroundService.enqueueRequest('batch_indent', lang, "", - data[lang]) - self.batchesFinished = False + if data['Python3']: + self.queuedBatches.append('Python3') + self.backgroundService.enqueueRequest( + 'batch_indent', 'Python3', "", data['Python3']) + self.batchesFinished = False def cancelIndentBatchCheck(self): """ Public method to cancel all batch jobs. """ - for lang in ['Python2', 'Python3']: - self.backgroundService.requestCancel('batch_style', lang) + self.backgroundService.requestCancel('batch_style', 'Python3') def activate(self): """ @@ -292,7 +269,7 @@ if menuName == "Checks" and self.__projectAct is not None: self.__projectAct.setEnabled( e5App().getObject("Project").getProjectLanguage() in - ["Python3", "Python2", "Python", "MicroPython"]) + ["Python3", "MicroPython"]) def __projectBrowserShowMenu(self, menuName, menu): """ @@ -305,7 +282,7 @@ if ( menuName == "Checks" and e5App().getObject("Project").getProjectLanguage() in - ["Python3", "Python2", "Python", "MicroPython"] + ["Python3", "MicroPython"] ): self.__projectBrowserMenu = menu if self.__projectBrowserAct is None: @@ -333,8 +310,7 @@ files = [os.path.join(ppath, file) for file in project.pdata["SOURCES"] if file.endswith( - tuple(Preferences.getPython("Python3Extensions")) + - tuple(Preferences.getPython("PythonExtensions")))] + tuple(Preferences.getPython("Python3Extensions")))] from CheckerPlugins.Tabnanny.TabnannyDialog import TabnannyDialog self.__projectTabnannyDialog = TabnannyDialog(self)
--- a/eric6/Plugins/PluginWizardQFileDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/PluginWizardQFileDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -48,8 +48,8 @@ super(FileDialogWizard, self).__init__(ui) self.__ui = ui - # PyQt4 or PyQt5 - self.__pyqtRe = re.compile(r"(?:import|from)\s+PyQt([45])") + # PyQt5 + self.__pyqtRe = re.compile(r"(?:import|from)\s+PyQt([5])") def activate(self): """ @@ -124,7 +124,7 @@ @param editor reference to the current editor @type Editor @param variant variant of code to be generated - (-1 = E5FileDialog, 0 = unknown, 4 = PyQt4, 5 = PyQt5) + (-1 = E5FileDialog, 0 = unknown, 5 = PyQt5) @type int @return the generated code (string) """ @@ -166,7 +166,7 @@ # unknown dialogVariant = 0 else: - # PyQt4 or PyQt5 + # PyQt5 dialogVariant = int(match.group(1)) elif variant == "E5FileDialog": # E5FileDialog
--- a/eric6/Plugins/VcsPlugins/vcsGit/GitDiffDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsGit/GitDiffDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -123,9 +123,12 @@ 'stash' shows the diff for a stash) @param stashName name of the stash to show a diff for (string) @param refreshable flag indicating a refreshable diff (boolean) + @exception ValueError raised to indicate a bad value for the 'diffMode' + parameter. """ - assert diffMode in ["work2repo", "work2stage", "stage2repo", - "work2stage2repo", "stash"] + if diffMode not in ["work2repo", "work2stage", "stage2repo", + "work2stage2repo", "stash"]: + raise ValueError("Bad value for 'diffMode' parameter.") self.refreshButton.setVisible(refreshable)
--- a/eric6/Plugins/VcsPlugins/vcsGit/GitDiffGenerator.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsGit/GitDiffGenerator.py Sun Jul 05 11:11:24 2020 +0200 @@ -78,9 +78,12 @@ 'stash' shows the diff for a stash) @param stashName name of the stash to show a diff for (string) @return flag indicating the start status (boolean) + @exception ValueError raised to indicate a bad value for the 'diffMode' + parameter. """ - assert diffMode in ["work2repo", "work2stage", "stage2repo", - "work2stage2repo", "stash"] + if diffMode not in ["work2repo", "work2stage", "stage2repo", + "work2stage2repo", "stash"]: + raise ValueError("Bad value for 'diffMode' parameter.") self.__output1 = [] self.__output2 = []
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/HgClient.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgClient.py Sun Jul 05 11:11:24 2020 +0200 @@ -428,6 +428,3 @@ @rtype bool """ return self.__commandRunning - -# -# eflag: noqa = M702
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/ProjectHelper.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/ProjectHelper.py Sun Jul 05 11:11:24 2020 +0200 @@ -194,8 +194,11 @@ @param direction direction of the conversion (string; one of 'largefiles' or 'normal') + @exception ValueError raised to indicate a bad value for the + 'direction' parameter. """ - assert direction in ["largefiles", "normal"] + if direction not in ["largefiles", "normal"]: + raise ValueError("Bad value for 'direction' parameter.") self.vcs.getExtensionObject("largefiles").hgLfconvert( direction, self.project.getProjectFile()) @@ -218,8 +221,11 @@ Private slot to verify large files integrity. @param mode verify mode (string; one of 'large', 'lfa' or 'lfc') + @exception ValueError raised to indicate a bad value for the + 'mode' parameter. """ - assert mode in ['large', 'lfa', 'lfc'] + if mode not in ['large', 'lfa', 'lfc']: + raise ValueError("Bad value for 'mode' parameter.") self.vcs.getExtensionObject("largefiles").hgLfVerify( self.project.getProjectPath(), mode)
--- a/eric6/Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/largefiles.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsMercurial/LargefilesExtension/largefiles.py Sun Jul 05 11:11:24 2020 +0200 @@ -38,8 +38,11 @@ @param direction direction of the conversion (string, one of 'largefiles' or 'normal') @param projectFile file name of the current project file (string) + @exception ValueError raised to indicate a bad value for the + 'direction' parameter. """ - assert direction in ["largefiles", "normal"] + if direction not in ["largefiles", "normal"]: + raise ValueError("Bad value for 'direction' parameter.") projectDir = os.path.dirname(projectFile)
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnCommitDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnCommitDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -94,8 +94,9 @@ @return tuple containing the changelists (list of strings) and a flag indicating to keep changelists (boolean) """ - slists = [l.text().strip() for l in self.changeLists.selectedItems() - if l.text().strip() != ""] + slists = [line.text().strip() + for line in self.changeLists.selectedItems() + if line.text().strip() != ""] if len(slists) == 0: return [], False
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -158,12 +158,12 @@ tmpdir = Utilities.getEnvironmentEntry('TMPDIR') elif Utilities.hasEnvironmentEntry('TMP'): tmpdir = Utilities.getEnvironmentEntry('TMP') - elif os.path.exists('/var/tmp'): - tmpdir = '/var/tmp' + elif os.path.exists('/var/tmp'): # secok + tmpdir = '/var/tmp' # secok elif os.path.exists('/usr/tmp'): tmpdir = '/usr/tmp' - elif os.path.exists('/tmp'): - tmpdir = '/tmp' + elif os.path.exists('/tmp'): # secok + tmpdir = '/tmp' # secok else: E5MessageBox.critical( self,
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnRepoBrowserDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -162,7 +162,6 @@ try: entries = self.client.list(url, recurse=False) firstTime = parent == self.repoTree - # dirent elements are all unicode in Python 2 for dirent, _lock in entries: if ( (firstTime and dirent["path"] != url) or
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnTagBranchListDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnTagBranchListDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -136,7 +136,6 @@ os.chdir(dname) try: entries = self.client.list(path, recurse=False) - # dirent, lock already unicode in Python 2 for dirent, _lock in entries: if dirent["path"] != path: name = dirent["path"].replace(path + '/', "")
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/subversion.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/subversion.py Sun Jul 05 11:11:24 2020 +0200 @@ -1502,7 +1502,6 @@ locker.unlock() dirs = [x for x in names.keys() if os.path.isdir(x)] for file in allFiles: - # file.path is always unicode in Python 2 name = os.path.normcase(file.path) if self.__isVersioned(file): if name in names: @@ -1582,7 +1581,6 @@ ignore=True, update=False) locker.unlock() for file in allFiles: - # file.path is always unicode in Python 2 name = os.path.normcase(file.path) if self.__isVersioned(file): if name in names:
--- a/eric6/Plugins/VcsPlugins/vcsSubversion/SvnCommitDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsSubversion/SvnCommitDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -89,8 +89,9 @@ @return tuple containing the changelists (list of strings) and a flag indicating to keep changelists (boolean) """ - slists = [l.text().strip() for l in self.changeLists.selectedItems() - if l.text().strip() != ""] + slists = [line.text().strip() + for line in self.changeLists.selectedItems() + if line.text().strip() != ""] if len(slists) == 0: return [], False
--- a/eric6/Plugins/VcsPlugins/vcsSubversion/SvnDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsSubversion/SvnDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -186,11 +186,11 @@ self.resultbox.ensureCursorVisible() if not self.__hasAddOrDelete and len(s) > 0: # check the output - for l in s.split(os.linesep): - if '.e4p' in l: + for line in s.split(os.linesep): + if '.e4p' in line: self.__hasAddOrDelete = True break - if l and l[0:2].strip() in ['A', 'D']: + if line and line[0:2].strip() in ['A', 'D']: self.__hasAddOrDelete = True break
--- a/eric6/Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/WizardPlugins/ColorDialogWizard/ColorDialogWizardDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -65,7 +65,7 @@ else: coStr = "QColor({0})".format(coStr) try: - exec('from PyQt5.QtCore import Qt;' + exec('from PyQt5.QtCore import Qt;' # secok ' QColorDialog.getColor({0}, None, "{1}")'.format( coStr, self.eTitle.text())) except Exception:
--- a/eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -34,7 +34,7 @@ Constructor @param dialogVariant variant of the file dialog to be generated - (-1 = E5FileDialog, 0 = unknown, 4 = PyQt4, 5 = PyQt5) + (-1 = E5FileDialog, 0 = unknown, 5 = PyQt5) @type int @param parent parent widget @type QWidget @@ -71,7 +71,7 @@ self.pyqtComboBox.setCurrentIndex(0) self.pyqtComboBox.setEnabled(False) else: - self.pyqtComboBox.addItems(["PyQt5", "PyQt4"]) + self.pyqtComboBox.addItems(["PyQt5"]) self.setWindowTitle(self.tr("QFileDialog Wizard")) if self.__dialogVariant == 5: self.pyqtComboBox.setCurrentIndex(0) @@ -113,9 +113,9 @@ @param txt text of the selected combo box entry (string) """ - self.rfOpenFile.setEnabled(txt in ("eric", "PyQt4")) - self.rfOpenFiles.setEnabled(txt in ("eric", "PyQt4")) - self.rfSaveFile.setEnabled(txt in ("eric", "PyQt4")) + self.rfOpenFile.setEnabled(txt == "eric") + self.rfOpenFiles.setEnabled(txt == "eric") + self.rfSaveFile.setEnabled(txt == "eric") self.rOpenFileUrl.setEnabled(txt == "PyQt5") self.rOpenFileUrls.setEnabled(txt == "PyQt5") @@ -143,8 +143,6 @@ self.__dialogVariant = -1 elif txt == "PyQt5": self.__dialogVariant = 5 - elif txt == "PyQt4": - self.__dialogVariant = 4 else: # default is PyQt5 self.__dialogVariant = 5 @@ -364,7 +362,7 @@ def getCode(self, indLevel, indString): """ - Public method to get the source code for Qt4 and Qt5. + Public method to get the source code for Qt5. @param indLevel indentation level (int) @param indString string used for indentation (space or tab) (string)
--- a/eric6/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Plugins/WizardPlugins/SetupWizard/SetupWizardDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -9,7 +9,6 @@ import os -import sys import datetime from PyQt5.QtCore import pyqtSlot, Qt, QUrl @@ -253,8 +252,7 @@ # now generate the code if self.introCheckBox.isChecked(): - code = "#!/usr/bin/env python{0}{1}".format( - sys.version_info[0], os.linesep) + code = "#!/usr/bin/env python3{0}".format(os.linesep) code += "# -*- coding: utf-8 -*-{0}{0}".format(os.linesep) else: code = ""
--- a/eric6/Preferences/ConfigurationDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -97,14 +97,6 @@ @keyparam expandedEntries list of entries to be shown expanded (list of strings) """ - assert displayMode in ( - ConfigurationWidget.DefaultMode, - ConfigurationWidget.HelpBrowserMode, - ConfigurationWidget.TrayStarterMode, - ConfigurationWidget.HexEditorMode, - ConfigurationWidget.WebBrowserMode, - ) - super(ConfigurationWidget, self).__init__(parent) self.fromEric = fromEric self.displayMode = displayMode @@ -230,9 +222,6 @@ "debuggerGeneralPage": [self.tr("General"), "preferences-debugger", "DebuggerGeneralPage", "0debuggerPage", None], - "debuggerPython2Page": - [self.tr("Python2"), "preferences-pyDebugger", - "DebuggerPython2Page", "0debuggerPage", None], "debuggerPython3Page": [self.tr("Python3"), "preferences-pyDebugger", "DebuggerPython3Page", "0debuggerPage", None],
--- a/eric6/Preferences/ConfigurationPages/ApplicationPage.ui Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/ApplicationPage.ui Sun Jul 05 11:11:24 2020 +0200 @@ -155,7 +155,7 @@ <string>Select to disable update checking</string> </property> <property name="text"> - <string>None</string> + <string>Never</string> </property> </widget> </item>
--- a/eric6/Preferences/ConfigurationPages/DebuggerPython2Page.py Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,132 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2006 - 2020 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the Debugger Python2 configuration page. -""" - - -from PyQt5.QtCore import pyqtSlot - -from E5Gui.E5Application import e5App -from E5Gui.E5PathPicker import E5PathPickerModes - -from .ConfigurationPageBase import ConfigurationPageBase -from .Ui_DebuggerPython2Page import Ui_DebuggerPython2Page - -import Preferences -import UI.PixmapCache - - -class DebuggerPython2Page(ConfigurationPageBase, Ui_DebuggerPython2Page): - """ - Class implementing the Debugger Python2 configuration page. - """ - def __init__(self): - """ - Constructor - """ - super(DebuggerPython2Page, self).__init__() - self.setupUi(self) - self.setObjectName("DebuggerPython2Page") - - try: - self.__virtualenvManager = e5App().getObject("VirtualEnvManager") - except KeyError: - from VirtualEnv.VirtualenvManager import VirtualenvManager - self.__virtualenvManager = VirtualenvManager() - - self.venvDlgButton.setIcon(UI.PixmapCache.getIcon("virtualenv")) - - self.debugClientPicker.setMode(E5PathPickerModes.OpenFileMode) - self.debugClientPicker.setToolTip(self.tr( - "Press to select the Debug Client via a file selection dialog")) - self.debugClientPicker.setFilters(self.tr("Python Files (*.py *.py2)")) - - self.__populateAndSetVenvComboBox() - - # set initial values - dct = Preferences.getDebugger("DebugClientType") - if dct == "standard": - self.standardButton.setChecked(True) - else: - self.customButton.setChecked(True) - self.debugClientPicker.setText( - Preferences.getDebugger("DebugClient"), toNative=False) - self.pyRedirectCheckBox.setChecked( - Preferences.getDebugger("PythonRedirect")) - self.pyNoEncodingCheckBox.setChecked( - Preferences.getDebugger("PythonNoEncoding")) - self.sourceExtensionsEdit.setText( - Preferences.getDebugger("PythonExtensions")) - - def save(self): - """ - Public slot to save the Debugger Python configuration. - """ - Preferences.setDebugger( - "Python2VirtualEnv", - self.venvComboBox.currentText()) - if self.standardButton.isChecked(): - dct = "standard" - else: - dct = "custom" - Preferences.setDebugger("DebugClientType", dct) - Preferences.setDebugger( - "DebugClient", - self.debugClientPicker.text(toNative=False)) - Preferences.setDebugger( - "PythonRedirect", - self.pyRedirectCheckBox.isChecked()) - Preferences.setDebugger( - "PythonNoEncoding", - self.pyNoEncodingCheckBox.isChecked()) - - def __populateAndSetVenvComboBox(self): - """ - Private method to populate and set the virtual environment combo box. - """ - self.venvComboBox.clear() - self.venvComboBox.addItems( - [""] + - sorted(self.__virtualenvManager.getVirtualenvNamesForVariant(2)) - ) - - # set initial value - venvName = Preferences.getDebugger("Python2VirtualEnv") - if venvName: - index = self.venvComboBox.findText(venvName) - if index < 0: - index = 0 - self.venvComboBox.setCurrentIndex(index) - - @pyqtSlot() - def on_refreshButton_clicked(self): - """ - Private slot handling a click of the refresh button. - """ - self.sourceExtensionsEdit.setText( - Preferences.getDebugger("PythonExtensions")) - - @pyqtSlot() - def on_venvDlgButton_clicked(self): - """ - Private slot to show the virtual environment manager dialog. - """ - self.__virtualenvManager.showVirtualenvManagerDialog(modal=True) - self.__populateAndSetVenvComboBox() - self.activateWindow() - self.raise_() - - -def create(dlg): - """ - Module function to create the configuration page. - - @param dlg reference to the configuration dialog - @return reference to the instantiated page (ConfigurationPageBase) - """ - page = DebuggerPython2Page() - return page
--- a/eric6/Preferences/ConfigurationPages/DebuggerPython2Page.ui Wed Jun 17 17:14:12 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,241 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>DebuggerPython2Page</class> - <widget class="QWidget" name="DebuggerPython2Page"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>455</width> - <height>500</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QLabel" name="headerLabel"> - <property name="text"> - <string><b>Configure Python2 Debugger</b></string> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line11_2"> - <property name="frameShape"> - <enum>QFrame::HLine</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Sunken</enum> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_4"> - <property name="title"> - <string>Python2 Virtual Environment</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QComboBox" name="venvComboBox"> - <property name="toolTip"> - <string>Select the virtual environment to be used</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="venvDlgButton"> - <property name="toolTip"> - <string>Press to open the virtual environment manager dialog</string> - </property> - <property name="text"> - <string notr="true"/> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string>Debug Client Type</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0" colspan="2"> - <widget class="E5PathPicker" name="debugClientPicker" native="true"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <property name="toolTip"> - <string>Enter the path of the Debug Client to be used. Leave empty to use the default.</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QRadioButton" name="standardButton"> - <property name="toolTip"> - <string>Select the standard debug client</string> - </property> - <property name="text"> - <string>Standard</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QRadioButton" name="customButton"> - <property name="toolTip"> - <string>Select the custom selected debug client</string> - </property> - <property name="text"> - <string>Custom</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_3"> - <property name="title"> - <string>Source association</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Please configure the associated file extensions on the 'Python' page.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="sourceExtensionsEdit"> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="refreshButton"> - <property name="toolTip"> - <string>Press to update the display of the source associations</string> - </property> - <property name="text"> - <string>Refresh</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QCheckBox" name="pyRedirectCheckBox"> - <property name="toolTip"> - <string>Select, to redirect stdin, stdout and stderr of the program being debugged to the eric6 IDE</string> - </property> - <property name="text"> - <string>Redirect stdin/stdout/stderr</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="pyNoEncodingCheckBox"> - <property name="toolTip"> - <string>Select to not set the debug client encoding</string> - </property> - <property name="text"> - <string>Don't set the encoding of the debug client</string> - </property> - </widget> - </item> - <item> - <spacer> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>435</width> - <height>21</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <customwidgets> - <customwidget> - <class>E5PathPicker</class> - <extends>QWidget</extends> - <header>E5Gui/E5PathPicker.h</header> - <container>1</container> - </customwidget> - </customwidgets> - <tabstops> - <tabstop>venvComboBox</tabstop> - <tabstop>venvDlgButton</tabstop> - <tabstop>standardButton</tabstop> - <tabstop>customButton</tabstop> - <tabstop>debugClientPicker</tabstop> - <tabstop>sourceExtensionsEdit</tabstop> - <tabstop>refreshButton</tabstop> - <tabstop>pyRedirectCheckBox</tabstop> - <tabstop>pyNoEncodingCheckBox</tabstop> - </tabstops> - <resources/> - <connections> - <connection> - <sender>customButton</sender> - <signal>toggled(bool)</signal> - <receiver>debugClientPicker</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>328</x> - <y>116</y> - </hint> - <hint type="destinationlabel"> - <x>328</x> - <y>135</y> - </hint> - </hints> - </connection> - </connections> -</ui>
--- a/eric6/Preferences/ConfigurationPages/DebuggerPython3Page.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/DebuggerPython3Page.py Sun Jul 05 11:11:24 2020 +0200 @@ -91,7 +91,7 @@ self.venvComboBox.clear() self.venvComboBox.addItems( [""] + - sorted(self.__virtualenvManager.getVirtualenvNamesForVariant(3)) + sorted(self.__virtualenvManager.getVirtualenvNames()) ) # set initial value
--- a/eric6/Preferences/ConfigurationPages/EditorHighlightersPage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/EditorHighlightersPage.py Sun Jul 05 11:11:24 2020 +0200 @@ -54,7 +54,7 @@ QScintilla.Lexers.getLanguageIcon(lang, False), lang) - pygmentsLexers = [''] + sorted(l[0] for l in get_all_lexers()) + pygmentsLexers = [''] + sorted(lex[0] for lex in get_all_lexers()) self.pygmentsLexerCombo.addItems(pygmentsLexers) # set initial values
--- a/eric6/Preferences/ConfigurationPages/HelpDocumentationPage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/HelpDocumentationPage.py Sun Jul 05 11:11:24 2020 +0200 @@ -32,64 +32,32 @@ self.ericDocDirPicker.setMode(E5PathPickerModes.OpenFileMode) self.ericDocDirPicker.setFilters(self.tr( "HTML Files (*.html *.htm);;All Files (*)")) - self.python2DocDirPicker.setMode(E5PathPickerModes.OpenFileMode) - self.python2DocDirPicker.setFilters(self.tr( - "HTML Files (*.html *.htm);;" - "Compressed Help Files (*.chm);;" - "All Files (*)")) self.pythonDocDirPicker.setMode(E5PathPickerModes.OpenFileMode) self.pythonDocDirPicker.setFilters(self.tr( "HTML Files (*.html *.htm);;" "Compressed Help Files (*.chm);;" "All Files (*)")) - self.qt4DocDirPicker.setMode(E5PathPickerModes.OpenFileMode) - self.qt4DocDirPicker.setFilters(self.tr( - "HTML Files (*.html *.htm);;All Files (*)")) self.qt5DocDirPicker.setMode(E5PathPickerModes.OpenFileMode) self.qt5DocDirPicker.setFilters(self.tr( "HTML Files (*.html *.htm);;All Files (*)")) - self.pyqt4DocDirPicker.setMode(E5PathPickerModes.OpenFileMode) - self.pyqt4DocDirPicker.setFilters(self.tr( - "HTML Files (*.html *.htm);;All Files (*)")) self.pyqt5DocDirPicker.setMode(E5PathPickerModes.OpenFileMode) self.pyqt5DocDirPicker.setFilters(self.tr( "HTML Files (*.html *.htm);;All Files (*)")) - self.pysideDocDirPicker.setMode(E5PathPickerModes.OpenFileMode) - self.pysideDocDirPicker.setFilters(self.tr( - "HTML Files (*.html *.htm);;All Files (*)")) self.pyside2DocDirPicker.setMode(E5PathPickerModes.OpenFileMode) self.pyside2DocDirPicker.setFilters(self.tr( "HTML Files (*.html *.htm);;All Files (*)")) - pyside_py2, pyside_py3 = Utilities.checkPyside("1") - if pyside_py2 or pyside_py3: - self.pysideGroup.setEnabled(True) - else: - self.pysideGroup.setEnabled(False) - - pyside2_py2, pyside2_py3 = Utilities.checkPyside("2") - if pyside2_py2 or pyside2_py3: - self.pyside2Group.setEnabled(True) - else: - self.pyside2Group.setEnabled(False) + self.pyside2Group.setEnabled(Utilities.checkPyside()) # set initial values self.ericDocDirPicker.setText( Preferences.getHelp("EricDocDir"), toNative=False) - self.python2DocDirPicker.setText( - Preferences.getHelp("Python2DocDir"), toNative=False) self.pythonDocDirPicker.setText( Preferences.getHelp("PythonDocDir"), toNative=False) - self.qt4DocDirPicker.setText( - Preferences.getHelp("Qt4DocDir"), toNative=False) self.qt5DocDirPicker.setText( Preferences.getHelp("Qt5DocDir"), toNative=False) - self.pyqt4DocDirPicker.setText( - Preferences.getHelp("PyQt4DocDir"), toNative=False) self.pyqt5DocDirPicker.setText( Preferences.getHelp("PyQt5DocDir"), toNative=False) - self.pysideDocDirPicker.setText( - Preferences.getHelp("PySideDocDir"), toNative=False) self.pyside2DocDirPicker.setText( Preferences.getHelp("PySide2DocDir"), toNative=False) @@ -101,27 +69,15 @@ "EricDocDir", self.ericDocDirPicker.text(toNative=False)) Preferences.setHelp( - "Python2DocDir", - self.python2DocDirPicker.text(toNative=False)) - Preferences.setHelp( "PythonDocDir", self.pythonDocDirPicker.text(toNative=False)) Preferences.setHelp( - "Qt4DocDir", - self.qt4DocDirPicker.text(toNative=False)) - Preferences.setHelp( "Qt5DocDir", self.qt5DocDirPicker.text(toNative=False)) Preferences.setHelp( - "PyQt4DocDir", - self.pyqt4DocDirPicker.text(toNative=False)) - Preferences.setHelp( "PyQt5DocDir", self.pyqt5DocDirPicker.text(toNative=False)) Preferences.setHelp( - "PySideDocDir", - self.pysideDocDirPicker.text(toNative=False)) - Preferences.setHelp( "PySide2DocDir", self.pyside2DocDirPicker.text(toNative=False))
--- a/eric6/Preferences/ConfigurationPages/HelpDocumentationPage.ui Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/HelpDocumentationPage.ui Sun Jul 05 11:11:24 2020 +0200 @@ -67,41 +67,6 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_5"> - <property name="title"> - <string>Python 2 Documentation</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="E5PathPicker" name="python2DocDirPicker" native="true"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <property name="toolTip"> - <string>Enter the Python 2 documentation directory</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="textLabel1_8_3"> - <property name="text"> - <string><b>Note</b>: Leave empty to use the PYTHON2DOCDIR environment variable, if set.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> <widget class="QGroupBox" name="groupBox_4"> <property name="title"> <string>Python 3 Documentation</string> @@ -137,41 +102,6 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_6"> - <property name="title"> - <string>Qt4 Documentation</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="E5PathPicker" name="qt4DocDirPicker" native="true"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <property name="toolTip"> - <string>Enter the Qt4 documentation directory</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="textLabel1_8_2_2_2"> - <property name="text"> - <string><b>Note</b>: Leave empty to use the QT4DOCDIR environment variable, if set.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> <widget class="QGroupBox" name="groupBox_8"> <property name="title"> <string>Qt5 Documentation</string> @@ -207,41 +137,6 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_7"> - <property name="title"> - <string>PyQt4 Documentation</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <item> - <widget class="E5PathPicker" name="pyqt4DocDirPicker" native="true"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <property name="toolTip"> - <string>Enter the PyQt4 documentation directory</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="textLabel1_8_2_2_3"> - <property name="text"> - <string><b>Note</b>: Leave empty to use the PYQT4DOCDIR environment variable, if set.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> <widget class="QGroupBox" name="pyqt5Group"> <property name="title"> <string>PyQt5 Documentation</string> @@ -277,41 +172,6 @@ </widget> </item> <item> - <widget class="QGroupBox" name="pysideGroup"> - <property name="title"> - <string>PySide Documentation</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_8"> - <item> - <widget class="E5PathPicker" name="pysideDocDirPicker" native="true"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <property name="toolTip"> - <string>Enter the PySide documentation directory</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="textLabel1_8_2_2"> - <property name="text"> - <string><b>Note</b>: Leave empty to use the PYSIDEDOCDIR environment variable, if set.</string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> <widget class="QGroupBox" name="pyside2Group"> <property name="title"> <string>PySide2 Documentation</string> @@ -371,13 +231,9 @@ </customwidgets> <tabstops> <tabstop>ericDocDirPicker</tabstop> - <tabstop>python2DocDirPicker</tabstop> <tabstop>pythonDocDirPicker</tabstop> - <tabstop>qt4DocDirPicker</tabstop> <tabstop>qt5DocDirPicker</tabstop> - <tabstop>pyqt4DocDirPicker</tabstop> <tabstop>pyqt5DocDirPicker</tabstop> - <tabstop>pysideDocDirPicker</tabstop> </tabstops> <resources/> <connections/>
--- a/eric6/Preferences/ConfigurationPages/NetworkPage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/NetworkPage.py Sun Jul 05 11:11:24 2020 +0200 @@ -118,30 +118,30 @@ ConfigurationWidget.WebBrowserMode) """ from ..ConfigurationDialog import ConfigurationWidget - assert displayMode in ( + if displayMode in ( ConfigurationWidget.DefaultMode, ConfigurationWidget.HelpBrowserMode, ConfigurationWidget.WebBrowserMode - ) - - self.__displayMode = displayMode - if not self.__configDlg.isUsingWebEngine(): - self.cleanupGroup.hide() - self.displayGroup.hide() - else: - policy = Preferences.getWebBrowser("DownloadManagerRemovePolicy") - from WebBrowser.Download.DownloadManager import DownloadManager - if policy == DownloadManager.RemoveNever: - self.cleanupNeverButton.setChecked(True) - elif policy == DownloadManager.RemoveExit: - self.cleanupExitButton.setChecked(True) + ): + self.__displayMode = displayMode + if not self.__configDlg.isUsingWebEngine(): + self.cleanupGroup.hide() + self.displayGroup.hide() else: - self.cleanupSuccessfulButton.setChecked(True) - self.openOnStartCheckBox.setChecked( - Preferences.getWebBrowser("DownloadManagerAutoOpen")) - self.closeOnFinishedCheckBox.setChecked( - Preferences.getWebBrowser("DownloadManagerAutoClose")) - self.__webEngine = True + policy = Preferences.getWebBrowser( + "DownloadManagerRemovePolicy") + from WebBrowser.Download.DownloadManager import DownloadManager + if policy == DownloadManager.RemoveNever: + self.cleanupNeverButton.setChecked(True) + elif policy == DownloadManager.RemoveExit: + self.cleanupExitButton.setChecked(True) + else: + self.cleanupSuccessfulButton.setChecked(True) + self.openOnStartCheckBox.setChecked( + Preferences.getWebBrowser("DownloadManagerAutoOpen")) + self.closeOnFinishedCheckBox.setChecked( + Preferences.getWebBrowser("DownloadManagerAutoClose")) + self.__webEngine = True def save(self): """
--- a/eric6/Preferences/ConfigurationPages/PythonPage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/PythonPage.py Sun Jul 05 11:11:24 2020 +0200 @@ -41,13 +41,9 @@ self.ioEncodingComboBox.setCurrentIndex(index) # these are the same as in the debugger pages - self.py2ExtensionsEdit.setText( - Preferences.getDebugger("PythonExtensions")) self.py3ExtensionsEdit.setText( Preferences.getDebugger("Python3Extensions")) - self.py2EnvironmentEdit.setText( - Preferences.getDebugger("Python2VirtualEnv")) self.py3EnvironmentEdit.setText( Preferences.getDebugger("Python3VirtualEnv")) @@ -66,9 +62,6 @@ Preferences.setSystem("IOEncoding", enc) Preferences.setDebugger( - "PythonExtensions", - self.py2ExtensionsEdit.text()) - Preferences.setDebugger( "Python3Extensions", self.py3ExtensionsEdit.text()) @@ -77,8 +70,6 @@ """ Private slot handling a click of the refresh button. """ - self.py2EnvironmentEdit.setText( - Preferences.getDebugger("Python2VirtualEnv")) self.py3EnvironmentEdit.setText( Preferences.getDebugger("Python3VirtualEnv"))
--- a/eric6/Preferences/ConfigurationPages/PythonPage.ui Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/PythonPage.ui Sun Jul 05 11:11:24 2020 +0200 @@ -89,7 +89,7 @@ <item row="0" column="0" colspan="2"> <widget class="QLabel" name="label_3"> <property name="text"> - <string>Enter the file extensions to be associated with the Python versions separated by a space. They must not overlap with each other.</string> + <string>Enter the file extensions to be associated with Python separated by a space.</string> </property> <property name="wordWrap"> <bool>true</bool> @@ -97,23 +97,13 @@ </widget> </item> <item row="1" column="0"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Python 2:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="py2ExtensionsEdit"/> - </item> - <item row="2" column="0"> <widget class="QLabel" name="label_5"> <property name="text"> <string>Python 3:</string> </property> </widget> </item> - <item row="2" column="1"> + <item row="1" column="1"> <widget class="QLineEdit" name="py3ExtensionsEdit"/> </item> </layout> @@ -142,27 +132,13 @@ </property> <layout class="QGridLayout" name="gridLayout_3"> <item row="0" column="0"> - <widget class="QLabel" name="label_7"> - <property name="text"> - <string>Python 2:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="py2EnvironmentEdit"> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="0"> <widget class="QLabel" name="label_9"> <property name="text"> <string>Python 3:</string> </property> </widget> </item> - <item row="1" column="1"> + <item row="0" column="1"> <widget class="QLineEdit" name="py3EnvironmentEdit"> <property name="readOnly"> <bool>true</bool> @@ -233,9 +209,7 @@ <tabstops> <tabstop>stringEncodingComboBox</tabstop> <tabstop>ioEncodingComboBox</tabstop> - <tabstop>py2ExtensionsEdit</tabstop> <tabstop>py3ExtensionsEdit</tabstop> - <tabstop>py2EnvironmentEdit</tabstop> <tabstop>py3EnvironmentEdit</tabstop> <tabstop>refreshButton</tabstop> </tabstops>
--- a/eric6/Preferences/ConfigurationPages/QtPage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/QtPage.py Sun Jul 05 11:11:24 2020 +0200 @@ -58,7 +58,7 @@ self.pyside2uicImportsCheckBox.setChecked( Preferences.getQt("PySide2FromImports")) - self.pyside2Group.setEnabled(any(Utilities.checkPyside())) + self.pyside2Group.setEnabled(Utilities.checkPyside()) def save(self): """
--- a/eric6/Preferences/ConfigurationPages/SecurityPage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/SecurityPage.py Sun Jul 05 11:11:24 2020 +0200 @@ -59,17 +59,16 @@ ConfigurationWidget.WebBrowserMode) """ from ..ConfigurationDialog import ConfigurationWidget - assert displayMode in ( + if displayMode in ( ConfigurationWidget.DefaultMode, ConfigurationWidget.HelpBrowserMode, ConfigurationWidget.WebBrowserMode - ) - - self.__displayMode = displayMode - - self.certificateErrorsGroup.setVisible( - displayMode == ConfigurationWidget.WebBrowserMode - ) + ): + self.__displayMode = displayMode + + self.certificateErrorsGroup.setVisible( + displayMode == ConfigurationWidget.WebBrowserMode + ) def save(self): """
--- a/eric6/Preferences/ConfigurationPages/WebBrowserAppearancePage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/WebBrowserAppearancePage.py Sun Jul 05 11:11:24 2020 +0200 @@ -121,12 +121,11 @@ ConfigurationWidget.TrayStarterMode) """ from ..ConfigurationDialog import ConfigurationWidget - assert displayMode in ( + if displayMode in ( ConfigurationWidget.DefaultMode, ConfigurationWidget.WebBrowserMode, - ) - - self.__displayMode = displayMode + ): + self.__displayMode = displayMode def save(self): """
--- a/eric6/Preferences/ConfigurationPages/WebBrowserInterfacePage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/WebBrowserInterfacePage.py Sun Jul 05 11:11:24 2020 +0200 @@ -7,8 +7,6 @@ Module implementing the Interface configuration page (variant for web browser). """ -from __future__ import unicode_literals - from PyQt5.QtWidgets import QStyleFactory from E5Gui.E5PathPicker import E5PathPickerModes
--- a/eric6/Preferences/ConfigurationPages/WebBrowserPage.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ConfigurationPages/WebBrowserPage.py Sun Jul 05 11:11:24 2020 +0200 @@ -171,7 +171,7 @@ self.expireHistory.setCurrentIndex(idx) for language in range(2, QLocale.LastLanguage + 1): - countries = [l.country() for l in QLocale.matchingLocales( + countries = [loc.country() for loc in QLocale.matchingLocales( language, QLocale.AnyScript, QLocale.AnyCountry)] if len(countries) > 0: self.languageCombo.addItem(
--- a/eric6/Preferences/ProgramsDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/ProgramsDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -141,88 +141,42 @@ self.tr("Qt Assistant"), exe, version=version) # 2. do the PyQt programs - # 2.1 do the PyQt4 programs - # deprecated - # 2.1a. Translation Extractor PyQt4 - self.__createProgramEntry( - self.tr("Translation Extractor (Python, PyQt4)"), - Utilities.generatePyQtToolPath("pylupdate4"), - '-version', 'pylupdate', -1) - # 2.1b. Forms Compiler PyQt4 - self.__createProgramEntry( - self.tr("Forms Compiler (Python, PyQt4)"), - Utilities.generatePyQtToolPath("pyuic4", ["py3uic4"]), - '--version', 'Python User', 4) - # 2.1c. Resource Compiler PyQt4 - self.__createProgramEntry( - self.tr("Resource Compiler (Python, PyQt4)"), - Utilities.generatePyQtToolPath("pyrcc4"), - '-version', 'Resource Compiler', -1) - - # 2.2 do the PyQt5 programs - # 2.2a. Translation Extractor PyQt5 + # 2.1 do the PyQt5 programs + # 2.1a. Translation Extractor PyQt5 self.__createProgramEntry( self.tr("Translation Extractor (Python, PyQt5)"), Utilities.generatePyQtToolPath("pylupdate5"), '-version', 'pylupdate', -1) - # 2.2b. Forms Compiler PyQt5 + # 2.1b. Forms Compiler PyQt5 self.__createProgramEntry( self.tr("Forms Compiler (Python, PyQt5)"), Utilities.generatePyQtToolPath("pyuic5", ["py3uic5"]), '--version', 'Python User', 4) - # 2.2c. Resource Compiler PyQt5 + # 2.1c. Resource Compiler PyQt5 self.__createProgramEntry( self.tr("Resource Compiler (Python, PyQt5)"), Utilities.generatePyQtToolPath("pyrcc5"), '-version', '', -1, versionRe='Resource Compiler|pyrcc5') - # 3.1 do the PySide programs - # 3.1a. Translation Extractor PySide - self.__createProgramEntry( - self.tr("Translation Extractor (Python, PySide)"), - Utilities.generatePySideToolPath("pyside-lupdate", "1"), - '-version', '', -1, versionRe='lupdate') - # 3.1b. Forms Compiler PySide - self.__createProgramEntry( - self.tr("Forms Compiler (Python, PySide)"), - Utilities.generatePySideToolPath("pyside-uic", "1"), - '--version', 'PySide User', 5, versionCleanup=(0, -1)) - # 3.1c Resource Compiler PySide - self.__createProgramEntry( - self.tr("Resource Compiler (Python, PySide)"), - Utilities.generatePySideToolPath("pyside-rcc", "1"), - '-version', 'Resource Compiler', -1) - - # 3.2 do the PySide2 programs - # 3.2a. Translation Extractor PySide2 + # 3. do the PySide programs + # 3.1 do the PySide2 programs + # 3.1a. Translation Extractor PySide2 self.__createProgramEntry( self.tr("Translation Extractor (Python, PySide2)"), - Utilities.generatePySideToolPath("pyside2-lupdate", "2"), + Utilities.generatePySideToolPath("pyside2-lupdate"), '-version', '', -1, versionRe='lupdate') - # 3.2b. Forms Compiler PySide2 + # 3.1b. Forms Compiler PySide2 self.__createProgramEntry( self.tr("Forms Compiler (Python, PySide2)"), - Utilities.generatePySideToolPath("pyside2-uic", "2"), + Utilities.generatePySideToolPath("pyside2-uic"), '--version', '', -1, versionRe='uic') - # 3.2c Resource Compiler PySide2 + # 3.1c Resource Compiler PySide2 self.__createProgramEntry( self.tr("Resource Compiler (Python, PySide2)"), - Utilities.generatePySideToolPath("pyside2-rcc", "2"), + Utilities.generatePySideToolPath("pyside2-rcc"), '-version', '', -1, versionRe='rcc') - # 4. do the Ruby programs - # 4a. Forms Compiler for Qt4 - self.__createProgramEntry( - self.tr("Forms Compiler (Ruby, Qt4)"), - Utilities.isWindowsPlatform() and "rbuic4.exe" or "rbuic4", - '-version', 'Qt', -1) - # 4b. Resource Compiler for Qt4 - self.__createProgramEntry( - self.tr("Resource Compiler (Ruby, Qt4)"), - Utilities.isWindowsPlatform() and "rbrcc.exe" or "rbrcc", - '-version', 'Ruby Resource Compiler', -1) - - # 5. do the Conda program(s) + # 4. do the Conda program(s) exe = Preferences.getConda("CondaExecutable") if not exe: exe = "conda" @@ -231,7 +185,7 @@ self.__createProgramEntry( self.tr("conda Manager"), exe, '--version', 'conda', -1) - # 6. do the pip program(s) + # 5. do the pip program(s) virtualenvManager = e5App().getObject("VirtualEnvManager") for venvName in virtualenvManager.getVirtualenvNames(): interpreter = virtualenvManager.getVirtualenvInterpreter(venvName) @@ -239,8 +193,8 @@ self.tr("PyPI Package Management"), interpreter, '--version', 'pip', 1, exeModule=["-m", "pip"]) - # 7. do the CORBA and Protobuf programs - # 7a. omniORB + # 6. do the CORBA and Protobuf programs + # 6a. omniORB exe = Preferences.getCorba("omniidl") if not exe: exe = "omniidl" @@ -248,7 +202,7 @@ exe += ".exe" self.__createProgramEntry( self.tr("CORBA IDL Compiler"), exe, '-V', 'omniidl', -1) - # 7b. protobuf + # 6b. protobuf exe = Preferences.getProtobuf("protoc") if not exe: exe = "protoc" @@ -256,7 +210,7 @@ exe += ".exe" self.__createProgramEntry( self.tr("Protobuf Compiler"), exe, '--version', 'libprotoc', -1) - # 7c. grpc + # 6c. grpc exe = Preferences.getProtobuf("grpcPython") if not exe: exe = sys.executable @@ -264,7 +218,7 @@ self.tr("gRPC Compiler"), exe, '--version', 'libprotoc', -1, exeModule=['-m', 'grpc_tools.protoc']) - # 8. do the spell checking entry + # 7. do the spell checking entry try: import enchant try: @@ -281,7 +235,7 @@ self.__createEntry( self.tr("Spell Checker - PyEnchant"), text, version) - # 9. do the pygments entry + # 8. do the pygments entry try: import pygments try: @@ -298,7 +252,7 @@ self.__createEntry( self.tr("Source Highlighter - Pygments"), text, version) - # 10. do the MicroPython related entries + # 9. do the MicroPython related entries exe = Preferences.getMicroPython("MpyCrossCompiler") if not exe: exe = "mpy-cross"
--- a/eric6/Preferences/__init__.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Preferences/__init__.py Sun Jul 05 11:11:24 2020 +0200 @@ -17,6 +17,7 @@ """ +import ast import os import fnmatch import shutil @@ -81,12 +82,8 @@ "SuppressClientExit": False, "BreakAlways": False, "ShowExceptionInShell": True, - "Python2VirtualEnv": "", "Python3VirtualEnv": "", "RubyInterpreter": "", - "DebugClientType": "standard", - # supported "standard", "custom" - "DebugClient": "", "DebugClientType3": "standard", # supported "standard", "custom" "DebugClient3": "", @@ -108,8 +105,6 @@ "BgColorNew": QColor("#28FFEEAA"), "BgColorChanged": QColor("#2870FF66"), "AllowedHosts": ["127.0.0.1", "::1%0"], - # space separated list of Python2 extensions - "PythonExtensions": ".py2 .pyw2 .ptl", # space separated list of Python3 extensions "Python3Extensions": ".py .pyw .py3 .pyw3", # Global Multiprocess Debugging Support @@ -471,7 +466,7 @@ "DefaultEncoding": "utf-8", "DefaultOpenFilter": QCoreApplication.translate( - 'Lexers', 'Python Files (*.py *.py2 *.py3)'), + 'Lexers', 'Python Files (*.py *.py3)'), "DefaultSaveFilter": QCoreApplication.translate( 'Lexers', "Python3 Files (*.py)"), "AdditionalOpenFilters": [], @@ -807,23 +802,6 @@ # defaults for the project browser flags settings projectBrowserFlagsDefaults = { - # deprecated - "Qt4": ( - SourcesBrowserFlag | - FormsBrowserFlag | - ResourcesBrowserFlag | - TranslationsBrowserFlag | - InterfacesBrowserFlag | - OthersBrowserFlag | - ProtocolsBrowserFlag), - # deprecated - "Qt4C": ( - SourcesBrowserFlag | - ResourcesBrowserFlag | - TranslationsBrowserFlag | - InterfacesBrowserFlag | - OthersBrowserFlag | - ProtocolsBrowserFlag), "PyQt5": ( SourcesBrowserFlag | FormsBrowserFlag | @@ -857,21 +835,6 @@ InterfacesBrowserFlag | OthersBrowserFlag | ProtocolsBrowserFlag), - "PySide": ( - SourcesBrowserFlag | - FormsBrowserFlag | - ResourcesBrowserFlag | - TranslationsBrowserFlag | - InterfacesBrowserFlag | - OthersBrowserFlag | - ProtocolsBrowserFlag), - "PySideC": ( - SourcesBrowserFlag | - ResourcesBrowserFlag | - TranslationsBrowserFlag | - InterfacesBrowserFlag | - OthersBrowserFlag | - ProtocolsBrowserFlag), "PySide2": ( SourcesBrowserFlag | FormsBrowserFlag | @@ -905,12 +868,8 @@ helpDefaults = { "CustomViewer": "", "PythonDocDir": "", - "Python2DocDir": "", - "Qt4DocDir": "", "Qt5DocDir": "", - "PyQt4DocDir": "", "PyQt5DocDir": "", - "PySideDocDir": "", "PySide2DocDir": "", "EricDocDir": "", } @@ -1621,7 +1580,6 @@ # backward compatibility fot Qt < 5.10 pass - # Avoid nasty behavior of QSettings in combination with Py2 Prefs.settings.value("UI/SingleApplicationMode") @@ -1714,9 +1672,9 @@ @param prefClass preferences class used as the storage area @return a tuple defining the variables filter """ - localsFilter = eval(prefClass.settings.value( + localsFilter = ast.literal_eval(prefClass.settings.value( "Variables/LocalsFilter", prefClass.varDefaults["LocalsFilter"])) - globalsFilter = eval(prefClass.settings.value( + globalsFilter = ast.literal_eval(prefClass.settings.value( "Variables/GlobalsFilter", prefClass.varDefaults["GlobalsFilter"])) return (localsFilter, globalsFilter) @@ -1763,10 +1721,8 @@ "Debugger/" + key, prefClass.debuggerDefaults[key])) elif key in ["PythonInterpreter", "Python3Interpreter"]: # This code is here to ensure backward compatibility. - if key == "PythonInterpreter": - newKey = "Python2VirtualEnv" - else: - newKey = "Python3VirtualEnv" + # Keep "PythonInterpreter" for backward compatibility. + newKey = "Python3VirtualEnv" venvName = prefClass.settings.value( "Debugger/" + newKey, prefClass.debuggerDefaults[newKey]) if venvName: @@ -1780,11 +1736,9 @@ else: interpreter = "" if not interpreter: - pyVersion = 2 if key == "PythonInterpreter" else 3 - if sys.version_info[0] == pyVersion: - return sys.executable + return sys.executable return interpreter - elif key in ["DebugClientType", "DebugClientType3"]: + elif key == "DebugClientType3": debugClientType = prefClass.settings.value( "Debugger/" + key, prefClass.debuggerDefaults[key]) # Correct obsolete entry "threaded" @@ -1792,6 +1746,12 @@ return "standard" else: return debugClientType + elif key == "PythonExtensions": + # we don't support Python2 anymore + return "" + elif key == "Python2VirtualEnv": + # we don't support Python2 anymore + return "" else: return prefClass.settings.value( "Debugger/" + key, prefClass.debuggerDefaults[key]) @@ -1816,7 +1776,11 @@ @param prefClass preferences class used as the storage area @return the requested debugger setting """ - if key in ["PythonExtensions", "Python3Extensions"]: + if key == "PythonExtensions": + # we don't support Python2 anymore + return [] + + if key == "Python3Extensions": exts = [] for ext in getDebugger(key, prefClass).split(): if ext.startswith("."): @@ -1836,7 +1800,7 @@ @param value the value to be set @param prefClass preferences class used as the storage area """ - if key in ["PythonExtensions", "Python3Extensions"]: + if key == "Python3Extensions": setDebugger(key, value, prefClass) @@ -2633,7 +2597,7 @@ else: return prefClass.settings.value( "MultiProject/" + key, prefClass.multiProjectDefaults[key]) - + def setMultiProject(key, value, prefClass=Prefs): """ @@ -2644,24 +2608,7 @@ @param prefClass preferences class used as the storage area """ prefClass.settings.setValue("MultiProject/" + key, value) - -def getQt4DocDir(prefClass=Prefs): - """ - Module function to retrieve the Qt4DocDir setting. - - @param prefClass preferences class used as the storage area - @return the requested Qt4DocDir setting (string) - """ - s = prefClass.settings.value( - "Help/Qt4DocDir", prefClass.helpDefaults["Qt4DocDir"]) - if s == "": - s = os.getenv("QT4DOCDIR", "") - if s == "": - s = os.path.join( - QLibraryInfo.location(QLibraryInfo.DocumentationPath), "html") - return s - def getQt5DocDir(prefClass=Prefs): """
--- a/eric6/Project/CreateDialogCodeDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/CreateDialogCodeDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -288,22 +288,18 @@ # I. always check for * mapped = mapped.replace("*", "") - if ( - self.project.getProjectLanguage() != "Python2" or - self.project.getProjectType in ("PySide", "PySide2") - ): - # 1. check for const - mapped = mapped.replace("const ", "") - - # 2. replace QString and QStringList - mapped = ( - mapped - .replace("QStringList", "list") - .replace("QString", "str") - ) - - # 3. replace double by float - mapped = mapped.replace("double", "float") + # 1. check for const + mapped = mapped.replace("const ", "") + + # 2. replace QString and QStringList + mapped = ( + mapped + .replace("QStringList", "list") + .replace("QString", "str") + ) + + # 3. replace double by float + mapped = mapped.replace("double", "float") return mapped @@ -377,7 +373,7 @@ elif self.filenameEdit.text().endswith(".rb"): pass # second decide on project language - elif self.project.getProjectLanguage() in ["Python2", "Python3"]: + elif self.project.getProjectLanguage() == "Python3": self.__generatePythonCode() elif self.project.getProjectLanguage() == "Ruby": pass @@ -389,6 +385,16 @@ """ Private slot to generate Python code as requested by the user. """ + if self.project.getProjectLanguage() != "Python3": + E5MessageBox.critical( + self, + self.tr("Code Generation"), + self.tr( + """<p>Code generation for project language""" + """ "{0}" is not supported.</p>""") + .format(self.project.getProjectLanguage())) + return + # init some variables sourceImpl = [] appendAtIndex = -1 @@ -398,41 +404,24 @@ if self.__module is None: # new file try: - if self.project.getProjectLanguage() == "Python2": - if self.project.getProjectType() == "PySide": - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyside.py2.tmpl") - elif self.project.getProjectType() == "PySide2": - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyside2.py2.tmpl") - elif self.project.getProjectType() == "PyQt5": - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyqt5.py2.tmpl") - else: - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyqt.py2.tmpl") + if self.project.getProjectType() == "PySide2": + tmplName = os.path.join( + getConfig('ericCodeTemplatesDir'), + "impl_pyside2.py.tmpl") + elif self.project.getProjectType() in [ + "PyQt5", "E6Plugin"]: + tmplName = os.path.join( + getConfig('ericCodeTemplatesDir'), + "impl_pyqt5.py.tmpl") else: - if self.project.getProjectType() == "PySide": - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyside.py.tmpl") - elif self.project.getProjectType() == "PySide2": - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyside2.py.tmpl") - elif self.project.getProjectType() in [ - "PyQt5", "E6Plugin"]: - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyqt5.py.tmpl") - else: - tmplName = os.path.join( - getConfig('ericCodeTemplatesDir'), - "impl_pyqt.py.tmpl") + E5MessageBox.critical( + self, + self.tr("Code Generation"), + self.tr( + """<p>No code template file available for""" + """ project type "{0}".</p>""") + .format(self.project.getProjectType())) + return tmplFile = open(tmplName, 'r', encoding="utf-8") template = tmplFile.read() tmplFile.close() @@ -503,18 +492,10 @@ break # do the coding stuff - if self.project.getProjectLanguage() == "Python2": - if self.project.getProjectType() in ("PySide", "PySide2"): - pyqtSignatureFormat = '@Slot({0})' - elif self.project.getProjectType() == "PyQt5": - pyqtSignatureFormat = '@pyqtSlot({0})' - else: - pyqtSignatureFormat = '@pyqtSignature("{0}")' + if self.project.getProjectType() in ("PySide2",): + pyqtSignatureFormat = '@Slot({0})' else: - if self.project.getProjectType() in ("PySide", "PySide2"): - pyqtSignatureFormat = '@Slot({0})' - else: - pyqtSignatureFormat = '@pyqtSlot({0})' + pyqtSignatureFormat = '@pyqtSlot({0})' for row in range(self.slotsModel.rowCount()): topItem = self.slotsModel.item(row) for childRow in range(topItem.rowCount()):
--- a/eric6/Project/DebuggerPropertiesDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/DebuggerPropertiesDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -68,9 +68,7 @@ venvIndex = max(0, self.venvComboBox.findText( self.project.debugProperties["VIRTUALENV"])) else: - if self.project.pdata["PROGLANGUAGE"] == "Python2": - venvName = Preferences.getDebugger("Python2VirtualEnv") - elif self.project.pdata["PROGLANGUAGE"] == "Python3": + if self.project.pdata["PROGLANGUAGE"] == "Python3": venvName = Preferences.getDebugger("Python3VirtualEnv") else: venvName = "" @@ -86,8 +84,7 @@ self.project.debugProperties["DEBUGCLIENT"], toNative=False) else: - if self.project.pdata["PROGLANGUAGE"] in ["Python", "Python2", - "Python3"]: + if self.project.pdata["PROGLANGUAGE"] == "Python3": debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Python", "DebugClient.py") @@ -145,8 +142,7 @@ self.debugClientPicker.text(toNative=False) ) if not self.project.debugProperties["DEBUGCLIENT"]: - if self.project.pdata["PROGLANGUAGE"] in ["Python", "Python2", - "Python3"]: + if self.project.pdata["PROGLANGUAGE"] == "Python3": debugClient = os.path.join( getConfig('ericDir'), "DebugClients", "Python", "DebugClient.py")
--- a/eric6/Project/LexerAssociationDialog.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/LexerAssociationDialog.py Sun Jul 05 11:11:24 2020 +0200 @@ -55,7 +55,7 @@ lang) from pygments.lexers import get_all_lexers - pygmentsLexers = [''] + sorted(l[0] for l in get_all_lexers()) + pygmentsLexers = [''] + sorted(lex[0] for lex in get_all_lexers()) self.pygmentsLexerCombo.addItems(pygmentsLexers) # set initial values
--- a/eric6/Project/Project.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/Project.py Sun Jul 05 11:11:24 2020 +0200 @@ -164,7 +164,6 @@ self.ui = parent self.__progLanguages = [ - "Python2", "Python3", "MicroPython", "Ruby", @@ -172,9 +171,6 @@ ] self.__dbgFilters = { - "Python2": self.tr( - "Python2 Files (*.py2);;" - "Python2 GUI Files (*.pyw2);;"), "Python3": self.tr( "Python3 Files (*.py *.py3);;" "Python3 GUI Files (*.pyw *.pyw3);;"), @@ -212,14 +208,7 @@ @param language programming language (string) @return source extensions (list of string) """ - if language == "Python2": - extensions = Preferences.getPython("PythonExtensions") - # *.py and *.pyw should always be associated with source files - for ext in [".py", ".pyw"]: - if ext not in extensions: - extensions.append(ext) - return extensions - elif language == "Python3": + if language == "Python3": extensions = Preferences.getPython("Python3Extensions") # *.py and *.pyw should always be associated with source files for ext in [".py", ".pyw"]: @@ -239,7 +228,6 @@ return ['.js'] elif language == "Mixed": return (Preferences.getPython("Python3Extensions") + - Preferences.getPython("PythonExtensions") + ['.rb', '.js']) else: return [""] @@ -275,8 +263,6 @@ self.__binaryTranslationsCallbacks = {} self.__projectTypes = { - "Qt4": self.tr("PyQt4 GUI (deprecated)"), - "Qt4C": self.tr("PyQt4 Console (deprecated)"), "PyQt5": self.tr("PyQt5 GUI"), "PyQt5C": self.tr("PyQt5 Console"), "E6Plugin": self.tr("Eric6 Plugin"), @@ -285,36 +271,17 @@ } self.__projectProgLanguages = { - "Python2": ["Qt4", "Qt4C", "PyQt5", "PyQt5C", - "E6Plugin", "Console", "Other"], - "Python3": ["Qt4", "Qt4C", "PyQt5", "PyQt5C", - "E6Plugin", "Console", "Other"], + "Python3": ["PyQt5", "PyQt5C", "E6Plugin", "Console", "Other"], "MicroPython": ["Console", "Other"], - "Ruby": ["Qt4", "Qt4C", "Console", "Other"], + "Ruby": ["Console", "Other"], "JavaScript": ["Other"], } - pyside_py2, pyside_py3 = Utilities.checkPyside("1") - if pyside_py2 or pyside_py3: - self.__projectTypes["PySide"] = self.tr("PySide GUI") - self.__projectTypes["PySideC"] = self.tr("PySide Console") - if pyside_py2: - self.__projectProgLanguages["Python2"].extend( - ["PySide", "PySideC"]) - if pyside_py3: - self.__projectProgLanguages["Python3"].extend( - ["PySide", "PySideC"]) - - pyside2_py2, pyside2_py3 = Utilities.checkPyside("2") - if pyside2_py2 or pyside2_py3: + if Utilities.checkPyside(): self.__projectTypes["PySide2"] = self.tr("PySide2 GUI") self.__projectTypes["PySide2C"] = self.tr("PySide2 Console") - if pyside2_py2: - self.__projectProgLanguages["Python2"].extend( - ["PySide2", "PySide2C"]) - if pyside2_py3: - self.__projectProgLanguages["Python3"].extend( - ["PySide2", "PySide2C"]) + self.__projectProgLanguages["Python3"].extend( + ["PySide2", "PySide2C"]) def getProjectTypes(self, progLanguage=""): """ @@ -369,14 +336,18 @@ """ if progLanguages: for progLanguage in progLanguages: + if progLanguage in ["Python", "Python2"]: + # ignore that silently for Python2 + return + if progLanguage not in self.__projectProgLanguages: E5MessageBox.critical( self.ui, self.tr("Registering Project Type"), self.tr( """<p>The Programming Language <b>{0}</b> is not""" - """ supported.</p>""") - .format(progLanguage) + """ supported (project type: {1}).</p>""") + .format(progLanguage, type_) ) return @@ -616,24 +587,20 @@ self.pdata["FILETYPES"]["*.proto"] = "PROTOCOLS" # Forms - if self.pdata["PROJECTTYPE"] in ["Qt4", "PyQt5", - "E6Plugin", "PySide", + if self.pdata["PROJECTTYPE"] in ["E6Plugin", + "PyQt5", "PySide2"]: self.pdata["FILETYPES"]["*.ui"] = "FORMS" # Resources - if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", - "E6Plugin", + if self.pdata["PROJECTTYPE"] in ["E6Plugin", "PyQt5", "PyQt5C", - "PySide", "PySideC", "PySide2", "PySide2C"]: self.pdata["FILETYPES"]["*.qrc"] = "RESOURCES" # Translations - if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", - "E6Plugin", + if self.pdata["PROJECTTYPE"] in ["E6Plugin", "PyQt5", "PyQt5C", - "PySide", "PySideC", "PySide2", "PySide2C"]: self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" self.pdata["FILETYPES"]["*.qm"] = "TRANSLATIONS" @@ -654,10 +621,8 @@ Public method to update the filetype associations with new default values. """ - if self.pdata["PROJECTTYPE"] in ["Qt4", "Qt4C", - "E6Plugin", + if self.pdata["PROJECTTYPE"] in ["E6Plugin", "PyQt5", "PyQt5C", - "PySide", "PySideC", "PySide2", "PySide2C"]: if "*.ts" not in self.pdata["FILETYPES"]: self.pdata["FILETYPES"]["*.ts"] = "TRANSLATIONS" @@ -1414,8 +1379,7 @@ if dlg.exec_() == QDialog.Accepted: lang = dlg.getSelectedLanguage() if self.pdata["PROJECTTYPE"] in [ - "Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC", "PySide2", "PySide2C" + "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C" ]: langFile = self.pdata["TRANSLATIONPATTERN"].replace( "%language%", lang) @@ -2385,7 +2349,7 @@ # create an empty __init__.py file to make it a Python package # (only for Python and Python3) if self.pdata["PROGLANGUAGE"] in [ - "Python", "Python2", "Python3", "MicroPython" + "Python3", "MicroPython" ]: fn = os.path.join(self.ppath, "__init__.py") f = open(fn, "w", encoding="utf-8") @@ -2499,7 +2463,7 @@ # create an empty __init__.py file to make it a Python package # if none exists (only for Python and Python3) if self.pdata["PROGLANGUAGE"] in [ - "Python", "Python2", "Python3", "MicroPython" + "Python3", "MicroPython" ]: fn = os.path.join(self.ppath, "__init__.py") if not os.path.exists(fn): @@ -2731,7 +2695,7 @@ self.projectLanguageAdded.emit(qm) if not self.pdata["MAINSCRIPT"] and bool(mainscriptname): if self.pdata["PROGLANGUAGE"] in [ - "Python", "Python2", "Python3", "MicroPython" + "Python3", "MicroPython" ]: self.pdata["MAINSCRIPT"] = '{0}.py'.format(mainscriptname) elif self.pdata["PROGLANGUAGE"] == "Ruby": @@ -3444,13 +3408,12 @@ def isPythonProject(self): """ - Public method to check, if this project is a Python2 or Python3 + Public method to check, if this project is a Python3 or MicroPython project. @return flag indicating a Python project (boolean) """ - return self.pdata["PROGLANGUAGE"] in ["Python", "Python2", - "Python3", "MicroPython"] + return self.pdata["PROGLANGUAGE"] in ["Python3", "MicroPython"] def isPy3Project(self): """ @@ -3459,15 +3422,7 @@ @return flag indicating a Python3 project (boolean) """ return self.pdata["PROGLANGUAGE"] == "Python3" - - def isPy2Project(self): - """ - Public method to check, if this project is a Python2 project. - - @return flag indicating a Python2 project (boolean) - """ - return self.pdata["PROGLANGUAGE"] in ["Python", "Python2"] - + def isMicroPythonProject(self): """ Public method to check, if this project is a MicroPython project. @@ -3529,7 +3484,7 @@ if lang == "": lang = "Python3" elif lang == "Python": - lang = "Python2" + lang = "Python3" return self.__sourceExtensions(lang)[0] def getProjectPath(self): @@ -5116,7 +5071,7 @@ os.path.isfile("{0}.profile".format(basename)) or os.path.isfile("{0}.profile".format(tbasename))) self.codeCoverageAct.setEnabled( - (self.isPy3Project() or self.isPy2Project()) and + self.isPy3Project() and (os.path.isfile("{0}.coverage".format(basename)) or os.path.isfile("{0}.coverage".format(tbasename)))) else:
--- a/eric6/Project/ProjectBrowser.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectBrowser.py Sun Jul 05 11:11:24 2020 +0200 @@ -283,9 +283,7 @@ if not self.project.isOpen(): icon = UI.PixmapCache.getIcon("projectSources") else: - if self.project.getProjectLanguage() in [ - "Python", "Python2", "Python3" - ]: + if self.project.getProjectLanguage() == "Python3": if self.project.isMixedLanguageProject(): icon = UI.PixmapCache.getIcon("projectSourcesPyMixed") else:
--- a/eric6/Project/ProjectBrowserFlags.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectBrowserFlags.py Sun Jul 05 11:11:24 2020 +0200 @@ -24,6 +24,3 @@ OthersBrowserFlag | ProtocolsBrowserFlag ) - -# -# eflag: noqa = M702
--- a/eric6/Project/ProjectFormsBrowser.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectFormsBrowser.py Sun Jul 05 11:11:24 2020 +0200 @@ -74,7 +74,7 @@ """ context menu.</p>""" )) - # templates for Qt4 + # templates for Qt # these two lists have to stay in sync self.templates4 = [ 'dialog4.tmpl', 'widget4.tmpl', 'mainwindow4.tmpl', @@ -125,9 +125,7 @@ self.menusAboutToBeCreated.emit() self.menu = QMenu(self) - if self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" - ]: + if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]: self.menu.addAction( self.tr('Compile form'), self.__compileForm) self.menu.addAction( @@ -187,9 +185,7 @@ act = self.menu.addAction(self.tr('Delete'), self.__deleteFile) self.menuActions.append(act) self.menu.addSeparator() - if self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" - ]: + if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]: self.menu.addAction(self.tr('New form...'), self.__newForm) else: if self.hooks["newForm"] is not None: @@ -213,7 +209,7 @@ self.backMenu = QMenu(self) if ( self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" + "PyQt5", "E6Plugin", "PySide2" ] or self.hooks["compileAllForms"] is not None ): @@ -245,9 +241,7 @@ # create the menu for multiple selected files self.multiMenu = QMenu(self) - if self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" - ]: + if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]: self.multiMenu.addAction( self.tr('Compile forms'), self.__compileSelectedForms) self.multiMenu.addSeparator() @@ -292,9 +286,7 @@ self.multiMenu.addAction(self.tr('Configure...'), self._configure) self.dirMenu = QMenu(self) - if self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" - ]: + if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]: self.dirMenu.addAction( self.tr('Compile all forms'), self.__compileAllForms) self.dirMenu.addSeparator() @@ -317,9 +309,7 @@ self.tr('Delete'), self._deleteDirectory) self.dirMenuActions.append(act) self.dirMenu.addSeparator() - if self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" - ]: + if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]: self.dirMenu.addAction(self.tr('New form...'), self.__newForm) else: if self.hooks["newForm"] is not None: @@ -343,9 +333,7 @@ self.dirMenu.addAction(self.tr('Configure...'), self._configure) self.dirMultiMenu = QMenu(self) - if self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" - ]: + if self.project.getProjectType() in ["PyQt5", "E6Plugin", "PySide2"]: self.dirMultiMenu.addAction( self.tr('Compile all forms'), self.__compileAllForms) self.dirMultiMenu.addSeparator() @@ -390,7 +378,7 @@ if not self.project.isOpen(): return - enable = self.project.getProjectType() in ("Qt4", "PyQt5", "E6Plugin") + enable = self.project.getProjectType() in ("PyQt5", "E6Plugin") self.__pyuicConfigAct.setEnabled(enable) self.__pyuicMultiConfigAct.setEnabled(enable) self.__pyuicDirConfigAct.setEnabled(enable) @@ -427,7 +415,7 @@ self.backMenu.popup(self.mapToGlobal(coord)) else: self.backMenu.popup(self.mapToGlobal(coord)) - except Exception: + except Exception: # secok pass def __showContextMenu(self): @@ -515,7 +503,7 @@ self.hooks["open"](itm.fileName()) else: self.designerFile.emit(itm.fileName()) - except Exception: + except Exception: # secok pass def __openFileInEditor(self): @@ -578,7 +566,7 @@ self.hooks["newForm"](path) else: if self.project.getProjectType() in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" + "PyQt5", "E6Plugin", "PySide2" ]: self.__newUiForm(path) @@ -690,30 +678,16 @@ """ self.__resetUiCompiler() - if self.project.getProjectLanguage() in [ - "Python", "Python2", "Python3" - ]: - if self.project.getProjectType() in ["Qt4", ]: - self.__uicompiler = Utilities.generatePyQtToolPath( - 'pyuic4', ["py3uic4"]) - elif self.project.getProjectType() in ["PyQt5"]: + if self.project.getProjectLanguage() == "Python3": + if self.project.getProjectType() in ["PyQt5"]: self.__uicompiler = Utilities.generatePyQtToolPath( 'pyuic5', ["py3uic5"]) elif self.project.getProjectType() in ["E6Plugin"]: self.__uicompiler = Utilities.generatePyQtToolPath( 'pyuic5', ["py3uic5"]) - elif self.project.getProjectType() == "PySide": - self.__uicompiler = Utilities.generatePySideToolPath( - 'pyside-uic', "1") elif self.project.getProjectType() == "PySide2": self.__uicompiler = Utilities.generatePySideToolPath( - 'pyside2-uic', "2") - elif self.project.getProjectLanguage() == "Ruby": - if self.project.getProjectType() == "Qt4": - self.__uicompiler = 'rbuic4' - if Utilities.isWindowsPlatform(): - self.__uicompiler = Utilities.getWindowsExecutablePath( - self.__uicompiler) + 'pyside2-uic') def getUiCompiler(self): """ @@ -730,7 +704,7 @@ def __readStdout(self): """ Private slot to handle the readyReadStandardOutput signal of the - pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. + pyuic5/pyside2-uic process. """ if self.compileProc is None: return @@ -743,7 +717,7 @@ def __readStderr(self): """ Private slot to handle the readyReadStandardError signal of the - pyuic4/pyuic5/pyside-uic/pyside2-uic/rbuic4 process. + pyuic5/pyside2-uic process. """ if self.compileProc is None: return @@ -842,18 +816,16 @@ ofn, ext = os.path.splitext(fn) fn = os.path.join(self.project.ppath, fn) - if self.project.getProjectLanguage() in [ - "Python", "Python2", "Python3" - ]: + if self.project.getProjectLanguage() == "Python3": dirname, filename = os.path.split(ofn) self.compiledFile = os.path.join(dirname, "Ui_" + filename + ".py") - if self.project.getProjectType() in ["PySide", "PySide2"]: - # PySide and PySide2 + if self.project.getProjectType() == "PySide2": + # PySide2 if Preferences.getQt("PySide2FromImports"): args.append("--from-imports") else: - # PyQt4 and PyQt5 + # PyQt5 if Preferences.getQt("PyuicExecute"): args.append("-x") indentWidth = Preferences.getQt("PyuicIndent") @@ -902,7 +874,7 @@ def __generateDialogCode(self): """ - Private method to generate dialog code for the form (Qt4 only). + Private method to generate dialog code for the form (Qt only). """ itm = self.model().item(self.currentIndex()) fn = itm.fileName() @@ -1017,7 +989,7 @@ self.hooks["compileChangedForms"](self.project.pdata["FORMS"]) else: if self.project.getProjectType() not in [ - "Qt4", "PyQt5", "E6Plugin", "PySide", "PySide2" + "PyQt5", "E6Plugin", "PySide2" ]: # ignore the request for non Qt GUI projects return @@ -1037,9 +1009,7 @@ QApplication.processEvents() ifn = os.path.join(self.project.ppath, fn) - if self.project.getProjectLanguage() in [ - "Python", "Python2", "Python3" - ]: + if self.project.getProjectLanguage() == "Python3": dirname, filename = os.path.split(os.path.splitext(ifn)[0]) ofn = os.path.join(dirname, "Ui_" + filename + ".py") elif self.project.getProjectLanguage() == "Ruby": @@ -1093,7 +1063,7 @@ params = self.project.pdata["UICPARAMS"] - if self.project.getProjectType() in ["Qt4", "PyQt5", "E6Plugin"]: + if self.project.getProjectType() in ["PyQt5", "E6Plugin"]: dlg = UicCompilerOptionsDialog(params, self.getUiCompiler()) if dlg.exec_() == QDialog.Accepted: package, suffix, root = dlg.getData()
--- a/eric6/Project/ProjectInterfacesBrowser.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectInterfacesBrowser.py Sun Jul 05 11:11:24 2020 +0200 @@ -338,7 +338,7 @@ self.backMenu.popup(self.mapToGlobal(coord)) else: self.backMenu.popup(self.mapToGlobal(coord)) - except Exception: + except Exception: # secok pass def __showContextMenu(self):
--- a/eric6/Project/ProjectOthersBrowser.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectOthersBrowser.py Sun Jul 05 11:11:24 2020 +0200 @@ -171,7 +171,7 @@ self.backMenu.popup(self.mapToGlobal(coord)) else: self.backMenu.popup(self.mapToGlobal(coord)) - except Exception: + except Exception: # secok pass def __showContextMenu(self):
--- a/eric6/Project/ProjectProtocolsBrowser.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectProtocolsBrowser.py Sun Jul 05 11:11:24 2020 +0200 @@ -330,7 +330,7 @@ self.backMenu.popup(self.mapToGlobal(coord)) else: self.backMenu.popup(self.mapToGlobal(coord)) - except Exception: + except Exception: # secok pass def __showContextMenu(self):
--- a/eric6/Project/ProjectResourcesBrowser.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectResourcesBrowser.py Sun Jul 05 11:11:24 2020 +0200 @@ -79,8 +79,7 @@ self.menu = QMenu(self) if self.project.getProjectType() in [ - "Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC", "PySide2", "PySideC2" + "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C" ]: self.menu.addAction( self.tr('Compile resource'), @@ -122,8 +121,7 @@ self.menuActions.append(act) self.menu.addSeparator() if self.project.getProjectType() in [ - "Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC", "PySide2", "PySideC2" + "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C" ]: self.menu.addAction( self.tr('New resource...'), self.__newResource) @@ -151,8 +149,7 @@ self.backMenu = QMenu(self) if self.project.getProjectType() in [ - "Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC", "PySide2", "PySideC2" + "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C" ]: self.backMenu.addAction( self.tr('Compile all resources'), @@ -194,8 +191,7 @@ # create the menu for multiple selected files self.multiMenu = QMenu(self) if self.project.getProjectType() in [ - "Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC", "PySide2", "PySideC2" + "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C" ]: act = self.multiMenu.addAction( self.tr('Compile resources'), @@ -231,8 +227,7 @@ self.dirMenu = QMenu(self) if self.project.getProjectType() in [ - "Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC", "PySide2", "PySideC2" + "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C" ]: self.dirMenu.addAction( self.tr('Compile all resources'), @@ -277,8 +272,7 @@ self.dirMultiMenu = QMenu(self) if self.project.getProjectType() in [ - "Qt4", "Qt4C", "PyQt5", "PyQt5C", "E6Plugin", - "PySide", "PySideC", "PySide2", "PySideC2" + "PyQt5", "PyQt5C", "E6Plugin", "PySide2", "PySide2C" ]: self.dirMultiMenu.addAction( self.tr('Compile all resources'), @@ -357,7 +351,7 @@ self.backMenu.popup(self.mapToGlobal(coord)) else: self.backMenu.popup(self.mapToGlobal(coord)) - except Exception: + except Exception: # secok pass def __showContextMenu(self): @@ -556,7 +550,7 @@ def __readStdout(self): """ Private slot to handle the readyReadStandardOutput signal of the - pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. + pyrcc5/pyside2-rcc process. """ if self.compileProc is None: return @@ -570,7 +564,7 @@ def __readStderr(self): """ Private slot to handle the readyReadStandardError signal of the - pyrcc4/pyrcc5/pyside-rcc/pyside2-rcc/rbrcc process. + pyrcc5/pyside2-rcc/ process. """ if self.compileProc is None: return @@ -656,33 +650,14 @@ args = [] self.buf = "" - if self.project.getProjectLanguage() in [ - "Python", "Python2", "Python3" - ]: - if self.project.getProjectType() in ["Qt4", "Qt4C"]: - self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc4') - if self.project.getProjectLanguage() in [ - "Python", "Python2" - ]: - args.append("-py2") - else: - args.append("-py3") - elif self.project.getProjectType() in ["PyQt5", "PyQt5C"]: + if self.project.getProjectLanguage() == "Python3": + if self.project.getProjectType() in ["PyQt5", "PyQt5C"]: self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc5') elif self.project.getProjectType() in ["E6Plugin"]: self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc5') - elif self.project.getProjectType() in ["PySide", "PySideC"]: - self.rccCompiler = Utilities.generatePySideToolPath( - 'pyside-rcc', "1") - if self.project.getProjectLanguage() in [ - "Python", "Python2" - ]: - args.append("-py2") - else: - args.append("-py3") elif self.project.getProjectType() in ["PySide2", "PySide2C"]: self.rccCompiler = Utilities.generatePySideToolPath( - 'pyside2-rcc', "2") + 'pyside2-rcc') else: return None defaultParameters = self.project.getDefaultRccCompilerParameters() @@ -707,13 +682,6 @@ if rccParameters["PathPrefix"] != defaultParameters["PathPrefix"]: args.append("-root") args.append(rccParameters["PathPrefix"]) - elif self.project.getProjectLanguage() == "Ruby": - if self.project.getProjectType() == "Qt4": - self.rccCompiler = 'rbrcc' - if Utilities.isWindowsPlatform(): - self.rccCompiler += '.exe' - else: - return None else: return None @@ -723,9 +691,7 @@ fn = os.path.join(self.project.ppath, fn) dirname, filename = os.path.split(ofn) - if self.project.getProjectLanguage() in [ - "Python", "Python2", "Python3" - ]: + if self.project.getProjectLanguage() == "Python3": self.compiledFile = os.path.join( dirname, self.RCFilenameFormatPython.format(filename)) elif self.project.getProjectLanguage() == "Ruby": @@ -903,9 +869,7 @@ progress.setValue(i) QApplication.processEvents() ifn = os.path.join(self.project.ppath, fn) - if self.project.getProjectLanguage() in [ - "Python", "Python2", "Python3" - ]: + if self.project.getProjectLanguage() == "Python3": dirname, filename = os.path.split(os.path.splitext(ifn)[0]) ofn = os.path.join( dirname, self.RCFilenameFormatPython.format(filename))
--- a/eric6/Project/ProjectSourcesBrowser.py Wed Jun 17 17:14:12 2020 +0200 +++ b/eric6/Project/ProjectSourcesBrowser.py Sun Jul 05 11:11:24 2020 +0200 @@ -670,7 +670,7 @@ self.backMenu.popup(self.mapToGlobal(coord)) else: self.backMenu.popup(self.mapToGlobal(coord)) - except Exception: + except Exception: # secok pass def __showContextMenu(self): @@ -736,8 +736,7 @@ (coEnable or os.path.isfile("{0}.coverage".format(basename)) or os.path.isfile("{0}.coverage".format(tbasename))) and - (self.project.isPy3Project() or - self.project.isPy2Project()) + self.project.isPy3Project() ) # now check the selected item @@ -752,7 +751,7 @@ coEnable = ( (coEnable or os.path.isfile("{0}.coverage".format(basename))) and - (itm.isPython3File() or itm.isPython2File()) + itm.isPython3File() ) self.profileMenuAction.setEnabled(prEnable) @@ -770,9 +769,7 @@