machineconfig 6.51__py3-none-any.whl → 6.53__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.

Files changed (30) hide show
  1. machineconfig/cluster/sessions_managers/utils/maker.py +3 -3
  2. machineconfig/jobs/installer/check_installations.py +0 -1
  3. machineconfig/jobs/installer/installer_data.json +17 -0
  4. machineconfig/scripts/python/croshell.py +4 -4
  5. machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
  6. machineconfig/scripts/python/fire_jobs.py +9 -7
  7. machineconfig/scripts/python/helpers_devops/cli_config.py +3 -2
  8. machineconfig/scripts/python/helpers_devops/cli_self.py +3 -3
  9. machineconfig/scripts/python/helpers_devops/cli_utils.py +43 -0
  10. machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +24 -20
  11. machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +1 -1
  12. machineconfig/scripts/python/helpers_repos/sync.py +5 -5
  13. machineconfig/scripts/python/nw/mount_nfs +1 -1
  14. machineconfig/scripts/windows/mounts/mount_ssh.ps1 +1 -1
  15. machineconfig/setup_linux/web_shortcuts/interactive.sh +1 -1
  16. machineconfig/setup_mac/__init__.py +17 -0
  17. machineconfig/setup_mac/apps.sh +73 -0
  18. machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
  19. machineconfig/setup_mac/uv.sh +36 -0
  20. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +1 -1
  21. machineconfig/utils/code.py +46 -84
  22. machineconfig/utils/installer.py +8 -3
  23. machineconfig/utils/meta.py +5 -251
  24. machineconfig/utils/scheduling.py +0 -1
  25. machineconfig/utils/ssh.py +46 -45
  26. {machineconfig-6.51.dist-info → machineconfig-6.53.dist-info}/METADATA +1 -1
  27. {machineconfig-6.51.dist-info → machineconfig-6.53.dist-info}/RECORD +30 -26
  28. {machineconfig-6.51.dist-info → machineconfig-6.53.dist-info}/WHEEL +0 -0
  29. {machineconfig-6.51.dist-info → machineconfig-6.53.dist-info}/entry_points.txt +0 -0
  30. {machineconfig-6.51.dist-info → machineconfig-6.53.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,13 @@
1
1
  from typing import Callable, Optional, Any, Union
2
2
  import os
3
3
  from pathlib import Path
4
+ import platform
4
5
  import rich.console
5
6
  from machineconfig.utils.terminal import Response, MACHINE
6
7
  from machineconfig.utils.accessories import pprint
7
8
 
8
- UV_RUN_CMD = "$HOME/.local/bin/uv run"
9
- MACHINECONFIG_VERSION = "machineconfig>=6.51"
9
+ UV_RUN_CMD = "$HOME/.local/bin/uv run" if platform.system() != "Windows" else """& "$env:USERPROFILE/.local/bin/uv" run"""
10
+ MACHINECONFIG_VERSION = "machineconfig>=6.52"
10
11
  DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
11
12
 
12
13
 
@@ -176,7 +177,6 @@ class SSH:
176
177
  res.output.returncode = os.system(command)
177
178
  return res
178
179
 
179
-
180
180
  def run_shell(self, command: str, verbose_output: bool, description: str, strict_stderr: bool, strict_return_code: bool) -> Response:
181
181
  raw = self.ssh.exec_command(command)
182
182
  res = Response(stdin=raw[0], stdout=raw[1], stderr=raw[2], cmd=command, desc=description) # type: ignore
@@ -186,31 +186,30 @@ class SSH:
186
186
  res.capture().print_if_unsuccessful(desc=description, strict_err=strict_stderr, strict_returncode=strict_return_code, assert_success=False)
187
187
  self.terminal_responses.append(res)
188
188
  return res
189
- def run_py(self, python_code: str, dependencies: list[str], venv_path: Optional[str],
189
+ def run_py(self, python_code: str, uv_with: Optional[list[str]], uv_project_dir: Optional[str],
190
190
  description: str, verbose_output: bool, strict_stderr: bool, strict_return_code: bool) -> Response:
191
191
  from machineconfig.utils.accessories import randstr
192
192
  cmd_path = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/runpy_{randstr()}.py")
193
193
  cmd_path.parent.mkdir(parents=True, exist_ok=True)
194
194
  cmd_path.write_text(python_code, encoding="utf-8")
195
195
  self.copy_from_here(source_path=cmd_path, target_path=None, compress_with_zip=False, recursive=False, overwrite_existing=False)
196
- if len(dependencies) > 0:
197
- with_clause = " --with " + '"', ",".join(dependencies) + '"'
196
+ if uv_with is not None and len(uv_with) > 0:
197
+ with_clause = " --with " + '"' + ",".join(uv_with) + '"'
198
198
  else:
199
199
  with_clause = ""
200
+ if uv_project_dir is not None:
201
+ with_clause += f" --project {uv_project_dir}"
202
+ else:
203
+ with_clause += ""
200
204
  uv_cmd = f"""{UV_RUN_CMD} {with_clause} python {cmd_path.relative_to(Path.home())}"""
201
- if venv_path is not None:
202
- if self.get_remote_machine() == "Windows":
203
- venv_export = f"$env:VIRTUAL_ENV='{venv_path}';"
204
- uv_cmd = venv_export + uv_cmd
205
- else:
206
- venv_export = f"VIRTUAL_ENV={venv_path}"
207
- uv_cmd = venv_export + " " + uv_cmd
208
205
  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)
209
206
 
210
- def run_py_func(self, func: Callable[..., Any], dependencies: list[str], venv_path: Optional[str]) -> Response:
211
- from machineconfig.utils.meta import function_to_script
212
- command = function_to_script(func=func, call_with_kwargs={})
213
- return self.run_py(python_code=command, dependencies=dependencies, venv_path=venv_path, description=f"run_py_func {func.__name__} on {self.get_remote_repr(add_machine=False)}", verbose_output=True, strict_stderr=True, strict_return_code=True)
207
+ def run_py_func(self, func: Callable[..., Any], uv_with: Optional[list[str]], uv_project_dir: Optional[str]) -> Response:
208
+ from machineconfig.utils.meta import lambda_to_defstring
209
+ command = lambda_to_defstring(lmb=lambda: func, in_global=True)
210
+ return self.run_py(python_code=command, uv_with=uv_with, uv_project_dir=uv_project_dir,
211
+ description=f"run_py_func {func.__name__} on {self.get_remote_repr(add_machine=False)}",
212
+ verbose_output=True, strict_stderr=True, strict_return_code=True)
214
213
 
215
214
  def _simple_sftp_get(self, remote_path: str, local_path: Path) -> None:
216
215
  """Simple SFTP get without any recursion or path expansion - for internal use only."""
@@ -238,11 +237,14 @@ class SSH:
238
237
  json_result_path.write_text(json.dumps(result_path_posix, indent=2), encoding="utf-8")
239
238
  print(json_result_path.as_posix())
240
239
  return result_path_posix
241
- from machineconfig.utils.meta import function_to_script
240
+ from machineconfig.utils.meta import lambda_to_defstring
242
241
  from machineconfig.utils.accessories import randstr
243
242
  remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
244
- command = function_to_script(func=create_target_dir, call_with_kwargs={"target_dir_path": Path(target_path).as_posix(), "overwrite": overwrite_existing, "json_output_path": remote_json_output})
245
- response = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description=f"Creating target directory `{Path(target_path).parent.as_posix()}` @ {self.get_remote_repr(add_machine=False)}", verbose_output=False, strict_stderr=False, strict_return_code=False)
243
+ # command = function_to_script(func=create_target_dir, call_with_kwargs={"target_dir_path": Path(target_path).as_posix(), "overwrite": overwrite_existing, "json_output_path": remote_json_output})
244
+ command = lambda_to_defstring(lmb=lambda: create_target_dir(target_dir_path=str(target_path), overwrite=overwrite_existing, json_output_path=remote_json_output), in_global=True)
245
+ response = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None,
246
+ description=f"Creating target directory `{Path(target_path).parent.as_posix()}` @ {self.get_remote_repr(add_machine=False)}",
247
+ verbose_output=False, strict_stderr=False, strict_return_code=False)
246
248
  remote_json_path = response.op.strip()
