Sun, 21 Jan 2018 14:37:36 +0100
Improved executable and Python version determination and merged with remote changes.
.hgtags | file | annotate | diff | comparison | revisions | |
ChangeLog | file | annotate | diff | comparison | revisions | |
PluginPyLint.py | file | annotate | diff | comparison | revisions | |
PluginPyLint.zip | file | annotate | diff | comparison | revisions |
--- a/.hgtags Mon Jun 12 19:21:45 2017 +0200 +++ b/.hgtags Sun Jan 21 14:37:36 2018 +0100 @@ -12,10 +12,6 @@ a781953e37036d7ae391c10e3f64e0955458bccb release-6.1.0 69c4c0e04bf62a0e37fffd7b639306518584c1f8 release-6.1.1 beb6e8b9504fe84b5bd5dc0fa644ad26d2dd153a release-6.1.2 -c47e613f3f371acb4bc67a1fc998e6616a3acaa9 release-6.1.4 -c47e613f3f371acb4bc67a1fc998e6616a3acaa9 release-6.1.4 -0000000000000000000000000000000000000000 release-6.1.4 -0000000000000000000000000000000000000000 release-6.1.4 d0596867f061255ab46e3401acc4bdfe6c435c2a release-6.1.4 971dd1b69f5bfbc06dfbc8f84c53457906491756 release-6.1.5 3d7ca91127c5d08114d030309ef36973fb45571b release-6.1.6
--- a/ChangeLog Mon Jun 12 19:21:45 2017 +0200 +++ b/ChangeLog Sun Jan 21 14:37:36 2018 +0100 @@ -1,5 +1,8 @@ ChangeLog --------- +Version 6.1.9: +- improved executable and Python version determination + Version 6.1.8: - extended the executable search algorithm to handle more Linux distribution variants
--- a/PluginPyLint.py Mon Jun 12 19:21:45 2017 +0200 +++ b/PluginPyLint.py Sun Jan 21 14:37:36 2018 +0100 @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2007 - 2017 Detlev Offenbach <detlev@die-offenbachs.de> +# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> # """ @@ -35,7 +35,7 @@ author = "Detlev Offenbach <detlev@die-offenbachs.de>" autoactivate = True deactivateable = True -version = "6.1.8" +version = "6.1.9" className = "PyLintPlugin" packageName = "PyLint" shortDescription = "Show the PyLint dialogs." @@ -153,37 +153,40 @@ pass return exes + versionSuffixes = ["", "-32", "-64"] for minorVersion in minorVersions: - versionStr = '{0}.{1}'.format(majorVersion, minorVersion) - exePaths = getExePath( - winreg.HKEY_CURRENT_USER, - winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) - if exePaths: - for exePath in exePaths: - executables.add(exePath) - - exePaths = getExePath( - winreg.HKEY_LOCAL_MACHINE, - winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) - if exePaths: - for exePath in exePaths: - executables.add(exePath) - - # Even on Intel 64-bit machines it's 'AMD64' - if platform.machine() == 'AMD64': + for versionSuffix in versionSuffixes: + versionStr = '{0}.{1}{2}'.format(majorVersion, minorVersion, + versionSuffix) exePaths = getExePath( winreg.HKEY_CURRENT_USER, - winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) + winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) if exePaths: for exePath in exePaths: executables.add(exePath) - exePath = getExePath( + exePaths = getExePath( winreg.HKEY_LOCAL_MACHINE, - winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) + winreg.KEY_WOW64_32KEY | winreg.KEY_READ, versionStr) if exePaths: for exePath in exePaths: executables.add(exePath) + + # Even on Intel 64-bit machines it's 'AMD64' + if platform.machine() == 'AMD64': + exePaths = getExePath( + winreg.HKEY_CURRENT_USER, + winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) + if exePaths: + for exePath in exePaths: + executables.add(exePath) + + exePath = getExePath( + winreg.HKEY_LOCAL_MACHINE, + winreg.KEY_WOW64_64KEY | winreg.KEY_READ, versionStr) + if exePaths: + for exePath in exePaths: + executables.add(exePath) else: # # Linux, Unix ... @@ -211,22 +214,22 @@ exes.append(exe) # step 2: determine the Python variant - if Utilities.isMacPlatform(): - checkStrings = ["Python.framework/Versions/3".lower(), - "python3", "python"] - else: - checkStrings = ["python3"] - _exePy2 = set() _exePy3 = set() + versionArgs = ["-c", "import sys; print(sys.version_info[0])"] for exe in exes: try: f = open(exe, "r") line0 = f.readline() - for checkStr in checkStrings: - if checkStr in line0.lower(): - _exePy3.add(exe) - break + program = line0.replace("#!", "").strip() + process = QProcess() + process.start(program, versionArgs) + process.waitForFinished(5000) + # get a QByteArray of the output + versionBytes = process.readAllStandardOutput() + versionStr = str(versionBytes, encoding='utf-8').strip() + if versionStr == "3": + _exePy3.add(exe) else: _exePy2.add(exe) finally:
--- a/PyLint/PyLintConfigDialog.py Mon Jun 12 19:21:45 2017 +0200 +++ b/PyLint/PyLintConfigDialog.py Sun Jan 21 14:37:36 2018 +0100 @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2005 - 2017 Detlev Offenbach <detlev@die-offenbachs.de> +# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> # """
--- a/PyLint/PyLintExecDialog.py Mon Jun 12 19:21:45 2017 +0200 +++ b/PyLint/PyLintExecDialog.py Sun Jan 21 14:37:36 2018 +0100 @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2005 - 2017 Detlev Offenbach <detlev@die-offenbachs.de> +# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> # """
--- a/PyLint/__init__.py Mon Jun 12 19:21:45 2017 +0200 +++ b/PyLint/__init__.py Sun Jan 21 14:37:36 2018 +0100 @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2007 - 2017 Detlev Offenbach <detlev@die-offenbachs.de> +# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> # """