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

@@ -16,10 +16,10 @@ def define_scripts():
16
16
  print(script)
17
17
 
18
18
 
19
- def main():
19
+ def get_app():
20
20
  app = typer.Typer(add_completion=False, no_args_is_help=True)
21
21
  app.command(name="scripts", help="define all scripts", no_args_is_help=False)(define_scripts)
22
- app()
22
+ return app
23
23
 
24
24
 
25
25
  # if __name__ == "__main__":
@@ -2,7 +2,7 @@
2
2
  # /// script
3
3
  # requires-python = ">=3.13"
4
4
  # dependencies = [
5
- # "machineconfig>=7.32",
5
+ # "machineconfig>=7.34",
6
6
  # "textual",
7
7
  # "pyperclip",
8
8
  # ]
@@ -39,7 +39,7 @@ def path():
39
39
  uv_with = ["textual"]
40
40
  uv_project_dir = None
41
41
  if not Path.home().joinpath("code/machineconfig").exists():
42
- uv_with.append("machineconfig>=7.32")
42
+ uv_with.append("machineconfig>=7.34")
43
43
  else:
44
44
  uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
45
45
  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])
@@ -48,9 +48,9 @@ def install(no_copy_assets: Annotated[bool, typer.Option("--no-assets-copy", "-n
48
48
  else:
49
49
  import platform
50
50
  if platform.system() == "Windows":
51
- run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=7.32" """)
51
+ run_shell_script(r"""& "$HOME\.local\bin\uv.exe" tool install --upgrade "machineconfig>=7.34" """)
52
52
  else:
53
- run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=7.32" """)
53
+ run_shell_script("""$HOME/.local/bin/uv tool install --upgrade "machineconfig>=7.34" """)
54
54
  from machineconfig.profile.create_shell_profile import create_default_shell_profile
55
55
  if not no_copy_assets:
56
56
  create_default_shell_profile() # involves copying assets too
@@ -75,7 +75,7 @@ def navigate():
75
75
  path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
76
76
  from machineconfig.utils.code import run_shell_script
77
77
  if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
78
- else: executable = """--with "machineconfig>=7.32,textual" """
78
+ else: executable = """--with "machineconfig>=7.34,textual" """
79
79
  run_shell_script(f"""uv run {executable} {path}""")
80
80
 
81
81
 
@@ -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>=7.32"]
83
+ uv_with = ["machineconfig>=7.34"]
84
84
  uv_project_dir = None
85
85
 
86
86
  import tempfile
@@ -8,6 +8,7 @@ from machineconfig.scripts.python.utils import get_app as get_utils_app
8
8
  from machineconfig.scripts.python.ftpx import ftpx as ftpx_func
9
9
  from machineconfig.scripts.python.croshell import croshell as croshell_func
10
10
  from machineconfig.scripts.python.fire_jobs import fire as get_fire_jobs_app
11
+ from machineconfig.scripts.python.define import get_app as get_define_app
11
12
 
12
13
  def get_app():
13
14
  import typer
@@ -40,6 +41,9 @@ def get_app():
40
41
  app.add_typer(utils_app, name="utils", help="[u] Utility commands", no_args_is_help=True)
41
42
  app.add_typer(utils_app, name="u", hidden=True) # short alias
42
43
 
44
+ define_app = get_define_app()
45
+ app.add_typer(define_app, name="define", help="[df] Define and manage configurations", no_args_is_help=True)
46
+ app.add_typer(define_app, name="df", hidden=True) # short alias
43
47
  return app
44
48
 
45
49
 
@@ -7,7 +7,7 @@ $user = ''
7
7
  $sharePath = ''
8
8
  $driveLetter = ''
9
9
 
10
- uv run --python 3.14 --with "machineconfig>=7.32" python -m machineconfig.scripts.python.mount_ssh
10
+ uv run --python 3.14 --with "machineconfig>=7.34" 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
@@ -37,7 +37,7 @@ add_to_path_if_not_already \
37
37
  . $CONFIG_ROOT/settings/broot/br.sh
38
38
  . $CONFIG_ROOT/settings/lf/linux/exe/lfcd.sh
39
39
  . $CONFIG_ROOT/settings/tere/terecd.sh
40
- . $CONFIG_ROOT/scripts/linux/mcfgs
40
+ . $CONFIG_ROOT/scripts/linux/wrap_mcfg
41
41
 
42
42
  # check if file in ~/dotfiles/machineconfig/init_linux.sh exists and source it
43
43
  if [ -f "$HOME/dotfiles/machineconfig/init_linux.sh" ]; then
@@ -24,11 +24,11 @@ Add-ToPathIfNotAlready -Directories @(
24
24
  )
25
25
 
26
26
  # sources ================================================================
27
- if (Test-Path "$CONFIG_ROOT\scripts\windows\mcfgs.ps1") {
27
+ if (Test-Path "$CONFIG_ROOT\scripts\windows\wrap_mcfg.ps1") {
28
28
  . $CONFIG_ROOT\settings\broot\brootcd.ps1
29
29
  . $CONFIG_ROOT\settings\lf\windows\lfcd.ps1
30
30
  . $CONFIG_ROOT\settings\tere\terecd.ps1
31
- . $CONFIG_ROOT\scripts\windows\mcfgs.ps1
31
+ . $CONFIG_ROOT\scripts\windows\wrap_mcfg.ps1
32
32
 
33
33
  function lsdla { lsd -la }
34
34
  Set-Alias -Name l -Value lsdla -Option AllScope
@@ -1,16 +1,16 @@
1
1
  #!/bin/bash
2
2
  . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
3
- . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/linux/mcfgs")
3
+ . <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/linux/wrap_mcfg")
4
4
 
5
- alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" devops'
6
- alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" cloud'
7
- alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" agents'
8
- alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" sessions'
9
- alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" ftpx'
10
- alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" fire'
11
- alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" croshell'
12
- alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" utils'
13
- alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.32" terminal'
5
+ alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" devops'
6
+ alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" cloud'
7
+ alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" agents'
8
+ alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" sessions'
9
+ alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" ftpx'
10
+ alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" fire'
11
+ alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" croshell'
12
+ alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" utils'
13
+ alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=7.34" terminal'
14
14
 
15
15
  alias d='wrap_in_shell_script devops'
16
16
  alias c='wrap_in_shell_script cloud'
@@ -1,17 +1,17 @@
1
1
 
2
2
 
3
3
  iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
4
- iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/windows/mcfgs.ps1").Content
4
+ iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/windows/wrap_mcfg.ps1").Content
5
5
 
6
- function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" devops $args }
7
- function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" cloud $args }
8
- function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" agents $args }
9
- function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" sessions $args }
10
- function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" ftpx $args }
11
- function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" fire $args }
12
- function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" croshell $args }
13
- function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" utils $args }
14
- function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.32" terminal $args }
6
+ function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" devops $args }
7
+ function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" cloud $args }
8
+ function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" agents $args }
9
+ function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" sessions $args }
10
+ function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" ftpx $args }
11
+ function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" fire $args }
12
+ function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" croshell $args }
13
+ function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" utils $args }
14
+ function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=7.34" terminal $args }
15
15
 
16
16
  function d { wrap_in_shell_script devops @args }
17
17
  function c { wrap_in_shell_script cloud @args }
machineconfig/utils/io.py CHANGED
@@ -77,3 +77,72 @@ def from_pickle(path: Path) -> Any:
77
77
  import pickle
78
78
 
79
79
  return pickle.loads(path.read_bytes())
80
+
81
+
82
+ def pwd2key(password: str, salt: Optional[bytes] = None, iterations: int = 10) -> bytes: # Derive a secret key from a given password and salt"""
83
+ import base64
84
+ if salt is None:
85
+ import hashlib
86
+ m = hashlib.sha256()
87
+ m.update(password.encode(encoding="utf-8"))
88
+ return base64.urlsafe_b64encode(s=m.digest()) # make url-safe bytes required by Ferent.
89
+ from cryptography.hazmat.primitives import hashes
90
+ from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
91
+ return base64.urlsafe_b64encode(PBKDF2HMAC(algorithm=hashes.SHA256(), length=32, salt=salt, iterations=iterations, backend=None).derive(password.encode()))
92
+
93
+
94
+ def encrypt(msg: bytes, key: Optional[bytes] = None, pwd: Optional[str] = None, salted: bool = True, iteration: Optional[int] = None, gen_key: bool = False) -> bytes:
95
+ import base64
96
+ from cryptography.fernet import Fernet
97
+
98
+ salt, iteration = None, None
99
+ if pwd is not None: # generate it from password
100
+ assert (key is None) and (type(pwd) is str), "❌ You can either pass key or pwd, or none of them, but not both."
101
+ import secrets
102
+ iteration = iteration or secrets.randbelow(exclusive_upper_bound=1_000_000)
103
+ salt = secrets.token_bytes(nbytes=16) if salted else None
104
+ key_resolved = pwd2key(password=pwd, salt=salt, iterations=iteration)
105
+ elif key is None:
106
+ if gen_key:
107
+ key_resolved = Fernet.generate_key()
108
+ Path.home().joinpath("dotfiles/creds/data/encrypted_files_key.bytes").write_bytes(key_resolved)
109
+ else:
110
+ try:
111
+ key_resolved = Path.home().joinpath("dotfiles/creds/data/encrypted_files_key.bytes").read_bytes()
112
+ print(f"⚠️ Using key from: {Path.home().joinpath('dotfiles/creds/data/encrypted_files_key.bytes')}")
113
+ except FileNotFoundError as err:
114
+ print("\n" * 3, "~" * 50, """Consider Loading up your dotfiles or pass `gen_key=True` to make and save one.""", "~" * 50, "\n" * 3)
115
+ raise FileNotFoundError(err) from err
116
+ elif isinstance(key, (str, Path)):
117
+ key_resolved = Path(key).read_bytes() # a path to a key file was passed, read it:
118
+ elif type(key) is bytes:
119
+ key_resolved = key # key passed explicitly
120
+ else:
121
+ raise TypeError("❌ Key must be either a path, bytes object or None.")
122
+ code = Fernet(key=key_resolved).encrypt(msg)
123
+ if pwd is not None and salt is not None and iteration is not None:
124
+ return base64.urlsafe_b64encode(b"%b%b%b" % (salt, iteration.to_bytes(4, "big"), base64.urlsafe_b64decode(code)))
125
+ return code
126
+
127
+
128
+ def decrypt(token: bytes, key: Optional[bytes] = None, pwd: Optional[str] = None, salted: bool = True) -> bytes:
129
+ import base64
130
+ if pwd is not None:
131
+ assert key is None, "❌ You can either pass key or pwd, or none of them, but not both."
132
+ if salted:
133
+ decoded = base64.urlsafe_b64decode(token)
134
+ salt, iterations, token = decoded[:16], decoded[16:20], base64.urlsafe_b64encode(decoded[20:])
135
+ key_resolved = pwd2key(password=pwd, salt=salt, iterations=int.from_bytes(bytes=iterations, byteorder="big"))
136
+ else:
137
+ key_resolved = pwd2key(password=pwd) # trailing `;` prevents IPython from caching the result.
138
+ elif type(key) is bytes:
139
+ assert pwd is None, "❌ You can either pass key or pwd, or none of them, but not both."
140
+ key_resolved = key # passsed explicitly
141
+ elif key is None:
142
+ key_resolved = Path.home().joinpath("dotfiles/creds/data/encrypted_files_key.bytes").read_bytes() # read from file
143
+ elif isinstance(key, (str, Path)):
144
+ key_resolved = Path(key).read_bytes() # passed a path to a file containing kwy
145
+ else:
146
+ raise TypeError(f"❌ Key must be either str, P, Path, bytes or None. Recieved: {type(key)}")
147
+ from cryptography.fernet import Fernet
148
+ return Fernet(key=key_resolved).decrypt(token)
@@ -1,4 +1,5 @@
1
1
  from machineconfig.utils.accessories import randstr
2
+ from machineconfig.utils.io import decrypt, encrypt
2
3
 
3
4
  from datetime import datetime
4
5
  import time
@@ -10,6 +11,7 @@ from platform import system
10
11
  from typing import Any, Optional, Union, Callable, TypeAlias, Literal
11
12
 
12
13
 
14
+
13
15
  OPLike: TypeAlias = Union[str, "PathExtended", Path, None]
14
16
  PLike: TypeAlias = Union[str, "PathExtended", Path]
15
17
  FILE_MODE: TypeAlias = Literal["r", "w", "x", "a"]
@@ -54,81 +56,6 @@ def _run_shell_command(
54
56
  )
55
57
 
56
58
 
57
- def pwd2key(password: str, salt: Optional[bytes] = None, iterations: int = 10) -> bytes: # Derive a secret key from a given password and salt"""
58
- import base64
59
-
60
- if salt is None:
61
- import hashlib
62
-
63
- m = hashlib.sha256()
64
- m.update(password.encode(encoding="utf-8"))
65
- return base64.urlsafe_b64encode(s=m.digest()) # make url-safe bytes required by Ferent.
66
- from cryptography.hazmat.primitives import hashes
67
- from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
68
-
69
- return base64.urlsafe_b64encode(PBKDF2HMAC(algorithm=hashes.SHA256(), length=32, salt=salt, iterations=iterations, backend=None).derive(password.encode()))
70
-
71
-
72
- def encrypt(msg: bytes, key: Optional[bytes] = None, pwd: Optional[str] = None, salted: bool = True, iteration: Optional[int] = None, gen_key: bool = False) -> bytes:
73
- import base64
74
- from cryptography.fernet import Fernet
75
-
76
- salt, iteration = None, None
77
- if pwd is not None: # generate it from password
78
- assert (key is None) and (type(pwd) is str), "❌ You can either pass key or pwd, or none of them, but not both."
79
- import secrets
80
-
81
- iteration = iteration or secrets.randbelow(exclusive_upper_bound=1_000_000)
82
- salt = secrets.token_bytes(nbytes=16) if salted else None
83
- key_resolved = pwd2key(password=pwd, salt=salt, iterations=iteration)
84
- elif key is None:
85
- if gen_key:
86
- key_resolved = Fernet.generate_key()
87
- Path.home().joinpath("dotfiles/creds/data/encrypted_files_key.bytes").write_bytes(key_resolved)
88
- else:
89
- try:
90
- key_resolved = Path.home().joinpath("dotfiles/creds/data/encrypted_files_key.bytes").read_bytes()
91
- print(f"⚠️ Using key from: {Path.home().joinpath('dotfiles/creds/data/encrypted_files_key.bytes')}")
92
- except FileNotFoundError as err:
93
- print("\n" * 3, "~" * 50, """Consider Loading up your dotfiles or pass `gen_key=True` to make and save one.""", "~" * 50, "\n" * 3)
94
- raise FileNotFoundError(err) from err
95
- elif isinstance(key, (str, PathExtended, Path)):
96
- key_resolved = Path(key).read_bytes() # a path to a key file was passed, read it:
97
- elif type(key) is bytes:
98
- key_resolved = key # key passed explicitly
99
- else:
100
- raise TypeError("❌ Key must be either a path, bytes object or None.")
101
- code = Fernet(key=key_resolved).encrypt(msg)
102
- if pwd is not None and salt is not None and iteration is not None:
103
- return base64.urlsafe_b64encode(b"%b%b%b" % (salt, iteration.to_bytes(4, "big"), base64.urlsafe_b64decode(code)))
104
- return code
105
-
106
-
107
- def decrypt(token: bytes, key: Optional[bytes] = None, pwd: Optional[str] = None, salted: bool = True) -> bytes:
108
- import base64
109
-
110
- if pwd is not None:
111
- assert key is None, "❌ You can either pass key or pwd, or none of them, but not both."
112
- if salted:
113
- decoded = base64.urlsafe_b64decode(token)
114
- salt, iterations, token = decoded[:16], decoded[16:20], base64.urlsafe_b64encode(decoded[20:])
115
- key_resolved = pwd2key(password=pwd, salt=salt, iterations=int.from_bytes(bytes=iterations, byteorder="big"))
116
- else:
117
- key_resolved = pwd2key(password=pwd) # trailing `;` prevents IPython from caching the result.
118
- elif type(key) is bytes:
119
- assert pwd is None, "❌ You can either pass key or pwd, or none of them, but not both."
120
- key_resolved = key # passsed explicitly
121
- elif key is None:
122
- key_resolved = Path.home().joinpath("dotfiles/creds/data/encrypted_files_key.bytes").read_bytes() # read from file
123
- elif isinstance(key, (str, Path)):
124
- key_resolved = Path(key).read_bytes() # passed a path to a file containing kwy
125
- else:
126
- raise TypeError(f"❌ Key must be either str, P, Path, bytes or None. Recieved: {type(key)}")
127
- from cryptography.fernet import Fernet
128
-
129
- return Fernet(key=key_resolved).decrypt(token)
130
-
131
-
132
59
  def validate_name(astring: str, replace: str = "_") -> str:
133
60
  import re
134
61
 
@@ -8,7 +8,7 @@ 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>=7.32"
11
+ MACHINECONFIG_VERSION = "machineconfig>=7.34"
12
12
  DEFAULT_PICKLE_SUBDIR = "tmp_results/tmp_scripts/ssh"
13
13
 
14
14
  class SSH:
@@ -245,6 +245,8 @@ class SSH:
245
245
  from pathlib import Path
246
246
  import shutil
247
247
  directory_path = Path(target_rel2home).expanduser()
248
+ if not directory_path.is_absolute():
249
+ directory_path = Path.home().joinpath(directory_path)
248
250
  if overwrite and directory_path.exists():
249
251
  if directory_path.is_dir():
250
252
  shutil.rmtree(directory_path)
@@ -318,9 +320,11 @@ class SSH:
318
320
  tmp_py_file = Path.home().joinpath(f"{DEFAULT_PICKLE_SUBDIR}/create_target_dir_{randstr()}.py")
319
321
  tmp_py_file.parent.mkdir(parents=True, exist_ok=True)
320
322
  tmp_py_file.write_text(command, encoding="utf-8")
321
- transferred_py_file = self.copy_from_here(source_path=str(tmp_py_file), target_rel2home=None, compress_with_zip=True, recursive=False, overwrite_existing=True)
322
- self.run_shell(command=f"""{UV_RUN_CMD} python {transferred_py_file}""", verbose_output=False, description=f"UNZIPPING {target_rel2home}", strict_stderr=True, strict_return_code=True)
323
+ remote_tmp_py = tmp_py_file.relative_to(Path.home()).as_posix()
324
+ self.copy_from_here(source_path=str(tmp_py_file), target_rel2home=None, compress_with_zip=False, recursive=False, overwrite_existing=True)
325
+ self.run_shell(command=f"""{UV_RUN_CMD} python {remote_tmp_py}""", verbose_output=False, description=f"UNZIPPING {target_rel2home}", strict_stderr=True, strict_return_code=True)
323
326
  source_obj.unlink()
327
+ tmp_py_file.unlink(missing_ok=True)
324
328
  return None
325
329
 
326
330
  def _check_remote_is_dir(self, source_path: Union[str, Path]) -> bool:
@@ -388,7 +392,7 @@ class SSH:
388
392
  assert isinstance(result, str), f"Could not resolve source path {source_path}"
389
393
  return result
390
394
 
391
- def copy_to_here(self, source: Union[str, Path], target: Optional[Union[str, Path]], compress_with_zip: bool = False, recursive: bool = False, internal_call: bool = False) -> Path:
395
+ def copy_to_here(self, source: Union[str, Path], target: Optional[Union[str, Path]], compress_with_zip: bool = False, recursive: bool = False, internal_call: bool = False) -> None:
392
396
  if self.sftp is None:
393
397
  raise RuntimeError(f"SFTP connection not available for {self.hostname}. Cannot transfer files.")
394
398
 
@@ -484,7 +488,7 @@ class SSH:
484
488
  local_file_target = target_dir.joinpath(Path(file_path).relative_to(expanded_source))
485
489
  self.copy_to_here(source=file_path, target=local_file_target, compress_with_zip=False, recursive=False, internal_call=True)
486
490
 
487
- return target_dir
491
+ return None
488
492
 
489
493
  if compress_with_zip:
490
494
  print("🗜️ ZIPPING ...")
@@ -607,7 +611,7 @@ class SSH:
607
611
  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)
608
612
 
609
613
  print("\n")
610
- return target_obj
614
+ return None
611
615
 
612
616
  if __name__ == "__main__":
613
617
  ssh = SSH(host="p51s", username=None, hostname=None, ssh_key_path=None, password=None, port=22, enable_compression=False)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machineconfig
3
- Version: 7.32
3
+ Version: 7.34
4
4
  Summary: Dotfiles management package
5
5
  Author-email: Alex Al-Saffar <programmer@usa.com>
6
6
  License: Apache 2.0
@@ -110,8 +110,8 @@ machineconfig/scripts/linux/fzfag,sha256=x0rX7vM_YjKLZ822D2Xh0HdaTj5kR_gG3g_5_w6
110
110
  machineconfig/scripts/linux/fzffg,sha256=jjeeyFkWmBbwH2taRqC3EOzZep2KR-ZYoI4UI-5kHqg,1090
111
111
  machineconfig/scripts/linux/fzfg,sha256=ClGnJZUsIk4y0qs3W5iXGo-nd0FaqAHMsnh8uoXQFy8,1190
112
112
  machineconfig/scripts/linux/fzfrga,sha256=xSdws6ae28ZXkkqz_uupZ0MYw_vxE2qpLT2DLS3WITM,460
113
- machineconfig/scripts/linux/mcfgs,sha256=R2WmmIVOL9nVtyZdvU02664GD7lYrmQUW4Y8b-wjLM8,1387
114
113
  machineconfig/scripts/linux/skrg,sha256=JgQJGwxaChr148bDnpTB0rrqZMe2o2zGSDA9x_oUhWM,133
114
+ machineconfig/scripts/linux/wrap_mcfg,sha256=R2WmmIVOL9nVtyZdvU02664GD7lYrmQUW4Y8b-wjLM8,1387
115
115
  machineconfig/scripts/linux/other/share_cloud.sh,sha256=lIZrXiaOT11kzu4NFNTXvANhc2bMdSPDYD1-7XUO_C0,2027
116
116
  machineconfig/scripts/linux/other/share_nfs,sha256=LDQZQ9TV7z2y7RtNHiO4Wb513MztyGjaAV-GzTGwUdc,1374
117
117
  machineconfig/scripts/linux/other/start_docker,sha256=_yDN_PPqgzSUnPT7dmniMTpL4IfeeaGy1a2OL3IJlDU,525
@@ -120,13 +120,13 @@ machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
120
120
  machineconfig/scripts/python/agents.py,sha256=aVbLQDgpngXZm4taHcED4sAxyHvV2_Dz5VW3apPcQcY,10651
121
121
  machineconfig/scripts/python/cloud.py,sha256=yAD6ciKiEtv2CH3g2NScDK5cpCZQi7Vu8yyeehw_cU8,1263
122
122
  machineconfig/scripts/python/croshell.py,sha256=QyQbVboNqDQHJkUeSsJvdT212t4TW46yat3GBzneqsQ,8649
123
- machineconfig/scripts/python/define.py,sha256=vk7E5twa3DtK10ZxRVlbklYHzcou7M3zPAoV5z9_JGI,645
123
+ machineconfig/scripts/python/define.py,sha256=cT1N-QpnRvUTosYEsEtds-8rik90pbMNS4iliqb5sqM,653
124
124
  machineconfig/scripts/python/devops.py,sha256=Lv4d-UlyOREj4VTcu_pxswYo54Mawe3XGeKjreGQDYg,2222
125
125
  machineconfig/scripts/python/devops_navigator.py,sha256=5Cm384D4S8_GsvMzTwr0C16D0ktf8_5Mk5bEJncwDO8,237
126
126
  machineconfig/scripts/python/fire_jobs.py,sha256=-xrUlBQ90asQkXuWESiDsD6D05Xuw0-NMmfwBerwSjg,13874
127
127
  machineconfig/scripts/python/ftpx.py,sha256=A13hL_tDYfcsaK9PkshK-0lrUS6KPhPCtwqWtLSo6IM,9764
128
128
  machineconfig/scripts/python/interactive.py,sha256=jFHpiQq_lisa51BS4-qUlWPJ1-pmHmPAfA6dixdsOzY,11745
129
- machineconfig/scripts/python/mcfg.py,sha256=TB5lZDZDImGqX4_mMSEv4ZoFigIPA0RXn-9H2cmPS6g,2457
129
+ machineconfig/scripts/python/machineconfig.py,sha256=NvyNC0O3Yxf0vwTy_wl-vS_W6kEG6cLUSpj7yxLONL4,2747
130
130
  machineconfig/scripts/python/sessions.py,sha256=Q_fbprawvW1x_E6jKQ-Z2Z5MRurRaepKUvi5z1G4CUw,9531
131
131
  machineconfig/scripts/python/terminal.py,sha256=RY7hJ0JIefJeGe_sp7ZiZpOG_vhXLmEAFRq-Fon-VEY,5191
132
132
  machineconfig/scripts/python/utils.py,sha256=9vwF5QRbHphNF154UYg6Ld3W0b3N9uEkfMEeR-nP_sg,2802
@@ -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=uzbNgu5m9itV87-WXfI4cR2yCuT_70mlfpt59L2zL3U,6932
165
+ machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=xzGtd2PPuSpSuYrD9TJVWijeVNop1estuyxjXhyLlek,6932
166
166
  machineconfig/scripts/python/helpers_agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py,sha256=YD6-rtudHNip8tx85amSmOZZIHBP9khq4az3dF41j6U,5934
168
168
  machineconfig/scripts/python/helpers_agents/fire_agents_help_search.py,sha256=qIfSS_su2YJ1Gb0_lu4cbjlJlYMBw0v52NTGiSrGjk8,2991
@@ -192,12 +192,12 @@ machineconfig/scripts/python/helpers_croshell/start_slidev.py,sha256=HfJReOusTPh
192
192
  machineconfig/scripts/python/helpers_croshell/viewer.py,sha256=heQNjB9fwn3xxbPgMofhv1Lp6Vtkl76YjjexWWBM0pM,2041
193
193
  machineconfig/scripts/python/helpers_croshell/viewer_template.py,sha256=ve3Q1-iKhCLc0VJijKvAeOYp2xaFOeIOC_XW956GWCc,3944
194
194
  machineconfig/scripts/python/helpers_devops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
- machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=kWgtoTPejj5lNk2FD2E1scgqloaxUq00_7oFuDSH0AI,6891
195
+ machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=8Mn4wmXB2YiAta59tdTYSFbqFf3c-pFqNLxSWtg0k2k,6891
196
196
  machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=pVUFE1SUtyTiulLzUssf8FrtU190EIV-l9rpwucsBa0,3427
197
197
  machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
198
198
  machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=9NcVJvPYaUDtmI_DSKthZxR4emMBeNWVM_M5f0YR8EQ,7302
199
199
  machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=Xwkv1adqHZvTfRSPWiqSK3PZ1XADyx3llw_YkbxaKyE,12505
200
- machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=FDB8YjLYYj1qZkCeeAMVc7jnGy4fPVzRzqUxlvZa4DU,6621
200
+ machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=h5w7S4TlphvduV7zLxzI6K83LlJ4ws-GfK8qta-1TC0,6621
201
201
  machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=BJnm9mEI0PGA2xK_ciNX1docIiRQ_fNhygGrDCcTekw,11076
202
202
  machineconfig/scripts/python/helpers_devops/cli_terminal.py,sha256=k_PzXaiGyE0vXr0Ii1XcJz2A7UvyPJrR31TRWt4RKRI,6019
203
203
  machineconfig/scripts/python/helpers_devops/cli_utils.py,sha256=B9pnosujOxZLpwzJO4YAqeO-2rvvOFIZgrUwGREZXfM,11118
@@ -225,7 +225,7 @@ machineconfig/scripts/python/helpers_navigator/search_bar.py,sha256=kDi8Jhxap8wd
225
225
  machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
226
226
  machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
227
227
  machineconfig/scripts/python/helpers_repos/clone.py,sha256=UULEG5xJuXlPGU0nqXH6U45jA9DOFqLw8B4iPytCwOQ,5471
228
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=3iub-GApBNiOaPLfcOxB9RVF_RPCLWKZ7A8w3CtrFcA,10450
228
+ machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=MklPV1TtispRg1a5FQL1MpbFSFdvRInQ7HTJJFORHYU,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
@@ -255,11 +255,11 @@ machineconfig/scripts/python/nw/wsl_windows_transfer.py,sha256=jHJyFTuks_Kw4cgE8
255
255
  machineconfig/scripts/windows/fzfb.ps1,sha256=Bmngm2aY8hnPa3iKAOK6EPDYdKzGLUc81wYOnJhNoqg,149
256
256
  machineconfig/scripts/windows/fzfg.ps1,sha256=CHJbMrMuZePd4dxwIwz3g4XWAEmWmckuX-Nrx2xgRkg,27
257
257
  machineconfig/scripts/windows/fzfrga.bat,sha256=rU_KBMO6ii2EZ0akMnmDk9vpuhKSUZqkV0o8a8ywXcM,488
258
- machineconfig/scripts/windows/mcfgs.ps1,sha256=1mLCFDPBG-1uNVaZe3fIAgvS_uo3u55TQaysG6Wj9Sw,1868
258
+ machineconfig/scripts/windows/wrap_mcfg.ps1,sha256=1mLCFDPBG-1uNVaZe3fIAgvS_uo3u55TQaysG6Wj9Sw,1868
259
259
  machineconfig/scripts/windows/mounts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
260
260
  machineconfig/scripts/windows/mounts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
261
261
  machineconfig/scripts/windows/mounts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
262
- machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=lO0zd1Qyu_nC43TOzfCcfu4rPmMYZlluFKZWYzb2GnY,322
262
+ machineconfig/scripts/windows/mounts/mount_ssh.ps1,sha256=9sZyxbW4uyGsy8nu6g8FvmMSrpCZK9yGZkK1OVDZuwY,322
263
263
  machineconfig/scripts/windows/mounts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
264
264
  machineconfig/scripts/windows/mounts/share_smb.ps1,sha256=U7x8ULYSjbgzTtiHNSKQuTaZ_apilDvkGV5Xm5hXk5M,384
265
265
  machineconfig/scripts/windows/mounts/unlock_bitlocker.ps1,sha256=Wv-SLscdckV-1mG3p82VXKPY9zW3hgkRmcLUXIZ1daE,253
@@ -331,7 +331,7 @@ machineconfig/settings/rofi/config.rasi,sha256=nDX5B8wdXQYF1fwiOTBRJUI4l_gQbYaLa
331
331
  machineconfig/settings/rofi/config_default.rasi,sha256=rTfKnC-bZuWX1l-lWQACCUOE1ShhkfykAxtXX9PlQHE,4694
332
332
  machineconfig/settings/shells/alacritty/alacritty.toml,sha256=EbL-2Y4QunW1pvRWB2yuLCw8MMPONheJr5LFoWRieUQ,871
333
333
  machineconfig/settings/shells/alacritty/alacritty.yml,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
- machineconfig/settings/shells/bash/init.sh,sha256=EoZemahn3ewLsxUWv1RD1XLq-WZNNVE8yIhIu7ENDZs,2931
334
+ machineconfig/settings/shells/bash/init.sh,sha256=2l-KKTSL-xLXpEvgVcxDa9iKZ0cxZCQh_GcVYj8rbR0,2935
335
335
  machineconfig/settings/shells/hyper/.hyper.js,sha256=h-HqeYlvPvPD4Ee7828Cxo87uVkzbMGJFqXTZIWoegw,8884
336
336
  machineconfig/settings/shells/ipy/profiles/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
337
337
  machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -339,7 +339,7 @@ machineconfig/settings/shells/ipy/profiles/default/startup/playext.py,sha256=OJ3
339
339
  machineconfig/settings/shells/kitty/kitty.conf,sha256=lDdx-dUX3jbKGb3BkS2f2TOpmgGiS-CI-_-lFvhD5A4,52870
340
340
  machineconfig/settings/shells/nushell/config.nu,sha256=xtko80MPteDXuOJmwJHNFhXmfHT6fIBfmTgsF29GiEc,748
341
341
  machineconfig/settings/shells/nushell/env.nu,sha256=4VmaXb-qP6qnMD5TPzkXMLFNlB5QC4l9HEzCvXZE2GQ,315
342
- machineconfig/settings/shells/pwsh/init.ps1,sha256=Jpd6RtMXgb-PjvezveyaRUyaxeiRDeH9Wv87XQZymwA,2803
342
+ machineconfig/settings/shells/pwsh/init.ps1,sha256=doyiOqdLUHLoBtEbm6NNvges-hBcE4dD43jpXDZZVfE,2811
343
343
  machineconfig/settings/shells/pwsh/profile.ps1,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
344
344
  machineconfig/settings/shells/starship/starship.toml,sha256=d5lWKC0AnTcriRAZV1opEZy76QknSpKFgJ3jyW9_vZ0,1305
345
345
  machineconfig/settings/shells/vtm/settings.xml,sha256=5TNXd-i0eUGo2w3tuhY9aOkwoJdqih8_HO_U6uL2Dts,18262
@@ -377,7 +377,7 @@ machineconfig/setup_linux/others/cli_installation.sh,sha256=gVvszYZJgKPRJx2SEaE3
377
377
  machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
378
378
  machineconfig/setup_linux/ssh/openssh_all.sh,sha256=3dg6HEUFbHQOzLfSAtzK_D_GB8rGCCp_aBnxNdnidVc,824
379
379
  machineconfig/setup_linux/ssh/openssh_wsl.sh,sha256=1eeRGrloVB34K5z8yWVUMG5b9pV-WBfHgV9jqXiYgCQ,1398
380
- machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=c1aV0EhTTDU8YTG1XKkiRN8cAYG8WKFJVn6CEGydQ6s,1449
380
+ machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=rdQlQN14gcZ38J1tVC1DumwxVlO5zfTjP4XnwHHHFJI,1453
381
381
  machineconfig/setup_mac/__init__.py,sha256=Q1waupi5vCBroLqc8Rtnw69_7jLnm2Cs7_zH_GSZgMs,616
382
382
  machineconfig/setup_mac/apps.sh,sha256=R0N6fBwLCzwy4qAormyMerXXXrHazibSkY6NrNOpTQU,2772
383
383
  machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
@@ -392,25 +392,25 @@ machineconfig/setup_windows/others/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhm
392
392
  machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
393
393
  machineconfig/setup_windows/ssh/add_identity.ps1,sha256=b8ZXpmNUSw3IMYvqSY7ClpdWPG39FS7MefoWnRhWN2U,506
394
394
  machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=OMlYQdvuJQNxF5EILLPizB6BZAT3jAmDsv1WcVVxpFQ,2529
395
- machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=WXWrFz-Ws9QpFkNPHa_hCt8f91Xzm94yzYyzIJwzvf0,1751
395
+ machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=s_-fu6-mJMq4sxYSazp7JmMtk26pV7MM2PvVHxcH6cI,1755
396
396
  machineconfig/setup_windows/wt_and_pwsh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
397
397
  machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py,sha256=ogxJnwpdcpH7N6dFJu95UCNoGYirZKQho_3X0F_hmXs,6791
398
398
  machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
399
399
  machineconfig/utils/accessories.py,sha256=Rs8R0GUb2Ub6YimkgXHnI02CShS5BKlrZdCigVxfPlk,4339
400
400
  machineconfig/utils/code.py,sha256=fVeQnhZE8-aoPBsrgjNcBTcv3NuyBSSQv9P8jyC8W_M,6635
401
401
  machineconfig/utils/installer.py,sha256=1ScBaTe_pRsfTYht9-LXmirgnNizNy8u1GgetUfEDO4,10351
402
- machineconfig/utils/io.py,sha256=4dSieoqZO8Vvi4vW8lLoITDHBvmFp4dtl3kyeZHQ6Co,2528
402
+ machineconfig/utils/io.py,sha256=3Z2dLf12sCXe2y2_2p2ypfIH5OCwqvKqcYjcHMgCZt0,6491
403
403
  machineconfig/utils/links.py,sha256=mA98WNkX5iK4c6f8Ht3HKv7sB6VjIwqukTxXY23PVjk,25143
404
404
  machineconfig/utils/meta.py,sha256=4ocYH3Zi6bVN6FVgXoGIfoasV6oxi67I9rQ8hvyYinc,9892
405
405
  machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
406
406
  machineconfig/utils/options.py,sha256=VWYx3EKJxIp-CJ8gDGYdjclKSc1tMUhyrC8v3seeneo,7447
407
- machineconfig/utils/path_extended.py,sha256=WyJwoHnXdvSQQJ-yrxTX78FpqYmgVeKDYpNEB9UsRck,53223
407
+ machineconfig/utils/path_extended.py,sha256=F9xjmuJ4JMqI6Ap2Hypvfz81BlBe-VsN0CfBaHWGEnQ,49293
408
408
  machineconfig/utils/path_helper.py,sha256=Yxj8qlf-g_254-dfvRx5rlisM2WA0P-BhZBEbmReeys,8095
409
409
  machineconfig/utils/procs.py,sha256=YPA_vEYQGwPd_o_Lc6nOTBo5BrB1tSs8PJ42XiGpenM,10957
410
410
  machineconfig/utils/scheduler.py,sha256=fguwvINyaupOxdU5Uadyxalh_jXTXDzt0ioEgjEOKcM,14705
411
411
  machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
412
412
  machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
413
- machineconfig/utils/ssh.py,sha256=xrMpTa4WFQG6QgaE00uJQZYq0RPaDWvx28Ke6YogYZo,39008
413
+ machineconfig/utils/ssh.py,sha256=s7oY9H5TKRLpvtKhOzixzPXiZtkLUEk1Eggs2ZFxHk0,39212
414
414
  machineconfig/utils/terminal.py,sha256=VDgsjTjBmMGgZN0YIc0pJ8YksLDrBtiXON1EThy7_is,4264
415
415
  machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
416
416
  machineconfig/utils/upgrade_packages.py,sha256=75kabcI-chMiaBnafJ_hdhDUz_GyH7AsDt7rW3hyu9M,5851
@@ -439,8 +439,8 @@ machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoS
439
439
  machineconfig/utils/schemas/layouts/layout_types.py,sha256=TcqlZdGVoH8htG5fHn1KWXhRdPueAcoyApppZsPAPto,2020
440
440
  machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
441
441
  machineconfig/utils/ssh_utils/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
442
- machineconfig-7.32.dist-info/METADATA,sha256=Cr6xNtBnHDG4jLnsqC1QAje0Wn1LR5pm5gih8-c5ZhI,3396
443
- machineconfig-7.32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
444
- machineconfig-7.32.dist-info/entry_points.txt,sha256=0ho96z7b1toS6CeiajpTwEwQa83UrJ3g1onD4Wxax9o,624
445
- machineconfig-7.32.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
446
- machineconfig-7.32.dist-info/RECORD,,
442
+ machineconfig-7.34.dist-info/METADATA,sha256=IdDbwFZG4Yx1f7SosvPt8tTLP4GXF0BUK6xPzcojmxs,3396
443
+ machineconfig-7.34.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
444
+ machineconfig-7.34.dist-info/entry_points.txt,sha256=T5NQvd_TI1WrquhIeQU3TbtMauWDXz3hCB1a_3K3KLY,642
445
+ machineconfig-7.34.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
446
+ machineconfig-7.34.dist-info/RECORD,,
@@ -6,8 +6,8 @@ define = machineconfig.scripts.python.define:main
6
6
  devops = machineconfig.scripts.python.devops:main
7
7
  fire = machineconfig.scripts.python.fire_jobs:main
8
8
  ftpx = machineconfig.scripts.python.ftpx:main
9
- machineconfig = machineconfig.scripts.python.mcfg:main
10
- mcfg = machineconfig.scripts.python.mcfg:main
9
+ machineconfig = machineconfig.scripts.python.machineconfig:main
10
+ mcfg = machineconfig.scripts.python.machineconfig:main
11
11
  sessions = machineconfig.scripts.python.sessions:main
12
12
  terminal = machineconfig.scripts.python.terminal:main
13
13
  utils = machineconfig.scripts.python.utils:main
File without changes