247
249
  if not remote_json_path:
248
250
  raise RuntimeError(f"Failed to create target directory {target_path} - no response from remote")
@@ -323,11 +325,10 @@ class SSH:
323
325
  with zipfile.ZipFile(archive_path, "r") as archive_handle:
324
326
  archive_handle.extractall(extraction_directory)
325
327
  archive_path.unlink()
326
- from machineconfig.utils.meta import function_to_script
327
- command = function_to_script(func=unzip_archive, call_with_kwargs={"zip_file_path": remotepath.as_posix(), "overwrite_flag": overwrite_existing})
328
- _resp = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description=f"UNZIPPING {remotepath.as_posix()}", verbose_output=False, strict_stderr=True, strict_return_code=True)
328
+ from machineconfig.utils.meta import lambda_to_defstring
329
+ command = lambda_to_defstring(lmb=lambda: unzip_archive(zip_file_path=remotepath.as_posix(), overwrite_flag=overwrite_existing), in_global=True)
330
+ _resp = self.run_py(python_code=command, uv_with=[MACHINECONFIG_VERSION], uv_project_dir=None, description=f"UNZIPPING {remotepath.as_posix()}", verbose_output=False, strict_stderr=True, strict_return_code=True)
329
331
  source_obj.unlink()
330
- print("\n")
331
332
  return source_obj
