Improved executable and Python version determination and merged with remote changes. release-6.1.9

Sun, 21 Jan 2018 14:37:36 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 21 Jan 2018 14:37:36 +0100
changeset 72
d864ddf21044
parent 71
5d5d4b3da05c (diff)
parent 67
04eb2031f19d (current diff)
child 73
03d89d7a9d80

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:
Binary file PluginPyLint.zip has changed
--- 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>
 #
 
 """
--- a/__init__.py	Mon Jun 12 19:21:45 2017 +0200
+++ b/__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>
 #
 
 """

eric ide

mercurial