PipxInterface/Pipx.py

Fri, 28 Jun 2024 16:36:46 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 28 Jun 2024 16:36:46 +0200
changeset 15
2fb8d19c38ae
parent 14
12413552ae0d
child 19
70b187d5a9df
permissions
-rw-r--r--

Corrected some code style and formatting issues.

2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the pipx GUI logic.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import contextlib
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import json
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import os
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
13 import pathlib
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import sysconfig
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from PyQt6.QtCore import QObject, QProcess
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from eric7 import Preferences
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
19 from eric7.EricWidgets import EricMessageBox
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from eric7.SystemUtilities import OSUtilities
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
22 from .PipxExecDialog import PipxExecDialog
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
23
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 class Pipx(QObject):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 Class implementing the pip GUI logic.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 def __init__(self, parent=None):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param parent reference to the user interface object
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type QObject
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 super().__init__(parent)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.__ui = parent
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 ############################################################################
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 ## Utility methods
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 ############################################################################
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 def getPipxVersion(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 Public method to get the version of the installed pipx package.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @return string containing the pipx version number
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @rtype str
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
52 from pipx.version import version # noqa: I102
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 return version
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 def getPipxVersionTuple(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 Public method to get the version tuple of the installed pipx package.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @return tuple containing the elements of the pipx version number
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @rtype tuple of (int, int, int)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
63 from pipx.version import version_tuple # noqa: I102
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 return version_tuple
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 def getPipxPaths(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 Public method to get the paths used by pipx.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @return dictionary containing the various pipx paths. The keys are
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 'venvsPath', 'appsPath' and 'manPath'.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @rtype dict[str, Path]
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
75 from pipx.paths import ctx # noqa: I102
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 return {
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 "venvsPath": ctx.venvs,
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 "appsPath": ctx.bin_dir,
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 "manPath": ctx.man_dir,
8
02b45cd11e64 Added the display of the path standalone Python interpreters are installed to.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
81 "pythonPath": ctx.standalone_python_cachedir,
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 }
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 def getPipxStrPaths(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 Public method to get the paths used by pipx.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @return dictionary containing the various pipx paths. The keys are
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 'venvsPath', 'appsPath' and 'manPath'.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @rtype dict[str, str]
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
92 from pipx.paths import ctx # noqa: I102
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 return {
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 "venvsPath": str(ctx.venvs),
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 "appsPath": str(ctx.bin_dir),
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 "manPath": str(ctx.man_dir),
8
02b45cd11e64 Added the display of the path standalone Python interpreters are installed to.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
98 "pythonPath": str(ctx.standalone_python_cachedir),
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 }
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 def __getPipxExecutable(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 Private method to get the path name of the pipx executable.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 @return path name of the pipx executable
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @rtype str
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 binDir = sysconfig.get_path("scripts")
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 pipx = os.path.join(binDir, "pipx")
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
110 if OSUtilities.isWindowsPlatform():
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 pipx += ".exe"
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 return pipx
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
115 def runPipxProcess(self, args):
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 Public method to execute pipx with the given arguments.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @param args list of command line arguments for pipx
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @type list of str
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 @return tuple containing a flag indicating success and the output
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 of the process
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 @rtype tuple of (bool, str)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 ioEncoding = Preferences.getSystem("IOEncoding")
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 process = QProcess()
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
128 process.start(self.__getPipxExecutable(), args)
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 procStarted = process.waitForStarted()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 if procStarted:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 finished = process.waitForFinished(30000)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 if finished:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 if process.exitCode() == 0:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 output = str(process.readAllStandardOutput(), ioEncoding, "replace")
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 return True, output
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 else:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 error = str(process.readAllStandardError(), ioEncoding, "replace")
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 msg = self.tr("<p>Message:{0}</p>").format(error) if error else ""
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 return (
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 False,
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.tr("<p>pipx exited with an error ({0}).</p>{1}").format(
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 process.exitCode(), msg
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 ),
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 )
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 else:
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 process.terminate()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 process.waitForFinished(2000)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 process.kill()
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 process.waitForFinished(3000)
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 return False, self.tr("pipx did not finish within 30 seconds.")
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 return False, self.tr("pipx could not be started.")
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
154 def __metadataDecoderHook(self, jsonDict):
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
155 """
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
156 Private method to allow the JSON decoding of Path objects of a spec metadata
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
157 file as created by 'pipx list --json'.
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
158
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
159 @param jsonDict JSON dictionary to be decoded
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
160 @type dict
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
161 @return decoded Path object or the dictionary unaltered
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
162 @rtype dict or pathlib.Path
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
163 """
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
164 if jsonDict.get("__type__") == "Path" and "__Path__" in jsonDict:
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
165 return pathlib.Path(jsonDict["__Path__"])
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
166 return jsonDict
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
167
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 ############################################################################
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
169 ## pipx interpreter list function (modified from original to work here)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
170 ############################################################################
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
171
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
172 def getPipxInterpretersList(self):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
173 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
174 Public method returning a list all standalone interpreters.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
175
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
176 @return dictionary containing data of standalone interpreters
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
177 @rtype dict
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
178 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
179 from pipx.commands.interpreter import ( # noqa: I102
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
180 get_installed_standalone_interpreters,
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
181 get_interpreter_users,
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
182 get_venvs_using_standalone_interpreter,
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
183 )
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
184 from pipx.paths import ctx # noqa: I102
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
185 from pipx.venv import VenvContainer # noqa: I102
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
186
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
187 interpreters = get_installed_standalone_interpreters()
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
188 venvs = get_venvs_using_standalone_interpreter(VenvContainer(ctx.venvs))
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
189
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
190 interpretersDict = {
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
191 "path": str(ctx.standalone_python_cachedir),
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
192 "interpreters": {},
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
193 }
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
194 for interpreter in interpreters:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
195 usedBy = get_interpreter_users(interpreter, venvs)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
196 interpretersDict["interpreters"][interpreter.name] = {
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
197 "used": bool(usedBy),
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
198 "used_by": [
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
199 (p.main_package.package, p.main_package.package_version)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
200 for p in usedBy
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
201 ],
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
202 }
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
203 return interpretersDict
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
204
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
205 ############################################################################
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 ## Command methods
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 ############################################################################
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 def getInstalledPackages(self):
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 """
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 Public method to get the installed packages.
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 @return list of dictionaries containing the installed packages and apps
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 @rtype list of dict[str, str | list]
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
216 from pipx.paths import ctx # noqa: I102
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
217
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 packages = []
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
220 ok, output = self.runPipxProcess(["list", "--json"])
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
221 if ok and output:
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
222 with contextlib.suppress(json.JSONDecodeError):
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
223 data = json.loads(output, object_hook=self.__metadataDecoderHook)
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
224 for venvName in data["venvs"]:
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
225 metadata = data["venvs"][venvName]["metadata"]
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
226 package = {
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
227 "name": venvName,
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
228 "version": metadata["main_package"]["package_version"],
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
229 "apps": [],
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
230 "python": metadata["python_version"],
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
231 "is_standalone": (
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
232 str(metadata["source_interpreter"]).startswith(
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
233 str(ctx.standalone_python_cachedir.resolve())
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
234 )
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
235 if metadata["source_interpreter"]
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
236 else False
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
237 ),
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
238 }
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
239 for appPath in metadata["main_package"]["app_paths"]:
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
240 package["apps"].append((appPath.name, str(appPath)))
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
241 packages.append(package)
2
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242
26430067aa09 Added the main pipx interface widget and the pipx commands interface (basic variant each).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 return packages
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
244
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
245 def installPackages(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
246 self,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
247 packages,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
248 interpreterVersion="",
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
249 fetchMissingInterpreter=False,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
250 forceVenvModification=False,
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
251 systemSitePackages=False,
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
252 ):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
253 """
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
254 Public method to install a list of packages with the given options.
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
255
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
256 @param packages list of packages to install
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
257 @type list of str
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
258 @param interpreterVersion version of the Python interpreter (defaults to "")
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
259 @type str (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
260 @param fetchMissingInterpreter flag indicating to fetch a standalone Python
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
261 build from GitHub if the specified Python version is not found locally
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
262 on the system (defaults to False)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
263 @type bool (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
264 @param forceVenvModification flag indicating to allow modification of already
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
265 existing virtual environments (defaults to False)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
266 @type bool (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
267 @param systemSitePackages flag indicating to give access to the system
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
268 site-packages directory (defaults to False)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
269 @type bool (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
270 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
271 args = ["install"]
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
272 if Preferences.getPip("PipSearchIndex"):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
273 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
274 args += ["--index-url", indexUrl]
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
275 if interpreterVersion:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
276 args += ["--python", interpreterVersion]
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
277 if fetchMissingInterpreter:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
278 args.append("--fetch-missing-python")
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
279 if forceVenvModification:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
280 args.append("--force")
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
281 if systemSitePackages:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
282 args.append("--system-site-packages")
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
283 args += packages
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
284 dia = PipxExecDialog(self.tr("Install Packages"))
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
285 res = dia.startProcess(self.__getPipxExecutable(), args)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
286 if res:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
287 dia.exec()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
288
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
289 def installAllPackages(
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
290 self,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
291 specFile,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
292 interpreterVersion="",
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
293 fetchMissingInterpreter=False,
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
294 forceVenvModification=False,
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
295 systemSitePackages=False,
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
296 ):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
297 """
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
298 Public method to install all packages define by a given spec metadata file
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
299 with given options.
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
300
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
301 @param specFile path of the spec metadata file
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
302 @type str
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
303 @param interpreterVersion version of the Python interpreter (defaults to "")
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
304 @type str (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
305 @param fetchMissingInterpreter flag indicating to fetch a standalone Python
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
306 build from GitHub if the specified Python version is not found locally
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
307 on the system (defaults to False)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
308 @type bool (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
309 @param forceVenvModification flag indicating to allow modification of already
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
310 existing virtual environments (defaults to False)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
311 @type bool (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
312 @param systemSitePackages flag indicating to give access to the system
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
313 site-packages directory (defaults to False)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
314 @type bool (optional)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
315 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
316 args = ["install-all"]
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
317 if Preferences.getPip("PipSearchIndex"):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
318 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
319 args += ["--index-url", indexUrl]
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
320 if interpreterVersion:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
321 args += ["--python", interpreterVersion]
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
322 if fetchMissingInterpreter:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
323 args.append("--fetch-missing-python")
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
324 if forceVenvModification:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
325 args.append("--force")
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
326 if systemSitePackages:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
327 args.append("--system-site-packages")
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
328 args.append(specFile)
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
329 dia = PipxExecDialog(self.tr("Install All Packages"))
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
330 res = dia.startProcess(self.__getPipxExecutable(), args)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
331 if res:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
332 dia.exec()
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
333
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
334 def createSpecMetadataFile(self, specFile):
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
335 """
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
336 Public method to create a spec metadata file.
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
337
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
338 @param specFile path of the spec metadata file
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
339 @type str
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
340 @return tuple containing a flag indicating success and an error message in case
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
341 of failure
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
342 @rtype tuple of (bool, str)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
343 """
10
89e0e6e5ca7a Added functionality to create a spec metadata file and to use it for the 'install-all' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
344 ok, output = self.runPipxProcess(["list", "--json"])
9
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
345 if ok:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
346 try:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
347 with open(specFile, "w") as f:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
348 f.write(output)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
349 return True, ""
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
350 except IOError as err:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
351 return False, str(err)
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
352 else:
2ab7d3ac8283 Implemented the 'pipx install' and 'pipx install-all' functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
353 return False, output
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
354
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
355 def reinstallPackage(
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
356 self,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
357 package,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
358 interpreterVersion="",
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
359 fetchMissingInterpreter=False,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
360 ):
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
361 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
362 Public method to reinstall the given package with given options.
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
363
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
364 @param package name of the package to reinstall
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
365 @type str
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
366 @param interpreterVersion version of the Python interpreter (defaults to "")
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
367 @type str (optional)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
368 @param fetchMissingInterpreter flag indicating to fetch a standalone Python
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
369 build from GitHub if the specified Python version is not found locally
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
370 on the system (defaults to False)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
371 @type bool (optional)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
372 """
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
373 args = ["reinstall"]
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
374 if interpreterVersion:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
375 args += ["--python", interpreterVersion]
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
376 if fetchMissingInterpreter:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
377 args.append("--fetch-missing-python")
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
378 args.append(package)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
379 dia = PipxExecDialog(self.tr("Re-Install Package"))
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
380 res = dia.startProcess(self.__getPipxExecutable(), args)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
381 if res:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
382 dia.exec()
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
383
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
384 def reinstallAllPackages(
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
385 self,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
386 interpreterVersion="",
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
387 fetchMissingInterpreter=False,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
388 skipPackages=None,
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
389 ):
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
390 """
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
391 Public method to reinstall all packages with given options.
12
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
392
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
393 @param interpreterVersion version of the Python interpreter (defaults to "")
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
394 @type str (optional)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
395 @param fetchMissingInterpreter flag indicating to fetch a standalone Python
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
396 build from GitHub if the specified Python version is not found locally
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
397 on the system (defaults to False)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
398 @type bool (optional)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
399 @param skipPackages list of packages to be skipped by the 'reinstall-all'
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
400 command (defaults to None)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
401 @type list of str (optional)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
402 """
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
403 args = ["reinstall-all"]
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
404 if interpreterVersion:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
405 args += ["--python", interpreterVersion]
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
406 if fetchMissingInterpreter:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
407 args.append("--fetch-missing-python")
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
408 if skipPackages:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
409 args += ["--skip"] + skipPackages
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
410 dia = PipxExecDialog(self.tr("Re-Install All Packages"))
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
411 res = dia.startProcess(self.__getPipxExecutable(), args)
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
412 if res:
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
413 dia.exec()
a09f763d5e1f Added functionality to reinstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
414
11
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
415 def uninstallPackage(self, package):
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
416 """
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
417 Public method to uninstall the given package.
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
418
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
419 @param package name of the package to be uninstalled
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
420 @type str
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
421 """
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
422 args = ["uninstall", package]
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
423 dia = PipxExecDialog(self.tr("Uninstall Package"))
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
424 res = dia.startProcess(self.__getPipxExecutable(), args)
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
425 if res:
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
426 dia.exec()
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
427
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
428 def uninstallAllPackages(self):
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
429 """
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
430 Public method to uninstall all pipx managed packages.
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
431 """
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
432 args = ["uninstall-all"]
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
433 dia = PipxExecDialog(self.tr("Uninstall All Packages"))
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
434 res = dia.startProcess(self.__getPipxExecutable(), args)
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
435 if res:
6af0704c8175 Added functionality to uninstall single or all pipx managed packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10
diff changeset
436 dia.exec()
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
437
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
438 def checkPackageOutdated(self, package):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
439 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
440 Public method to check, if a given package is outdated.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
441
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
442 @param package name of the package
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
443 @type str
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
444 @return latest version in case the package is outdated and None otherwise
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
445 @rtype str or None
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
446 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
447 args = ["runpip", package, "list", "--outdated", "--format", "json"]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
448 if Preferences.getPip("PipSearchIndex"):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
449 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
450 args += ["--index-url", indexUrl]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
451 ok, output = self.runPipxProcess(args)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
452 if not ok:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
453 EricMessageBox.information(
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
454 None,
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
455 self.tr("Check Outdated Package"),
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
456 self.tr(
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
457 "<p>The status of package <b>{0}</b> could not be determined.</p>"
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
458 "<p>Reason: {1}</p>"
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
459 ).format(package, output),
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
460 )
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
461 return None
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
462
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
463 outdatedList = json.loads(output)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
464 # check if the main package is in the list
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
465 for outdatedPackage in outdatedList:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
466 if outdatedPackage["name"] == package:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
467 return outdatedPackage["latest_version"]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
468
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
469 return None
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
470
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
471 def upgradePackage(self, package):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
472 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
473 Public method to upgrade the given package.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
474
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
475 @param package name of the package
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
476 @type str
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
477 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
478 args = ["upgrade"]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
479 if Preferences.getPip("PipSearchIndex"):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
480 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
481 args += ["--index-url", indexUrl]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
482 args.append(package)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
483 dia = PipxExecDialog(self.tr("Upgrade Package"))
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
484 res = dia.startProcess(self.__getPipxExecutable(), args)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
485 if res:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
486 dia.exec()
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
487
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
488 def upgradeAllPackages(self):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
489 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
490 Public method to upgrade all package.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
491 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
492 args = ["upgrade-all"]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
493 dia = PipxExecDialog(self.tr("Upgrade All Packages"))
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
494 res = dia.startProcess(self.__getPipxExecutable(), args)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
495 if res:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
496 dia.exec()
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
497
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
498 def upgradeSharedLibraries(self):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
499 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
500 Public method to upgrade shared libraries.
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
501 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
502 args = ["upgrade-shared"]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
503 dia = PipxExecDialog(self.tr("Upgrade Shared Libraries"))
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
504 res = dia.startProcess(self.__getPipxExecutable(), args)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
505 if res:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
506 dia.exec()
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
507
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
508 def upgradeInterpreters(self, dialogParent=None):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
509 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
510 Public method to upgrade the installed interpreters to the latest available
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
511 micro/patch version.
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
512
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
513 @param dialogParent parent widget of the execution dialog
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
514 @type QWidget
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
515 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
516 args = ["interpreter", "upgrade"]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
517 dia = PipxExecDialog(self.tr("Upgrade Interpreters"), parent=dialogParent)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
518 res = dia.startProcess(self.__getPipxExecutable(), args)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
519 if res:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
520 dia.exec()
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
521
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
522 def pruneInterpreters(self, dialogParent=None):
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
523 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
524 Public method to prune unused interpreters.
15
2fb8d19c38ae Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
525
14
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
526 @param dialogParent parent widget of the execution dialog
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
527 @type QWidget
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
528 """
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
529 args = ["interpreter", "prune"]
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
530 dia = PipxExecDialog(self.tr("Prune Unused Interpreters"), parent=dialogParent)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
531 res = dia.startProcess(self.__getPipxExecutable(), args)
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
532 if res:
12413552ae0d Added functionality to upgrade single or all pipx managed packages and to manage the standalone interpreters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
533 dia.exec()

eric ide

mercurial