332
333
 
333
334
  def _check_remote_is_dir(self, source_path: Union[str, Path]) -> bool:
@@ -342,11 +343,11 @@ class SSH:
342
343
  print(json_result_path.as_posix())
343
344
  return is_directory
344
345
 
345
- from machineconfig.utils.meta import function_to_script
346
+ from machineconfig.utils.meta import lambda_to_defstring
346
347
  from machineconfig.utils.accessories import randstr
347
348
  remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
348
- command = function_to_script(func=check_is_dir, call_with_kwargs={"path_to_check": str(source_path), "json_output_path": remote_json_output})
349
- response = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description=f"Check if source `{source_path}` is a dir", verbose_output=False, strict_stderr=False, strict_return_code=False)
349
+ command = lambda_to_defstring(lmb=lambda: check_is_dir(path_to_check=str(source_path), json_output_path=remote_json_output), in_global=True)
350
+ 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)
350
351
  remote_json_path = response.op.strip()
351
352
  if not remote_json_path:
352
353
  raise RuntimeError(f"Failed to check if {source_path} is directory - no response from remote")
@@ -376,11 +377,11 @@ class SSH:
376
377
  print(json_result_path.as_posix())
377
378
  return expanded_path_posix
378
379
 
379
- from machineconfig.utils.meta import function_to_script
380
+ from machineconfig.utils.meta import lambda_to_defstring
380
381
  from machineconfig.utils.accessories import randstr
381
382
  remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
382
- command = function_to_script(func=expand_source, call_with_kwargs={"path_to_expand": str(source_path), "json_output_path": remote_json_output})
383
- response = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description="Resolving source path by expanding user", verbose_output=False, strict_stderr=False, strict_return_code=False)
383
+ command = lambda_to_defstring(lmb=lambda: expand_source(path_to_expand=str(source_path), json_output_path=remote_json_output), in_global=True)
384
+ 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)
384
385
  remote_json_path = response.op.strip()
385
386
  if not remote_json_path:
386
387
  raise RuntimeError(f"Could not resolve source path {source_path} - no response from remote")
@@ -425,11 +426,11 @@ class SSH:
425
426
  print(json_result_path.as_posix())
426
427
  return file_paths_list
427
428
 
428
- from machineconfig.utils.meta import function_to_script
429
+ from machineconfig.utils.meta import lambda_to_defstring
429
430
  from machineconfig.utils.accessories import randstr
430
431
  remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
431
- command = function_to_script(func=search_files, call_with_kwargs={"directory_path": expanded_source, "json_output_path": remote_json_output})
432
- response = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description="Searching for files in source", verbose_output=False, strict_stderr=False, strict_return_code=False)
432
+ command = lambda_to_defstring(lmb=lambda: search_files(directory_path=expanded_source, json_output_path=remote_json_output), in_global=True)
433
+ 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)
433
434
  remote_json_path = response.op.strip()
434
435
  if not remote_json_path:
435
436
  raise RuntimeError(f"Could not resolve source path {source} - no response from remote")
@@ -463,11 +464,11 @@ class SSH:
463
464
  except ValueError:
464
465
  raise RuntimeError(f"Source path must be relative to home directory: {source_absolute_path}")
