machineconfig 4.96__py3-none-any.whl → 4.97__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/jobs/installer/custom/gh.py +2 -15
- machineconfig/jobs/installer/custom_dev/alacritty.py +41 -26
- machineconfig/jobs/installer/custom_dev/brave.py +42 -28
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +30 -19
- machineconfig/jobs/installer/custom_dev/code.py +29 -20
- machineconfig/jobs/installer/custom_dev/espanso.py +64 -41
- machineconfig/jobs/installer/custom_dev/goes.py +41 -36
- machineconfig/jobs/installer/custom_dev/lvim.py +49 -33
- machineconfig/jobs/installer/custom_dev/nerdfont.py +71 -47
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +25 -10
- machineconfig/jobs/installer/custom_dev/redis.py +51 -33
- machineconfig/jobs/installer/installer_data.json +17 -0
- machineconfig/jobs/installer/package_groups.py +271 -102
- machineconfig/jobs/python/python_cargo_build_share.py +0 -1
- machineconfig/jobs/python/python_ve_symlink.py +23 -15
- machineconfig/jobs/python/vscode/api.py +16 -8
- machineconfig/jobs/python/vscode/sync_code.py +42 -27
- machineconfig/scripts/python/cloud_repo_sync.py +8 -4
- machineconfig/scripts/python/devops_devapps_install.py +34 -26
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +4 -2
- machineconfig/scripts/python/interactive.py +24 -23
- machineconfig/scripts/python/mount_nfs.py +3 -6
- machineconfig/scripts/python/mount_ssh.py +3 -4
- machineconfig/scripts/python/sessions.py +10 -9
- machineconfig/scripts/python/start_slidev.py +14 -4
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +36 -22
- machineconfig/utils/code.py +11 -2
- machineconfig/utils/installer.py +15 -9
- machineconfig/utils/path_extended.py +49 -7
- machineconfig/utils/ssh.py +22 -12
- machineconfig/utils/terminal.py +66 -92
- {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/METADATA +1 -1
- {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/RECORD +36 -36
- {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/WHEEL +0 -0
- {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/entry_points.txt +0 -0
- {machineconfig-4.96.dist-info → machineconfig-4.97.dist-info}/top_level.txt +0 -0
|
@@ -5,9 +5,12 @@ import time
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
import sys
|
|
7
7
|
import subprocess
|
|
8
|
+
import os
|
|
8
9
|
from platform import system
|
|
9
10
|
from typing import Any, Optional, Union, Callable, TypeAlias, Literal
|
|
10
11
|
|
|
12
|
+
from machineconfig.utils.terminal import Response
|
|
13
|
+
|
|
11
14
|
|
|
12
15
|
OPLike: TypeAlias = Union[str, "PathExtended", Path, None]
|
|
13
16
|
PLike: TypeAlias = Union[str, "PathExtended", Path]
|
|
@@ -15,6 +18,44 @@ FILE_MODE: TypeAlias = Literal["r", "w", "x", "a"]
|
|
|
15
18
|
SHUTIL_FORMATS: TypeAlias = Literal["zip", "tar", "gztar", "bztar", "xztar"]
|
|
16
19
|
|
|
17
20
|
|
|
21
|
+
def _is_user_admin() -> bool:
|
|
22
|
+
if os.name == "nt":
|
|
23
|
+
try:
|
|
24
|
+
return __import__("ctypes").windll.shell32.IsUserAnAdmin()
|
|
25
|
+
except Exception: # noqa: BLE001
|
|
26
|
+
import traceback
|
|
27
|
+
|
|
28
|
+
traceback.print_exc()
|
|
29
|
+
print("Admin check failed, assuming not an admin.")
|
|
30
|
+
return False
|
|
31
|
+
return os.getuid() == 0
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _run_shell_command(
|
|
35
|
+
command: str,
|
|
36
|
+
shell_name: str,
|
|
37
|
+
*,
|
|
38
|
+
stdout: Optional[int] = subprocess.PIPE,
|
|
39
|
+
stderr: Optional[int] = subprocess.PIPE,
|
|
40
|
+
stdin: Optional[int] = None,
|
|
41
|
+
check: bool = False,
|
|
42
|
+
) -> subprocess.CompletedProcess[str]:
|
|
43
|
+
if shell_name in {"powershell", "pwsh"} and sys.platform == "win32":
|
|
44
|
+
args: list[str] = [shell_name, "-Command", command]
|
|
45
|
+
return subprocess.run(args, check=check, text=True, stdout=stdout, stderr=stderr, stdin=stdin)
|
|
46
|
+
executable = "/bin/bash" if shell_name == "bash" and sys.platform != "win32" else None
|
|
47
|
+
return subprocess.run(
|
|
48
|
+
command,
|
|
49
|
+
check=check,
|
|
50
|
+
text=True,
|
|
51
|
+
stdout=stdout,
|
|
52
|
+
stderr=stderr,
|
|
53
|
+
stdin=stdin,
|
|
54
|
+
shell=True,
|
|
55
|
+
executable=executable,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
18
59
|
def pwd2key(password: str, salt: Optional[bytes] = None, iterations: int = 10) -> bytes: # Derive a secret key from a given password and salt"""
|
|
19
60
|
import base64
|
|
20
61
|
|
|
@@ -392,9 +433,7 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
|
|
|
392
433
|
assert target_obj.exists(), f"Target path `{target}` (aka `{target_obj}`) doesn't exist. This will create a broken link."
|
|
393
434
|
if overwrite and (self.is_symlink() or self.exists()):
|
|
394
435
|
self.delete(sure=True, verbose=verbose)
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
if system() == "Windows" and not Terminal.is_user_admin(): # you cannot create symlink without priviliages.
|
|
436
|
+
if system() == "Windows" and not _is_user_admin(): # you cannot create symlink without priviliages.
|
|
398
437
|
import win32com.shell.shell # type: ignore # pylint: disable=E0401
|
|
399
438
|
|
|
400
439
|
_proce_info = win32com.shell.shell.ShellExecuteEx(lpVerb="runas", lpFile=sys.executable, lpParameters=f" -c \"from pathlib import Path; Path(r'{self.expanduser()}').symlink_to(r'{str(target_obj)}')\"")
|
|
@@ -884,8 +923,9 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
|
|
|
884
923
|
if verbose:
|
|
885
924
|
print("🔗 SHARING FILE")
|
|
886
925
|
shell_to_use = "powershell" if sys.platform == "win32" else "bash"
|
|
887
|
-
|
|
888
|
-
|
|
926
|
+
command = f"rclone link '{cloud}:{rp.as_posix()}'"
|
|
927
|
+
completed = _run_shell_command(command, shell_to_use)
|
|
928
|
+
res = Response.from_completed_process(completed).capture()
|
|
889
929
|
tmp = res.op2path(strict_err=False, strict_returncode=False)
|
|
890
930
|
if tmp is None:
|
|
891
931
|
res.print()
|
|
@@ -955,11 +995,13 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
|
|
|
955
995
|
|
|
956
996
|
rclone_cmd += f" --progress --transfers={transfers} --verbose"
|
|
957
997
|
rclone_cmd += " --delete-during" if delete else ""
|
|
958
|
-
from machineconfig.utils.terminal import Terminal
|
|
959
998
|
if verbose:
|
|
960
999
|
print(rclone_cmd)
|
|
961
1000
|
shell_to_use = "powershell" if sys.platform == "win32" else "bash"
|
|
962
|
-
|
|
1001
|
+
stdout_target: Optional[int] = None if verbose else subprocess.PIPE
|
|
1002
|
+
stderr_target: Optional[int] = None if verbose else subprocess.PIPE
|
|
1003
|
+
completed = _run_shell_command(rclone_cmd, shell_to_use, stdout=stdout_target, stderr=stderr_target)
|
|
1004
|
+
res = Response.from_completed_process(completed)
|
|
963
1005
|
success = res.is_successful(strict_err=False, strict_returcode=True)
|
|
964
1006
|
if not success:
|
|
965
1007
|
res.print(capture=False, desc="Cloud Storage Operation")
|
machineconfig/utils/ssh.py
CHANGED
|
@@ -2,12 +2,31 @@ from typing import Optional, Any, Union, List
|
|
|
2
2
|
import os
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
import rich.console
|
|
5
|
-
from machineconfig.utils.terminal import
|
|
5
|
+
from machineconfig.utils.terminal import Response, MACHINE
|
|
6
6
|
from machineconfig.utils.path_extended import PathExtended, PLike, OPLike
|
|
7
7
|
from machineconfig.utils.accessories import pprint
|
|
8
8
|
# from machineconfig.utils.ve import get_ve_activate_line
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
def get_header(wdir: OPLike, toolbox: bool):
|
|
12
|
+
if toolbox:
|
|
13
|
+
toobox_code = """
|
|
14
|
+
try:
|
|
15
|
+
from crocodile.toolbox import *
|
|
16
|
+
except ImportError:
|
|
17
|
+
print("Crocodile not found, skipping import.")
|
|
18
|
+
pass
|
|
19
|
+
"""
|
|
20
|
+
else:
|
|
21
|
+
toobox_code = "# No toolbox import."
|
|
22
|
+
return f"""
|
|
23
|
+
# >> Code prepended
|
|
24
|
+
{toobox_code}
|
|
25
|
+
{'''sys.path.insert(0, r'{wdir}') ''' if wdir is not None else "# No path insertion."}
|
|
26
|
+
# >> End of header, start of script passed
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
|
|
11
30
|
@dataclass
|
|
12
31
|
class Scout:
|
|
13
32
|
source_full: PathExtended
|
|
@@ -217,7 +236,7 @@ class SSH: # inferior alternative: https://github.com/fabric/fabric
|
|
|
217
236
|
assert '"' not in cmd, 'Avoid using `"` in your command. I dont know how to handle this when passing is as command to python in pwsh command.'
|
|
218
237
|
if not return_obj:
|
|
219
238
|
return self.run(
|
|
220
|
-
cmd=f"""uv run --no-dev --project $HOME/code/machineconfig -c "{
|
|
239
|
+
cmd=f"""uv run --no-dev --project $HOME/code/machineconfig -c "{get_header(wdir=None, toolbox=True)}{cmd}\n""" + '"',
|
|
221
240
|
desc=desc or f"run_py on {self.get_remote_repr()}",
|
|
222
241
|
verbose=verbose,
|
|
223
242
|
strict_err=strict_err,
|
|
@@ -349,13 +368,4 @@ class SSH: # inferior alternative: https://github.com/fabric/fabric
|
|
|
349
368
|
target = target.unzip(inplace=True, content=True)
|
|
350
369
|
self.run_py(f"P(r'{source.as_posix()}').delete(sure=True)", desc="Cleaning temp zip files @ remote.", strict_returncode=True, strict_err=True)
|
|
351
370
|
print("\n")
|
|
352
|
-
return target
|
|
353
|
-
|
|
354
|
-
# def print_summary(self):
|
|
355
|
-
# import polars as pl
|
|
356
|
-
# df = pl.DataFrame(List(self.terminal_responses).apply(lambda rsp: dict(desc=rsp.desc, err=rsp.err, returncode=rsp.returncode)).list)
|
|
357
|
-
# print("\nSummary of operations performed:")
|
|
358
|
-
# print(df.to_pandas().to_markdown())
|
|
359
|
-
# if ((df.select('returncode').to_series().to_list()[2:] == [None] * (len(df) - 2)) and (df.select('err').to_series().to_list()[2:] == [''] * (len(df) - 2))): print("\nAll operations completed successfully.\n")
|
|
360
|
-
# else: print("\nSome operations failed. \n")
|
|
361
|
-
# return df
|
|
371
|
+
return target
|
machineconfig/utils/terminal.py
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
from machineconfig.utils.path_extended import PathExtended
|
|
1
|
+
from machineconfig.utils.path_extended import PathExtended
|
|
2
2
|
import subprocess
|
|
3
3
|
from typing import Any, BinaryIO, Optional, Union
|
|
4
|
-
import platform
|
|
5
|
-
import sys
|
|
6
|
-
import os
|
|
7
4
|
from typing import Literal, TypeAlias
|
|
8
5
|
from dataclasses import dataclass
|
|
9
6
|
|
|
@@ -102,11 +99,7 @@ class Response:
|
|
|
102
99
|
return self
|
|
103
100
|
|
|
104
101
|
|
|
105
|
-
|
|
106
|
-
# The Terminal class has been replaced with inline subprocess calls to underlying primitives.
|
|
107
|
-
# This file is kept for reference but should not be used.
|
|
108
|
-
|
|
109
|
-
|
|
102
|
+
'''
|
|
110
103
|
class Terminal:
|
|
111
104
|
def __init__(self, stdout: Optional[int] = subprocess.PIPE, stderr: Optional[int] = subprocess.PIPE, stdin: Optional[int] = subprocess.PIPE, elevated: bool = False):
|
|
112
105
|
self.machine: str = platform.system()
|
|
@@ -116,13 +109,13 @@ class Terminal:
|
|
|
116
109
|
self.stdin = stdin
|
|
117
110
|
|
|
118
111
|
# def set_std_system(self): self.stdout = sys.stdout; self.stderr = sys.stderr; self.stdin = sys.stdin
|
|
119
|
-
def set_std_pipe(self):
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
112
|
+
# def set_std_pipe(self):
|
|
113
|
+
# self.stdout = subprocess.PIPE
|
|
114
|
+
# self.stderr = subprocess.PIPE
|
|
115
|
+
# self.stdin = subprocess.PIPE
|
|
123
116
|
|
|
124
|
-
def set_std_null(self):
|
|
125
|
-
|
|
117
|
+
# def set_std_null(self):
|
|
118
|
+
# self.stdout, self.stderr, self.stdin = subprocess.DEVNULL, subprocess.DEVNULL, subprocess.DEVNULL # Equivalent to `echo 'foo' &> /dev/null`
|
|
126
119
|
|
|
127
120
|
def run(self, *cmds: str, shell: Optional[SHELLS] = "default", check: bool = False, ip: Optional[str] = None) -> Response: # Runs SYSTEM commands like subprocess.run
|
|
128
121
|
"""Blocking operation. Thus, if you start a shell via this method, it will run in the main and won't stop until you exit manually IF stdin is set to sys.stdin, otherwise it will run and close quickly. Other combinations of stdin, stdout can lead to funny behaviour like no output but accept input or opposite.
|
|
@@ -138,64 +131,7 @@ class Terminal:
|
|
|
138
131
|
resp: subprocess.CompletedProcess[str] = subprocess.run(my_list, stderr=self.stderr, stdin=self.stdin, stdout=self.stdout, text=True, shell=True, check=check, input=ip)
|
|
139
132
|
else:
|
|
140
133
|
resp = __import__("ctypes").windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
def run_script(self, script: str, shell: SHELLS = "default", verbose: bool = False):
|
|
144
|
-
if self.machine == "Linux":
|
|
145
|
-
script = "#!/bin/bash" + "\n" + script # `source` is only available in bash.
|
|
146
|
-
script_file = PathExtended.tmpfile(name="tmp_shell_script", suffix=".ps1" if self.machine == "Windows" else ".sh", folder="tmp_scripts")
|
|
147
|
-
script_file.write_text(script, newline={"Windows": None, "Linux": "\n"}[self.machine])
|
|
148
|
-
if shell == "default":
|
|
149
|
-
if self.machine == "Windows":
|
|
150
|
-
start_cmd = "powershell" # default shell on Windows is cmd which is not very useful. (./source is not available)
|
|
151
|
-
full_command: Union[list[str], str] = [start_cmd, str(script_file)] # shell=True will cause this to be a string anyway (with space separation)
|
|
152
|
-
else:
|
|
153
|
-
start_cmd = "bash"
|
|
154
|
-
full_command = f"{start_cmd} {script_file}" # full_command = [start_cmd, str(script_file)]
|
|
155
|
-
else:
|
|
156
|
-
full_command = f"{shell} {script_file}" # full_command = [shell, str(tmp_file)]
|
|
157
|
-
if verbose:
|
|
158
|
-
desc = "Script to be executed:"
|
|
159
|
-
if platform.system() == "Windows":
|
|
160
|
-
lexer = "powershell"
|
|
161
|
-
elif platform.system() == "Linux":
|
|
162
|
-
lexer = "sh"
|
|
163
|
-
elif platform.system() == "Darwin":
|
|
164
|
-
lexer = "sh" # macOS uses similar shell to Linux
|
|
165
|
-
else:
|
|
166
|
-
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
167
|
-
from rich.console import Console
|
|
168
|
-
from rich.panel import Panel
|
|
169
|
-
from rich.syntax import Syntax
|
|
170
|
-
import rich.progress as pb
|
|
171
|
-
|
|
172
|
-
console = Console()
|
|
173
|
-
console.print(Panel(Syntax(code=script, lexer=lexer), title=f"📄 {desc}"), style="bold red")
|
|
174
|
-
with pb.Progress(transient=True) as progress:
|
|
175
|
-
_task = progress.add_task(f"Running Script @ {script_file}", total=None)
|
|
176
|
-
resp = subprocess.run(full_command, stderr=self.stderr, stdin=self.stdin, stdout=self.stdout, text=True, shell=True, check=False)
|
|
177
|
-
else:
|
|
178
|
-
resp = subprocess.run(full_command, stderr=self.stderr, stdin=self.stdin, stdout=self.stdout, text=True, shell=True, check=False)
|
|
179
|
-
return Response.from_completed_process(resp)
|
|
180
|
-
|
|
181
|
-
def run_py(self, script: str, wdir: OPLike = None, interactive: bool = True, ipython: bool = True, shell: Optional[str] = None, terminal: str = "", new_window: bool = True, header: bool = True): # async run, since sync run is meaningless.
|
|
182
|
-
script = (Terminal.get_header(wdir=wdir, toolbox=True) if header else "") + script + ("\nDisplayData.set_pandas_auto_width()\n" if terminal in {"wt", "powershell", "pwsh"} else "")
|
|
183
|
-
py_script = PathExtended.tmpfile(name="tmp_python_script", suffix=".py", folder="tmp_scripts/terminal")
|
|
184
|
-
py_script.write_text(f"""print(r'''{script}''')""" + "\n" + script)
|
|
185
|
-
print(f"""🚀 [ASYNC PYTHON SCRIPT] Script URI:
|
|
186
|
-
{py_script.absolute().as_uri()}""")
|
|
187
|
-
print("Script to be executed asyncronously: ", py_script.absolute().as_uri())
|
|
188
|
-
shell_script = f"""
|
|
189
|
-
{f"cd {wdir}" if wdir is not None else ""}
|
|
190
|
-
{"ipython" if ipython else "python"} {"-i" if interactive else ""} {py_script}
|
|
191
|
-
"""
|
|
192
|
-
shell_path = PathExtended.tmpfile(name="tmp_shell_script", suffix=".sh" if self.machine == "Linux" else ".ps1", folder="tmp_scripts/shell")
|
|
193
|
-
shell_path.write_text(shell_script)
|
|
194
|
-
if shell is None and self.machine == "Windows":
|
|
195
|
-
shell = "pwsh"
|
|
196
|
-
window = "start" if new_window and self.machine == "Windows" else ""
|
|
197
|
-
os.system(f"{window} {terminal} {shell} {shell_script}")
|
|
198
|
-
|
|
134
|
+
return Response.from_completed_process(resp)
|
|
199
135
|
@staticmethod
|
|
200
136
|
def is_user_admin() -> bool: # adopted from: https://stackoverflow.com/questions/19672352/how-to-run-script-with-elevated-privilege-on-windows"""
|
|
201
137
|
if os.name == "nt":
|
|
@@ -209,6 +145,63 @@ class Terminal:
|
|
|
209
145
|
return False
|
|
210
146
|
else:
|
|
211
147
|
return os.getuid() == 0 # Check for root on Posix
|
|
148
|
+
'''
|
|
149
|
+
|
|
150
|
+
# def run_script(self, script: str, shell: SHELLS = "default", verbose: bool = False):
|
|
151
|
+
# if self.machine == "Linux":
|
|
152
|
+
# script = "#!/bin/bash" + "\n" + script # `source` is only available in bash.
|
|
153
|
+
# script_file = PathExtended.tmpfile(name="tmp_shell_script", suffix=".ps1" if self.machine == "Windows" else ".sh", folder="tmp_scripts")
|
|
154
|
+
# script_file.write_text(script, newline={"Windows": None, "Linux": "\n"}[self.machine])
|
|
155
|
+
# if shell == "default":
|
|
156
|
+
# if self.machine == "Windows":
|
|
157
|
+
# start_cmd = "powershell" # default shell on Windows is cmd which is not very useful. (./source is not available)
|
|
158
|
+
# full_command: Union[list[str], str] = [start_cmd, str(script_file)] # shell=True will cause this to be a string anyway (with space separation)
|
|
159
|
+
# else:
|
|
160
|
+
# start_cmd = "bash"
|
|
161
|
+
# full_command = f"{start_cmd} {script_file}" # full_command = [start_cmd, str(script_file)]
|
|
162
|
+
# else:
|
|
163
|
+
# full_command = f"{shell} {script_file}" # full_command = [shell, str(tmp_file)]
|
|
164
|
+
# if verbose:
|
|
165
|
+
# desc = "Script to be executed:"
|
|
166
|
+
# if platform.system() == "Windows":
|
|
167
|
+
# lexer = "powershell"
|
|
168
|
+
# elif platform.system() == "Linux":
|
|
169
|
+
# lexer = "sh"
|
|
170
|
+
# elif platform.system() == "Darwin":
|
|
171
|
+
# lexer = "sh" # macOS uses similar shell to Linux
|
|
172
|
+
# else:
|
|
173
|
+
# raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
174
|
+
# from rich.console import Console
|
|
175
|
+
# from rich.panel import Panel
|
|
176
|
+
# from rich.syntax import Syntax
|
|
177
|
+
# import rich.progress as pb
|
|
178
|
+
|
|
179
|
+
# console = Console()
|
|
180
|
+
# console.print(Panel(Syntax(code=script, lexer=lexer), title=f"📄 {desc}"), style="bold red")
|
|
181
|
+
# with pb.Progress(transient=True) as progress:
|
|
182
|
+
# _task = progress.add_task(f"Running Script @ {script_file}", total=None)
|
|
183
|
+
# resp = subprocess.run(full_command, stderr=self.stderr, stdin=self.stdin, stdout=self.stdout, text=True, shell=True, check=False)
|
|
184
|
+
# else:
|
|
185
|
+
# resp = subprocess.run(full_command, stderr=self.stderr, stdin=self.stdin, stdout=self.stdout, text=True, shell=True, check=False)
|
|
186
|
+
# return Response.from_completed_process(resp)
|
|
187
|
+
|
|
188
|
+
# def run_py(self, script: str, wdir: OPLike = None, interactive: bool = True, ipython: bool = True, shell: Optional[str] = None, terminal: str = "", new_window: bool = True, header: bool = True): # async run, since sync run is meaningless.
|
|
189
|
+
# script = (Terminal.get_header(wdir=wdir, toolbox=True) if header else "") + script + ("\nDisplayData.set_pandas_auto_width()\n" if terminal in {"wt", "powershell", "pwsh"} else "")
|
|
190
|
+
# py_script = PathExtended.tmpfile(name="tmp_python_script", suffix=".py", folder="tmp_scripts/terminal")
|
|
191
|
+
# py_script.write_text(f"""print(r'''{script}''')""" + "\n" + script)
|
|
192
|
+
# print(f"""🚀 [ASYNC PYTHON SCRIPT] Script URI:
|
|
193
|
+
# {py_script.absolute().as_uri()}""")
|
|
194
|
+
# print("Script to be executed asyncronously: ", py_script.absolute().as_uri())
|
|
195
|
+
# shell_script = f"""
|
|
196
|
+
# {f"cd {wdir}" if wdir is not None else ""}
|
|
197
|
+
# {"ipython" if ipython else "python"} {"-i" if interactive else ""} {py_script}
|
|
198
|
+
# """
|
|
199
|
+
# shell_path = PathExtended.tmpfile(name="tmp_shell_script", suffix=".sh" if self.machine == "Linux" else ".ps1", folder="tmp_scripts/shell")
|
|
200
|
+
# shell_path.write_text(shell_script)
|
|
201
|
+
# if shell is None and self.machine == "Windows":
|
|
202
|
+
# shell = "pwsh"
|
|
203
|
+
# window = "start" if new_window and self.machine == "Windows" else ""
|
|
204
|
+
# os.system(f"{window} {terminal} {shell} {shell_script}")
|
|
212
205
|
|
|
213
206
|
# @staticmethod
|
|
214
207
|
# def run_as_admin(file: PLike, params: Any, wait: bool = False):
|
|
@@ -216,22 +209,3 @@ class Terminal:
|
|
|
216
209
|
# # TODO update PATH for this to take effect immediately.
|
|
217
210
|
# if wait: time.sleep(1)
|
|
218
211
|
# return proce_info
|
|
219
|
-
|
|
220
|
-
@staticmethod
|
|
221
|
-
def get_header(wdir: OPLike, toolbox: bool):
|
|
222
|
-
if toolbox:
|
|
223
|
-
toobox_code = """
|
|
224
|
-
try:
|
|
225
|
-
from crocodile.toolbox import *
|
|
226
|
-
except ImportError:
|
|
227
|
-
print("Crocodile not found, skipping import.")
|
|
228
|
-
pass
|
|
229
|
-
"""
|
|
230
|
-
else:
|
|
231
|
-
toobox_code = "# No toolbox import."
|
|
232
|
-
return f"""
|
|
233
|
-
# >> Code prepended
|
|
234
|
-
{toobox_code}
|
|
235
|
-
{'''sys.path.insert(0, r'{wdir}') ''' if wdir is not None else "# No path insertion."}
|
|
236
|
-
# >> End of header, start of script passed
|
|
237
|
-
"""
|
|
@@ -43,22 +43,22 @@ machineconfig/cluster/templates/run_remote.py,sha256=vCc56t8BUAUJp7tyb0PFfwy5hlm
|
|
|
43
43
|
machineconfig/cluster/templates/utils.py,sha256=5lHgjHvodoSPBD31AwluHBBNgwimwThUsDNWGN8iH9I,1647
|
|
44
44
|
machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
45
|
machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
-
machineconfig/jobs/installer/installer_data.json,sha256=
|
|
47
|
-
machineconfig/jobs/installer/package_groups.py,sha256=
|
|
48
|
-
machineconfig/jobs/installer/custom/gh.py,sha256=
|
|
46
|
+
machineconfig/jobs/installer/installer_data.json,sha256=tBf8X6TEfdhRrvTbp5qyKUs0nEYxE62C8XgDkPCJnfc,72128
|
|
47
|
+
machineconfig/jobs/installer/package_groups.py,sha256=hG9-RLfEXlGg5u7-8x9PrNLr9mNtuoVLVrfDN9hqzQ0,6735
|
|
48
|
+
machineconfig/jobs/installer/custom/gh.py,sha256=iZZI4ND87eiWlj-Y5uJ7LuN8ln2QkqjJyeOMFZ0o-YA,2963
|
|
49
49
|
machineconfig/jobs/installer/custom/hx.py,sha256=FrUD0mlhWG2GxrnarccVIaW_sHJ5mxeF6yyzbBWyx6w,5840
|
|
50
50
|
machineconfig/jobs/installer/custom_dev/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
machineconfig/jobs/installer/custom_dev/alacritty.py,sha256=
|
|
52
|
-
machineconfig/jobs/installer/custom_dev/brave.py,sha256=
|
|
53
|
-
machineconfig/jobs/installer/custom_dev/bypass_paywall.py,sha256=
|
|
54
|
-
machineconfig/jobs/installer/custom_dev/code.py,sha256=
|
|
51
|
+
machineconfig/jobs/installer/custom_dev/alacritty.py,sha256=dQJ7EZ-23N3UOeWwccC-HTbrpfKDRxrzdmfqeIPKwQE,2738
|
|
52
|
+
machineconfig/jobs/installer/custom_dev/brave.py,sha256=6-jsdvvVEQDkqHbhnEubitF6fy7AXBB9Q-GLgIEOLoM,2987
|
|
53
|
+
machineconfig/jobs/installer/custom_dev/bypass_paywall.py,sha256=2DHZtMKjeH6BBVBaZKsup3PwzPfl4Cxmn9xlR7fzAkg,1904
|
|
54
|
+
machineconfig/jobs/installer/custom_dev/code.py,sha256=0Hb4ToMLQX4WWyG4xfUEJMTwN01ad5VZGogu3Llqtbc,2480
|
|
55
55
|
machineconfig/jobs/installer/custom_dev/cursor.py,sha256=3xoFAYFdZqurSHXeEG-vbG0KU1TNQpBMaMgL1eW6X4k,4326
|
|
56
|
-
machineconfig/jobs/installer/custom_dev/espanso.py,sha256=
|
|
57
|
-
machineconfig/jobs/installer/custom_dev/goes.py,sha256=
|
|
58
|
-
machineconfig/jobs/installer/custom_dev/lvim.py,sha256=
|
|
59
|
-
machineconfig/jobs/installer/custom_dev/nerdfont.py,sha256=
|
|
60
|
-
machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=
|
|
61
|
-
machineconfig/jobs/installer/custom_dev/redis.py,sha256=
|
|
56
|
+
machineconfig/jobs/installer/custom_dev/espanso.py,sha256=H1rZb4xnjs72lL0_mB0M4d7NrDyVv1sAG3NOkOrCB64,4137
|
|
57
|
+
machineconfig/jobs/installer/custom_dev/goes.py,sha256=SIRkpzkCeWMof0BnPuoEJy3KHNkVZs8J5DnoZJXb9TY,2130
|
|
58
|
+
machineconfig/jobs/installer/custom_dev/lvim.py,sha256=2-wbh_IClTFcFkSYk9EsRiv88-isSNIVX6dNZ1L5m8Q,2985
|
|
59
|
+
machineconfig/jobs/installer/custom_dev/nerdfont.py,sha256=dsPmiqP9AJCack7mNeJ8Qzo4dSOwC0bsupH0Hn3gqSg,4149
|
|
60
|
+
machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py,sha256=6IRg95ToIfw1oGNxZNZPwsjrwgJgbjQHE6My8rTe36o,6073
|
|
61
|
+
machineconfig/jobs/installer/custom_dev/redis.py,sha256=bReDLsgy37eJyTU4TXE7FQpKFi-_usQC7bwhfXvZuBU,3259
|
|
62
62
|
machineconfig/jobs/installer/custom_dev/wezterm.py,sha256=BuTVRqV5WQUS2C7FpWMU4pQWgkPt4p3VVGcE6fTVG-0,2311
|
|
63
63
|
machineconfig/jobs/installer/custom_dev/winget.py,sha256=gLdwM20jKMf2bMV3BAcOg4MkuzwF09CU5OhXvLkPoHo,5738
|
|
64
64
|
machineconfig/jobs/installer/linux_scripts/brave.sh,sha256=m01xquA4YZW3YrhJiTCvTZuLliELmRI1avYFyuE5-Ws,2119
|
|
@@ -81,11 +81,11 @@ machineconfig/jobs/linux/msc/network.sh,sha256=dmISsh0hioDheinqee3qHfo2k7ClFx6G_
|
|
|
81
81
|
machineconfig/jobs/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
82
|
machineconfig/jobs/python/check_installations.py,sha256=ksuENfJg0NAo1mWLRnsj1MpZw7Ee7eKw1nWyUQeO7fg,11096
|
|
83
83
|
machineconfig/jobs/python/create_bootable_media.py,sha256=KKtcPk0rFLQc4eNVP6nbeYX-P7Gpqi0HvfIcUM6rVVs,827
|
|
84
|
-
machineconfig/jobs/python/python_cargo_build_share.py,sha256=
|
|
85
|
-
machineconfig/jobs/python/python_ve_symlink.py,sha256=
|
|
84
|
+
machineconfig/jobs/python/python_cargo_build_share.py,sha256=vy1v32-7Tui4NK4wG5XC5hxavQ4BeMpKprUtqzBjut0,2081
|
|
85
|
+
machineconfig/jobs/python/python_ve_symlink.py,sha256=HYVkNLIOm4Zk6zX8cNOKNLSKA7un9hXiZfBjq8vcwRs,1156
|
|
86
86
|
machineconfig/jobs/python/tasks.py,sha256=hrBDQOnBmcXtauTkicVgC8J2AOGcfdFfyx0K8eI6Coc,150
|
|
87
|
-
machineconfig/jobs/python/vscode/api.py,sha256=
|
|
88
|
-
machineconfig/jobs/python/vscode/sync_code.py,sha256=
|
|
87
|
+
machineconfig/jobs/python/vscode/api.py,sha256=Et0G-VUj13D1rshYMdDrw_CUYSO7Q6XRrEQO0WjVIKU,1683
|
|
88
|
+
machineconfig/jobs/python/vscode/sync_code.py,sha256=f9hxMg_nkIsC0xvfQMboJbc-Jhap9YQrV7k7a5YSI1c,2333
|
|
89
89
|
machineconfig/jobs/windows/start_terminal.ps1,sha256=wy0fGwgb4U7xaHsONDrR4V5u9JEkG5vtt4NZUBx0ro8,473
|
|
90
90
|
machineconfig/jobs/windows/startup_file.cmd,sha256=qOqDwL0MmRB-fHauJKjOO0mhczyA3-cdRUyY1p7NCok,95
|
|
91
91
|
machineconfig/jobs/windows/archive/archive_pygraphviz.ps1,sha256=XBMaFurdY8smiLdeP3iAm2p1x4Ui_F3Ty9lHikKSfUk,708
|
|
@@ -145,14 +145,14 @@ machineconfig/scripts/python/choose_wezterm_theme.py,sha256=Hlu_EOQhLM6wYdAdY25j
|
|
|
145
145
|
machineconfig/scripts/python/cloud_copy.py,sha256=_pxA8o3ar5vH9DkrAdwafHcZMiqNCbY_IfNzKCOMJ5k,8395
|
|
146
146
|
machineconfig/scripts/python/cloud_manager.py,sha256=YN0DYLzPKtMBaks-EAVwFmkCu3XeHWMr1D21uqX5dDk,3429
|
|
147
147
|
machineconfig/scripts/python/cloud_mount.py,sha256=RFMzRUep2D5HtVXANIi-pab3EkI-W8P1IJ32k1W7xQA,6756
|
|
148
|
-
machineconfig/scripts/python/cloud_repo_sync.py,sha256=
|
|
148
|
+
machineconfig/scripts/python/cloud_repo_sync.py,sha256=PTZ4gyhMFwW77DxE86GyNQK0JDFLcMUSF69AM80SvxY,9781
|
|
149
149
|
machineconfig/scripts/python/cloud_sync.py,sha256=RWGpAfJ9fnN18yNBSgN44dzA38Hmd4879JL5r2pcyrM,3514
|
|
150
150
|
machineconfig/scripts/python/croshell.py,sha256=wYi8xWkzYzpfg8YNppmu22mvx0Gxtbs979ERO3kZS2w,8587
|
|
151
151
|
machineconfig/scripts/python/devops.py,sha256=fTEut6gTDfmNqzS8-gRyRAsmWJYPGGIt8X35Irj7Cl8,3434
|
|
152
152
|
machineconfig/scripts/python/devops_add_identity.py,sha256=JfN3ZrYMCgmt4ks_VCfnV9BIIHAsOYO3E0W0wZ15FR8,3791
|
|
153
153
|
machineconfig/scripts/python/devops_add_ssh_key.py,sha256=KaoX83KltBsmutfKhSfZjd7nP_R1hJ2OLAWRhbswO7o,6889
|
|
154
154
|
machineconfig/scripts/python/devops_backup_retrieve.py,sha256=jZe5Vki7E2GCMG8hvqUZeOONFC4cNzISoGzq_dMG4GA,5601
|
|
155
|
-
machineconfig/scripts/python/devops_devapps_install.py,sha256=
|
|
155
|
+
machineconfig/scripts/python/devops_devapps_install.py,sha256=2MZsR5aOY_z7dhgrdeffxVhq1i3kxeuthtHLpKmCA18,9333
|
|
156
156
|
machineconfig/scripts/python/devops_update_repos.py,sha256=c5qBc9cuTGDEqDHufkjDT4d_vvJsswv3tlqk9MAulYk,8063
|
|
157
157
|
machineconfig/scripts/python/dotfile.py,sha256=SRcX-9Ak1jRvF-killBTTm2IWcsNxfiLucH6ZsytAFA,2202
|
|
158
158
|
machineconfig/scripts/python/fire_agents_help_launch.py,sha256=1ymWiszfjCyPv3ofinWzfOmbzLEt3d7ntac_afLh-V4,5017
|
|
@@ -166,10 +166,10 @@ machineconfig/scripts/python/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_
|
|
|
166
166
|
machineconfig/scripts/python/ftpx.py,sha256=l_gdJS0QB2wVZErubtZvm4HJD9HZAJxSP68sbY73xwo,10278
|
|
167
167
|
machineconfig/scripts/python/get_zellij_cmd.py,sha256=e35-18hoXM9N3PFbvbizfkNY_-63iMicieWE3TbGcCQ,576
|
|
168
168
|
machineconfig/scripts/python/gh_models.py,sha256=3BLfW25mBRiPO5VKtVm-nMlKLv-PaZDw7mObajq6F6M,5538
|
|
169
|
-
machineconfig/scripts/python/interactive.py,sha256=
|
|
170
|
-
machineconfig/scripts/python/mount_nfs.py,sha256=
|
|
169
|
+
machineconfig/scripts/python/interactive.py,sha256=W0NIGTZb0RFyoJIcp02pToRUv_WP5F7-67AOX5N46G4,11797
|
|
170
|
+
machineconfig/scripts/python/mount_nfs.py,sha256=5HmtsAelFSVzl8o_F9mBoKiuVNIyRHjvdqKzFJR1P64,3376
|
|
171
171
|
machineconfig/scripts/python/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
172
|
-
machineconfig/scripts/python/mount_ssh.py,sha256=
|
|
172
|
+
machineconfig/scripts/python/mount_ssh.py,sha256=7dYCBtkJE43rwuvhxiYzyTlJ230RFQbZOA29veYQbuU,2284
|
|
173
173
|
machineconfig/scripts/python/onetimeshare.py,sha256=bmGsNnskym5OWfIhpOfZG5jq3m89FS0a6dF5Sb8LaZM,2539
|
|
174
174
|
machineconfig/scripts/python/pomodoro.py,sha256=SPkfeoZGv8rylGiOyzQ7UK3aXZ3G2FIOuGkSuBUggOI,2019
|
|
175
175
|
machineconfig/scripts/python/repos.py,sha256=Mz-d0ubynOZaKwC6YXKiZq9ojMnKFi4J6n0UbiJYZyY,4449
|
|
@@ -178,10 +178,10 @@ machineconfig/scripts/python/repos_helper_clone.py,sha256=xW5YZEoNt3k7h9NIULhUhO
|
|
|
178
178
|
machineconfig/scripts/python/repos_helper_record.py,sha256=YEEQORfEiLddOIIgePo5eEkyQUFruFg3kc8npMvRL-o,10927
|
|
179
179
|
machineconfig/scripts/python/repos_helper_update.py,sha256=AYyKIB7eQ48yoYmFjydIhRI1lV39TBv_S4_LCa-oKuQ,11042
|
|
180
180
|
machineconfig/scripts/python/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
|
|
181
|
-
machineconfig/scripts/python/sessions.py,sha256
|
|
181
|
+
machineconfig/scripts/python/sessions.py,sha256=moLdAPHMn90zd6blugplQ2V__xurOcMBH2WRYqRf-hA,8415
|
|
182
182
|
machineconfig/scripts/python/share_terminal.py,sha256=biuG35YiknTMVr3Mzs4bBZwEq53JcuBRlzMTp6eY90M,5009
|
|
183
183
|
machineconfig/scripts/python/snapshot.py,sha256=aDvKeoniZaeTSNv9zWBUajaj2yagAxVdfuvO1_tgq5Y,1026
|
|
184
|
-
machineconfig/scripts/python/start_slidev.py,sha256=
|
|
184
|
+
machineconfig/scripts/python/start_slidev.py,sha256=0rVK7uQL70FAYvVk1SQ-tKRlT1fEj-5wIKCLAnM4-9M,4913
|
|
185
185
|
machineconfig/scripts/python/start_terminals.py,sha256=DRWbMZumhPmL0DvvsCsbRNFL5AVQn1SgaziafTio3YQ,6149
|
|
186
186
|
machineconfig/scripts/python/t4.py,sha256=cZ45iWzS254V5pmVvq8wCw7jAuDhzr8G2Arzay76saU,316
|
|
187
187
|
machineconfig/scripts/python/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
@@ -220,7 +220,7 @@ machineconfig/scripts/python/helpers/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAs
|
|
|
220
220
|
machineconfig/scripts/python/helpers/helpers2.py,sha256=ZdqeF1MLlaBRwoqsQAqnHi4b8rW0byFCBnbyCrPKkoA,7336
|
|
221
221
|
machineconfig/scripts/python/helpers/helpers4.py,sha256=rwAy7HK1CbKQZORzQMQULSKNHj0i4jo7KbUXj3qLG9I,4765
|
|
222
222
|
machineconfig/scripts/python/helpers/helpers5.py,sha256=dPBvA9Tcyx9TMgM6On49A1CueGMhBdRzikDnlJGf3J0,1123
|
|
223
|
-
machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=
|
|
223
|
+
machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=umN6ktxjddkraC_h8w50D72olxHcyT4kn-CUq6_C_xI,5448
|
|
224
224
|
machineconfig/scripts/windows/agents.ps1,sha256=DqdrC_Xc2rwQ6kGzT0xh5CJz4B_0p5ZwB7s8XE6rPCM,77
|
|
225
225
|
machineconfig/scripts/windows/choose_wezterm_theme.ps1,sha256=LiXJ0a4LKjb6E-oH_bAg6DjegV4SqDUdiMp_svGCFlI,95
|
|
226
226
|
machineconfig/scripts/windows/cloud_copy.ps1,sha256=llTFhN2uInZTcoZYZuuhJcf5Ifo5MF226I5MpOzvc3A,82
|
|
@@ -377,23 +377,23 @@ machineconfig/setup_windows/web_shortcuts/croshell.ps1,sha256=cTQnegGLGYhuFY3Yuu
|
|
|
377
377
|
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=-76toOluRnxtgo6NuAHgHWMnZQT3zroeCBBLkMTd13g,522
|
|
378
378
|
machineconfig/setup_windows/web_shortcuts/ssh.ps1,sha256=Tj9axEugJE7I3AQ0w1eUGLPb8ufME5jvU5S7VUjlLJE,424
|
|
379
379
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
380
|
-
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=
|
|
380
|
+
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=D_U_q31sqyzR7QRi_FUFMYuOgVbp15VBlKc51VbFjp0,6807
|
|
381
381
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
382
382
|
machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
|
|
383
|
-
machineconfig/utils/code.py,sha256=
|
|
384
|
-
machineconfig/utils/installer.py,sha256=
|
|
383
|
+
machineconfig/utils/code.py,sha256=5W6kP9SMWdApbFDq0fklI_31RWt7E9ByioxU7XX00HE,5662
|
|
384
|
+
machineconfig/utils/installer.py,sha256=p2Mr5GQ8ZsUriV9qatXDwllBqGvYNfI-TQEKXwA8gcA,9961
|
|
385
385
|
machineconfig/utils/io.py,sha256=ZXB3aataS1IZ_0WMcCRSmoN1nbkvEO-bWYcs-TpngqU,2872
|
|
386
386
|
machineconfig/utils/links.py,sha256=riNUrG8aGElRszdOPOic4M2AyOcpdcth_-y8JEiZpJ4,10253
|
|
387
387
|
machineconfig/utils/notifications.py,sha256=vvdsY5IX6XEiILTnt5lNyHxhCi0ljdGX2T_67VRfrG4,9009
|
|
388
388
|
machineconfig/utils/options.py,sha256=8pG-apcc28xxJ5BQiACsGNTKwWtkQyH3hCtzBEhokK8,8366
|
|
389
|
-
machineconfig/utils/path_extended.py,sha256=
|
|
389
|
+
machineconfig/utils/path_extended.py,sha256=0Ev2BgkiruTDAYFHxsGzPvQ9EU3OGCGzx5ozZpO6UU8,53129
|
|
390
390
|
machineconfig/utils/path_helper.py,sha256=jqOf3TAlw5cqSp4HBAlOqjAR_bzC8_fvjA-_-CooI6Y,8030
|
|
391
391
|
machineconfig/utils/procs.py,sha256=Bm-yopmj19yiBO9tywJHEcs9rZmeRyJqbgTSe216LTU,11349
|
|
392
392
|
machineconfig/utils/scheduler.py,sha256=bUHDviS_HE9_6LaA1k9Nnfz5rr2FJIfrk5qO2FJ-oUs,15119
|
|
393
393
|
machineconfig/utils/scheduling.py,sha256=RF1iXJpqf4Dg18jdZWtBixz97KAHC6VKYqTFSpdLWuc,11188
|
|
394
394
|
machineconfig/utils/source_of_truth.py,sha256=GnjcVkKm11RyZFHGnPbne5YDEBYoZ5yryBNkpfGC7O4,854
|
|
395
|
-
machineconfig/utils/ssh.py,sha256=
|
|
396
|
-
machineconfig/utils/terminal.py,sha256=
|
|
395
|
+
machineconfig/utils/ssh.py,sha256=KTUp42nT4Vuh350_EvArQoR2N5iVXrc2BFld93fRUX4,20919
|
|
396
|
+
machineconfig/utils/terminal.py,sha256=Jqojb1xta_SLftUIXmWK7Mn87e1NJXavC5Hbf3fRT-I,11795
|
|
397
397
|
machineconfig/utils/upgrade_packages.py,sha256=H96zVJEWXJW07nh5vhjuSCrPtXGqoUb7xeJsFYYdmCI,3330
|
|
398
398
|
machineconfig/utils/ve.py,sha256=L-6PBXnQGXThiwWgheJMQoisAZOZA6SVCbGw2J-GFnI,2414
|
|
399
399
|
machineconfig/utils/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -408,8 +408,8 @@ machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=pTxvLzIpD5RF
|
|
|
408
408
|
machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
|
|
409
409
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
410
410
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
411
|
-
machineconfig-4.
|
|
412
|
-
machineconfig-4.
|
|
413
|
-
machineconfig-4.
|
|
414
|
-
machineconfig-4.
|
|
415
|
-
machineconfig-4.
|
|
411
|
+
machineconfig-4.97.dist-info/METADATA,sha256=TASblKhYFS5DONxX0YvajOjOzNPHg_WvLeSXnkgAmFI,7061
|
|
412
|
+
machineconfig-4.97.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
413
|
+
machineconfig-4.97.dist-info/entry_points.txt,sha256=LcwklRJPY_uKBvStgtOJn5G_pmFCEdpgRNzUUc6twAQ,1134
|
|
414
|
+
machineconfig-4.97.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
415
|
+
machineconfig-4.97.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|