Fri, 28 Jun 2024 16:36:46 +0200
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() |