465
466
 
466
- from machineconfig.utils.meta import function_to_script
467
+ from machineconfig.utils.meta import lambda_to_defstring
467
468
  from machineconfig.utils.accessories import randstr
468
469
  remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
469
- command = function_to_script(func=collapse_to_home_dir, call_with_kwargs={"absolute_path": expanded_source, "json_output_path": remote_json_output})
470
- response = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description="Finding default target via relative source path", verbose_output=False, strict_stderr=False, strict_return_code=False)
470
+ command = lambda_to_defstring(lmb=lambda: collapse_to_home_dir(absolute_path=expanded_source, json_output_path=remote_json_output), in_global=True)
471
+ 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)
471
472
  remote_json_path_dir = response.op.strip()
472
473
  if not remote_json_path_dir:
473
474
  raise RuntimeError("Could not resolve target path - no response from remote")
@@ -515,11 +516,11 @@ class SSH:
515
516
  print(json_result_path.as_posix())
516
517
  return zip_file_path
517
518
 
518
- from machineconfig.utils.meta import function_to_script
519
+ from machineconfig.utils.meta import lambda_to_defstring
519
520
  from machineconfig.utils.accessories import randstr
520
521
  remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
521
- command = function_to_script(func=zip_source, call_with_kwargs={"path_to_zip": expanded_source, "json_output_path": remote_json_output})
522
- response = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description=f"Zipping source file {source}", verbose_output=False, strict_stderr=False, strict_return_code=False)
522
+ command = lambda_to_defstring(lmb=lambda: zip_source(path_to_zip=expanded_source, json_output_path=remote_json_output), in_global=True)
523
+ 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)
523
524
  remote_json_path = response.op.strip()
524
525
  if not remote_json_path:
525
526
  raise RuntimeError(f"Could not zip {source} - no response from remote")
@@ -554,11 +555,11 @@ class SSH:
554
555
  except ValueError:
555
556
  raise RuntimeError(f"Source path must be relative to home directory: {source_absolute_path}")
556
557
 
557
- from machineconfig.utils.meta import function_to_script
558
+ from machineconfig.utils.meta import lambda_to_defstring
558
559
  from machineconfig.utils.accessories import randstr
559
560
  remote_json_output = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/return_{randstr()}.json").as_posix()
560
- command = function_to_script(func=collapse_to_home, call_with_kwargs={"absolute_path": expanded_source, "json_output_path": remote_json_output})
561
- response = self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description="Finding default target via relative source path", verbose_output=False, strict_stderr=False, strict_return_code=False)
561
+ command = lambda_to_defstring(lmb=lambda: collapse_to_home(absolute_path=expanded_source, json_output_path=remote_json_output), in_global=True)
562
+ 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)
562
563
  remote_json_path = response.op.strip()
563
564
  if not remote_json_path:
564
565
  raise RuntimeError("Could not resolve target path - no response from remote")
@@ -612,9 +613,9 @@ class SSH:
612
613
  else:
613
614
  file_or_dir_path.unlink()
614
615
 
615
- from machineconfig.utils.meta import function_to_script
616
- command = function_to_script(func=delete_temp_zip, call_with_kwargs={"path_to_delete": expanded_source})
617
- self.run_py(python_code=command, dependencies=[MACHINECONFIG_VERSION], venv_path=None, description="Cleaning temp zip files @ remote.", verbose_output=False, strict_stderr=True, strict_return_code=True)
616
+ from machineconfig.utils.meta import lambda_to_defstring
617
+ command = lambda_to_defstring(lmb=lambda: delete_temp_zip(path_to_delete=expanded_source), in_global=True)
618
+ 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)
618
619
 
619
620
  print("\n")
620
621
  return target_obj
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 6.51
3
+ Version: 6.53
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -25,7 +25,7 @@ machineconfig/cluster/sessions_managers/zellij_remote_manager.py,sha256=xzih0y8_
25
25
  machineconfig/cluster/sessions_managers/helpers/enhanced_command_runner.py,sha256=3vcQVg-HHa_WTxBGPtKMAdoSqJVa2EO5KAtrY8a6I3c,5264
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=kUJLOctqRR_jumdDIssxBI65pBhBEHxDOOq_RohnoeU,2133
28
+ machineconfig/cluster/sessions_managers/utils/maker.py,sha256=_Af8kCmWfE_17tQFjb7jBpjAclCku7SME-5Y26j_wHQ,2123
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
@@ -46,8 +46,8 @@ machineconfig/cluster/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
46
46
  machineconfig/cluster/templates/cli_trogon.py,sha256=PFWGy8SFYIhT9r3ZV4oIEYfImsQwzAHH_04stPuV5bY,647
