scripts/install-dependencies.py

Mon, 18 Dec 2023 17:45:20 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 18 Dec 2023 17:45:20 +0100
branch
eric7
changeset 10420
5ac83a87954d
parent 10341
3fdffd9cc21d
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Converted some source code documentation to the new style.

8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 #!/usr/bin/env python3
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9632
diff changeset
4 # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 # This script installs all packages eric depends on.
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 Installation script for the eric IDE dependencies.
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
12 import contextlib
9324
7f7f3e47b238 Set some security considerations to 'ok'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9314
diff changeset
13 import subprocess # secok
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import sys
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
17 def exit(rcode=0):
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
18 """
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
19 Exit the install script.
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
20
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10341
diff changeset
21 @param rcode result code to report back
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10341
diff changeset
22 @type int
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
23 """
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
24 print()
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
25
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
26 if sys.platform.startswith(("win", "cygwin")):
9328
49a0a9cb2505 Fixed some code style issues detected by the new checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9324
diff changeset
27 with contextlib.suppress(EOFError):
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
28 input("Press enter to continue...") # secok
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
29
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
30 sys.exit(rcode)
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
31
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
32
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 def pipInstall(packageName):
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 Install the given package via pip.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param packageName name of the package to be installed
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @type str
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @return flag indicating a successful installation
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @rtype bool
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 ok = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43 exitCode = subprocess.run( # secok
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45 sys.executable,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
46 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47 "pip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48 "install",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49 "--prefer-binary",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50 "--upgrade",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51 packageName,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52 ]
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 ).returncode
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54 ok = exitCode == 0
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 return ok
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 def main():
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 Function to install the eric dependencies.
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
63 requiredPackages = (
9209
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
64 "PyQt6>=6.2.0",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
65 "PyQt6-Charts>=6.2.0",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
66 "PyQt6-WebEngine>=6.2.0",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
67 "PyQt6-QScintilla>=2.13.0",
9107
8e9525a780ae Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
68 "tomlkit",
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 "asttokens",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 "EditorConfig",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 "Pygments",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 "parso",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 "jedi",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 "packaging",
9209
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
75 "cyclonedx-python-lib",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
76 "cyclonedx-bom",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
77 "trove-classifiers",
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
78 "black>=22.6.0",
9632
dd907ee33b03 Removed use of 'send2trash'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9328
diff changeset
79 "isort>=5.10.0",
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
80 "coverage>=6.5.0",
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 )
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
82 optionalPackages = (
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
83 "docutils",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
84 "Markdown",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
85 "pyyaml",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
86 "chardet",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
87 "pyenchant",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
88 "wheel",
10341
3fdffd9cc21d Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
89 "esprima",
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
90 )
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
91
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
92 packages = []
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
93 if len(sys.argv) == 2:
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
94 if sys.argv[1] == "--all":
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
95 packages = requiredPackages + optionalPackages
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
96 elif sys.argv[1] == "--required":
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
97 packages = requiredPackages
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
98 elif sys.argv[1] == "--optional":
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
99 packages = optionalPackages
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
100
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
101 if not packages:
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
102 print("Usage:")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
103 print(" install-dependencies --all | --optional | --required")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
104 print("where:")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
105 print(" --all install all dependencies")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
106 print(" --optional install all optional dependencies")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
107 print(" --required install all required dependencies")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
108
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
109 exit(42)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 failedPackages = []
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 for package in packages:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 ok = pipInstall(package)
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 if not ok:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 failedPackages.append(package)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 print()
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 print("Installation Summary")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 print("--------------------")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 if failedPackages:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 print("These packages could not be installed:")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 for package in failedPackages:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 print(" " + package)
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 else:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 print("All packages installed successfully.")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
127 exit(0)
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
128
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 if __name__ == "__main__":
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 main()
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 #
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 # eflag: noqa = M801

eric ide

mercurial