machineconfig 6.64__py3-none-any.whl → 6.66__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/cluster/sessions_managers/helpers/enhanced_command_runner.py +4 -6
- machineconfig/cluster/sessions_managers/utils/maker.py +4 -4
- machineconfig/scripts/python/croshell.py +2 -2
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_config.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_utils.py +1 -1
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +3 -3
- machineconfig/scripts/python/nw/mount_nfs +1 -1
- machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
- machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
- machineconfig/utils/accessories.py +0 -1
- machineconfig/utils/code.py +2 -2
- machineconfig/utils/meta.py +2 -4
- machineconfig/utils/ssh.py +63 -19
- {machineconfig-6.64.dist-info → machineconfig-6.66.dist-info}/METADATA +1 -1
- {machineconfig-6.64.dist-info → machineconfig-6.66.dist-info}/RECORD +21 -21
- {machineconfig-6.64.dist-info → machineconfig-6.66.dist-info}/WHEEL +0 -0
- {machineconfig-6.64.dist-info → machineconfig-6.66.dist-info}/entry_points.txt +0 -0
- {machineconfig-6.64.dist-info → machineconfig-6.66.dist-info}/top_level.txt +0 -0
|
@@ -95,17 +95,15 @@ def enhanced_zellij_session_start(session_name: str, layout_path: str) -> Dict[s
|
|
|
95
95
|
# Start new session (use -b for background to avoid hanging)
|
|
96
96
|
start_cmd = f"zellij --layout {layout_path} a -b {session_name}"
|
|
97
97
|
start_result = run_enhanced_command(
|
|
98
|
-
start_cmd,
|
|
99
|
-
|
|
100
|
-
False,
|
|
101
|
-
10, # Add timeout to prevent hanging
|
|
98
|
+
command=start_cmd, description=f"Starting session '{session_name}' with layout", show_progress=False,
|
|
99
|
+
timeout=10, # Add timeout to prevent hanging
|
|
102
100
|
)
|
|
103
|
-
|
|
104
101
|
if start_result["success"]:
|
|
105
102
|
console.print(Panel(f"[bold green]✅ Session '{session_name}' is now running![/bold green]\n[dim]Layout: {layout_path}[/dim]", style="green", title="🎉 Success"))
|
|
106
103
|
else:
|
|
107
104
|
console.print(Panel(f"[bold red]❌ Failed to start session '{session_name}'[/bold red]\n[red]{start_result.get('stderr', 'Unknown error')}[/red]", style="red", title="💥 Error"))
|
|
108
|
-
|
|
105
|
+
# print("Sleeping for 3 seconds to allow zellij to initialize...")
|
|
106
|
+
# time.sleep(3) # Brief pause for readability
|
|
109
107
|
return start_result
|
|
110
108
|
|
|
111
109
|
|
|
@@ -4,9 +4,9 @@ from typing import Optional, Literal
|
|
|
4
4
|
from machineconfig.utils.schemas.layouts.layout_types import TabConfig, LayoutConfig
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
|
|
7
|
-
def get_fire_tab_using_uv(func: FunctionType, uv_with: Optional[list[str]], uv_project_dir: Optional[str]) -> tuple[TabConfig, Path]:
|
|
7
|
+
def get_fire_tab_using_uv(func: FunctionType, import_module: bool, uv_with: Optional[list[str]], uv_project_dir: Optional[str]) -> tuple[TabConfig, Path]:
|
|
8
8
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
9
|
-
py_script = lambda_to_python_script(lmb=lambda: func, in_global=True)
|
|
9
|
+
py_script = lambda_to_python_script(lmb=lambda: func, in_global=True, import_module=import_module)
|
|
10
10
|
from machineconfig.utils.code import get_uv_command_executing_python_script
|
|
11
11
|
command_to_run, py_script_path = get_uv_command_executing_python_script(python_script=py_script, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
12
12
|
tab_config: TabConfig = {
|
|
@@ -28,12 +28,12 @@ def get_fire_tab_using_fire(func: FunctionType):
|
|
|
28
28
|
return tab_config
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
def make_layout_from_functions(functions: list[FunctionType], tab_configs: list[TabConfig], layout_name: str, method: Literal["script", "fire"]="fire") -> LayoutConfig:
|
|
31
|
+
def make_layout_from_functions(functions: list[FunctionType], import_module: bool, tab_configs: list[TabConfig], layout_name: str, method: Literal["script", "fire"]="fire") -> LayoutConfig:
|
|
32
32
|
tabs2artifacts: list[tuple[TabConfig, list[Path]]] = []
|
|
33
33
|
for a_func in functions:
|
|
34
34
|
match method:
|
|
35
35
|
case "script":
|
|
36
|
-
tab_config, artifact_files_1 = get_fire_tab_using_uv(a_func, uv_with=None, uv_project_dir=None)
|
|
36
|
+
tab_config, artifact_files_1 = get_fire_tab_using_uv(a_func, import_module=import_module, uv_with=None, uv_project_dir=None)
|
|
37
37
|
artifact_files = [artifact_files_1]
|
|
38
38
|
case "fire":
|
|
39
39
|
tab_config = get_fire_tab_using_fire(a_func)
|
|
@@ -61,7 +61,7 @@ def croshell(
|
|
|
61
61
|
print("Streamlit viewer is not yet implemented in this version.")
|
|
62
62
|
return None
|
|
63
63
|
file_obj = PathExtended(str(path).lstrip()).expanduser().absolute()
|
|
64
|
-
program = lambda_to_python_script(lambda: get_read_data_pycode(path=str(file_obj)), in_global=True)
|
|
64
|
+
program = lambda_to_python_script(lambda: get_read_data_pycode(path=str(file_obj)), in_global=True, import_module=False)
|
|
65
65
|
text = f"📄 Reading data from: {file_obj.name}"
|
|
66
66
|
console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
|
|
67
67
|
else: # if nothing is specified, then run in interactive mode.
|
|
@@ -91,7 +91,7 @@ def croshell(
|
|
|
91
91
|
pyfile.parent.mkdir(parents=True, exist_ok=True)
|
|
92
92
|
|
|
93
93
|
title = "Reading Data"
|
|
94
|
-
def_code = lambda_to_python_script(lambda: code(path=str(pyfile), title=title), in_global=False)
|
|
94
|
+
def_code = lambda_to_python_script(lambda: code(path=str(pyfile), title=title), in_global=False, import_module=False)
|
|
95
95
|
# print(def_code)
|
|
96
96
|
python_program = preprogram + "\n\n" + def_code + program
|
|
97
97
|
pyfile.write_text(python_program, encoding="utf-8")
|
|
@@ -46,7 +46,7 @@ def path():
|
|
|
46
46
|
uv_with = ["textual"]
|
|
47
47
|
uv_project_dir = None
|
|
48
48
|
if not Path.home().joinpath("code/machineconfig").exists():
|
|
49
|
-
uv_with.append("machineconfig>=6.
|
|
49
|
+
uv_with.append("machineconfig>=6.66")
|
|
50
50
|
else:
|
|
51
51
|
uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
|
|
52
52
|
run_shell_script(get_uv_command_executing_python_script(python_script=path.read_text(encoding="utf-8"), uv_with=uv_with, uv_project_dir=uv_project_dir)[0])
|
|
@@ -41,9 +41,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
|
|
|
41
41
|
else:
|
|
42
42
|
import platform
|
|
43
43
|
if platform.system() == "Windows":
|
|
44
|
-
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.
|
|
44
|
+
run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=6.66" """)
|
|
45
45
|
else:
|
|
46
|
-
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.
|
|
46
|
+
run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=6.66" """)
|
|
47
47
|
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
48
48
|
if not no_copy_assets:
|
|
49
49
|
create_default_shell_profile() # involves copying assets too
|
|
@@ -68,7 +68,7 @@ def navigate():
|
|
|
68
68
|
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
69
69
|
from machineconfig.utils.code import run_shell_script
|
|
70
70
|
if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
|
|
71
|
-
else: executable = """--with "machineconfig>=6.
|
|
71
|
+
else: executable = """--with "machineconfig>=6.66,textual" """
|
|
72
72
|
run_shell_script(f"""uv run {executable} {path}""")
|
|
73
73
|
|
|
74
74
|
|
|
@@ -111,7 +111,7 @@ def merge_pdfs(
|
|
|
111
111
|
writer.write(output_path)
|
|
112
112
|
print(f"✅ Merged PDF saved to: {output_path}")
|
|
113
113
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
114
|
-
code = lambda_to_python_script(lambda : merge_pdfs_internal(pdf1=pdf1, pdf2=pdf2, output=output, compress=compress), in_global=True)
|
|
114
|
+
code = lambda_to_python_script(lambda : merge_pdfs_internal(pdf1=pdf1, pdf2=pdf2, output=output, compress=compress), in_global=True, import_module=False)
|
|
115
115
|
from machineconfig.utils.code import run_shell_script, get_uv_command_executing_python_script
|
|
116
116
|
uv_command, _py_file = get_uv_command_executing_python_script(python_script=code, uv_with=["pypdf"], uv_project_dir=None)
|
|
117
117
|
run_shell_script(uv_command)
|
|
@@ -80,7 +80,7 @@ git pull originEnc master
|
|
|
80
80
|
uv_project_dir = f"""{str(Path.home().joinpath("code/machineconfig"))}"""
|
|
81
81
|
uv_with = None
|
|
82
82
|
else:
|
|
83
|
-
uv_with = ["machineconfig>=6.
|
|
83
|
+
uv_with = ["machineconfig>=6.66"]
|
|
84
84
|
uv_project_dir = None
|
|
85
85
|
|
|
86
86
|
import tempfile
|
|
@@ -111,7 +111,7 @@ git pull originEnc master
|
|
|
111
111
|
def func2(remote_repo: str, local_repo: str, cloud: str):
|
|
112
112
|
from machineconfig.scripts.python.helpers_repos.sync import delete_remote_repo_copy_and_push_local
|
|
113
113
|
delete_remote_repo_copy_and_push_local(remote_repo=remote_repo, local_repo=local_repo, cloud=cloud)
|
|
114
|
-
program_1_py = lambda_to_python_script(lambda: func2(remote_repo=str(repo_remote_root), local_repo=str(repo_local_root), cloud=str(cloud_resolved)), in_global=True)
|
|
114
|
+
program_1_py = lambda_to_python_script(lambda: func2(remote_repo=str(repo_remote_root), local_repo=str(repo_local_root), cloud=str(cloud_resolved)), in_global=True, import_module=False)
|
|
115
115
|
program1, _pyfile1 = get_uv_command_executing_python_script(python_script=program_1_py, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
116
116
|
# ================================================================================
|
|
117
117
|
option2 = "Delete local repo and replace it with remote copy:"
|
|
@@ -136,7 +136,7 @@ sudo chmod +x $HOME/dotfiles/scripts/linux -R
|
|
|
136
136
|
inspect_repos(repo_local_root=repo_local_root, repo_remote_root=repo_remote_root)
|
|
137
137
|
# program_3_py = function_to_script(func=func, call_with_kwargs={"repo_local_root": str(repo_local_root), "repo_remote_root": str(repo_remote_root)})
|
|
138
138
|
# shell_file_3 = get_shell_file_executing_python_script(python_script=program_3_py, ve_path=None, executable=executable)
|
|
139
|
-
program_3_py = lambda_to_python_script(lambda: func(repo_local_root=str(repo_local_root), repo_remote_root=str(repo_remote_root)), in_global=True)
|
|
139
|
+
program_3_py = lambda_to_python_script(lambda: func(repo_local_root=str(repo_local_root), repo_remote_root=str(repo_remote_root)), in_global=True, import_module=False)
|
|
140
140
|
program3, _pyfile3 = get_uv_command_executing_python_script(python_script=program_3_py, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
141
141
|
# ================================================================================
|
|
142
142
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# mkdir ~/data/local
|
|
6
6
|
# sudo mount -o nolock,noatime,nodiratime,proto=tcp,timeo=600,retrans=2,noac alex-p51s-5:/home/alex/data/local ./data/local
|
|
7
7
|
|
|
8
|
-
uv run --python 3.14 --with "machineconfig>=6.
|
|
8
|
+
uv run --python 3.14 --with "machineconfig>=6.66" python -m machineconfig.scripts.python.mount_nfs
|
|
9
9
|
# Check if remote server is reachable and share folder exists
|
|
10
10
|
if ! ping -c 1 "$remote_server" &> /dev/null; then
|
|
11
11
|
echo "💥 Error: Remote server $remote_server is not reachable."
|
|
@@ -7,7 +7,7 @@ $user = ''
|
|
|
7
7
|
$sharePath = ''
|
|
8
8
|
$driveLetter = ''
|
|
9
9
|
|
|
10
|
-
uv run --python 3.14 --with "machineconfig>=6.
|
|
10
|
+
uv run --python 3.14 --with "machineconfig>=6.66" python -m machineconfig.scripts.python.mount_ssh
|
|
11
11
|
|
|
12
12
|
net use T: \\sshfs.kr\$user@$host.local
|
|
13
13
|
# this worked: net use T: \\sshfs\alex@alex-p51s-5.local
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
. <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
|
|
3
3
|
mcfg() {
|
|
4
|
-
"$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.
|
|
4
|
+
"$HOME/.local/bin/uv" run --python 3.14 --with "machineconfig>=6.66" mcfg "$@"
|
|
5
5
|
}
|
|
6
6
|
alias d="mcfg devops"
|
|
7
7
|
alias c="mcfg cloud"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
|
|
4
4
|
function mcfg {
|
|
5
|
-
& "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.
|
|
5
|
+
& "$HOME\.local\bin\uv.exe" run --python 3.14 --with "machineconfig>=6.66" mcfg $args
|
|
6
6
|
}
|
|
7
7
|
function d { mcfg devops @args }
|
|
8
8
|
function c { mcfg cloud @args }
|
|
@@ -72,7 +72,6 @@ def split_list[T](sequence: list[T], every: Optional[int]=None, to: Optional[int
|
|
|
72
72
|
|
|
73
73
|
def pprint(obj: dict[Any, Any], title: str) -> None:
|
|
74
74
|
from rich import inspect
|
|
75
|
-
|
|
76
75
|
inspect(type("TempStruct", (object,), obj)(), value=False, title=title, docs=False, dunder=False, sort=False)
|
|
77
76
|
|
|
78
77
|
|
machineconfig/utils/code.py
CHANGED
|
@@ -37,7 +37,7 @@ def get_uv_command_executing_python_script(python_script: str, uv_with: Optional
|
|
|
37
37
|
else:
|
|
38
38
|
uv_project_dir_arg = ""
|
|
39
39
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
40
|
-
print_code_string = lambda_to_python_script(lambda: print_code(code=python_script, lexer="python", desc="Temporary Python Script", subtitle="Executing via shell script"), in_global=True)
|
|
40
|
+
print_code_string = lambda_to_python_script(lambda: print_code(code=python_script, lexer="python", desc="Temporary Python Script", subtitle="Executing via shell script"), in_global=True, import_module=False)
|
|
41
41
|
python_file.write_text(print_code_string + "\n" + python_script, encoding="utf-8")
|
|
42
42
|
shell_script = f"""uv run {uv_with_arg} {uv_project_dir_arg} {str(python_file)} """
|
|
43
43
|
return shell_script, python_file
|
|
@@ -45,7 +45,7 @@ def get_uv_command_executing_python_script(python_script: str, uv_with: Optional
|
|
|
45
45
|
|
|
46
46
|
def run_lambda_function(lmb: Callable[[], Any], uv_with: Optional[list[str]], uv_project_dir: Optional[str]) -> None:
|
|
47
47
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
48
|
-
code = lambda_to_python_script(lmb, in_global=True)
|
|
48
|
+
code = lambda_to_python_script(lmb, in_global=True, import_module=False)
|
|
49
49
|
uv_command, _py_file = get_uv_command_executing_python_script(python_script=code, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
50
50
|
run_shell_script(uv_command)
|
|
51
51
|
|
machineconfig/utils/meta.py
CHANGED
|
@@ -29,7 +29,7 @@ except (ImportError, ModuleNotFoundError) as ex:
|
|
|
29
29
|
return txt
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
def lambda_to_python_script(lmb: Callable[[], Any], in_global: bool, import_module: bool
|
|
32
|
+
def lambda_to_python_script(lmb: Callable[[], Any], in_global: bool, import_module: bool) -> str:
|
|
33
33
|
"""
|
|
34
34
|
caveats: always use keyword arguments in the lambda call for best results.
|
|
35
35
|
return statement not allowed in the wrapped function (otherwise it can be put in the global space)
|
|
@@ -107,9 +107,7 @@ def lambda_to_python_script(lmb: Callable[[], Any], in_global: bool, import_modu
|
|
|
107
107
|
import_prefix: str = ""
|
|
108
108
|
if import_module:
|
|
109
109
|
module_file = _inspect.getsourcefile(func_obj)
|
|
110
|
-
module_path_candidate: str
|
|
111
|
-
if module_path_candidate is None:
|
|
112
|
-
raise RuntimeError("Could not determine source file for function module inspection.")
|
|
110
|
+
module_path_candidate: str = module_file if module_file is not None else _inspect.getfile(func_obj)
|
|
113
111
|
import_prefix = get_import_module_string(str(_Path(module_path_candidate)))
|
|
114
112
|
|
|
115
113
|
# Evaluate each keyword argument value in the lambda's globals to get real Python objects
|
machineconfig/utils/ssh.py
CHANGED
|
@@ -8,10 +8,14 @@ from machineconfig.utils.terminal import Response
|
|
|
8
8
|
from machineconfig.utils.accessories import pprint, randstr
|
|
9
9
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
10
10
|
UV_RUN_CMD = "$HOME/.local/bin/uv run" if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
|
|
11
|
-
MACHINECONFIG_VERSION = "machineconfig>=6.
|
|
11
|
+
MACHINECONFIG_VERSION = "machineconfig>=6.66"
|
|
12
12
|
DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
|
|
13
13
|
|
|
14
14
|
class SSH:
|
|
15
|
+
@staticmethod
|
|
16
|
+
def from_config_file(host: str) -> "SSH":
|
|
17
|
+
"""Create SSH instance from SSH config file entry."""
|
|
18
|
+
return SSH(host=host, username=None, hostname=None, ssh_key_path=None, password=None, port=22, enable_compression=False)
|
|
15
19
|
def __init__(
|
|
16
20
|
self, host: Optional[str], username: Optional[str], hostname: Optional[str], ssh_key_path: Optional[str], password: Optional[str], port: int, enable_compression: bool):
|
|
17
21
|
self.password = password
|
|
@@ -112,12 +116,36 @@ class SSH:
|
|
|
112
116
|
from machineconfig.scripts.python.helpers_devops.cli_utils import get_machine_specs
|
|
113
117
|
self.local_specs: MachineSpecs = get_machine_specs()
|
|
114
118
|
resp = self.run_shell(command=f"""~/.local/bin/utils get-machine-specs """, verbose_output=False, description="Getting remote machine specs", strict_stderr=False, strict_return_code=False)
|
|
115
|
-
# import json
|
|
116
119
|
json_str = resp.op
|
|
117
|
-
print(f"Remote machine specs JSON: {resp.op}")
|
|
118
120
|
import ast
|
|
119
121
|
self.remote_specs: MachineSpecs = cast(MachineSpecs, ast.literal_eval(json_str))
|
|
120
122
|
self.terminal_responses: list[Response] = []
|
|
123
|
+
|
|
124
|
+
from rich import inspect
|
|
125
|
+
|
|
126
|
+
local_info = dict(distro=self.local_specs.get("distro"), system=self.local_specs.get("system"), home_dir=self.local_specs.get("home_dir"))
|
|
127
|
+
remote_info = dict(distro=self.remote_specs.get("distro"), system=self.remote_specs.get("system"), home_dir=self.remote_specs.get("home_dir"))
|
|
128
|
+
|
|
129
|
+
console = rich.console.Console()
|
|
130
|
+
|
|
131
|
+
from io import StringIO
|
|
132
|
+
local_buffer = StringIO()
|
|
133
|
+
remote_buffer = StringIO()
|
|
134
|
+
|
|
135
|
+
local_console = rich.console.Console(file=local_buffer, width=40)
|
|
136
|
+
remote_console = rich.console.Console(file=remote_buffer, width=40)
|
|
137
|
+
|
|
138
|
+
inspect(type("LocalInfo", (object,), local_info)(), value=False, title="SSHing From", docs=False, dunder=False, sort=False, console=local_console)
|
|
139
|
+
inspect(type("RemoteInfo", (object,), remote_info)(), value=False, title="SSHing To", docs=False, dunder=False, sort=False, console=remote_console)
|
|
140
|
+
|
|
141
|
+
local_lines = local_buffer.getvalue().split("\n")
|
|
142
|
+
remote_lines = remote_buffer.getvalue().split("\n")
|
|
143
|
+
|
|
144
|
+
max_lines = max(len(local_lines), len(remote_lines))
|
|
145
|
+
for i in range(max_lines):
|
|
146
|
+
left = local_lines[i] if i < len(local_lines) else ""
|
|
147
|
+
right = remote_lines[i] if i < len(remote_lines) else ""
|
|
148
|
+
console.print(f"{left:<42} {right}")
|
|
121
149
|
|
|
122
150
|
def __enter__(self) -> "SSH":
|
|
123
151
|
return self
|
|
@@ -165,8 +193,8 @@ class SSH:
|
|
|
165
193
|
res.capture().print_if_unsuccessful(desc=description, strict_err=strict_stderr, strict_returncode=strict_return_code, assert_success=False)
|
|
166
194
|
# self.terminal_responses.append(res)
|
|
167
195
|
return res
|
|
168
|
-
|
|
169
|
-
|
|
196
|
+
|
|
197
|
+
def _run_py_prep(self, python_code: str, uv_with: Optional[list[str]], uv_project_dir: Optional[str],) -> str:
|
|
170
198
|
py_path = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/runpy_{randstr()}.py")
|
|
171
199
|
py_path.parent.mkdir(parents=True, exist_ok=True)
|
|
172
200
|
py_path.write_text(python_code, encoding="utf-8")
|
|
@@ -180,13 +208,29 @@ class SSH:
|
|
|
180
208
|
else:
|
|
181
209
|
with_clause += ""
|
|
182
210
|
uv_cmd = f"""{UV_RUN_CMD} {with_clause} python {py_path.relative_to(Path.home())}"""
|
|
211
|
+
return uv_cmd
|
|
212
|
+
|
|
213
|
+
def run_py(self, python_code: str, uv_with: Optional[list[str]], uv_project_dir: Optional[str],
|
|
214
|
+
description: str, verbose_output: bool, strict_stderr: bool, strict_return_code: bool) -> Response:
|
|
215
|
+
uv_cmd = self._run_py_prep(python_code=python_code, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
183
216
|
return self.run_shell(command=uv_cmd, verbose_output=verbose_output, description=description or f"run_py on {self.get_remote_repr(add_machine=False)}", strict_stderr=strict_stderr, strict_return_code=strict_return_code)
|
|
184
217
|
|
|
185
|
-
def run_lambda_function(self, func: Callable[..., Any], uv_with: Optional[list[str]], uv_project_dir: Optional[str])
|
|
186
|
-
command = lambda_to_python_script(lmb=func, in_global=True)
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
218
|
+
def run_lambda_function(self, func: Callable[..., Any], import_module: bool, uv_with: Optional[list[str]], uv_project_dir: Optional[str]):
|
|
219
|
+
command = lambda_to_python_script(lmb=func, in_global=True, import_module=import_module)
|
|
220
|
+
# turns ou that the code below for some reason runs but zellij doesn't start, looks like things are assigned to different user.
|
|
221
|
+
# return self.run_py(python_code=command, uv_with=uv_with, uv_project_dir=uv_project_dir,
|
|
222
|
+
# description=f"run_py_func {func.__name__} on {self.get_remote_repr(add_machine=False)}",
|
|
223
|
+
# verbose_output=True, strict_stderr=True, strict_return_code=True)
|
|
224
|
+
uv_cmd = self._run_py_prep(python_code=command, uv_with=uv_with, uv_project_dir=uv_project_dir)
|
|
225
|
+
if self.remote_specs["system"] == "Linux":
|
|
226
|
+
uv_cmd_modified = f'bash -l -c "{uv_cmd}"'
|
|
227
|
+
else: uv_cmd_modified = uv_cmd
|
|
228
|
+
# This works even withou the modified uv cmd:
|
|
229
|
+
# from machineconfig.utils.code import run_shell_script
|
|
230
|
+
# assert self.host is not None, "SSH host must be specified to run remote commands"
|
|
231
|
+
# process = run_shell_script(f"ssh {self.host} -n '. ~/.profile; . ~/.bashrc; {uv_cmd}'")
|
|
232
|
+
# return process
|
|
233
|
+
return self.run_shell(command=uv_cmd_modified, verbose_output=True, description=f"run_py_func {func.__name__} on {self.get_remote_repr(add_machine=False)}", strict_stderr=True, strict_return_code=True)
|
|
190
234
|
|
|
191
235
|
def _simple_sftp_get(self, remote_path: str, local_path: Path) -> None:
|
|
192
236
|
"""Simple SFTP get without any recursion or path expansion - for internal use only."""
|
|
@@ -207,7 +251,7 @@ class SSH:
|
|
|
207
251
|
else:
|
|
208
252
|
directory_path.unlink()
|
|
209
253
|
directory_path.parent.mkdir(parents=True, exist_ok=True)
|
|
210
|
-
command = lambda_to_python_script(lmb=lambda: create_target_dir(target_rel2home=path_rel2home, overwrite=overwrite_existing), in_global=True)
|
|
254
|
+
command = lambda_to_python_script(lmb=lambda: create_target_dir(target_rel2home=path_rel2home, overwrite=overwrite_existing), in_global=True, import_module=False)
|
|
211
255
|
tmp_py_file = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/create_target_dir_{randstr()}.py")
|
|
212
256
|
tmp_py_file.parent.mkdir(parents=True, exist_ok=True)
|
|
213
257
|
tmp_py_file.write_text(command, encoding="utf-8")
|
|
@@ -270,7 +314,7 @@ class SSH:
|
|
|
270
314
|
with zipfile.ZipFile(archive_path, "r") as archive_handle:
|
|
271
315
|
archive_handle.extractall(extraction_directory)
|
|
272
316
|
archive_path.unlink()
|
|
273
|
-
command = lambda_to_python_script(lmb=lambda: unzip_archive(zip_file_path=str(Path(self.remote_specs["home_dir"]).joinpath(target_rel2home)), overwrite_flag=overwrite_existing), in_global=True)
|
|
317
|
+
command = lambda_to_python_script(lmb=lambda: unzip_archive(zip_file_path=str(Path(self.remote_specs["home_dir"]).joinpath(target_rel2home)), overwrite_flag=overwrite_existing), in_global=True, import_module=False)
|
|
274
318
|
tmp_py_file = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/create_target_dir_{randstr()}.py")
|
|
275
319
|
tmp_py_file.parent.mkdir(parents=True, exist_ok=True)
|
|
276
320
|
tmp_py_file.write_text(command, encoding="utf-8")
|
|
@@ -291,7 +335,7 @@ class SSH:
|
|
|
291
335
|
print(json_result_path.as_posix())
|
|
292
336
|
return is_directory
|
|
293
337
|
remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
|
|
294
|
-
command = lambda_to_python_script(lmb=lambda: check_is_dir(path_to_check=str(source_path), json_output_path=remote_json_output), in_global=True)
|
|
338
|
+
command = lambda_to_python_script(lmb=lambda: check_is_dir(path_to_check=str(source_path), json_output_path=remote_json_output), in_global=True, import_module=False)
|
|
295
339
|
response = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description=f"Check if source `{source_path}` is a dir", verbose_output=False, strict_stderr=False, strict_return_code=False)
|
|
296
340
|
remote_json_path = response.op.strip()
|
|
297
341
|
if not remote_json_path:
|
|
@@ -325,7 +369,7 @@ class SSH:
|
|
|
325
369
|
|
|
326
370
|
|
|
327
371
|
remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
|
|
328
|
-
command = lambda_to_python_script(lmb=lambda: expand_source(path_to_expand=str(source_path), json_output_path=remote_json_output), in_global=True)
|
|
372
|
+
command = lambda_to_python_script(lmb=lambda: expand_source(path_to_expand=str(source_path), json_output_path=remote_json_output), in_global=True, import_module=False)
|
|
329
373
|
response = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description="Resolving source path by expanding user", verbose_output=False, strict_stderr=False, strict_return_code=False)
|
|
330
374
|
remote_json_path = response.op.strip()
|
|
331
375
|
if not remote_json_path:
|
|
@@ -374,7 +418,7 @@ class SSH:
|
|
|
374
418
|
|
|
375
419
|
|
|
376
420
|
remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
|
|
377
|
-
command = lambda_to_python_script(lmb=lambda: search_files(directory_path=expanded_source, json_output_path=remote_json_output), in_global=True)
|
|
421
|
+
command = lambda_to_python_script(lmb=lambda: search_files(directory_path=expanded_source, json_output_path=remote_json_output), in_global=True, import_module=False)
|
|
378
422
|
response = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description="Searching for files in source", verbose_output=False, strict_stderr=False, strict_return_code=False)
|
|
379
423
|
remote_json_path = response.op.strip()
|
|
380
424
|
if not remote_json_path:
|
|
@@ -412,7 +456,7 @@ class SSH:
|
|
|
412
456
|
|
|
413
457
|
|
|
414
458
|
remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
|
|
415
|
-
command = lambda_to_python_script(lmb=lambda: collapse_to_home_dir(absolute_path=expanded_source, json_output_path=remote_json_output), in_global=True)
|
|
459
|
+
command = lambda_to_python_script(lmb=lambda: collapse_to_home_dir(absolute_path=expanded_source, json_output_path=remote_json_output), in_global=True, import_module=False)
|
|
416
460
|
response = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description="Finding default target via relative source path", verbose_output=False, strict_stderr=False, strict_return_code=False)
|
|
417
461
|
remote_json_path_dir = response.op.strip()
|
|
418
462
|
if not remote_json_path_dir:
|
|
@@ -464,7 +508,7 @@ class SSH:
|
|
|
464
508
|
|
|
465
509
|
|
|
466
510
|
remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
|
|
467
|
-
command = lambda_to_python_script(lmb=lambda: zip_source(path_to_zip=expanded_source, json_output_path=remote_json_output), in_global=True)
|
|
511
|
+
command = lambda_to_python_script(lmb=lambda: zip_source(path_to_zip=expanded_source, json_output_path=remote_json_output), in_global=True, import_module=False)
|
|
468
512
|
response = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description=f"Zipping source file {source}", verbose_output=False, strict_stderr=False, strict_return_code=False)
|
|
469
513
|
remote_json_path = response.op.strip()
|
|
470
514
|
if not remote_json_path:
|
|
@@ -503,7 +547,7 @@ class SSH:
|
|
|
503
547
|
|
|
504
548
|
|
|
505
549
|
remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
|
|
506
|
-
command = lambda_to_python_script(lmb=lambda: collapse_to_home(absolute_path=expanded_source, json_output_path=remote_json_output), in_global=True)
|
|
550
|
+
command = lambda_to_python_script(lmb=lambda: collapse_to_home(absolute_path=expanded_source, json_output_path=remote_json_output), in_global=True, import_module=False)
|
|
507
551
|
response = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description="Finding default target via relative source path", verbose_output=False, strict_stderr=False, strict_return_code=False)
|
|
508
552
|
remote_json_path = response.op.strip()
|
|
509
553
|
if not remote_json_path:
|
|
@@ -559,7 +603,7 @@ class SSH:
|
|
|
559
603
|
file_or_dir_path.unlink()
|
|
560
604
|
|
|
561
605
|
|
|
562
|
-
command = lambda_to_python_script(lmb=lambda: delete_temp_zip(path_to_delete=expanded_source), in_global=True)
|
|
606
|
+
command = lambda_to_python_script(lmb=lambda: delete_temp_zip(path_to_delete=expanded_source), in_global=True, import_module=False)
|
|
563
607
|
self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description="Cleaning temp zip files @ remote.", verbose_output=False, strict_stderr=True, strict_return_code=True)
|
|
564
608
|
|
|
565
609
|
print("\n")
|
|
@@ -22,10 +22,10 @@ machineconfig/cluster/sessions_managers/zellij_local.py,sha256=eI3nLzlg1lrKDBu-R
|
|
|
22
22
|
machineconfig/cluster/sessions_managers/zellij_local_manager.py,sha256=YJVhBTWh4FVduvnysMeka_uQ7cckRTLpMrBx5O386zs,17701
|
|
23
23
|
machineconfig/cluster/sessions_managers/zellij_remote.py,sha256=TFx-Xjmoue8KjbzBFtvFSOSx3zgoTdS_N1WWPPdMBm8,8513
|
|
24
24
|
machineconfig/cluster/sessions_managers/zellij_remote_manager.py,sha256=xzih0y8_1vMH58kMQE2oFj5sdjDM8lWhe5lbz0U9hZo,8417
|
|
25
|
-
machineconfig/cluster/sessions_managers/helpers/enhanced_command_runner.py,sha256=
|
|
25
|
+
machineconfig/cluster/sessions_managers/helpers/enhanced_command_runner.py,sha256=YULt8r3zotkotjdmWRrUq3yGySZW-5e_rQSIZ-IMvjk,5410
|
|
26
26
|
machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py,sha256=i5TRittC1IWTgMZNyG8AR5qq-3WrGp3xgIx2m5ktT7g,7526
|
|
27
27
|
machineconfig/cluster/sessions_managers/utils/load_balancer.py,sha256=Y4RQmhROY6o7JXSJXRrBTkoAuEmu1gvmvN_7JKPw5sc,3178
|
|
28
|
-
machineconfig/cluster/sessions_managers/utils/maker.py,sha256=
|
|
28
|
+
machineconfig/cluster/sessions_managers/utils/maker.py,sha256=yLbxT2pFIsgGnU8pHjAdVwVvRNeh74aPtS3AiqNOVZI,2210
|
|
29
29
|
machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py,sha256=OA50j16uUS9ZTjL38TLuR3jufIOln_EszMZpbWyejTo,6972
|
|
30
30
|
machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py,sha256=Mitm7mKiKl5lT0OiEUHAqVg2Q21RjsKO1-hpJTHJ5lM,15196
|
|
31
31
|
machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py,sha256=lApUy67_WhfaBXqt0meZSx_QvwiXjN0YLdyE3c7kP_s,6744
|
|
@@ -122,7 +122,7 @@ machineconfig/scripts/linux/other/switch_ip,sha256=NQfeKMBSbFY3eP6M-BadD-TQo5qMP
|
|
|
122
122
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
123
123
|
machineconfig/scripts/python/agents.py,sha256=gGeeWCI0AN_DyDJ3G5KR9qSsXv8zkUd5dBRRWqz-dQE,10722
|
|
124
124
|
machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
|
|
125
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
125
|
+
machineconfig/scripts/python/croshell.py,sha256=RVGH3ZcuBDnw0oPllNsvZQxJsulVxYNec7rJcvCnBg8,8247
|
|
126
126
|
machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
|
|
127
127
|
machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
|
|
128
128
|
machineconfig/scripts/python/entry.py,sha256=liCf186Msa6R-EjcQ0I6K80Km7Wi8qckJB6rXIHeHU0,2488
|
|
@@ -163,7 +163,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
|
|
|
163
163
|
machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
164
164
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
165
165
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
166
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
166
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=v6vMcGpK7Yu-y-CJW4OYPQkgV2FPUoxg_toWm5hgkQk,6932
|
|
167
167
|
machineconfig/scripts/python/helpers_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
168
|
machineconfig/scripts/python/helpers_cloud/cloud_copy.py,sha256=OV1w3ajFVFs6FJytjIPOntYB_aW2ywGohKi73V4Dm2Y,8691
|
|
169
169
|
machineconfig/scripts/python/helpers_cloud/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAsPT-Xl3RG9-yBed71a2tu9Pig,4914
|
|
@@ -179,15 +179,15 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
|
|
|
179
179
|
machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
|
|
180
180
|
machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
|
|
181
181
|
machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
|
-
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=
|
|
182
|
+
machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=2Wt1uj9s8VBJnx3nkA6-kdAgU591mQrmGRYgfhc-v0c,7218
|
|
183
183
|
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=rjTys4FNf9_feP9flWM7Zvq17dxWmetSiGaHPxp25nk,2737
|
|
184
184
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
185
185
|
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=B5Xa9pV5MdC4vPo3EmKaHvNMlThsY3c5F92YPE5j3rI,4176
|
|
186
186
|
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
|
|
187
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
187
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=ZWU3EeiLM4JhgXVbKnbRht3wne0y59sPnu1viFNmhco,6225
|
|
188
188
|
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
|
|
189
189
|
machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
|
|
190
|
-
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=
|
|
190
|
+
machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=gj9KNY6GyzSflXJRkX0lzyvypvwdgseudXhgJcmAtPY,6074
|
|
191
191
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
|
|
192
192
|
machineconfig/scripts/python/helpers_devops/devops_status.py,sha256=PJVPhfhXq8der6Xd-_fjZfnizfM-RGfJApkRGhGBmNo,20525
|
|
193
193
|
machineconfig/scripts/python/helpers_devops/devops_update_repos.py,sha256=kSln8_-Wn7Qu0NaKdt-QTN_bBVyTIAWHH8xVYKK-vCM,10133
|
|
@@ -225,7 +225,7 @@ machineconfig/scripts/python/helpers_navigator/main_app.py,sha256=R1vOBMUKaiFHOg
|
|
|
225
225
|
machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wdm7YpDBtfhwcPnSqDPFrV2LqbcSBWMT4,414
|
|
226
226
|
machineconfig/scripts/python/helpers_repos/action.py,sha256=9AxWy8mB9HFeV5t11-qD_l-KA5jkUmm0pXVKT1L6-Qk,14894
|
|
227
227
|
machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
|
|
228
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
228
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=S25zle7gJ3agi2qlDA3aqwYvoJkLGpMvmx7btm3OmUk,10450
|
|
229
229
|
machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
|
|
230
230
|
machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=vSDtrF4829jziwp6WZmGt9G8MJ9jY4hfXqtf0vhkYSE,607
|
|
231
231
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
|
|
@@ -241,7 +241,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
|
|
|
241
241
|
machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
|
|
242
242
|
machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
|
|
243
243
|
machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
|
|
244
|
-
machineconfig/scripts/python/nw/mount_nfs,sha256=
|
|
244
|
+
machineconfig/scripts/python/nw/mount_nfs,sha256=R900EQEVjZScZenqEjaYL9dLkobBsNxKpXq-nOCkdZQ,1855
|
|
245
245
|
machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
|
|
246
246
|
machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
|
|
247
247
|
machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
|
|
@@ -258,7 +258,7 @@ machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqk
|
|
|
258
258
|
machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
259
259
|
machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
260
260
|
machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
261
|
-
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=
|
|
261
|
+
machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=ExQ6XMWhs7uP5lf6qHHTbu5A4NjP9ARSFxKERWTM7uw,322
|
|
262
262
|
machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
263
263
|
machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
|
|
264
264
|
machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
|
|
@@ -375,7 +375,7 @@ machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKG
|
|
|
375
375
|
machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
|
|
376
376
|
machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
|
|
377
377
|
machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
|
|
378
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=
|
|
378
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=tItrgkk3kG9-ylEDRgr9MZa1EHtATpNLPyq9-95GdOk,464
|
|
379
379
|
machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
|
|
380
380
|
machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
|
|
381
381
|
machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
|
|
@@ -389,16 +389,16 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
|
|
|
389
389
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
390
390
|
machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
|
|
391
391
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
|
|
392
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=
|
|
392
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=r3WkAf0Br9MvsH5ow7tadkSyBAhOC8aL1AMR57jRCKo,581
|
|
393
393
|
machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
394
394
|
machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
|
|
395
395
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
396
|
-
machineconfig/utils/accessories.py,sha256=
|
|
397
|
-
machineconfig/utils/code.py,sha256=
|
|
396
|
+
machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigVxfPlk,4339
|
|
397
|
+
machineconfig/utils/code.py,sha256=GWSaKwugLm-r11JA4bnkyrEe1ZyDw0L2mqiGyZqWbS8,5817
|
|
398
398
|
machineconfig/utils/installer.py,sha256=UzI_DtTcKbgvkAkWkNLAPUtx-RVqITHCpvZyLiCpD9g,10377
|
|
399
399
|
machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
|
|
400
400
|
machineconfig/utils/links.py,sha256=KM6vIn3hag9FYEzLSHP5MAM9tU_RStw2mCq2_OvmmZA,23672
|
|
401
|
-
machineconfig/utils/meta.py,sha256=
|
|
401
|
+
machineconfig/utils/meta.py,sha256=wVa4C6wV7pqrpwmQ6IEaPxK3Xew9NxM6HpDMu51q5kI,9053
|
|
402
402
|
machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
|
|
403
403
|
machineconfig/utils/options.py,sha256=vUO4Kej-vDOv64wHr2HNDyu6PATURpjd7xp6N8OOoJg,7083
|
|
404
404
|
machineconfig/utils/path_extended.py,sha256=WyJwoHnXdvSQQJ-yrxTX78FpqYmgVeKDYpNEB9UsRck,53223
|
|
@@ -407,7 +407,7 @@ machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,
|
|
|
407
407
|
machineconfig/utils/scheduler.py,sha256=44CASABJg3epccxhAwv2CX7TVgZh6zVy3K4vqHKTuf4,14228
|
|
408
408
|
machineconfig/utils/scheduling.py,sha256=6x5zLA7sY5gohrEtN6zGrXIqNFasMoyBfwLcOjrjiME,11109
|
|
409
409
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
410
|
-
machineconfig/utils/ssh.py,sha256=
|
|
410
|
+
machineconfig/utils/ssh.py,sha256=8LEH4n1H5CNEItuA3kWIc_B_doa9nieS31St7CWwkCo,38991
|
|
411
411
|
machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
|
|
412
412
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
413
413
|
machineconfig/utils/upgrade_packages.py,sha256=mSFyKvB3JhHte_x1dtmEgrJZCAXgTUQoaJUSx1OXQ3Y,4145
|
|
@@ -436,8 +436,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
|
|
|
436
436
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
|
|
437
437
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
438
438
|
machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
439
|
-
machineconfig-6.
|
|
440
|
-
machineconfig-6.
|
|
441
|
-
machineconfig-6.
|
|
442
|
-
machineconfig-6.
|
|
443
|
-
machineconfig-6.
|
|
439
|
+
machineconfig-6.66.dist-info/METADATA,sha256=x22tdOq0MAHHzJ37_cwFy6FDx4AY31YWmuIg7pgnQSM,2928
|
|
440
|
+
machineconfig-6.66.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
441
|
+
machineconfig-6.66.dist-info/entry_points.txt,sha256=NTW7hbUlpt5Vx9DdQrONLkYMCuBXpvYh1dt0AtlGxeI,466
|
|
442
|
+
machineconfig-6.66.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
443
|
+
machineconfig-6.66.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|