47
47
  machineconfig/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
48
  machineconfig/jobs/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- machineconfig/jobs/installer/check_installations.py,sha256=uFuxhgI8rIMtClcGmuc9gpG6iJ7X0__peGUQfGkreT8,10778
50
- machineconfig/jobs/installer/installer_data.json,sha256=NDm-igW86P2LmyaNn5lAOePE4ikjyx_Tj3mfNnQ4vgE,75405
49
+ machineconfig/jobs/installer/check_installations.py,sha256=hkHmmT7Bx3_QWRn2v8dCKOzAapFzqHRzbe-Q08GLnKE,10743
50
+ machineconfig/jobs/installer/installer_data.json,sha256=04KvR0X55GRYh8gyzOCtJItfVrNYpzF0GM9n08Kv89g,75876
51
51
  machineconfig/jobs/installer/package_groups.py,sha256=i4z83F_rk7BVsrwFhz5Vn4SLF0IHxyQBFSxpAaZBl8M,5270
52
52
  machineconfig/jobs/installer/custom/gh.py,sha256=gn7TUSrsLx7uqFqj1Z-iYglS0EYBSgtJ9jWHxaJIfXM,4119
53
53
  machineconfig/jobs/installer/custom/hx.py,sha256=YQClQXqWtGvon8BLFGf1Fp20JPkHgZeEZ6ebmCJQQfI,5838
@@ -122,11 +122,11 @@ 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=SRubnCMUdgi0yAdQ3maHPbSzoWLJIl3gLA04nEFO0Fo,8046
125
+ machineconfig/scripts/python/croshell.py,sha256=BCwiH_Wi_2_Y8fr-D2Cn9TpSTnzMPufXF7SF7Ri2fn8,8046
126
126
  machineconfig/scripts/python/devops.py,sha256=LGra1YiLEQYjaRevNjJB51Bia81IgjrvUQkA6z8wq8I,2440
127
127
  machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
128
128
  machineconfig/scripts/python/entry.py,sha256=a0Zk_3RnIFTQ55zSQrvOOiKom_SaoxElPMmWQgGy4V0,2221
129
- machineconfig/scripts/python/fire_jobs.py,sha256=O5DrckUGLxGblOcLf_iXU31pmCSpTg-c0hQZxQKD1os,13591
129
+ machineconfig/scripts/python/fire_jobs.py,sha256=My7sFn1R2vh21uIHGfNppgX99WTEitCFgJ1MSasBUOQ,13597
130
130
  machineconfig/scripts/python/ftpx.py,sha256=vm4QNJA0z1Vu-85wFliGNoDHMZZ-Yy8zQACL6x7Wo6U,9760
131
131
  machineconfig/scripts/python/interactive.py,sha256=zt3g6nGKR_Y5A57UnR4Y5-JpLzrpnCOSaqU1bnaikK0,11666
132
132
  machineconfig/scripts/python/sessions.py,sha256=UERxO472EDtN7nKHEULbn6G3S5PJIpsDG9Gq3TlByqI,9823
@@ -162,7 +162,7 @@ machineconfig/scripts/python/ai/solutions/opencode/opencode.json,sha256=nahHKRw1
162
162
  machineconfig/scripts/python/ai/solutions/opencode/opencode.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
163
  machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
164
164
  machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
165
- machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=jVIpEwvRbkaqw7HXl0Ufy_m4tBGhxhfC8gKrC4fTTds,6932
165
+ machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=SuaYgj8UFgFYLf1fAKCSLIJC7dDqsscCw3Epp3uyqlY,6932
166
166
  machineconfig/scripts/python/helpers_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  machineconfig/scripts/python/helpers_cloud/cloud_copy.py,sha256=OV1w3ajFVFs6FJytjIPOntYB_aW2ywGohKi73V4Dm2Y,8691
