src/eric7/VirtualEnv/VirtualenvManager.py

Wed, 06 Sep 2023 10:28:50 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 06 Sep 2023 10:28:50 +0200
branch
eric7
changeset 10194
2c26b4fe25db
parent 9653
e67609152c5e
child 10195
d763674ac9a3
permissions
-rw-r--r--

Refactored the 'VirtualEnv' code for better maintainability.

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
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9624
diff changeset
3 # Copyright (c) 2018 - 2023 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
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
10 import copy
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
11 import json
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
12 import os
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
13 import shutil
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
14 import sys
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
16 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
17 from PyQt6.QtWidgets import QDialog
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
19 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
20 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
21 from eric7.EricWidgets.EricApplication import ericApp
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
22 from eric7.SystemUtilities import FileSystemUtilities, PythonUtilities
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
23 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
25 from .VirtualenvMeta import VirtualenvMetaData
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
26
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 class VirtualenvManager(QObject):
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 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
31
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
32 @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
33 a virtual environment
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
34 @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
35 deletion of a virtual environment
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
36 @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
37 a virtual environment
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
38 @signal virtualEnvironmentsListChanged() emitted to indicate a change of
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
39 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
40 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
41
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
42 DefaultKey = "<default>"
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
43 SystemKey = "<system>"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
45 virtualEnvironmentAdded = pyqtSignal()
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
46 virtualEnvironmentRemoved = pyqtSignal()
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
47 virtualEnvironmentChanged = pyqtSignal(str)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
49 virtualEnvironmentsListChanged = pyqtSignal()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 def __init__(self, parent=None):
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @param parent reference to the parent object
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @type QWidget
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
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
58 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__ui = parent
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
62 self.__loadSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
64 def __loadSettings(self):
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
65 """
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
66 Private slot to load the virtual environments.
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
67 """
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
68 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
69 "PyVenv/VirtualEnvironmentsBaseDir", ""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
70 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
72 venvString = Preferences.getSettings().value(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 "PyVenv/VirtualEnvironments", "{}" # __IGNORE_WARNING_M613__
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74 )
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
75 environments = json.loads(venvString)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
77 self.__virtualEnvironments = {}
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
78 # each environment entry is a dictionary:
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
79 # path: the directory of the virtual environment
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
80 # (empty for a global environment)
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
81 # interpreter: the path of the Python interpreter
7635
0cdead130a81 Removed support for Python2 and removed support for Qt4 (PyQt4 and pyside).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
82 # variant: Python variant (always 3)
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
83 # is_global: a flag indicating a global environment
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
84 # is_conda: a flag indicating an Anaconda environment
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
85 # is_remote: a flag indicating a remotely accessed environment
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
86 # exec_path: a string to be prefixed to the PATH environment
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
87 # setting
9434
ef86a77942f2 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9418
diff changeset
88 # description a description of the environment
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
89 #
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
90 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
91 environment = environments[venvName]
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
92 environment["name"] = venvName
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 if ("is_remote" in environment and environment["is_remote"]) or os.access(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 environment["interpreter"], os.X_OK
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
95 ):
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
96 if "is_global" not in environment:
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
97 environment["is_global"] = environment["path"] == ""
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
98 self.__virtualEnvironments[venvName] = VirtualenvMetaData.from_dict(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
99 environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
100 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
102 # 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
103 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
104 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
105 # 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
106 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
107 for venvName in self.__virtualEnvironments:
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
108 if os.path.samefile(
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
109 defaultPy, self.__virtualEnvironments[venvName]["interpreter"]
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
110 ):
9418
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
111 found = True
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
112 break
93698f6003d3 Changed virtualenv manager to not create an entry for an embedded environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
113 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
114 # add an environment entry for the default interpreter
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
115 self.__virtualEnvironments[
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
116 VirtualenvManager.DefaultKey
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
117 ] = VirtualenvMetaData(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
118 name=VirtualenvManager.DefaultKey,
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
119 interpreter=defaultPy,
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
120 is_globa=True,
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
121 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
123 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
125 def __saveSettings(self):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 Private slot to save the virtual environments.
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
129 Preferences.getSettings().setValue(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130 "PyVenv/VirtualEnvironmentsBaseDir", self.__virtualEnvironmentsBaseDir
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8610
diff changeset
133 Preferences.getSettings().setValue(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
134 "PyVenv/VirtualEnvironments",
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
135 json.dumps(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
136 {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
137 ),
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
138 )
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
139 Preferences.syncPreferences()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
140
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
141 @pyqtSlot()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
142 def reloadSettings(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
143 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
144 Public slot to reload the virtual environments.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
145 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
146 Preferences.syncPreferences()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
147 self.__loadSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148
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
149 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
150 """
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
151 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
152
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
153 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
154 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
155 execute eric with)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
156
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
157 @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
158 of the default virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
159 @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
160 """
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
161 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
162 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
163 VirtualenvManager.DefaultKey,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164 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
165 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
166
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
167 else:
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
168 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
169
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
170 def environmentForInterpreter(self, interpreter):
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
171 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
172 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
173
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
174 @param interpreter path of the interpreter
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
175 @type str
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
176 @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
177 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
178 @rtype tuple of (str, VirtualenvMetaData)
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
179 """
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9559
diff changeset
180 py = FileSystemUtilities.normcaseabspath(interpreter.replace("w.exe", ".exe"))
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
181 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
182 if py == FileSystemUtilities.normcaseabspath(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
183 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
184 ):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
185 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
186
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
187 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
188 return (VirtualenvManager.SystemKey, {})
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
189
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
190 return ("", {})
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 @pyqtSlot()
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
193 def createVirtualEnv(self, baseDir=""):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 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
196
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
197 @param baseDir base directory for the virtual environments
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
198 @type str
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
200 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
201 from .VirtualenvExecDialog import VirtualenvExecDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
202
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
203 if not baseDir:
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
204 baseDir = self.__virtualEnvironmentsBaseDir
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
205
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
206 dlg = VirtualenvConfigurationDialog(baseDir=baseDir)
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
207 if dlg.exec() == QDialog.DialogCode.Accepted:
6672
2af01e538c57 Started implementing support conda virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
208 resultDict = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209
6672
2af01e538c57 Started implementing support conda virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
210 if resultDict["envType"] == "conda":
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
211 # create the conda environment
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
212 conda = ericApp().getObject("Conda")
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
213 ok, prefix, interpreter = conda.createCondaEnvironment(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
214 resultDict["arguments"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
215 )
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
216 if ok and "--dry-run" not in resultDict["arguments"]:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217 self.addVirtualEnv(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
218 VirtualenvMetaData(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
219 name=resultDict["logicalName"],
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
220 path=prefix,
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
221 interpreter=interpreter,
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
222 is_conda=True,
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
223 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
224 )
6672
2af01e538c57 Started implementing support conda virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
225 else:
2af01e538c57 Started implementing support conda virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
226 # now do the call
2af01e538c57 Started implementing support conda virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
227 dia = VirtualenvExecDialog(resultDict, self)
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
228 dia.show()
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
229 dia.start(resultDict["arguments"])
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
230 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
231
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
232 @pyqtSlot()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
233 def upgradeVirtualEnv(self, venvName):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
234 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
235 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
236
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
237 @param venvName name of the virtual environment
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
238 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
239 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
240 from .VirtualenvUpgradeConfigurationDialog import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241 VirtualenvUpgradeConfigurationDialog,
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
242 )
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
243 from .VirtualenvUpgradeExecDialog import VirtualenvUpgradeExecDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
245 venvDirectory = self.getVirtualenvDirectory(venvName)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
246 if not os.path.exists(os.path.join(venvDirectory, "pyvenv.cfg")):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
247 # The environment was not created by the 'venv' module.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
248 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
250 dlg = VirtualenvUpgradeConfigurationDialog(venvName, venvDirectory)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
251 if dlg.exec() == QDialog.DialogCode.Accepted:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
252 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
253
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
254 dia = VirtualenvUpgradeExecDialog(venvName, pythonExe, createLog, self)
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
255 dia.show()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
256 dia.start(args)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
257 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
259 def addVirtualEnv(self, metadata):
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 """
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 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
262
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
263 @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
264 @type VirtualenvMetaData
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
266 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
267 VirtualenvInterpreterSelectionDialog,
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
268 )
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
269 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
270
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
271 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
272 ok = EricMessageBox.yesNo(
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 None,
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 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
275 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
276 """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
277 """ already. Shall it be replaced?"""
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
278 ).format(metadata.name),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
279 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
280 )
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 if not ok:
6677
6299d69a218a Continued implementing environment creation with conda.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6676
diff changeset
282 dlg = VirtualenvNameDialog(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
283 list(self.__virtualEnvironments.keys()), metadata.name
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284 )
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
285 if dlg.exec() != QDialog.DialogCode.Accepted:
6677
6299d69a218a Continued implementing environment creation with conda.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6676
diff changeset
286 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
287
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
288 metadata.name = dlg.getName()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
289
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
290 if not metadata.interpreter:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
291 dlg = VirtualenvInterpreterSelectionDialog(metadata.name, metadata.path)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
292 if dlg.exec() == QDialog.DialogCode.Accepted:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
293 metadata.interpreter = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
294
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
295 if metadata.interpreter:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
296 self.__virtualEnvironments[metadata.name] = metadata
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
297 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
298
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
299 self.virtualEnvironmentAdded.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
300 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
301
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
302 def setVirtualEnv(self, metadata):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
303 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
304 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
305
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
306 @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
307 @type VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
308 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
309 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
310 EricMessageBox.yesNo(
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
311 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
312 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
313 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
314 """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
315 """ exist. Aborting!"""
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
316 ).format(metadata.name),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
317 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
318 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
319 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
320
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
321 self.__virtualEnvironments[metadata.name] = metadata
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
322 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
323
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
324 self.virtualEnvironmentChanged.emit(metadata.name)
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
325 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
327 def renameVirtualEnv(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
329 oldVenvName,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
330 metadata,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331 ):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
332 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
333 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
334 name.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
336 @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
337 @type str
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
338 @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
339 @type VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
340 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
341 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
342 EricMessageBox.yesNo(
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
343 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
344 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
345 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346 """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
347 """ exist. Aborting!"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348 ).format(oldVenvName),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349 icon=EricMessageBox.Warning,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
351 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
353 del self.__virtualEnvironments[oldVenvName]
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
354 self.addVirtualEnv(metadata)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
356 def deleteVirtualEnvs(self, venvNames):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
357 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
358 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
359
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
360 @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
361 @type list of str
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 """
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
363 venvMessages = []
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
364 for venvName in venvNames:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
365 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
366 self.__virtualEnvironments[venvName].path
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
367 ):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368 venvMessages.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
369 self.tr("{0} - {1}").format(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
370 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
371 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
372 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
373 if venvMessages:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
374 dlg = DeleteFilesConfirmationDialog(
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
375 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
376 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
377 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378 """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
379 """ environments?"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
380 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381 venvMessages,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
382 )
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
383 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
384 for venvName in venvNames:
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
385 if self.__isEnvironmentDeleteable(venvName):
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
386 if self.isCondaEnvironment(venvName):
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
387 conda = ericApp().getObject("Conda")
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
388 path = self.__virtualEnvironments[venvName].path
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
389 res = conda.removeCondaEnvironment(prefix=path)
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
390 if res:
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
391 del self.__virtualEnvironments[venvName]
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
392 else:
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
393 shutil.rmtree(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
394 self.__virtualEnvironments[venvName].path, True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395 )
6697
2f5c951bdf14 Conda interface: added capability to remove conda environments the conda way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6696
diff changeset
396 del self.__virtualEnvironments[venvName]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
398 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
399
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
400 self.virtualEnvironmentRemoved.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
401 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
402
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
403 def __isEnvironmentDeleteable(self, venvName):
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
404 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
405 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
406 disk.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
408 @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
409 @type str
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
410 @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
411 @rtype bool
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
412 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
413 ok = False
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
414 if venvName in self.__virtualEnvironments:
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
415 ok = True
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
416 ok &= bool(self.__virtualEnvironments[venvName].path)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
417 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
418 ok &= not self.__virtualEnvironments[venvName].is_remote
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
419 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
420
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
421 return ok
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
422
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
423 def removeVirtualEnvs(self, venvNames):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
424 """
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
425 Public method to delete virtual environment from the list.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
426
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
427 @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
428 @type list of str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
429 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
430 venvMessages = []
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
431 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
432 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
433 venvMessages.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434 self.tr("{0} - {1}").format(
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
435 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
436 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
437 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
438 if venvMessages:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
439 dlg = DeleteFilesConfirmationDialog(
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
440 None,
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
441 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
442 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
443 """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
444 """ environments?"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
445 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
446 venvMessages,
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
447 )
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
448 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
449 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
450 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
451 del self.__virtualEnvironments[venvName]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
452
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
453 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
454
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6740
diff changeset
455 self.virtualEnvironmentRemoved.emit()
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
456 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
457
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
458 def getEnvironmentEntries(self):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
459 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
460 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
461
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
462 @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
463 @rtype list
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
464 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
465 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
466
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
467 @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
468 def showVirtualenvManagerDialog(self, modal=False):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
469 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
470 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
471
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
472 @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
473 a blocking mode
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
474 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
475 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
476
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
477 if modal:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
478 virtualenvManagerDialog = VirtualenvManagerDialog(self, self.__ui)
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
479 virtualenvManagerDialog.exec()
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
480 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
481 else:
8610
c9cd21bcbe33 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
482 self.__ui.activateVirtualenvManager()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
483
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
484 def isUnique(self, venvName):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
485 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
486 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
487
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 @param venvName logical name for the virtual environment
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 @type str
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
490 @return flag indicating uniqueness
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
491 @rtype bool
6337
c6af560e0039 VirtualEnv: started implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 """
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
493 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
494
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
495 def getVirtualenvInterpreter(self, venvName):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
496 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
497 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
498
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
499 @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
500 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
501 @return interpreter path
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
502 @rtype str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
503 """
6349
17b3c75913de VirtualEnv: improved the virtual env handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6341
diff changeset
504 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
505 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
506 "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
507 )
9506
62397ab8df8c Fixed some issues related to paths on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
508 elif venvName == VirtualenvManager.SystemKey:
9559
34fc53e6159d Project Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9556
diff changeset
509 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
510 else:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
511 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
512
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
513 def setVirtualEnvInterpreter(self, venvName, venvInterpreter):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
514 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
515 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
516
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
517 @param venvName logical name for the virtual environment
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
518 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
519 @param venvInterpreter interpreter path to be set
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
520 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
521 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
522 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
523 self.__virtualEnvironments[venvName].interpreter = venvInterpreter
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
524 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
525
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
526 self.virtualEnvironmentChanged.emit(venvName)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9140
diff changeset
527 self.virtualEnvironmentsListChanged.emit()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
528
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
529 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
530 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
531 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
532
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
533 @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
534 @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
535 @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
536 @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
537 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
538 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
539 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
540 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
541 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
542
7726
b1ade4fcf05f Pip Interface: added an option to not show 'conda' managed environments in the selector.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7635
diff changeset
543 def getVirtualenvNames(self, noRemote=False, noConda=False):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
544 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
545 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
546
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
547 @param noRemote flag indicating to exclude environments for remote
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
548 debugging
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
549 @type bool
7726
b1ade4fcf05f Pip Interface: added an option to not show 'conda' managed environments in the selector.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7635
diff changeset
550 @param noConda flag indicating to exclude Conda environments
b1ade4fcf05f Pip Interface: added an option to not show 'conda' managed environments in the selector.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7635
diff changeset
551 @type bool
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
552 @return list of defined virtual environments
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
553 @rtype list of str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6337
diff changeset
554 """
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
555 environments = list(self.__virtualEnvironments.keys())
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
556 if noRemote:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
557 environments = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
558 name for name in environments if not self.isRemoteEnvironment(name)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
559 ]
7726
b1ade4fcf05f Pip Interface: added an option to not show 'conda' managed environments in the selector.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7635
diff changeset
560 if noConda:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
561 environments = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
562 name for name in environments if not self.isCondaEnvironment(name)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
563 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
564
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
565 return environments
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
566
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
567 def isGlobalEnvironment(self, venvName):
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
568 """
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
569 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
570
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
571 @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
572 @type str
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
573 @return flag indicating a global environment
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
574 @rtype bool
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
575 """
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
576 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
577 return self.__virtualEnvironments[venvName].is_global
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
578 else:
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
579 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
580
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
581 def isCondaEnvironment(self, venvName):
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
582 """
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
583 Public method to test, if a given environment is an Anaconda
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
584 environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
585
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
586 @param venvName logical name of the virtual environment
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
587 @type str
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
588 @return flag indicating an Anaconda environment
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
589 @rtype bool
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
590 """
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
591 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
592 return self.__virtualEnvironments[venvName].is_conda
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
593 else:
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
594 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
595
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
596 def isRemoteEnvironment(self, venvName):
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
597 """
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
598 Public method to test, if a given environment is a remotely accessed
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
599 environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
600
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
601 @param venvName logical name of the virtual environment
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
602 @type str
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
603 @return flag indicating a remotely accessed environment
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
604 @rtype bool
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
605 """
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
606 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
607 return self.__virtualEnvironments[venvName].is_remote
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
608 else:
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
609 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
610
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
611 def getVirtualenvExecPath(self, venvName):
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
612 """
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
613 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
614
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
615 @param venvName logical name for the virtual environment
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
616 @type str
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
617 @return search path prefix
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
618 @rtype str
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
619 """
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
620 if venvName in self.__virtualEnvironments:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
621 return self.__virtualEnvironments[venvName].exec_path
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
622 else:
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6503
diff changeset
623 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
624
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
625 def setVirtualEnvironmentsBaseDir(self, baseDir):
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
626 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
627 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
628
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
629 @param baseDir base directory for the virtual environments
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
630 @type str
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
631 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
632 self.__virtualEnvironmentsBaseDir = baseDir
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
633 self.__saveSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
634
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
635 def getVirtualEnvironmentsBaseDir(self):
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
636 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
637 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
638
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
639 @return base directory for the virtual environments
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
640 @rtype str
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
641 """
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
642 return self.__virtualEnvironmentsBaseDir

eric ide

mercurial