Fixed an issue in the virtual env manager package when used in the standalone application. eric7

Fri, 27 Sep 2024 10:59:59 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 27 Sep 2024 10:59:59 +0200
branch
eric7
changeset 10931
56f41b1e163a
parent 10930
5a883e68aa35
child 10932
82de5109035a

Fixed an issue in the virtual env manager package when used in the standalone application.

src/eric7/VirtualEnv/VirtualenvAddEditDialog.py file | annotate | diff | comparison | revisions
src/eric7/VirtualEnv/VirtualenvManager.py file | annotate | diff | comparison | revisions
--- a/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py	Fri Sep 27 10:28:32 2024 +0200
+++ b/src/eric7/VirtualEnv/VirtualenvAddEditDialog.py	Fri Sep 27 10:59:59 2024 +0200
@@ -51,8 +51,12 @@
         self.__venvName = "" if metadata is None else metadata.name
         self.__manager = manager
         self.__editMode = bool(self.__venvName)
-        self.__serverInterface = ericApp().getObject("EricServer")
-        self.__fsInterface = self.__serverInterface.getServiceInterface("FileSystem")
+        try:
+            self.__serverInterface = ericApp().getObject("EricServer")
+            self.__fsInterface = self.__serverInterface.getServiceInterface("FileSystem")
+        except KeyError:
+            self.__serverInterface = None
+            self.__fsInterface = None
 
         if self.__editMode:
             self.setWindowTitle(self.tr("Edit Virtual Environment"))
@@ -63,13 +67,19 @@
         if not self.__envBaseDir:
             self.__envBaseDir = OSUtilities.getHomeDir()
 
-        self.serverRadioButton.setEnabled(self.__serverInterface.isServerConnected())
+        self.serverRadioButton.setEnabled(
+            self.__serverInterface is not None
+            and self.__serverInterface.isServerConnected()
+        )
 
         self.targetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
         self.targetDirectoryPicker.setWindowTitle(
             self.tr("Virtualenv Target Directory")
         )
-        if self.__serverInterface.isServerConnected():
+        if (
+            self.__serverInterface is not None
+            and self.__serverInterface.isServerConnected()
+        ):
             self.targetDirectoryPicker.setRemote(
                 metadata.is_eric_server if metadata else False
             )
@@ -78,7 +88,10 @@
 
         self.pythonExecPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
         self.pythonExecPicker.setWindowTitle(self.tr("Python Interpreter"))
-        if self.__serverInterface.isServerConnected():
+        if (
+            self.__serverInterface is not None
+            and self.__serverInterface.isServerConnected()
+        ):
             self.pythonExecPicker.setRemote(
                 metadata.is_eric_server if metadata else False
             )
@@ -163,6 +176,7 @@
                 and (
                     (
                         self.serverRadioButton.isChecked()
+                        and self.__fsInterface is not None
                         and self.__fsInterface.exists(self.targetDirectoryPicker.text())
                     )
                     or (
@@ -177,6 +191,7 @@
             and (
                 (
                     self.serverRadioButton.isChecked()
+                    and self.__fsInterface is not None
                     and self.__fsInterface.access(
                         self.pythonExecPicker.text(), "execute"
                     )
@@ -283,7 +298,10 @@
         @param checked state of the radio button
         @type bool
         """
-        if self.__serverInterface.isServerConnected():
+        if (
+            self.__serverInterface is not None
+            and self.__serverInterface.isServerConnected()
+        ):
             self.targetDirectoryPicker.setRemote(checked)
             self.pythonExecPicker.setRemote(checked)
             self.serverLineEdit.setText(
--- a/src/eric7/VirtualEnv/VirtualenvManager.py	Fri Sep 27 10:28:32 2024 +0200
+++ b/src/eric7/VirtualEnv/VirtualenvManager.py	Fri Sep 27 10:59:59 2024 +0200
@@ -166,17 +166,19 @@
                 venvPath = venvItem.path
                 if venvPath:
                     if venvItem.is_eric_server:
-                        # It is an eric-ide server environment; check it is still valid.
-                        ericServer = ericApp().getObject("EricServer")
-                        if (
-                            ericServer.isServerConnected()
-                            and ericServer.getHost() == venvItem.eric_server
-                            and not ericServer.getServiceInterface("FileSystem").exists(
-                                venvPath
-                            )
-                        ):
-                            del self.__virtualEnvironments[venvName]
-                            removed = True
+                        with contextlib.suppress(KeyError):
+                            # It is an eric-ide server environment; check it is
+                            # still valid.
+                            ericServer = ericApp().getObject("EricServer")
+                            if (
+                                ericServer.isServerConnected()
+                                and ericServer.getHost() == venvItem.eric_server
+                                and not ericServer.getServiceInterface(
+                                    "FileSystem"
+                                ).exists(venvPath)
+                            ):
+                                del self.__virtualEnvironments[venvName]
+                                removed = True
                     else:
                         # It is a local environment; check it is still valid.
                         if not os.path.exists(venvPath):

eric ide

mercurial