168
168
  machineconfig/scripts/python/helpers_cloud/cloud_helpers.py,sha256=GA-bxXouUmknk9fyQAsPT-Xl3RG9-yBed71a2tu9Pig,4914
@@ -178,15 +178,15 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
178
178
  machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
179
179
  machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
180
180
  machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
181
- machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=YB97BaIgxT9VPWYoVc0rk_pzL2BjBn5v6-VccreS8J4,5652
181
+ machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=kbIULtkfHecOzfUA3gbRyRKxdIOXjitnoO3BH1HleEg,5654
182
182
  machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=rjTys4FNf9_feP9flWM7Zvq17dxWmetSiGaHPxp25nk,2737
183
183
  machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
184
184
  machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=B5Xa9pV5MdC4vPo3EmKaHvNMlThsY3c5F92YPE5j3rI,4176
185
185
  machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
186
- machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=zcEeQsgbR7OgPkvzAuHPKntT-YMVXYmRJU5cE7kkbes,6167
186
+ machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=-IyJpuw8Wnttls8y2vcNNkxtI9jUveROMPT-eudOoC4,6171
187
187
  machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=q9pFJ6AxPuygMr3onMNOKEuuQHbVE_6Qoyo7xRT5FX0,4196
188
188
  machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
189
- machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=G2RHnOvNfEWjxETZjXVu688xyLL-c0Zq22p24kXLLQ8,3487
189
+ machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=FcvC_795dKxZQM7hL4uRzmhysKi9YV-v9qu2Gb_Fun8,5622
190
190
  machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Dn8luB6QJzxKiiFSC-NMqiYddWZoca3A8eOjMYZDzTc,5598
191
191
  machineconfig/scripts/python/helpers_devops/devops_status.py,sha256=PJVPhfhXq8der6Xd-_fjZfnizfM-RGfJApkRGhGBmNo,20525
192
192
  machineconfig/scripts/python/helpers_devops/devops_update_repos.py,sha256=kSln8_-Wn7Qu0NaKdt-QTN_bBVyTIAWHH8xVYKK-vCM,10133
@@ -222,14 +222,14 @@ machineconfig/scripts/python/helpers_navigator/main_app.py,sha256=R1vOBMUKaiFHOg
222
222
  machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wdm7YpDBtfhwcPnSqDPFrV2LqbcSBWMT4,414
223
223
  machineconfig/scripts/python/helpers_repos/action.py,sha256=9AxWy8mB9HFeV5t11-qD_l-KA5jkUmm0pXVKT1L6-Qk,14894
224
224
  machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
225
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=wWlO5-3yT70R8FSU254f4LUMCIaGzrqZexmgzI2ddAU,10412
225
+ machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=vVJZjZW2rrNRyIwZJ8O2W4QR9aY2faCinK9eu5Ijuz4,10526
226
226
  machineconfig/scripts/python/helpers_repos/count_lines.py,sha256=Q5c7b-DxvTlQmljoic7niTuiAVyFlwYvkVQ7uRJHiTo,16009
227
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=iOPc9iLfgMwMFwCguiutfPHHPfpNDYCqHj0W4pFkm-k,607
227
+ machineconfig/scripts/python/helpers_repos/count_lines_frontend.py,sha256=epbXDwuXe_9jXaX3KA2JlG1sPXybdGq1NX4dRljHpF8,607
228
228
  machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=WYEFGUJp9HWImlFjbs_hiFZrUqM_KEYm5VvSUjWd04I,2810
229
229
  machineconfig/scripts/python/helpers_repos/grource.py,sha256=oJj1-gqlkV3Z_BrIOXRmtzoXcuBl0xTYfulJ5D0srOc,14656
230
230
  machineconfig/scripts/python/helpers_repos/record.py,sha256=FQo0swuJZOp0I2XGK-t1OQU4zJHmQ2z9zTpDD30Tmg4,11001
231
231
  machineconfig/scripts/python/helpers_repos/secure_repo.py,sha256=fW_GyHqWrpnf7nexHojfWHv4eLBa71IhVL_LSVMyGnE,1115
