src/eric7/VirtualEnv/VirtualenvManager.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11230
8a15b05eeee3
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

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()
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
140
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
141 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
143 def __saveSettings(self):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 Private slot to save the virtual environments.
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
147 Preferences.getSettings().setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148 "PyVenv/VirtualEnvironmentsBaseDir", self.__virtualEnvironmentsBaseDir
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
151 Preferences.getSettings().setValue(
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
152 "PyVenv/VirtualEnvironmentsV2",
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
153 json.dumps(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
154 {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
155 ),
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
156 )
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
157 Preferences.syncPreferences()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
158
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
159 @pyqtSlot()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
160 def reloadSettings(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
161 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
162 Public slot to reload the virtual environments.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
163 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
164 Preferences.syncPreferences()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
165 self.__loadSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
166
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
167 def __cleanEnvironments(self):
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
168 """
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
169 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
170 """
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
171 removed = False
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
172
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
173 for venvName in list(self.__virtualEnvironments):
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
174 venvItem = self.__virtualEnvironments[venvName]
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
175 if venvItem.environment_type != "remote":
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
176 venvPath = venvItem.path
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
177 if venvPath:
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
178 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
179 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
180 # 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
181 # 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
182 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
183 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
184 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
185 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
186 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
187 "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
188 ).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
189 ):
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 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
191 removed = True
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
192 else:
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
193 # It is a local environment; check it is still valid.
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
194 if not os.path.exists(venvPath):
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
195 del self.__virtualEnvironments[venvName]
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
196 removed = True
10340
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
197 if removed:
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
198 self.__saveSettings()
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
199 self.virtualEnvironmentRemoved.emit()
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
200 self.virtualEnvironmentsListChanged.emit()
548b4c7f410e Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10204
diff changeset
201
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
202 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
203 """
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
204 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
205
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
206 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
207 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
208 execute eric with)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
210 @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
211 of the default virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
212 @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
213 """
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
214 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
215 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
216 VirtualenvManager.DefaultKey,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217 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
218 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
219
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
220 else:
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
221 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
222
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
223 def environmentForInterpreter(self, interpreter):
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
224 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
225 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
226
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
227 @param interpreter path of the interpreter
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
228 @type str
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
229 @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
230 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
231 @rtype tuple of (str, VirtualenvMetaData)
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
232 """
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
233 py = FileSystemUtilities.normcaseabspath(interpreter.replace("w.exe", ".exe"))
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
234 for venvName in self.__virtualEnvironments:
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
235 if py == FileSystemUtilities.normcaseabspath(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
236 self.__virtualEnvironments[venvName].interpreter
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
237 ):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238 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
239
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
240 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
241 return (VirtualenvManager.SystemKey, {})
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
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 return ("", {})
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 @pyqtSlot()
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
246 def createVirtualEnv(self, baseDir=""):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 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
249
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
250 @param baseDir base directory for the virtual environments (defaults to "")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
251 @type str (optional)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
252 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
253 if not baseDir:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
254 baseDir = self.__virtualEnvironmentsBaseDir
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
255
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
256 environmentTypes = self.__registry.getCreatableEnvironmentTypes()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
257 if len(environmentTypes) == 1:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
258 environmentTypes[0].createFunc(baseDir=baseDir)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
259 elif len(environmentTypes) > 1:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
260 dlg = EricComboSelectionDialog(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
261 [(t.visual_name, t.name) for t in environmentTypes],
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
262 title=self.tr("Create Virtual Environment"),
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
263 message=self.tr("Select the virtual environment type:"),
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
264 parent=self.__ui,
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
265 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
266 if dlg.exec() == QDialog.DialogCode.Accepted:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
267 selectedVenvType = dlg.getSelection()[1]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
268 for venvType in environmentTypes:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
269 if venvType.name == selectedVenvType:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
270 venvType.createFunc(baseDir=baseDir)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
271 break
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
272
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
273 def __createStandardVirtualEnv(self, baseDir=""):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
274 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
275 Private method to create a standard (pyvenv or virtualenv) environment.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
276
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
277 @param baseDir base directory for the virtual environments (defaults to "")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
278 @type str (optional)
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
280 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
281 from .VirtualenvExecDialog import VirtualenvExecDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282
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
283 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
284 if dlg.exec() == QDialog.DialogCode.Accepted:
6672
2af01e538c57 Started implementing support conda virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
285 resultDict = dlg.getData()
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
286 # now do the call
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
287 dia = VirtualenvExecDialog(resultDict, self, parent=self.__ui)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
288 dia.show()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
289 dia.start(resultDict["arguments"])
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
290 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
291
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
292 @pyqtSlot()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
293 def upgradeVirtualEnv(self, venvName):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
294 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
295 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
296
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
297 @param venvName name of the virtual environment
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
298 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
299 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
300 from .VirtualenvUpgradeConfigurationDialog import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
301 VirtualenvUpgradeConfigurationDialog,
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
302 )
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
303 from .VirtualenvUpgradeExecDialog import VirtualenvUpgradeExecDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
304
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
305 venvDirectory = self.getVirtualenvDirectory(venvName)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
306 if not os.path.exists(os.path.join(venvDirectory, "pyvenv.cfg")):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
307 # The environment was not created by the 'venv' module.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
308 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
309
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
310 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
311 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
312 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
313 if dlg.exec() == QDialog.DialogCode.Accepted:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
314 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
315
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
316 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
317 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
318 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
319 dia.show()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
320 dia.start(args)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
321 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
322
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
323 def addVirtualEnv(self, metadata):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 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
326
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
327 @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
328 @type VirtualenvMetaData
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
330 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
331 VirtualenvInterpreterSelectionDialog,
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
332 )
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
333 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
334
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
335 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
336 ok = EricMessageBox.yesNo(
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 None,
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 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
339 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
340 """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
341 """ already. Shall it be replaced?"""
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
342 ).format(metadata.name),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344 )
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 if not ok:
6677
6299d69a218a Continued implementing environment creation with conda.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6676
diff changeset
346 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
347 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
348 )
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
349 if dlg.exec() != QDialog.DialogCode.Accepted:
6677
6299d69a218a Continued implementing environment creation with conda.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6676
diff changeset
350 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
352 metadata.name = dlg.getName()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
353
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
354 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
355 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
356 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
357 )
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
358 if dlg.exec() == QDialog.DialogCode.Accepted:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
359 metadata.interpreter = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
361 if metadata.interpreter:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
362 self.__virtualEnvironments[metadata.name] = metadata
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
363 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
364
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
365 self.virtualEnvironmentAdded.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
366 self.virtualEnvironmentsListChanged.emit()
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 setVirtualEnv(self, metadata):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
369 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
370 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
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
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
374 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
375 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
376 EricMessageBox.yesNo(
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
377 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
378 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
379 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
380 """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
381 """ exist. Aborting!"""
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
382 ).format(metadata.name),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
385 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
387 self.__virtualEnvironments[metadata.name] = metadata
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
388 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
390 self.virtualEnvironmentChanged.emit(metadata.name)
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
391 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
392
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
393 def renameVirtualEnv(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
394 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395 oldVenvName,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
396 metadata,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397 ):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
398 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
399 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
400 name.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
401
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
402 @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
403 @type str
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
404 @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
405 @type VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
406 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
407 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
408 EricMessageBox.yesNo(
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
409 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
410 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
411 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
412 """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
413 """ exist. Aborting!"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
414 ).format(oldVenvName),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
415 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
416 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
417 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
418
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
419 del self.__virtualEnvironments[oldVenvName]
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
420 self.addVirtualEnv(metadata)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
421
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
422 def deleteVirtualEnvs(self, venvNames):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
423 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
424 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
425
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
426 @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
427 @type list of str
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 """
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
429 venvMessages = []
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
430 for venvName in venvNames:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
431 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
432 self.__virtualEnvironments[venvName].path
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
433 ):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434 venvMessages.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
435 self.tr("{0} - {1}").format(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
436 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
437 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
438 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
439 if venvMessages:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
440 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
441 self.__ui,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
442 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
443 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
444 """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
445 """ environments?"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
446 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
447 venvMessages,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
448 )
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
449 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
450 for venvName in venvNames:
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
451 envType = self.__registry.getEnvironmentType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
452 self.__virtualEnvironments[venvName].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
453 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
454 if envType and envType.deleteFunc:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
455 deleted = envType.deleteFunc(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
456 self.__virtualEnvironments[venvName]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
457 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
458 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
459 del self.__virtualEnvironments[venvName]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
460
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
461 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
462
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
463 self.virtualEnvironmentRemoved.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
464 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
465
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
466 def __isEnvironmentDeleteable(self, venvName):
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
467 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
468 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
469 disk.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
470
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
471 @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
472 @type str
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
473 @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
474 @rtype bool
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
475 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
476 ok = False
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
477 if venvName in self.__virtualEnvironments:
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
478 ok = True
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
479 ok &= bool(self.__virtualEnvironments[venvName].path)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
480 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
481 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
482
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
483 return ok
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
484
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
485 def __deleteStandardVirtualEnv(self, venvMetaData):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
486 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
487 Private method to delete a given virtual environment from disk.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
488
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
489 @param venvMetaData virtual environment meta data structure
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
490 @type VirtualenvMetaData
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
491 @return flag indicating success
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
492 @rtype bool
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
493 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
494 if self.__isEnvironmentDeleteable(venvMetaData.name):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
495 shutil.rmtree(venvMetaData.path, ignore_errors=True)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
496 return True
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
497 else:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
498 return False
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
499
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
500 def removeVirtualEnvs(self, venvNames):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
501 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
502 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
503
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
504 @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
505 @type list of str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
506 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
507 venvMessages = []
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
508 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
509 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
510 venvMessages.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
511 self.tr("{0} - {1}").format(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
512 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
513 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
514 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
515 if venvMessages:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
516 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
517 self.__ui,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
518 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
519 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
520 """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
521 """ environments?"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
522 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
523 venvMessages,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
524 )
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
525 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
526 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
527 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
528 del self.__virtualEnvironments[venvName]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
529
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
530 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
531
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
532 self.virtualEnvironmentRemoved.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
533 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
534
10351
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
535 def searchUnregisteredInterpreters(self):
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
536 """
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
537 Public method to search for unregistered Python interpreters.
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
538
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
539 @return list of unregistered interpreters
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
540 @rtype list of str
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
541 """
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
542 interpreters = []
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
543 baseDir = self.getVirtualEnvironmentsBaseDir()
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
544 if not baseDir:
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
545 # search in home directory, if no environments base directory is defined
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
546 baseDir = OSUtilities.getHomeDir()
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
547 environments = [
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
548 os.path.join(baseDir, d)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
549 for d in os.listdir(baseDir)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
550 if os.path.isdir(os.path.join(baseDir, d))
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
551 ]
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
552
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
553 interpreters = PythonUtilities.searchInterpreters()
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
554 if environments:
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
555 interpreters += PythonUtilities.searchInterpreters(environments)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
556
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
557 interpreters = {
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
558 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
559 } # 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
560 return list(interpreters)
1f9bafeff96c Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10340
diff changeset
561
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
562 def getEnvironmentEntries(self):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
563 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
564 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
565
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
566 @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
567 @rtype list
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
568 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
569 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
570
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
571 @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
572 def showVirtualenvManagerDialog(self, modal=False):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
573 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
574 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
575
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
576 @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
577 a blocking mode
10433
328f3ec4b77a Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
578 @type bool
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
579 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
580 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
581
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
582 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
583 virtualenvManagerDialog = VirtualenvManagerDialog(self, parent=self.__ui)
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
584 virtualenvManagerDialog.exec()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
585 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
586 else:
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
587 self.__ui.activateVirtualenvManager()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
588
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
589 def isUnique(self, venvName):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
590 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
591 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
592
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 @param venvName logical name for the virtual environment
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 @type str
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
595 @return flag indicating uniqueness
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
596 @rtype bool
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
597 """
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
598 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
599
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
600 def getVirtualenvInterpreter(self, venvName):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
601 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
602 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
603
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
604 @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
605 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
606 @return interpreter path
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
607 @rtype str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
608 """
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
609 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
610 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
611 "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
612 )
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
613 elif venvName == VirtualenvManager.SystemKey:
9559
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9556
diff changeset
614 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
615 else:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
616 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
617
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
618 def setVirtualEnvInterpreter(self, venvName, venvInterpreter):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
619 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
620 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
621
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
622 @param venvName logical name for the virtual environment
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
623 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
624 @param venvInterpreter interpreter path to be set
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
625 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
626 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
627 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
628 self.__virtualEnvironments[venvName].interpreter = venvInterpreter
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
629 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
630
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
631 self.virtualEnvironmentChanged.emit(venvName)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
632 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
633
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
634 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
635 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
636 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
637
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
638 @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
639 @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
640 @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
641 @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
642 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
643 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
644 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
645 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
646 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
647
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
648 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
649 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
650 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
651
10742
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
652 @param noGlobals flag indicating to exclude global environments
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
653 (defaults to False)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
654 @type bool (optional)
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
655 @param filterList tuple containing the list of virtual environment types to
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
656 be included (prefixed by +) or excluded (prefixed by -) (defaults to
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
657 ("all",) )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
658 @type tuple of str ((optional)
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
659 @return list of defined virtual environments
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
660 @rtype list of str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
661 """
10373
093dcebe5ecb Corrected some uses of dict.keys(), dict.values() and dict.items().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10351
diff changeset
662 environments = list(self.__virtualEnvironments)
10742
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
663 if noGlobals:
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
664 environments = [
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
665 name for name in environments if not self.isGlobalEnvironment(name)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
666 ]
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
667 if filterList != ("all",):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
668 includeFilter = [f[1:] for f in filterList if f.startswith("+")]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
669 excludeFilter = [f[1:] for f in filterList if f.startswith("-")]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
670 if includeFilter:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
671 environments = [
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
672 name
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
673 for name in environments
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
674 if self.__virtualEnvironments[name].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
675 in includeFilter
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
676 ]
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
677 if excludeFilter:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
678 environments = [
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
679 name
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
680 for name in environments
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
681 if self.__virtualEnvironments[name].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
682 not in excludeFilter
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
683 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
684
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
685 return environments
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
686
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
687 def isGlobalEnvironment(self, venvName):
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
688 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
689 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
690
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
691 @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
692 @type str
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
693 @return flag indicating a global environment
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
694 @rtype bool
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
695 """
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
696 try:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
697 return self.__virtualEnvironments[venvName].is_global
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
698 except KeyError:
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
699 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
700
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
701 def getVirtualenvExecPath(self, venvName):
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
702 """
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
703 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
704
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
705 @param venvName logical name for the virtual environment
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
706 @type str
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
707 @return search path prefix
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
708 @rtype str
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
709 """
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
710 try:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
711 return self.__virtualEnvironments[venvName].exec_path
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10632
diff changeset
712 except KeyError:
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
713 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
714
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
715 def setVirtualEnvironmentsBaseDir(self, baseDir):
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
716 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
717 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
718
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
719 @param baseDir base directory for the virtual environments
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
720 @type str
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
721 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
722 self.__virtualEnvironmentsBaseDir = baseDir
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
723 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
724
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
725 def getVirtualEnvironmentsBaseDir(self):
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
726 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
727 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
728
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
729 @return base directory for the virtual environments
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
730 @rtype str
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
731 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
732 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
733
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
734 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
735 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
736 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
737 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
738
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
739 @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
740 @type str
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
741 @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
742 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
743 @type str (optional)
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
744 @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
745 @rtype bool
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
746 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
747 try:
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
748 if host:
10770
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
749 return self.__virtualEnvironments[
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
750 venvName
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
751 ].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
752 venvName
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
753 ].eric_server.startswith(
8b4ff92221da Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
754 f"{host}:"
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
755 )
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
756 else:
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
757 return (
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
758 self.__virtualEnvironments[venvName].environment_type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
759 == "eric_server"
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
760 )
10764
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
761 except KeyError:
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
762 return False
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
763
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
764 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
765 """
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
766 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
767
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
768 @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
769 @type str (optional)
10765
b0632e55ec9a Changed 'eric IDE server' to 'eric-ide server'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10764
diff changeset
770 @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
771 @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
772 """
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
773 environments = [
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
774 name
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
775 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
776 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
777 ]
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
778
5915ca2466b2 Added code to support eric-ide server environments for debugging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10746
diff changeset
779 return environments
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
780
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
781 #######################################################################
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
782 ## Interface to the virtual environment types registry
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
783 #######################################################################
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
784
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
785 def getEnvironmentTypesRegistry(self):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
786 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
787 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
788 object.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
789
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
790 @return reference to the virtual environment types registry object
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
791 @rtype VirtualenvTypeRegistry
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
792 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
793 return self.__registry
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
794
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
795 def registerType(self, venvType):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
796 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
797 Public method to register a new virtual environment type.
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
798
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
799 @param venvType virtual environment data
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
800 @type VirtualenvType
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
801 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
802 self.__registry.registerType(venvType=venvType)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
803
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
804 def unregisterType(self, name):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
805 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
806 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
807
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
808 @param name name of the virtual environment type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
809 @type str
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
810 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
811 self.__registry.unregisterType(name=name)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
812
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
813 def getEnvironmentTypeNames(self):
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
814 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
815 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
816
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
817 @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
818 @rtype list of tuple of (str, str)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
819 """
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
820 return self.__registry.getEnvironmentTypeNames() if self.__registry else []

eric ide

mercurial