machineconfig 4.96__py3-none-any.whl → 4.98__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 +18 -1
- machineconfig/jobs/installer/package_groups.py +272 -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.py +1 -1
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +4 -2
- machineconfig/scripts/python/interactive.py +25 -24
- 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/share_terminal.py +1 -1
- 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/{scripts/python/devops_devapps_install.py → utils/installer_utils/installer.py} +36 -29
- machineconfig/utils/path_extended.py +51 -7
- machineconfig/utils/ssh.py +22 -12
- machineconfig/utils/terminal.py +66 -92
- {machineconfig-4.96.dist-info → machineconfig-4.98.dist-info}/METADATA +1 -1
- {machineconfig-4.96.dist-info → machineconfig-4.98.dist-info}/RECORD +38 -38
- {machineconfig-4.96.dist-info → machineconfig-4.98.dist-info}/WHEEL +0 -0
- {machineconfig-4.96.dist-info → machineconfig-4.98.dist-info}/entry_points.txt +0 -0
- {machineconfig-4.96.dist-info → machineconfig-4.98.dist-info}/top_level.txt +0 -0
|
@@ -5,6 +5,7 @@ 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
|
|
|
@@ -15,6 +16,44 @@ FILE_MODE: TypeAlias = Literal["r", "w", "x", "a"]
|
|
|
15
16
|
SHUTIL_FORMATS: TypeAlias = Literal["zip", "tar", "gztar", "bztar", "xztar"]
|
|
16
17
|
|
|
17
18
|
|
|
19
|
+
def _is_user_admin() -> bool:
|
|
20
|
+
if os.name == "nt":
|
|
21
|
+
try:
|
|
22
|
+
return __import__("ctypes").windll.shell32.IsUserAnAdmin()
|
|
23
|
+
except Exception: # noqa: BLE001
|
|
24
|
+
import traceback
|
|
25
|
+
|
|
26
|
+
traceback.print_exc()
|
|
27
|
+
print("Admin check failed, assuming not an admin.")
|
|
28
|
+
return False
|
|
29
|
+
return os.getuid() == 0
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def _run_shell_command(
|
|
33
|
+
command: str,
|
|
34
|
+
shell_name: str,
|
|
35
|
+
*,
|
|
36
|
+
stdout: Optional[int] = subprocess.PIPE,
|
|
37
|
+
stderr: Optional[int] = subprocess.PIPE,
|
|
38
|
+
stdin: Optional[int] = None,
|
|
39
|
+
check: bool = False,
|
|
40
|
+
) -> subprocess.CompletedProcess[str]:
|
|
41
|
+
if shell_name in {"powershell", "pwsh"} and sys.platform == "win32":
|
|
42
|
+
args: list[str] = [shell_name, "-Command", command]
|
|
43
|
+
return subprocess.run(args, check=check, text=True, stdout=stdout, stderr=stderr, stdin=stdin)
|
|
44
|
+
executable = "/bin/bash" if shell_name == "bash" and sys.platform != "win32" else None
|
|
45
|
+
return subprocess.run(
|
|
46
|
+
command,
|
|
47
|
+
check=check,
|
|
48
|
+
text=True,
|
|
49
|
+
stdout=stdout,
|
|
50
|
+
stderr=stderr,
|
|
51
|
+
stdin=stdin,
|
|
52
|
+
shell=True,
|
|
53
|
+
executable=executable,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
18
57
|
def pwd2key(password: str, salt: Optional[bytes] = None, iterations: int = 10) -> bytes: # Derive a secret key from a given password and salt"""
|
|
19
58
|
import base64
|
|
20
59
|
|
|
@@ -392,9 +431,7 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
|
|
|
392
431
|
assert target_obj.exists(), f"Target path `{target}` (aka `{target_obj}`) doesn't exist. This will create a broken link."
|
|
393
432
|
if overwrite and (self.is_symlink() or self.exists()):
|
|
394
433
|
self.delete(sure=True, verbose=verbose)
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
if system() == "Windows" and not Terminal.is_user_admin(): # you cannot create symlink without priviliages.
|
|
434
|
+
if system() == "Windows" and not _is_user_admin(): # you cannot create symlink without priviliages.
|
|
398
435
|
import win32com.shell.shell # type: ignore # pylint: disable=E0401
|
|
399
436
|
|
|
400
437
|
_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 +921,11 @@ class PathExtended(type(Path()), Path): # type: ignore # pylint: disable=E0241
|
|
|
884
921
|
if verbose:
|
|
885
922
|
print("🔗 SHARING FILE")
|
|
886
923
|
shell_to_use = "powershell" if sys.platform == "win32" else "bash"
|
|
887
|
-
|
|
888
|
-
|
|
924
|
+
command = f"rclone link '{cloud}:{rp.as_posix()}'"
|
|
925
|
+
completed = _run_shell_command(command, shell_to_use)
|
|
926
|
+
from machineconfig.utils.terminal import Response
|
|
927
|
+
|
|
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,15 @@ 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
|
+
from machineconfig.utils.terminal import Response
|
|
1005
|
+
|
|
1006
|
+
res = Response.from_completed_process(completed)
|
|
963
1007
|
success = res.is_successful(strict_err=False, strict_returcode=True)
|
|
964
1008
|
if not success:
|
|
965
1009
|
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=K6B6EPD8IXIeOzkY7sIIpphBmDVwnV_tczULAx-Y2ps,72114
|
|
47
|
+
machineconfig/jobs/installer/package_groups.py,sha256=VuI4WZEDpgApBptxqu7mbfKxrQ99JY52L1n2devP-y0,6822
|
|
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,13 @@ 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
|
-
machineconfig/scripts/python/devops.py,sha256=
|
|
151
|
+
machineconfig/scripts/python/devops.py,sha256=C2aHrYJqXcvgTOam1zucWflLjUYZnNwpFrZ7ccltqXk,3428
|
|
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=T4h1ydHljQJrNBrye2q-FHUX9iAZnkCa889GgBjHZCE,9103
|
|
156
155
|
machineconfig/scripts/python/devops_update_repos.py,sha256=c5qBc9cuTGDEqDHufkjDT4d_vvJsswv3tlqk9MAulYk,8063
|
|
157
156
|
machineconfig/scripts/python/dotfile.py,sha256=SRcX-9Ak1jRvF-killBTTm2IWcsNxfiLucH6ZsytAFA,2202
|
|
158
157
|
machineconfig/scripts/python/fire_agents_help_launch.py,sha256=1ymWiszfjCyPv3ofinWzfOmbzLEt3d7ntac_afLh-V4,5017
|
|
@@ -166,10 +165,10 @@ machineconfig/scripts/python/fire_jobs_streamlit_helper.py,sha256=47DEQpj8HBSa-_
|
|
|
166
165
|
machineconfig/scripts/python/ftpx.py,sha256=l_gdJS0QB2wVZErubtZvm4HJD9HZAJxSP68sbY73xwo,10278
|
|
167
166
|
machineconfig/scripts/python/get_zellij_cmd.py,sha256=e35-18hoXM9N3PFbvbizfkNY_-63iMicieWE3TbGcCQ,576
|
|
168
167
|
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=
|
|
168
|
+
machineconfig/scripts/python/interactive.py,sha256=NHAniZPgEfhgA3higTRD3U76nHIDpZLygWebhKc6ld0,11791
|
|
169
|
+
machineconfig/scripts/python/mount_nfs.py,sha256=5HmtsAelFSVzl8o_F9mBoKiuVNIyRHjvdqKzFJR1P64,3376
|
|
171
170
|
machineconfig/scripts/python/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
172
|
-
machineconfig/scripts/python/mount_ssh.py,sha256=
|
|
171
|
+
machineconfig/scripts/python/mount_ssh.py,sha256=7dYCBtkJE43rwuvhxiYzyTlJ230RFQbZOA29veYQbuU,2284
|
|
173
172
|
machineconfig/scripts/python/onetimeshare.py,sha256=bmGsNnskym5OWfIhpOfZG5jq3m89FS0a6dF5Sb8LaZM,2539
|
|
174
173
|
machineconfig/scripts/python/pomodoro.py,sha256=SPkfeoZGv8rylGiOyzQ7UK3aXZ3G2FIOuGkSuBUggOI,2019
|
|
175
174
|
machineconfig/scripts/python/repos.py,sha256=Mz-d0ubynOZaKwC6YXKiZq9ojMnKFi4J6n0UbiJYZyY,4449
|
|
@@ -178,10 +177,10 @@ machineconfig/scripts/python/repos_helper_clone.py,sha256=xW5YZEoNt3k7h9NIULhUhO
|
|
|
178
177
|
machineconfig/scripts/python/repos_helper_record.py,sha256=YEEQORfEiLddOIIgePo5eEkyQUFruFg3kc8npMvRL-o,10927
|
|
179
178
|
machineconfig/scripts/python/repos_helper_update.py,sha256=AYyKIB7eQ48yoYmFjydIhRI1lV39TBv_S4_LCa-oKuQ,11042
|
|
180
179
|
machineconfig/scripts/python/scheduler.py,sha256=rKhssuxkD697EY6qaV6CSdNhxpAQLDWO4fE8GMCQ9FA,3061
|
|
181
|
-
machineconfig/scripts/python/sessions.py,sha256
|
|
182
|
-
machineconfig/scripts/python/share_terminal.py,sha256=
|
|
180
|
+
machineconfig/scripts/python/sessions.py,sha256=moLdAPHMn90zd6blugplQ2V__xurOcMBH2WRYqRf-hA,8415
|
|
181
|
+
machineconfig/scripts/python/share_terminal.py,sha256=lBZgfFH34P9dfcy3eZNjFUR5OsR6sVfq1vV2eiqQYxQ,5003
|
|
183
182
|
machineconfig/scripts/python/snapshot.py,sha256=aDvKeoniZaeTSNv9zWBUajaj2yagAxVdfuvO1_tgq5Y,1026
|
|
184
|
-
machineconfig/scripts/python/start_slidev.py,sha256=
|
|
183
|
+
machineconfig/scripts/python/start_slidev.py,sha256=0rVK7uQL70FAYvVk1SQ-tKRlT1fEj-5wIKCLAnM4-9M,4913
|
|
185
184
|
machineconfig/scripts/python/start_terminals.py,sha256=DRWbMZumhPmL0DvvsCsbRNFL5AVQn1SgaziafTio3YQ,6149
|
|
186
185
|
machineconfig/scripts/python/t4.py,sha256=cZ45iWzS254V5pmVvq8wCw7jAuDhzr8G2Arzay76saU,316
|
|
187
186
|
machineconfig/scripts/python/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
@@ -220,7 +219,7 @@ machineconfig/scripts/python/helpers/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAs
|
|
|
220
219
|
machineconfig/scripts/python/helpers/helpers2.py,sha256=ZdqeF1MLlaBRwoqsQAqnHi4b8rW0byFCBnbyCrPKkoA,7336
|
|
221
220
|
machineconfig/scripts/python/helpers/helpers4.py,sha256=rwAy7HK1CbKQZORzQMQULSKNHj0i4jo7KbUXj3qLG9I,4765
|
|
222
221
|
machineconfig/scripts/python/helpers/helpers5.py,sha256=dPBvA9Tcyx9TMgM6On49A1CueGMhBdRzikDnlJGf3J0,1123
|
|
223
|
-
machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=
|
|
222
|
+
machineconfig/scripts/python/helpers/repo_sync_helpers.py,sha256=umN6ktxjddkraC_h8w50D72olxHcyT4kn-CUq6_C_xI,5448
|
|
224
223
|
machineconfig/scripts/windows/agents.ps1,sha256=DqdrC_Xc2rwQ6kGzT0xh5CJz4B_0p5ZwB7s8XE6rPCM,77
|
|
225
224
|
machineconfig/scripts/windows/choose_wezterm_theme.ps1,sha256=LiXJ0a4LKjb6E-oH_bAg6DjegV4SqDUdiMp_svGCFlI,95
|
|
226
225
|
machineconfig/scripts/windows/cloud_copy.ps1,sha256=llTFhN2uInZTcoZYZuuhJcf5Ifo5MF226I5MpOzvc3A,82
|
|
@@ -377,23 +376,23 @@ machineconfig/setup_windows/web_shortcuts/croshell.ps1,sha256=cTQnegGLGYhuFY3Yuu
|
|
|
377
376
|
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=-76toOluRnxtgo6NuAHgHWMnZQT3zroeCBBLkMTd13g,522
|
|
378
377
|
machineconfig/setup_windows/web_shortcuts/ssh.ps1,sha256=Tj9axEugJE7I3AQ0w1eUGLPb8ufME5jvU5S7VUjlLJE,424
|
|
379
378
|
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=
|
|
379
|
+
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=D_U_q31sqyzR7QRi_FUFMYuOgVbp15VBlKc51VbFjp0,6807
|
|
381
380
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
382
381
|
machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
|
|
383
|
-
machineconfig/utils/code.py,sha256=
|
|
384
|
-
machineconfig/utils/installer.py,sha256=
|
|
382
|
+
machineconfig/utils/code.py,sha256=5W6kP9SMWdApbFDq0fklI_31RWt7E9ByioxU7XX00HE,5662
|
|
383
|
+
machineconfig/utils/installer.py,sha256=p2Mr5GQ8ZsUriV9qatXDwllBqGvYNfI-TQEKXwA8gcA,9961
|
|
385
384
|
machineconfig/utils/io.py,sha256=ZXB3aataS1IZ_0WMcCRSmoN1nbkvEO-bWYcs-TpngqU,2872
|
|
386
385
|
machineconfig/utils/links.py,sha256=riNUrG8aGElRszdOPOic4M2AyOcpdcth_-y8JEiZpJ4,10253
|
|
387
386
|
machineconfig/utils/notifications.py,sha256=vvdsY5IX6XEiILTnt5lNyHxhCi0ljdGX2T_67VRfrG4,9009
|
|
388
387
|
machineconfig/utils/options.py,sha256=8pG-apcc28xxJ5BQiACsGNTKwWtkQyH3hCtzBEhokK8,8366
|
|
389
|
-
machineconfig/utils/path_extended.py,sha256=
|
|
388
|
+
machineconfig/utils/path_extended.py,sha256=Xjdn2AVnB8p1jfNMNe2kJutVa5zGnFFJVGZbw-Bp_hg,53200
|
|
390
389
|
machineconfig/utils/path_helper.py,sha256=jqOf3TAlw5cqSp4HBAlOqjAR_bzC8_fvjA-_-CooI6Y,8030
|
|
391
390
|
machineconfig/utils/procs.py,sha256=Bm-yopmj19yiBO9tywJHEcs9rZmeRyJqbgTSe216LTU,11349
|
|
392
391
|
machineconfig/utils/scheduler.py,sha256=bUHDviS_HE9_6LaA1k9Nnfz5rr2FJIfrk5qO2FJ-oUs,15119
|
|
393
392
|
machineconfig/utils/scheduling.py,sha256=RF1iXJpqf4Dg18jdZWtBixz97KAHC6VKYqTFSpdLWuc,11188
|
|
394
393
|
machineconfig/utils/source_of_truth.py,sha256=GnjcVkKm11RyZFHGnPbne5YDEBYoZ5yryBNkpfGC7O4,854
|
|
395
|
-
machineconfig/utils/ssh.py,sha256=
|
|
396
|
-
machineconfig/utils/terminal.py,sha256=
|
|
394
|
+
machineconfig/utils/ssh.py,sha256=KTUp42nT4Vuh350_EvArQoR2N5iVXrc2BFld93fRUX4,20919
|
|
395
|
+
machineconfig/utils/terminal.py,sha256=Jqojb1xta_SLftUIXmWK7Mn87e1NJXavC5Hbf3fRT-I,11795
|
|
397
396
|
machineconfig/utils/upgrade_packages.py,sha256=H96zVJEWXJW07nh5vhjuSCrPtXGqoUb7xeJsFYYdmCI,3330
|
|
398
397
|
machineconfig/utils/ve.py,sha256=L-6PBXnQGXThiwWgheJMQoisAZOZA6SVCbGw2J-GFnI,2414
|
|
399
398
|
machineconfig/utils/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -402,14 +401,15 @@ machineconfig/utils/cloud/onedrive/setup_oauth.py,sha256=ZTVkqgrwbV_EoPvyT8dyOTU
|
|
|
402
401
|
machineconfig/utils/cloud/onedrive/transaction.py,sha256=m-aNcnWj_gfZVvJOSpkdIqjZxU_3nXx2CA-qKbQgP3I,26232
|
|
403
402
|
machineconfig/utils/installer_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
404
403
|
machineconfig/utils/installer_utils/github_release_bulk.py,sha256=WJf_qZlF02SmIc6C7o1h4Gy4gAaJAfeAS8O9s2Itj-k,6535
|
|
404
|
+
machineconfig/utils/installer_utils/installer.py,sha256=_XcatwArhwRepMYfaGYpjd-lqNGfijnjeZB8l4uKd-c,9266
|
|
405
405
|
machineconfig/utils/installer_utils/installer_abc.py,sha256=MRVfkjCPlPgCQQcSxXdVJMVnr_9CC3SQbFVDJxWy1zI,10813
|
|
406
406
|
machineconfig/utils/installer_utils/installer_class.py,sha256=6IQswaC9mxIdeaMG-rOt-vqyKGYibBRMvC0UglZ_3mI,20268
|
|
407
407
|
machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=pTxvLzIpD5RF508lUUBBkWcc4V1B10J4ylvVgVGkcM0,2037
|
|
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.98.dist-info/METADATA,sha256=Xtvi0zedO2u7yGDMu2GlOZtwTVZgrldIp8on4VJ-kcQ,7061
|
|
412
|
+
machineconfig-4.98.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
413
|
+
machineconfig-4.98.dist-info/entry_points.txt,sha256=LcwklRJPY_uKBvStgtOJn5G_pmFCEdpgRNzUUc6twAQ,1134
|
|
414
|
+
machineconfig-4.98.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
415
|
+
machineconfig-4.98.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|