232
- machineconfig/scripts/python/helpers_repos/sync.py,sha256=CLLWy2n2gY9beXPF-mblOQ6R7cKoenkJjMiX7tHQsBk,3091
232
+ machineconfig/scripts/python/helpers_repos/sync.py,sha256=P0P7Dog2uFDvwxcLP3YHPwm6AtvCm6QOz1BLqw53xOo,3259
233
233
  machineconfig/scripts/python/helpers_repos/update.py,sha256=cUIMUMm-50HrY6fzxSMZnFplhToVjVPZMm1j_otTha4,11060
234
234
  machineconfig/scripts/python/helpers_sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
235
235
  machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py,sha256=zLssrCT3WRReiK0AFwctELN_o_svKypagUwJj0nT6i4,3122
@@ -238,7 +238,7 @@ machineconfig/scripts/python/nw/add_ssh_key.py,sha256=9JLmWu8pE7PAL5VuCFd19iVEdC
238
238
  machineconfig/scripts/python/nw/devops_add_identity.py,sha256=aPjcHbTLhxYwWYcandyAHdwuO15ZBu3fB82u6bI0tMQ,3773
239
239
  machineconfig/scripts/python/nw/devops_add_ssh_key.py,sha256=CkIl85hZLtG9k7yXLSzqi88YrilHV4hIUWHAPBwxWjw,8922
240
240
  machineconfig/scripts/python/nw/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
241
- machineconfig/scripts/python/nw/mount_nfs,sha256=q75al-z70gQhjUwtZzM-hu-U3cATaDrGtEyjgbegQrI,1855
241
+ machineconfig/scripts/python/nw/mount_nfs,sha256=OCPbADc0AlkYOb0hcEWyHXOhjnnkA3uoP2uP5yqqwcQ,1855
242
242
  machineconfig/scripts/python/nw/mount_nfs.py,sha256=lOMDY4RS7tx8gsCazVR5tNNwFbaRyO2PJlnwBCDQgCM,3573
243
243
  machineconfig/scripts/python/nw/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
244
244
  machineconfig/scripts/python/nw/mount_nw_drive.py,sha256=iru6AtnTyvyuk6WxlK5R4lDkuliVpPV5_uBTVVhXtjQ,1550
@@ -255,7 +255,7 @@ machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqk
255
255
  machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
256
256
  machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
257
257
  machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
258
- machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=EJ7EzPIesIMmpvReVpu5tJGZBcBqzH4EgNfhUnO4vLg,322
258
+ machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=eKKep-_E-eQLUEN8d3yPEjLaJF5yxE_L5l8_pBatGZU,322
259
259
  machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
260
260
  machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
261
261
  machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
@@ -371,7 +371,11 @@ machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKG
371
371
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
372
372
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
373
373
  machineconfig/setup_linux/web_shortcuts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
374
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=-33Rd_a52za-bO_OVIRXS4AhNvcG7uzOGjlWAOfRdDU,441
374
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=4DjErSCQ4A2TUPYCkqFITqsJRfnViqZd0jWbVzx8JyQ,441
375
+ machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
376
+ machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
377
+ machineconfig/setup_mac/uv.sh,sha256=CSN8oCBKS-LK1vJJqYOhAMcrouTf4Q_F3cpplc_ddMA,1157
378
+ machineconfig/setup_mac/ssh/openssh_setup.sh,sha256=TxfySnwFYg1UQLXmJbEQ2gfEWIT084F5JvNZI9ncpc0,3537
375
379
  machineconfig/setup_windows/__init__.py,sha256=NnSVZkIBoxoMgkj-_KAqGonH3YziBIWXOKDEcmNAGTY,386
376
380
  machineconfig/setup_windows/apps.ps1,sha256=dmZQZD4ZlNZo9jYkjIS3ag4qDAYZvaLysjmo9ELwBA4,11218
377
381
  machineconfig/setup_windows/uv.ps1,sha256=ukk1Abh-q-RfpoEqI2XTE2dcQJmHk0VFF6WqkK3TW8Q,350
@@ -381,25 +385,25 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
381
385
  machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
382
386
  machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
383
387
  machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
384
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=cO6kEXDbTCufPuBeksWtf728owbTK6pXmp8RLZ54fz8,547
388
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=AXszMmuVfiukqy_9E56G-0JzcDDitF0epTpqPqNG75A,547
385
389
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
386
390
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
387
391
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
388
392
  machineconfig/utils/accessories.py,sha256=W_9dLzjwNTW5JQk_pe3B2ijQ1nA2-8Kdg2r7VBtzgQs,4340
