Added a few more API calls to the Project object to unittest

Sun, 08 May 2022 15:44:29 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 08 May 2022 15:44:29 +0200
branch
unittest
changeset 9056
af7c8c7b7c62
parent 9055
08b2702b4f81
child 9057
ddc46e93ccc4

Added a few more API calls to the Project object to
- get the virtual environment name
- get the interpreter
- get the executable search path prefix
of the environment used by the open project.

eric7/Debugger/DebuggerInterfacePython.py file | annotate | diff | comparison | revisions
eric7/JediInterface/JediServer.py file | annotate | diff | comparison | revisions
eric7/PipInterface/Pip.py file | annotate | diff | comparison | revisions
eric7/Project/CreateDialogCodeDialog.py file | annotate | diff | comparison | revisions
eric7/Project/Project.py file | annotate | diff | comparison | revisions
--- a/eric7/Debugger/DebuggerInterfacePython.py	Sat May 07 16:30:34 2022 +0200
+++ b/eric7/Debugger/DebuggerInterfacePython.py	Sun May 08 15:44:29 2022 +0200
@@ -366,10 +366,6 @@
         
         # start debugger with project specific settings
         debugClient = project.getDebugProperty("DEBUGCLIENT")
-        if not venvName:
-            venvName = project.getDebugProperty("VIRTUALENV")
-        if not venvName and project.getProjectLanguage() == "Python3":
-            venvName = Preferences.getDebugger("Python3VirtualEnv")
         
         redirect = (
             str(configOverride["redirect"])
@@ -384,14 +380,8 @@
             else ''
         )
         
-        venvManager = ericApp().getObject("VirtualEnvManager")
-        interpreter = venvManager.getVirtualenvInterpreter(venvName)
-        execPath = venvManager.getVirtualenvExecPath(venvName)
-        if (
-            interpreter == "" and
-            project.getProjectLanguage().startswith("Python")
-        ):
-            interpreter = Globals.getPythonExecutable()
+        execPath = project.getProjectExecPath()
+        interpreter = project.getProjectInterpreter()
         if interpreter == "":
             EricMessageBox.critical(
                 None,
--- a/eric7/JediInterface/JediServer.py	Sat May 07 16:30:34 2022 +0200
+++ b/eric7/JediInterface/JediServer.py	Sun May 08 15:44:29 2022 +0200
@@ -852,25 +852,11 @@
         if "PATH" in clientEnv:
             clientEnv["PATH"] = self.__ui.getOriginalPathString()
         
-        if (projectLanguage.startswith("Python") or
-                projectLanguage == "MicroPython"):
-            # new code using virtual environments
-            venvManager = ericApp().getObject("VirtualEnvManager")
-            
-            # get virtual environment from project first
-            venvName = self.__ericProject.getDebugProperty("VIRTUALENV")
-            if not venvName:
-                # get it from debugger settings next
-                if projectLanguage in ("Python3", "MicroPython", "Cython"):
-                    venvName = Preferences.getDebugger("Python3VirtualEnv")
-                    if not venvName:
-                        venvName, _ = venvManager.getDefaultEnvironment()
-                else:
-                    venvName = ""
-            if venvName:
-                interpreter = venvManager.getVirtualenvInterpreter(
-                    venvName)
-                execPath = venvManager.getVirtualenvExecPath(venvName)
+        if projectLanguage in ("Python3", "MicroPython", "Cython"):
+            interpreter = self.__ericProject.getProjectInterpreter(
+                resolveGlobal=False)
+            if interpreter:
+                execPath = self.__ericProject.getProjectExecPath()
                 
                 # build a suitable environment
                 if execPath:
--- a/eric7/PipInterface/Pip.py	Sat May 07 16:30:34 2022 +0200
+++ b/eric7/PipInterface/Pip.py	Sun May 08 15:44:29 2022 +0200
@@ -203,16 +203,9 @@
         @return interpreter path
         @rtype str
         """
-        if venvName == self.getProjectEnvironmentString():
-            venvName = (
-                ericApp().getObject("Project")
-                .getDebugProperty("VIRTUALENV")
-            )
-            if not venvName:
-                # fall back to interpreter used to run eric7
-                return Globals.getPythonExecutable()
-        
         interpreter = (
+            ericApp().getObject("Project").getProjectInterpreter()
+            if venvName == self.getProjectEnvironmentString() else
             ericApp().getObject("VirtualEnvManager")
             .getVirtualenvInterpreter(venvName)
         )
--- a/eric7/Project/CreateDialogCodeDialog.py	Sat May 07 16:30:34 2022 +0200
+++ b/eric7/Project/CreateDialogCodeDialog.py	Sun May 08 15:44:29 2022 +0200
@@ -161,7 +161,7 @@
         venvManager = ericApp().getObject("VirtualEnvManager")
         projectType = self.project.getProjectType()
         
-        venvName = self.project.getDebugProperty("VIRTUALENV")
+        venvName = self.project.getProjectVenv(resolveDebugger=False)
         if not venvName:
             # no project specific environment, try a type specific one
             if projectType in ("PyQt5", "PySide2"):
--- a/eric7/Project/Project.py	Sat May 07 16:30:34 2022 +0200
+++ b/eric7/Project/Project.py	Sun May 08 15:44:29 2022 +0200
@@ -39,6 +39,7 @@
 
 from EricGui.EricAction import EricAction, createActionGroup
 
+import Globals
 import Preferences
 import Utilities
 
@@ -3704,6 +3705,67 @@
         """
         return self.pdata["DESCRIPTION"]
     
+    def getProjectVenv(self, resolveDebugger=True):
+        """
+        Public method to get the name of the virtual environment used by the
+        project.
+        
+        @param resolveDebugger flag indicating to resolve the virtual
+            environment name via the debugger settings if none was configured
+        @type bool
+        @return name of the project's virtual environment
+        @rtype str
+        """
+        venvName = self.getDebugProperty("VIRTUALENV")
+        if (
+            not venvName and
+            resolveDebugger and
+            self.getProjectLanguage() in ("Python3", "MicroPython", "Cython")
+        ):
+            venvName = Preferences.getDebugger("Python3VirtualEnv")
+        
+        return venvName
+    
+    def getProjectInterpreter(self, resolveGlobal=True):
+        """
+        Public method to get the path of the interpreter used by the project.
+        
+        @param resolveGlobal flag indicating to resolve the interpreter using
+            the global interpreter if no project of debugger specific
+            environment was configured
+        @type bool
+        @return path of the project's interpreter
+        @rtype str
+        """
+        interpreter = ""
+        venvName = self.getProjectVenv()
+        if venvName:
+            interpreter = (
+                ericApp().getObject("VirtualEnvManager")
+                .getVirtualenvInterpreter(venvName)
+            )
+        if not interpreter and resolveGlobal:
+            interpreter = Globals.getPythonExecutable()
+        
+        return interpreter
+    
+    def getProjectExecPath(self):
+        """
+        Public method to get the executable search path prefix of the project.
+        
+        @return executable search path prefix
+        @rtype str
+        """
+        execPath = ""
+        venvName = self.getProjectVenv()
+        if venvName:
+            execPath = (
+                ericApp().getObject("VirtualEnvManager")
+                .getVirtualenvExecPath(venvName)
+            )
+        
+        return execPath
+    
     def __isInPdata(self, fn):
         """
         Private method used to check, if the passed in filename is project

eric ide

mercurial