src/eric7/VirtualEnv/VirtualenvManager.py

Wed, 14 May 2025 18:18:06 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 14 May 2025 18:18:06 +0200
branch
eric7
changeset 11286
f0a76bd2a9d3
parent 11230
8a15b05eeee3
permissions
-rw-r--r--

Virtual Environments
- Added the capability to set an environment to unavailable.

6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
3 # Copyright (c) 2018 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a class to manage Python virtual environments.
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
10203
56ff5d86807a Corrected a little glitch in the VirtualenvManager code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10200
diff changeset
10 import contextlib
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
11 import copy
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
12 import json
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
13 import os
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
14 import shutil
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
15 import sys
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
17 from PyQt6.QtCore import QObject, pyqtSignal, pyqtSlot
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
18 from PyQt6.QtWidgets import QDialog
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
20 from eric7 import Preferences
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
21 from eric7.EricWidgets import EricMessageBox
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
22 from eric7.EricWidgets.EricApplication import ericApp
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
23 from eric7.EricWidgets.EricComboSelectionDialog import EricComboSelectionDialog
10351
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
24 from eric7.SystemUtilities import FileSystemUtilities, OSUtilities, PythonUtilities
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
25 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
27 from .VirtualenvMeta import VirtualenvMetaData
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
28 from .VirtualenvRegistry import VirtualenvType, VirtualenvTypeRegistry
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
29
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 class VirtualenvManager(QObject):
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Class implementing an object to manage Python virtual environments.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
35 @signal virtualEnvironmentAdded() emitted to indicate the addition of
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
36 a virtual environment
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
37 @signal virtualEnvironmentRemoved() emitted to indicate the removal and
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
38 deletion of a virtual environment
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
39 @signal virtualEnvironmentChanged(name) emitted to indicate a change of
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
40 a virtual environment
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
41 @signal virtualEnvironmentsListChanged() emitted to indicate a change of
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
42 the list of virtual environments (may be used to refresh the list)
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44
6503
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
45 DefaultKey = "<default>"
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
46 SystemKey = "<system>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
48 virtualEnvironmentAdded = pyqtSignal()
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
49 virtualEnvironmentRemoved = pyqtSignal()
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
50 virtualEnvironmentChanged = pyqtSignal(str)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
52 virtualEnvironmentsListChanged = pyqtSignal()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 def __init__(self, parent=None):
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 @param parent reference to the parent object
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @type QWidget
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
61 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.__ui = parent
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
65 self.__registry = VirtualenvTypeRegistry(venvManager=self)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
66 self.__virtualEnvironments = {}
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
67
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
68 # register built-in virtual environment types
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
69 self.__registry.registerType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
70 VirtualenvType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
71 name="standard",
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
72 visual_name=self.tr("Standard"),
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
73 createFunc=self.__createStandardVirtualEnv,
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
74 deleteFunc=self.__deleteStandardVirtualEnv,
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
75 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
76 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
77 self.__registry.registerType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
78 VirtualenvType(name="remote", visual_name=self.tr("Remote"))
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
79 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
80 self.__registry.registerType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
81 VirtualenvType(name="eric_server", visual_name=self.tr("eric-ide Server"))
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
82 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
83
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
84 self.__loadSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
86 def __loadSettings(self):
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
87 """
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
88 Private slot to load the virtual environments.
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
89 """
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
90 self.__virtualEnvironmentsBaseDir = Preferences.getSettings().value(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91 "PyVenv/VirtualEnvironmentsBaseDir", ""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
94 for key in ("PyVenv/VirtualEnvironmentsV2", "PyVenv/VirtualEnvironments"):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
95 venvString = Preferences.getSettings().value(key, "{}") # noqa: M-613
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
96 environments = json.loads(venvString)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
97 if environments:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
98 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
99
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
100 self.__virtualEnvironments = {}
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
101 # each environment entry is a VirtualenvMetaData object:
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
102 for venvName in environments:
6716
1c9d3b369ea8 VirtualEnv Manager: extended the environment definition by a flag indicating a remotely accessed environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6673
diff changeset
103 environment = environments[venvName]
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
104 environment["name"] = venvName
10200
7c282bf19646 Fixed a code style and documentation issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10197
diff changeset
105 if (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
106 environment.get("environment_type", "standard") == "remote"
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
107 or environment.get("is_remote", False) # meta data V1
10200
7c282bf19646 Fixed a code style and documentation issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10197
diff changeset
108 or os.access(environment["interpreter"], os.X_OK)
7c282bf19646 Fixed a code style and documentation issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10197
diff changeset
109 ) and "is_global" not in environment:
7c282bf19646 Fixed a code style and documentation issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10197
diff changeset
110 environment["is_global"] = environment["path"] == ""
10197
065f520d6b8f Fixed an issue in the refactored virtual environment code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10195
diff changeset
111
065f520d6b8f Fixed an issue in the refactored virtual environment code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10195
diff changeset
112 self.__virtualEnvironments[venvName] = VirtualenvMetaData.from_dict(
065f520d6b8f Fixed an issue in the refactored virtual environment code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10195
diff changeset
113 environment
065f520d6b8f Fixed an issue in the refactored virtual environment code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10195
diff changeset
114 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
116 # check, if the interpreter used to run eric is in the environments
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
117 defaultPy = PythonUtilities.getPythonExecutable()
9418
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
118 if "{0}.venv{0}".format(os.sep) not in defaultPy:
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
119 # only check for a non-embedded environment
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
120 found = False
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
121 for venvName in self.__virtualEnvironments:
10971
b9d883f73dff Fixed an issue in the virtalenv manager caused by a defined virtual environment for an eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10931
diff changeset
122 interpreter = self.__virtualEnvironments[venvName].interpreter
b9d883f73dff Fixed an issue in the virtalenv manager caused by a defined virtual environment for an eric-ide server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10931
diff changeset
123 with contextlib.suppress(OSError):
11000
f8371a2dd08f Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10971
diff changeset
124 if not FileSystemUtilities.isRemoteFileName(
f8371a2dd08f Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10971
diff changeset
125 interpreter
f8371a2dd08f Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10971
diff changeset
126 ) and os.path.samefile(defaultPy, interpreter):
10203
56ff5d86807a Corrected a little glitch in the VirtualenvManager code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10200
diff changeset
127 found = True
56ff5d86807a Corrected a little glitch in the VirtualenvManager code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10200
diff changeset
128 break
9418
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
129 if not found:
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
130 # add an environment entry for the default interpreter
10621
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
131 self.__virtualEnvironments[VirtualenvManager.DefaultKey] = (
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
132 VirtualenvMetaData(
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
133 name=VirtualenvManager.DefaultKey,
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
134 interpreter=defaultPy,
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
135 is_global=True,
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
136 )
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
137 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
139 self.__cleanEnvironments()
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
140 self.__checkEnvironmentInterpretersExist()
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
141
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
142 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
144 def __saveSettings(self):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 Private slot to save the virtual environments.
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 """
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
148 Preferences.getSettings().setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 "PyVenv/VirtualEnvironmentsBaseDir", self.__virtualEnvironmentsBaseDir
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
152 Preferences.getSettings().setValue(
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
153 "PyVenv/VirtualEnvironmentsV2",
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
154 json.dumps(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
155 {env.name: env.as_dict() for env in self.__virtualEnvironments.values()}
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
156 ),
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
157 )
6716
1c9d3b369ea8 VirtualEnv Manager: extended the environment definition by a flag indicating a remotely accessed environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6673
diff changeset
158 Preferences.syncPreferences()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
160 @pyqtSlot()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
161 def reloadSettings(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
162 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
163 Public slot to reload the virtual environments.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
164 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
165 Preferences.syncPreferences()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
166 self.__loadSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
168 def __cleanEnvironments(self):
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
169 """
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
170 Private method to delete all non-existent local or eric-ide server environments.
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
171 """
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
172 removed = False
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
173
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
174 for venvName in list(self.__virtualEnvironments):
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
175 venvItem = self.__virtualEnvironments[venvName]
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
176 if venvItem.environment_type != "remote":
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
177 venvPath = venvItem.path
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
178 if venvPath:
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
179 if venvItem.environment_type == "eric_server":
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
180 with contextlib.suppress(KeyError):
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
181 # It is an eric-ide server environment; check it is
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
182 # still valid.
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
183 ericServer = ericApp().getObject("EricServer")
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
184 if (
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
185 ericServer.isServerConnected()
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
186 and ericServer.getHost() == venvItem.eric_server
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
187 and not ericServer.getServiceInterface(
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
188 "FileSystem"
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
189 ).exists(venvPath)
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
190 ):
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
191 del self.__virtualEnvironments[venvName]
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10770
diff changeset
192 removed = True
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
193 else:
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
194 # It is a local environment; check it is still valid.
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
195 if not os.path.exists(venvPath):
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
196 del self.__virtualEnvironments[venvName]
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
197 removed = True
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
198
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
199 if removed:
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
200 self.virtualEnvironmentRemoved.emit()
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
201 self.virtualEnvironmentsListChanged.emit()
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
202
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
203 def __checkEnvironmentInterpretersExist(self):
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
204 """
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
205 Private method to set all environments with non-existent interpreters to
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
206 the disabled state.
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
207 """
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
208 changed = False
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
209
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
210 for venvName in self.__virtualEnvironments:
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
211 venvItem = self.__virtualEnvironments[venvName]
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
212 if venvItem.environment_type != "remote":
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
213 venvInterpreter = venvItem.interpreter
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
214 if venvInterpreter:
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
215 if venvItem.environment_type == "eric_server":
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
216 with contextlib.suppress(KeyError):
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
217 # It is an eric-ide server environment; check it has
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
218 # an existing interpreter.
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
219 ericServer = ericApp().getObject("EricServer")
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
220 if (
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
221 ericServer.isServerConnected()
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
222 and ericServer.getHost() == venvItem.eric_server
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
223 and not ericServer.getServiceInterface(
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
224 "FileSystem"
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
225 ).exists(venvInterpreter)
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
226 ):
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
227 venvItem.available = False
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
228 changed = True
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
229 else:
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
230 # It is a local environment; check it has an existing
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
231 # interpreter.
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
232 if not os.path.exists(venvInterpreter):
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
233 venvItem.available = False
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
234 changed = True
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
235 else:
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
236 # no interpreter defined
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
237 venvItem.available = False
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
238 changed = True
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
239
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
240 if changed:
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
241 self.virtualEnvironmentsListChanged.emit()
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
242
6503
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
243 def getDefaultEnvironment(self):
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
244 """
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
245 Public method to get the default virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
246
6503
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
247 Default is an environment with the key '<default>' or the first one
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
248 having an interpreter matching sys.executable (i.e. the one used to
7960
e8fc383322f7 Harmonized some user visible strings and changed the term 'eric6' to the more generic 'eric'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
249 execute eric with)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
250
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
251 @return tuple containing the environment name and a copy of the metadata
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
252 of the default virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
253 @rtype tuple of (str, VirtualenvMetaData)
6503
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
254 """
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
255 if VirtualenvManager.DefaultKey in self.__virtualEnvironments:
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
256 return (
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
257 VirtualenvManager.DefaultKey,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258 copy.copy(self.__virtualEnvironments[VirtualenvManager.DefaultKey]),
6503
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
259 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
260
6503
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
261 else:
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
262 return self.environmentForInterpreter(sys.executable)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
263
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
264 def environmentForInterpreter(self, interpreter):
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
265 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
266 Public method to get the environment a given interpreter belongs to.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
267
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
268 @param interpreter path of the interpreter
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
269 @type str
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
270 @return tuple containing the environment name and a copy of the metadata
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
271 of the virtual environment the interpreter belongs to
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
272 @rtype tuple of (str, VirtualenvMetaData)
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
273 """
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
274 py = FileSystemUtilities.normcaseabspath(interpreter.replace("w.exe", ".exe"))
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
275 for venvName in self.__virtualEnvironments:
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
276 if (
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
277 py
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
278 == FileSystemUtilities.normcaseabspath(
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
279 self.__virtualEnvironments[venvName].interpreter
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
280 )
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
281 and self.__virtualEnvironments[venvName].available
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
282 ):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
283 return (venvName, copy.copy(self.__virtualEnvironments[venvName]))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
285 if os.path.samefile(interpreter, sys.executable):
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
286 return (VirtualenvManager.SystemKey, {})
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
287
6503
e617c58807e8 VirtualenvManager, DebuggerPropertiesDialog, DebuggerInterfacePython: added code to use the default virtual environment, if none has been configured yet.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6386
diff changeset
288 return ("", {})
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
289
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 @pyqtSlot()
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
291 def createVirtualEnv(self, baseDir=""):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 Public slot to create a new virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
294
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
295 @param baseDir base directory for the virtual environments (defaults to "")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
296 @type str (optional)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
297 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
298 if not baseDir:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
299 baseDir = self.__virtualEnvironmentsBaseDir
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
300
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
301 environmentTypes = self.__registry.getCreatableEnvironmentTypes()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
302 if len(environmentTypes) == 1:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
303 environmentTypes[0].createFunc(baseDir=baseDir)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
304 elif len(environmentTypes) > 1:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
305 dlg = EricComboSelectionDialog(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
306 [(t.visual_name, t.name) for t in environmentTypes],
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
307 title=self.tr("Create Virtual Environment"),
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
308 message=self.tr("Select the virtual environment type:"),
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
309 parent=self.__ui,
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
310 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
311 if dlg.exec() == QDialog.DialogCode.Accepted:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
312 selectedVenvType = dlg.getSelection()[1]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
313 for venvType in environmentTypes:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
314 if venvType.name == selectedVenvType:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
315 venvType.createFunc(baseDir=baseDir)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
316 break
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
317
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
318 def __createStandardVirtualEnv(self, baseDir=""):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
319 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
320 Private method to create a standard (pyvenv or virtualenv) environment.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
321
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
322 @param baseDir base directory for the virtual environments (defaults to "")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
323 @type str (optional)
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
325 from .VirtualenvConfigurationDialog import VirtualenvConfigurationDialog
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
326 from .VirtualenvExecDialog import VirtualenvExecDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
327
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
328 dlg = VirtualenvConfigurationDialog(baseDir=baseDir, parent=self.__ui)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
329 if dlg.exec() == QDialog.DialogCode.Accepted:
6672
2af01e538c57 Started implementing support conda virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
330 resultDict = dlg.getData()
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
331 # now do the call
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
332 dia = VirtualenvExecDialog(resultDict, self, parent=self.__ui)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
333 dia.show()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
334 dia.start(resultDict["arguments"])
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
335 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
337 @pyqtSlot()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
338 def upgradeVirtualEnv(self, venvName):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
339 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
340 Public slot to upgrade a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
341
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
342 @param venvName name of the virtual environment
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
343 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
344 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
345 from .VirtualenvUpgradeConfigurationDialog import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346 VirtualenvUpgradeConfigurationDialog,
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
347 )
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
348 from .VirtualenvUpgradeExecDialog import VirtualenvUpgradeExecDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
350 venvDirectory = self.getVirtualenvDirectory(venvName)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
351 if not os.path.exists(os.path.join(venvDirectory, "pyvenv.cfg")):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
352 # The environment was not created by the 'venv' module.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
353 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
354
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
355 dlg = VirtualenvUpgradeConfigurationDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
356 venvName, venvDirectory, parent=self.__ui
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
357 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
358 if dlg.exec() == QDialog.DialogCode.Accepted:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
359 pythonExe, args, createLog = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
361 dia = VirtualenvUpgradeExecDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
362 venvName, pythonExe, createLog, self, parent=self.__ui
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
363 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
364 dia.show()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
365 dia.start(args)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
366 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
368 def addVirtualEnv(self, metadata):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 Public method to add a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
371
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
372 @param metadata object containing the metadata of the virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
373 @type VirtualenvMetaData
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
375 from .VirtualenvInterpreterSelectionDialog import (
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
376 VirtualenvInterpreterSelectionDialog,
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
377 )
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
378 from .VirtualenvNameDialog import VirtualenvNameDialog
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
379
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
380 if metadata.name in self.__virtualEnvironments:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8334
diff changeset
381 ok = EricMessageBox.yesNo(
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 None,
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 self.tr("Add Virtual Environment"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
385 """A virtual environment named <b>{0}</b> exists"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386 """ already. Shall it be replaced?"""
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
387 ).format(metadata.name),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
388 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389 )
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 if not ok:
6677
6299d69a218a Continued implementing environment creation with conda.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6676
diff changeset
391 dlg = VirtualenvNameDialog(
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
392 list(self.__virtualEnvironments), metadata.name, parent=self.__ui
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
393 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
394 if dlg.exec() != QDialog.DialogCode.Accepted:
6677
6299d69a218a Continued implementing environment creation with conda.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6676
diff changeset
395 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
396
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
397 metadata.name = dlg.getName()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
398
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
399 if not metadata.interpreter:
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
400 dlg = VirtualenvInterpreterSelectionDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
401 metadata.name, metadata.path, parent=self.__ui
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
402 )
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
403 if dlg.exec() == QDialog.DialogCode.Accepted:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
404 metadata.interpreter = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
405
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
406 if metadata.interpreter:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
407 self.__virtualEnvironments[metadata.name] = metadata
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
408 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
410 self.virtualEnvironmentAdded.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
411 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
412
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
413 def setVirtualEnv(self, metadata):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
414 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
415 Public method to change a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
416
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
417 @param metadata object containing the metadata of the virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
418 @type VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
419 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
420 if metadata.name not in self.__virtualEnvironments:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8334
diff changeset
421 EricMessageBox.yesNo(
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
422 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
423 self.tr("Change Virtual Environment"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
424 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
425 """A virtual environment named <b>{0}</b> does not"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
426 """ exist. Aborting!"""
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
427 ).format(metadata.name),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
428 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
429 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
430 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
431
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
432 self.__virtualEnvironments[metadata.name] = metadata
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
433 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
435 self.virtualEnvironmentChanged.emit(metadata.name)
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
436 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
437
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
438 def renameVirtualEnv(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
439 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
440 oldVenvName,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
441 metadata,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
442 ):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
443 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
444 Public method to substitute a virtual environment entry with a new
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
445 name.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
446
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
447 @param oldVenvName old name of the virtual environment
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
448 @type str
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
449 @param metadata object containing the metadata of the virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
450 @type VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
451 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
452 if oldVenvName not in self.__virtualEnvironments:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8334
diff changeset
453 EricMessageBox.yesNo(
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
454 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
455 self.tr("Rename Virtual Environment"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
456 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
457 """A virtual environment named <b>{0}</b> does not"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
458 """ exist. Aborting!"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459 ).format(oldVenvName),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
460 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
461 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
462 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
463
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
464 del self.__virtualEnvironments[oldVenvName]
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
465 self.addVirtualEnv(metadata)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
466
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
467 def deleteVirtualEnvs(self, venvNames):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
468 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
469 Public method to delete virtual environments from the list and disk.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
470
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
471 @param venvNames list of logical names for the virtual environments
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
472 @type list of str
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 """
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
474 venvMessages = []
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
475 for venvName in venvNames:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
476 if venvName in self.__virtualEnvironments and bool(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
477 self.__virtualEnvironments[venvName].path
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
478 ):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
479 venvMessages.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
480 self.tr("{0} - {1}").format(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
481 venvName, self.__virtualEnvironments[venvName].path
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
482 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
483 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
484 if venvMessages:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
485 dlg = DeleteFilesConfirmationDialog(
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
486 self.__ui,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
487 self.tr("Delete Virtual Environments"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
488 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
489 """Do you really want to delete these virtual"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
490 """ environments?"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
491 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
492 venvMessages,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
493 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
494 if dlg.exec() == QDialog.DialogCode.Accepted:
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
495 for venvName in venvNames:
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
496 envType = self.__registry.getEnvironmentType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
497 self.__virtualEnvironments[venvName].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
498 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
499 if envType and envType.deleteFunc:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
500 deleted = envType.deleteFunc(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
501 self.__virtualEnvironments[venvName]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
502 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
503 if deleted:
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
504 del self.__virtualEnvironments[venvName]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
505
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
506 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
507
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
508 self.virtualEnvironmentRemoved.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
509 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
510
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
511 def __isEnvironmentDeleteable(self, venvName):
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
512 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
513 Private method to check, if a virtual environment can be deleted from
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
514 disk.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
515
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
516 @param venvName name of the virtual environment
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
517 @type str
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
518 @return flag indicating it can be deleted
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
519 @rtype bool
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
520 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
521 ok = False
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
522 if venvName in self.__virtualEnvironments:
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
523 ok = True
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
524 ok &= bool(self.__virtualEnvironments[venvName].path)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
525 ok &= not self.__virtualEnvironments[venvName].is_global
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
526 ok &= os.access(self.__virtualEnvironments[venvName].path, os.W_OK)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
527
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
528 return ok
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
529
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
530 def __deleteStandardVirtualEnv(self, venvMetaData):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
531 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
532 Private method to delete a given virtual environment from disk.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
533
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
534 @param venvMetaData virtual environment meta data structure
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
535 @type VirtualenvMetaData
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
536 @return flag indicating success
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
537 @rtype bool
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
538 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
539 if self.__isEnvironmentDeleteable(venvMetaData.name):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
540 shutil.rmtree(venvMetaData.path, ignore_errors=True)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
541 return True
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
542 else:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
543 return False
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
544
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
545 def removeVirtualEnvs(self, venvNames):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
546 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
547 Public method to delete virtual environments from the list.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
548
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
549 @param venvNames list of logical names for the virtual environments
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
550 @type list of str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
551 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
552 venvMessages = []
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
553 for venvName in venvNames:
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
554 if venvName in self.__virtualEnvironments:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
555 venvMessages.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
556 self.tr("{0} - {1}").format(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
557 venvName, self.__virtualEnvironments[venvName].path
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
558 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
559 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
560 if venvMessages:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
561 dlg = DeleteFilesConfirmationDialog(
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
562 self.__ui,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
563 self.tr("Remove Virtual Environments"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
564 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
565 """Do you really want to remove these virtual"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
566 """ environments?"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
567 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
568 venvMessages,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
569 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7960
diff changeset
570 if dlg.exec() == QDialog.DialogCode.Accepted:
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
571 for venvName in venvNames:
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
572 if venvName in self.__virtualEnvironments:
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
573 del self.__virtualEnvironments[venvName]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
574
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
575 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
576
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
577 self.virtualEnvironmentRemoved.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
578 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
579
10351
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
580 def searchUnregisteredInterpreters(self):
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
581 """
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
582 Public method to search for unregistered Python interpreters.
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
583
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
584 @return list of unregistered interpreters
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
585 @rtype list of str
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
586 """
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
587 interpreters = []
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
588 baseDir = self.getVirtualEnvironmentsBaseDir()
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
589 if not baseDir:
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
590 # search in home directory, if no environments base directory is defined
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
591 baseDir = OSUtilities.getHomeDir()
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
592 environments = [
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
593 os.path.join(baseDir, d)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
594 for d in os.listdir(baseDir)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
595 if os.path.isdir(os.path.join(baseDir, d))
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
596 ]
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
597
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
598 interpreters = PythonUtilities.searchInterpreters()
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
599 if environments:
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
600 interpreters += PythonUtilities.searchInterpreters(environments)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
601
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
602 interpreters = {
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
603 i for i in interpreters if not self.environmentForInterpreter(i)[0]
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
604 } # convert the list into a set to make the remaining ones unique
10351
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
605 return list(interpreters)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
606
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
607 def getEnvironmentEntries(self):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
608 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
609 Public method to get a list of the defined virtual environment entries.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
610
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
611 @return list containing a copy of the defined virtual environments
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
612 @rtype list
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
613 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
614 return [copy.copy(env) for env in self.__virtualEnvironments.values()]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
615
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
616 @pyqtSlot()
6381
37f23590dbbc Configuration pages for Python: harmonized the Python debugger pages and the Python page and added a button to show the virtual environment manager dialog to the Python configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6362
diff changeset
617 def showVirtualenvManagerDialog(self, modal=False):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
618 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
619 Public slot to show the virtual environment manager dialog.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
620
6381
37f23590dbbc Configuration pages for Python: harmonized the Python debugger pages and the Python page and added a button to show the virtual environment manager dialog to the Python configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6362
diff changeset
621 @param modal flag indicating that the dialog should be shown in
37f23590dbbc Configuration pages for Python: harmonized the Python debugger pages and the Python page and added a button to show the virtual environment manager dialog to the Python configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6362
diff changeset
622 a blocking mode
10433
328f3ec4b77a Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
623 @type bool
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
624 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
625 from .VirtualenvManagerWidgets import VirtualenvManagerDialog
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
626
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
627 if modal:
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11000
diff changeset
628 virtualenvManagerDialog = VirtualenvManagerDialog(self, parent=self.__ui)
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
629 virtualenvManagerDialog.exec()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
630 self.virtualEnvironmentsListChanged.emit()
6381
37f23590dbbc Configuration pages for Python: harmonized the Python debugger pages and the Python page and added a button to show the virtual environment manager dialog to the Python configuration pages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6362
diff changeset
631 else:
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
632 self.__ui.activateVirtualenvManager()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
633
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
634 def isUnique(self, venvName):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
635 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
636 Public method to check, if the give logical name is unique.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
637
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 @param venvName logical name for the virtual environment
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639 @type str
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
640 @return flag indicating uniqueness
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
641 @rtype bool
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 """
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
643 return venvName not in self.__virtualEnvironments
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
644
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
645 def getVirtualenvInterpreter(self, venvName):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
646 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
647 Public method to get the interpreter for a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
648
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
649 @param venvName logical name for the virtual environment
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
650 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
651 @return interpreter path
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
652 @rtype str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
653 """
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
654 if (
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
655 venvName in self.__virtualEnvironments
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
656 and self.__virtualEnvironments[venvName].available
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
657 ):
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
658 return self.__virtualEnvironments[venvName].interpreter.replace(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
659 "w.exe", ".exe"
9016
6f079c524e99 Changed occurrences of sys.executable with a method to get rid of the "w" on Windows and macOS systems (i.e. change pythonw to python).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
660 )
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
661 elif venvName == VirtualenvManager.SystemKey:
9559
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9556
diff changeset
662 return sys.executable.replace("w.exe", ".exe")
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
663 else:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
664 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
665
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
666 def setVirtualEnvInterpreter(self, venvName, venvInterpreter):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
667 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
668 Public method to change the interpreter for a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
669
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
670 @param venvName logical name for the virtual environment
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
671 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
672 @param venvInterpreter interpreter path to be set
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
673 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
674 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
675 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
676 self.__virtualEnvironments[venvName].interpreter = venvInterpreter
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
677 self.__virtualEnvironments[venvName].available = os.path.exists(
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
678 venvInterpreter
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
679 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
680 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
681
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
682 self.virtualEnvironmentChanged.emit(venvName)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
683 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
684
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
685 def getVirtualenvDirectory(self, venvName):
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
686 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
687 Public method to get the directory of a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
688
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
689 @param venvName logical name for the virtual environment
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
690 @type str
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
691 @return directory path
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
692 @rtype str
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
693 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
694 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
695 return self.__virtualEnvironments[venvName].path
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
696 else:
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
697 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
698
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
699 def getVirtualenvNames(self, noGlobals=False, filterList=("all",)):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
700 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
701 Public method to get a list of defined virtual environments.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
702
10742
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
703 @param noGlobals flag indicating to exclude global environments
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
704 (defaults to False)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
705 @type bool (optional)
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
706 @param filterList tuple containing the list of virtual environment types to
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
707 be included (prefixed by +) or excluded (prefixed by -) (defaults to
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
708 ("all",) )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
709 @type tuple of str ((optional)
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
710 @return list of defined virtual environments
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
711 @rtype list of str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
712 """
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
713 environments = [
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
714 name
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
715 for name in self.__virtualEnvironments
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
716 if self.isAvailableEnvironment(name)
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
717 ]
10742
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
718 if noGlobals:
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
719 environments = [
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
720 name for name in environments if not self.isGlobalEnvironment(name)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
721 ]
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
722 if filterList != ("all",):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
723 includeFilter = [f[1:] for f in filterList if f.startswith("+")]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
724 excludeFilter = [f[1:] for f in filterList if f.startswith("-")]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
725 if includeFilter:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
726 environments = [
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
727 name
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
728 for name in environments
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
729 if self.__virtualEnvironments[name].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
730 in includeFilter
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
731 ]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
732 if excludeFilter:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
733 environments = [
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
734 name
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
735 for name in environments
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
736 if self.__virtualEnvironments[name].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
737 not in excludeFilter
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
738 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
739
6975
3325bf3e7b2c Pip, PipPackagesWidget, VirtualenvManager: fixed an issue causing environments for remote debugging being shown in the selection list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
740 return environments
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
741
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
742 def isAvailableEnvironment(self, venvName):
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
743 """
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
744 Public method to test, if a given environment is available.
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
745
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
746 @param venvName logical name of the virtual environment
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
747 @type str
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
748 @return flag indicating an available environment
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
749 @rtype bool
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
750 """
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
751 try:
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
752 return self.__virtualEnvironments[venvName].available
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
753 except KeyError:
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
754 return False
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
755
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
756 def isGlobalEnvironment(self, venvName):
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
757 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
758 Public method to test, if a given environment is a global one.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
759
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
760 @param venvName logical name of the virtual environment
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
761 @type str
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
762 @return flag indicating a global environment
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
763 @rtype bool
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
764 """
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
765 try:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
766 return self.__virtualEnvironments[venvName].is_global
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
767 except KeyError:
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
768 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
769
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
770 def getVirtualenvExecPath(self, venvName):
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
771 """
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
772 Public method to get the search path prefix of a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
773
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
774 @param venvName logical name for the virtual environment
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
775 @type str
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
776 @return search path prefix
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
777 @rtype str
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
778 """
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
779 try:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
780 return self.__virtualEnvironments[venvName].exec_path
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
781 except KeyError:
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
782 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
783
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
784 def setVirtualEnvironmentsBaseDir(self, baseDir):
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
785 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
786 Public method to set the base directory for the virtual environments.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
787
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
788 @param baseDir base directory for the virtual environments
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
789 @type str
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
790 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
791 self.__virtualEnvironmentsBaseDir = baseDir
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
792 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
793
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
794 def getVirtualEnvironmentsBaseDir(self):
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
795 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
796 Public method to set the base directory for the virtual environments.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
797
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
798 @return base directory for the virtual environments
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
799 @rtype str
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
800 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
801 return self.__virtualEnvironmentsBaseDir
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
802
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
803 def isEricServerEnvironment(self, venvName, host=""):
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
804 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
805 Public method to test, if a given environment is an environment accessed
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
806 through an eric-ide server.
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
807
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
808 @param venvName logical name of the virtual environment
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
809 @type str
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
810 @param host name of the host to check for or empty string to just check for
10770
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
811 an eric-ide server environment (defaults to "")
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
812 @type str (optional)
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
813 @return flag indicating an eric-ide server environment
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
814 @rtype bool
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
815 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
816 try:
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
817 if host:
10770
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
818 return self.__virtualEnvironments[
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
819 venvName
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
820 ].environment_type == "eric_server" and self.__virtualEnvironments[
10770
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
821 venvName
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
822 ].eric_server.startswith(
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
823 f"{host}:"
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
824 )
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
825 else:
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
826 return (
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
827 self.__virtualEnvironments[venvName].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
828 == "eric_server"
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
829 )
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
830 except KeyError:
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
831 return False
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
832
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
833 def getEricServerEnvironmentNames(self, host=""):
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
834 """
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
835 Public method to get a list of defined eric-ide server environments.
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
836
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
837 @param host host name to get environment names for (defaults to "")
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
838 @type str (optional)
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
839 @return list of defined eric-ide server environments
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
840 @rtype list of str
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
841 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
842 environments = [
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
843 name
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
844 for name in self.__virtualEnvironments
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
845 if self.isEricServerEnvironment(name, host=host)
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
846 ]
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
847
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
848 return environments
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
849
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
850 #######################################################################
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
851 ## Interface to the virtual environment types registry
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
852 #######################################################################
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
853
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
854 def getEnvironmentTypesRegistry(self):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
855 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
856 Public method to get a reference to the virtual environment types registry
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
857 object.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
858
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
859 @return reference to the virtual environment types registry object
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
860 @rtype VirtualenvTypeRegistry
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
861 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
862 return self.__registry
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
863
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
864 def registerType(self, venvType):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
865 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
866 Public method to register a new virtual environment type.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
867
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
868 @param venvType virtual environment data
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
869 @type VirtualenvType
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
870 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
871 self.__registry.registerType(venvType=venvType)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
872
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
873 def unregisterType(self, name):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
874 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
875 Public method to unregister the virtual environment type of the given name.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
876
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
877 @param name name of the virtual environment type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
878 @type str
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
879 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
880 self.__registry.unregisterType(name=name)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
881
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
882 def getEnvironmentTypeNames(self):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
883 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
884 Public method to get a list of names of registered virtual environment types.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
885
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
886 @return list of tuples of virtual environment type names and their visual name
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
887 @rtype list of tuple of (str, str)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
888 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
889 return self.__registry.getEnvironmentTypeNames() if self.__registry else []

eric ide

mercurial