389
- machineconfig/utils/code.py,sha256=W0JFDF1ynJJIYtrAP6IqCcmrhvS-_zyDz43etnWW7_4,7543
390
- machineconfig/utils/installer.py,sha256=wNkX2r6dlZD9zmuIkBKj5AliNPfI9zVWgtu8XqgUVIg,10204
393
+ machineconfig/utils/code.py,sha256=h6g7cvmUG0AQ_hUiMPZZ3rDtN1_0N1aLhRHI2dJVze8,5774
394
+ machineconfig/utils/installer.py,sha256=UzI_DtTcKbgvkAkWkNLAPUtx-RVqITHCpvZyLiCpD9g,10377
391
395
  machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
392
396
  machineconfig/utils/links.py,sha256=KM6vIn3hag9FYEzLSHP5MAM9tU_RStw2mCq2_OvmmZA,23672
393
- machineconfig/utils/meta.py,sha256=r557UPqgNLXzQpk8Umeujj9RnRBeIz3RwOwjZ7hWsw0,17309
397
+ machineconfig/utils/meta.py,sha256=-ki5JxPZoPhg5omM2YChUNExNx5mOoX-a2w0rx51NBE,7453
394
398
  machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
395
399
  machineconfig/utils/options.py,sha256=vUO4Kej-vDOv64wHr2HNDyu6PATURpjd7xp6N8OOoJg,7083
396
400
  machineconfig/utils/path_extended.py,sha256=WyJwoHnXdvSQQJ-yrxTX78FpqYmgVeKDYpNEB9UsRck,53223
397
401
  machineconfig/utils/path_helper.py,sha256=0e3Xh3BAEv27oqcezNeVLHJllGmLEgLH4T1l90m-650,8014
398
402
  machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,10957
399
403
  machineconfig/utils/scheduler.py,sha256=44CASABJg3epccxhAwv2CX7TVgZh6zVy3K4vqHKTuf4,14228
400
- machineconfig/utils/scheduling.py,sha256=RF1iXJpqf4Dg18jdZWtBixz97KAHC6VKYqTFSpdLWuc,11188
404
+ machineconfig/utils/scheduling.py,sha256=6x5zLA7sY5gohrEtN6zGrXIqNFasMoyBfwLcOjrjiME,11109
401
405
  machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
402
- machineconfig/utils/ssh.py,sha256=QDY3ti-V8PwZlAlNIw_4mPbPrRznJQjqb9ohN1x4HTM,39079
406
+ machineconfig/utils/ssh.py,sha256=x3JZGbUVexn_OvsIIRGC7CafOOpu-M9H-LkK9nYyL_k,39315
403
407
  machineconfig/utils/terminal.py,sha256=IlmOByfQG-vjhaFFxxzU5rWzP5_qUzmalRfuey3PAmc,11801
404
408
  machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
405
409
  machineconfig/utils/upgrade_packages.py,sha256=mSFyKvB3JhHte_x1dtmEgrJZCAXgTUQoaJUSx1OXQ3Y,4145
@@ -428,8 +432,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
428
432
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
429
433
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
430
434
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
431
- machineconfig-6.51.dist-info/METADATA,sha256=gDZDg13wSRXMkH_JmCW_3OPQdHyWfRSK7S2SaS2VsYU,2928
432
- machineconfig-6.51.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
433
- machineconfig-6.51.dist-info/entry_points.txt,sha256=M0jwN_brZdXWhmNVeXLvdKxfkv8WhhXFZYcuKBA9qnk,418
434
- machineconfig-6.51.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
435
- machineconfig-6.51.dist-info/RECORD,,
435
+ machineconfig-6.53.dist-info/METADATA,sha256=JtRwcaUo25t5Th849tT7K2ZBOUMP-FM5FRRckm4auYE,2928
436
+ machineconfig-6.53.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
437
+ machineconfig-6.53.dist-info/entry_points.txt,sha256=M0jwN_brZdXWhmNVeXLvdKxfkv8WhhXFZYcuKBA9qnk,418
438
+ machineconfig-6.53.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
439
+ machineconfig-6.53.dist-info/RECORD,,