machineconfig 1.92__py3-none-any.whl → 1.94__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 (694) hide show
  1. machineconfig/__init__.py +0 -8
  2. machineconfig/cluster/__init__.py +0 -0
  3. machineconfig/cluster/cloud_manager.py +359 -0
  4. machineconfig/cluster/data_transfer.py +56 -0
  5. machineconfig/cluster/distribute.py +280 -0
  6. machineconfig/cluster/file_manager.py +238 -0
  7. machineconfig/cluster/job_params.py +148 -0
  8. machineconfig/cluster/loader_runner.py +150 -0
  9. machineconfig/cluster/remote_machine.py +281 -0
  10. machineconfig/cluster/script_execution.py +209 -0
  11. machineconfig/cluster/script_notify_upon_completion.py +63 -0
  12. machineconfig/cluster/self_ssh.py +59 -0
  13. machineconfig/cluster/session_managers.py +183 -0
  14. machineconfig/cluster/templates/__init__.py +0 -0
  15. machineconfig/cluster/templates/cli_click.py +104 -0
  16. machineconfig/cluster/templates/cli_gooey.py +119 -0
  17. machineconfig/cluster/templates/cli_trogon.py +21 -0
  18. machineconfig/cluster/templates/f.py +4 -0
  19. machineconfig/cluster/templates/run_cloud.py +52 -0
  20. machineconfig/cluster/templates/run_cluster.py +69 -0
  21. machineconfig/cluster/templates/run_remote.py +67 -0
  22. machineconfig/cluster/templates/utils.py +37 -0
  23. machineconfig/jobs/__pycache__/__init__.cpython-311.pyc +0 -0
  24. machineconfig/jobs/linux/msc/lid.sh +26 -0
  25. machineconfig/jobs/linux/msc/network.sh +39 -0
  26. machineconfig/jobs/python/__pycache__/__init__.cpython-311.pyc +0 -0
  27. machineconfig/jobs/python/__pycache__/check_installations.cpython-311.pyc +0 -0
  28. machineconfig/jobs/python/__pycache__/checkout_version.cpython-311.pyc +0 -0
  29. machineconfig/jobs/python/__pycache__/python_ve_symlink.cpython-311.pyc +0 -0
  30. machineconfig/jobs/python/archive/python_tools.txt +12 -0
  31. machineconfig/jobs/python/check_installations.py +26 -11
  32. machineconfig/jobs/python/checkout_version.py +24 -13
  33. machineconfig/jobs/python/create_zellij_template.py +4 -4
  34. machineconfig/jobs/python/python_cargo_build_share.py +13 -4
  35. machineconfig/jobs/python/python_ve_symlink.py +15 -4
  36. machineconfig/jobs/python/vscode/__pycache__/api.cpython-311.pyc +0 -0
  37. machineconfig/jobs/python/vscode/__pycache__/link_ve.cpython-311.pyc +0 -0
  38. machineconfig/jobs/python/vscode/api.py +48 -0
  39. machineconfig/jobs/python/vscode/link_ve.py +64 -0
  40. machineconfig/jobs/python/vscode/select_interpreter.py +84 -0
  41. machineconfig/jobs/python/vscode/sync_code.py +60 -0
  42. machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  43. machineconfig/jobs/python_custom_installers/__pycache__/hx.cpython-311.pyc +0 -0
  44. machineconfig/jobs/python_custom_installers/archive/ngrok.py +62 -0
  45. machineconfig/jobs/python_custom_installers/dev/aider.py +37 -0
  46. machineconfig/jobs/python_custom_installers/dev/alacritty.py +72 -0
  47. machineconfig/jobs/python_custom_installers/dev/brave.py +67 -0
  48. machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +50 -0
  49. machineconfig/jobs/python_custom_installers/dev/code.py +62 -0
  50. machineconfig/jobs/python_custom_installers/dev/cursor.py +67 -0
  51. machineconfig/jobs/python_custom_installers/dev/docker.py +70 -0
  52. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +77 -0
  53. machineconfig/jobs/python_custom_installers/dev/espanso.py +82 -0
  54. machineconfig/jobs/python_custom_installers/dev/goes.py +59 -0
  55. machineconfig/jobs/python_custom_installers/dev/lvim.py +76 -0
  56. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +67 -0
  57. machineconfig/jobs/python_custom_installers/dev/redis.py +69 -0
  58. machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +31 -0
  59. machineconfig/jobs/python_custom_installers/dev/warp-cli.py +71 -0
  60. machineconfig/jobs/python_custom_installers/dev/wezterm.py +71 -0
  61. machineconfig/jobs/python_custom_installers/gh.py +46 -4
  62. machineconfig/jobs/python_custom_installers/hx.py +103 -18
  63. machineconfig/jobs/python_custom_installers/scripts/linux/brave.sh +52 -0
  64. machineconfig/jobs/python_custom_installers/scripts/linux/docker.sh +140 -0
  65. machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +48 -0
  66. machineconfig/jobs/python_custom_installers/scripts/linux/edge.sh +47 -0
  67. machineconfig/jobs/python_custom_installers/scripts/linux/nerdfont.sh +64 -0
  68. machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +53 -0
  69. machineconfig/jobs/python_custom_installers/scripts/linux/redis.sh +76 -0
  70. machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +91 -0
  71. machineconfig/jobs/python_custom_installers/scripts/linux/vscode.sh +66 -0
  72. machineconfig/jobs/python_custom_installers/scripts/linux/warp-cli.sh +77 -0
  73. machineconfig/jobs/python_custom_installers/scripts/linux/wezterm.sh +43 -0
  74. machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  75. machineconfig/jobs/python_generic_installers/config.json +267 -0
  76. machineconfig/jobs/python_generic_installers/dev/config.archive.json +18 -0
  77. machineconfig/jobs/python_generic_installers/dev/config.json +394 -0
  78. machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  79. machineconfig/jobs/python_linux_installers/archive/config.json +10 -0
  80. machineconfig/jobs/python_linux_installers/config.json +74 -0
  81. machineconfig/jobs/python_linux_installers/dev/config.json +138 -0
  82. machineconfig/jobs/python_windows_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  83. machineconfig/jobs/python_windows_installers/archive/file.json +11 -0
  84. machineconfig/jobs/python_windows_installers/config.json +50 -0
  85. machineconfig/jobs/python_windows_installers/dev/config.json +3 -0
  86. machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +14 -0
  87. machineconfig/jobs/windows/archive/openssh-server_add_key.ps1 +7 -0
  88. machineconfig/jobs/windows/archive/openssh-server_copy-ssh-id.ps1 +14 -0
  89. machineconfig/jobs/windows/start_terminal.ps1 +6 -0
  90. machineconfig/jobs/windows/startup_file.cmd +2 -0
  91. machineconfig/profile/__pycache__/__init__.cpython-311.pyc +0 -0
  92. machineconfig/profile/__pycache__/create.cpython-311.pyc +0 -0
  93. machineconfig/profile/__pycache__/shell.cpython-311.pyc +0 -0
  94. machineconfig/profile/create.py +47 -13
  95. machineconfig/profile/create_hardlinks.py +42 -12
  96. machineconfig/profile/records/generic/shares.toml +5 -0
  97. machineconfig/profile/records/linux/apps_summary_report.csv +48 -0
  98. machineconfig/profile/records/linux/apps_summary_report.md +49 -0
  99. machineconfig/profile/records/windows/apps_summary_report.csv +1 -0
  100. machineconfig/profile/records/windows/apps_summary_report.md +2 -0
  101. machineconfig/profile/shell.py +62 -11
  102. machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  103. machineconfig/scripts/cloud/init.sh +128 -0
  104. machineconfig/scripts/linux/activate_ve +87 -0
  105. machineconfig/scripts/linux/archive/tmate_conn +12 -0
  106. machineconfig/scripts/linux/archive/tmate_start +12 -0
  107. machineconfig/scripts/linux/archive/transfer_wsl_win +5 -0
  108. machineconfig/scripts/linux/checkout_versions +8 -0
  109. machineconfig/scripts/linux/choose_wezterm_theme +9 -0
  110. machineconfig/scripts/linux/cloud_copy +9 -0
  111. machineconfig/scripts/linux/cloud_manager +8 -0
  112. machineconfig/scripts/linux/cloud_mount +24 -0
  113. machineconfig/scripts/linux/cloud_repo_sync +22 -0
  114. machineconfig/scripts/linux/cloud_sync +24 -0
  115. machineconfig/scripts/linux/croshell +24 -0
  116. machineconfig/scripts/linux/devops +24 -0
  117. machineconfig/scripts/linux/fire +46 -0
  118. machineconfig/scripts/linux/ftpx +8 -0
  119. machineconfig/scripts/linux/fzf2g +21 -0
  120. machineconfig/scripts/linux/fzfag +17 -0
  121. machineconfig/scripts/linux/fzffg +25 -0
  122. machineconfig/scripts/linux/fzfg +23 -0
  123. machineconfig/scripts/linux/fzfrga +21 -0
  124. machineconfig/scripts/linux/gh_models +11 -0
  125. machineconfig/scripts/linux/kill_process +10 -0
  126. machineconfig/scripts/linux/mount_drive +128 -0
  127. machineconfig/scripts/linux/mount_nfs +62 -0
  128. machineconfig/scripts/linux/mount_nw_drive +72 -0
  129. machineconfig/scripts/linux/mount_smb +3 -0
  130. machineconfig/scripts/linux/programs +21 -0
  131. machineconfig/scripts/linux/repos +24 -0
  132. machineconfig/scripts/linux/scheduler +8 -0
  133. machineconfig/scripts/linux/share_cloud.sh +81 -0
  134. machineconfig/scripts/linux/share_nfs +49 -0
  135. machineconfig/scripts/linux/share_smb +1 -0
  136. machineconfig/scripts/linux/skrg +4 -0
  137. machineconfig/scripts/linux/start_docker +23 -0
  138. machineconfig/scripts/linux/start_slidev +23 -0
  139. machineconfig/scripts/linux/start_terminals +12 -0
  140. machineconfig/scripts/linux/switch_ip +20 -0
  141. machineconfig/scripts/linux/url2md +10 -0
  142. machineconfig/scripts/linux/z_ls +104 -0
  143. machineconfig/scripts/python/.mypy_cache/.gitignore +2 -0
  144. machineconfig/scripts/python/.mypy_cache/3.11/@plugins_snapshot.json +1 -0
  145. machineconfig/scripts/python/.mypy_cache/3.11/__future__.data.json +1 -0
  146. machineconfig/scripts/python/.mypy_cache/3.11/__future__.meta.json +1 -0
  147. machineconfig/scripts/python/.mypy_cache/3.11/_ast.data.json +1 -0
  148. machineconfig/scripts/python/.mypy_cache/3.11/_ast.meta.json +1 -0
  149. machineconfig/scripts/python/.mypy_cache/3.11/_bz2.data.json +1 -0
  150. machineconfig/scripts/python/.mypy_cache/3.11/_bz2.meta.json +1 -0
  151. machineconfig/scripts/python/.mypy_cache/3.11/_codecs.data.json +1 -0
  152. machineconfig/scripts/python/.mypy_cache/3.11/_codecs.meta.json +1 -0
  153. machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.data.json +1 -0
  154. machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.meta.json +1 -0
  155. machineconfig/scripts/python/.mypy_cache/3.11/_compression.data.json +1 -0
  156. machineconfig/scripts/python/.mypy_cache/3.11/_compression.meta.json +1 -0
  157. machineconfig/scripts/python/.mypy_cache/3.11/_decimal.data.json +1 -0
  158. machineconfig/scripts/python/.mypy_cache/3.11/_decimal.meta.json +1 -0
  159. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.data.json +1 -0
  160. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.meta.json +1 -0
  161. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.data.json +1 -0
  162. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.meta.json +1 -0
  163. machineconfig/scripts/python/.mypy_cache/3.11/_io.data.json +1 -0
  164. machineconfig/scripts/python/.mypy_cache/3.11/_io.meta.json +1 -0
  165. machineconfig/scripts/python/.mypy_cache/3.11/_locale.data.json +1 -0
  166. machineconfig/scripts/python/.mypy_cache/3.11/_locale.meta.json +1 -0
  167. machineconfig/scripts/python/.mypy_cache/3.11/_stat.data.json +1 -0
  168. machineconfig/scripts/python/.mypy_cache/3.11/_stat.meta.json +1 -0
  169. machineconfig/scripts/python/.mypy_cache/3.11/_struct.data.json +1 -0
  170. machineconfig/scripts/python/.mypy_cache/3.11/_struct.meta.json +1 -0
  171. machineconfig/scripts/python/.mypy_cache/3.11/_thread.data.json +1 -0
  172. machineconfig/scripts/python/.mypy_cache/3.11/_thread.meta.json +1 -0
  173. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.data.json +1 -0
  174. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.meta.json +1 -0
  175. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.data.json +1 -0
  176. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.meta.json +1 -0
  177. machineconfig/scripts/python/.mypy_cache/3.11/_warnings.data.json +1 -0
  178. machineconfig/scripts/python/.mypy_cache/3.11/_warnings.meta.json +1 -0
  179. machineconfig/scripts/python/.mypy_cache/3.11/_weakref.data.json +1 -0
  180. machineconfig/scripts/python/.mypy_cache/3.11/_weakref.meta.json +1 -0
  181. machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.data.json +1 -0
  182. machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.meta.json +1 -0
  183. machineconfig/scripts/python/.mypy_cache/3.11/abc.data.json +1 -0
  184. machineconfig/scripts/python/.mypy_cache/3.11/abc.meta.json +1 -0
  185. machineconfig/scripts/python/.mypy_cache/3.11/argparse.data.json +1 -0
  186. machineconfig/scripts/python/.mypy_cache/3.11/argparse.meta.json +1 -0
  187. machineconfig/scripts/python/.mypy_cache/3.11/ast.data.json +1 -0
  188. machineconfig/scripts/python/.mypy_cache/3.11/ast.meta.json +1 -0
  189. machineconfig/scripts/python/.mypy_cache/3.11/binascii.data.json +1 -0
  190. machineconfig/scripts/python/.mypy_cache/3.11/binascii.meta.json +1 -0
  191. machineconfig/scripts/python/.mypy_cache/3.11/builtins.data.json +1 -0
  192. machineconfig/scripts/python/.mypy_cache/3.11/builtins.meta.json +1 -0
  193. machineconfig/scripts/python/.mypy_cache/3.11/bz2.data.json +1 -0
  194. machineconfig/scripts/python/.mypy_cache/3.11/bz2.meta.json +1 -0
  195. machineconfig/scripts/python/.mypy_cache/3.11/calendar.data.json +1 -0
  196. machineconfig/scripts/python/.mypy_cache/3.11/calendar.meta.json +1 -0
  197. machineconfig/scripts/python/.mypy_cache/3.11/codecs.data.json +1 -0
  198. machineconfig/scripts/python/.mypy_cache/3.11/codecs.meta.json +1 -0
  199. machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.data.json +1 -0
  200. machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.meta.json +1 -0
  201. machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.data.json +1 -0
  202. machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.meta.json +1 -0
  203. machineconfig/scripts/python/.mypy_cache/3.11/configparser.data.json +1 -0
  204. machineconfig/scripts/python/.mypy_cache/3.11/configparser.meta.json +1 -0
  205. machineconfig/scripts/python/.mypy_cache/3.11/contextlib.data.json +1 -0
  206. machineconfig/scripts/python/.mypy_cache/3.11/contextlib.meta.json +1 -0
  207. machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.data.json +1 -0
  208. machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.meta.json +1 -0
  209. machineconfig/scripts/python/.mypy_cache/3.11/datetime.data.json +1 -0
  210. machineconfig/scripts/python/.mypy_cache/3.11/datetime.meta.json +1 -0
  211. machineconfig/scripts/python/.mypy_cache/3.11/decimal.data.json +1 -0
  212. machineconfig/scripts/python/.mypy_cache/3.11/decimal.meta.json +1 -0
  213. machineconfig/scripts/python/.mypy_cache/3.11/dis.data.json +1 -0
  214. machineconfig/scripts/python/.mypy_cache/3.11/dis.meta.json +1 -0
  215. machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.data.json +1 -0
  216. machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.meta.json +1 -0
  217. machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.data.json +1 -0
  218. machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.meta.json +1 -0
  219. machineconfig/scripts/python/.mypy_cache/3.11/email/charset.data.json +1 -0
  220. machineconfig/scripts/python/.mypy_cache/3.11/email/charset.meta.json +1 -0
  221. machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.data.json +1 -0
  222. machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.meta.json +1 -0
  223. machineconfig/scripts/python/.mypy_cache/3.11/email/errors.data.json +1 -0
  224. machineconfig/scripts/python/.mypy_cache/3.11/email/errors.meta.json +1 -0
  225. machineconfig/scripts/python/.mypy_cache/3.11/email/header.data.json +1 -0
  226. machineconfig/scripts/python/.mypy_cache/3.11/email/header.meta.json +1 -0
  227. machineconfig/scripts/python/.mypy_cache/3.11/email/message.data.json +1 -0
  228. machineconfig/scripts/python/.mypy_cache/3.11/email/message.meta.json +1 -0
  229. machineconfig/scripts/python/.mypy_cache/3.11/email/policy.data.json +1 -0
  230. machineconfig/scripts/python/.mypy_cache/3.11/email/policy.meta.json +1 -0
  231. machineconfig/scripts/python/.mypy_cache/3.11/enum.data.json +1 -0
  232. machineconfig/scripts/python/.mypy_cache/3.11/enum.meta.json +1 -0
  233. machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.data.json +1 -0
  234. machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.meta.json +1 -0
  235. machineconfig/scripts/python/.mypy_cache/3.11/functools.data.json +1 -0
  236. machineconfig/scripts/python/.mypy_cache/3.11/functools.meta.json +1 -0
  237. machineconfig/scripts/python/.mypy_cache/3.11/gc.data.json +1 -0
  238. machineconfig/scripts/python/.mypy_cache/3.11/gc.meta.json +1 -0
  239. machineconfig/scripts/python/.mypy_cache/3.11/genericpath.data.json +1 -0
  240. machineconfig/scripts/python/.mypy_cache/3.11/genericpath.meta.json +1 -0
  241. machineconfig/scripts/python/.mypy_cache/3.11/getpass.data.json +1 -0
  242. machineconfig/scripts/python/.mypy_cache/3.11/getpass.meta.json +1 -0
  243. machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.data.json +1 -0
  244. machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.meta.json +1 -0
  245. machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.data.json +1 -0
  246. machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.meta.json +1 -0
  247. machineconfig/scripts/python/.mypy_cache/3.11/git/compat.data.json +1 -0
  248. machineconfig/scripts/python/.mypy_cache/3.11/git/compat.meta.json +1 -0
  249. machineconfig/scripts/python/.mypy_cache/3.11/git/config.data.json +1 -0
  250. machineconfig/scripts/python/.mypy_cache/3.11/git/config.meta.json +1 -0
  251. machineconfig/scripts/python/.mypy_cache/3.11/git/db.data.json +1 -0
  252. machineconfig/scripts/python/.mypy_cache/3.11/git/db.meta.json +1 -0
  253. machineconfig/scripts/python/.mypy_cache/3.11/git/diff.data.json +1 -0
  254. machineconfig/scripts/python/.mypy_cache/3.11/git/diff.meta.json +1 -0
  255. machineconfig/scripts/python/.mypy_cache/3.11/git/exc.data.json +1 -0
  256. machineconfig/scripts/python/.mypy_cache/3.11/git/exc.meta.json +1 -0
  257. machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.data.json +1 -0
  258. machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.meta.json +1 -0
  259. machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.data.json +1 -0
  260. machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.meta.json +1 -0
  261. machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.data.json +1 -0
  262. machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.meta.json +1 -0
  263. machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.data.json +1 -0
  264. machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.meta.json +1 -0
  265. machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.data.json +1 -0
  266. machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.meta.json +1 -0
  267. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.data.json +1 -0
  268. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.meta.json +1 -0
  269. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.data.json +1 -0
  270. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.meta.json +1 -0
  271. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.data.json +1 -0
  272. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.meta.json +1 -0
  273. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.data.json +1 -0
  274. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.meta.json +1 -0
  275. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.data.json +1 -0
  276. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.meta.json +1 -0
  277. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.data.json +1 -0
  278. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.meta.json +1 -0
  279. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.data.json +1 -0
  280. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.meta.json +1 -0
  281. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.data.json +1 -0
  282. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.meta.json +1 -0
  283. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.data.json +1 -0
  284. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.meta.json +1 -0
  285. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.data.json +1 -0
  286. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.meta.json +1 -0
  287. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.data.json +1 -0
  288. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.meta.json +1 -0
  289. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.data.json +1 -0
  290. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.meta.json +1 -0
  291. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.data.json +1 -0
  292. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.meta.json +1 -0
  293. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.data.json +1 -0
  294. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.meta.json +1 -0
  295. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.data.json +1 -0
  296. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.meta.json +1 -0
  297. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.data.json +1 -0
  298. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.meta.json +1 -0
  299. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.data.json +1 -0
  300. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.meta.json +1 -0
  301. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.data.json +1 -0
  302. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.meta.json +1 -0
  303. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.data.json +1 -0
  304. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.meta.json +1 -0
  305. machineconfig/scripts/python/.mypy_cache/3.11/git/remote.data.json +1 -0
  306. machineconfig/scripts/python/.mypy_cache/3.11/git/remote.meta.json +1 -0
  307. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.data.json +1 -0
  308. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.meta.json +1 -0
  309. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.data.json +1 -0
  310. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.meta.json +1 -0
  311. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.data.json +1 -0
  312. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.meta.json +1 -0
  313. machineconfig/scripts/python/.mypy_cache/3.11/git/types.data.json +1 -0
  314. machineconfig/scripts/python/.mypy_cache/3.11/git/types.meta.json +1 -0
  315. machineconfig/scripts/python/.mypy_cache/3.11/git/util.data.json +1 -0
  316. machineconfig/scripts/python/.mypy_cache/3.11/git/util.meta.json +1 -0
  317. machineconfig/scripts/python/.mypy_cache/3.11/glob.data.json +1 -0
  318. machineconfig/scripts/python/.mypy_cache/3.11/glob.meta.json +1 -0
  319. machineconfig/scripts/python/.mypy_cache/3.11/gzip.data.json +1 -0
  320. machineconfig/scripts/python/.mypy_cache/3.11/gzip.meta.json +1 -0
  321. machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.data.json +1 -0
  322. machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.meta.json +1 -0
  323. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.data.json +1 -0
  324. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.meta.json +1 -0
  325. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.data.json +1 -0
  326. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.meta.json +1 -0
  327. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.data.json +1 -0
  328. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.meta.json +1 -0
  329. machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.data.json +1 -0
  330. machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.meta.json +1 -0
  331. machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.data.json +1 -0
  332. machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.meta.json +1 -0
  333. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.data.json +1 -0
  334. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.meta.json +1 -0
  335. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.data.json +1 -0
  336. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.meta.json +1 -0
  337. machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.data.json +1 -0
  338. machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.meta.json +1 -0
  339. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.data.json +1 -0
  340. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.meta.json +1 -0
  341. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.data.json +1 -0
  342. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.meta.json +1 -0
  343. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.data.json +1 -0
  344. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.meta.json +1 -0
  345. machineconfig/scripts/python/.mypy_cache/3.11/inspect.data.json +1 -0
  346. machineconfig/scripts/python/.mypy_cache/3.11/inspect.meta.json +1 -0
  347. machineconfig/scripts/python/.mypy_cache/3.11/io.data.json +1 -0
  348. machineconfig/scripts/python/.mypy_cache/3.11/io.meta.json +1 -0
  349. machineconfig/scripts/python/.mypy_cache/3.11/itertools.data.json +1 -0
  350. machineconfig/scripts/python/.mypy_cache/3.11/itertools.meta.json +1 -0
  351. machineconfig/scripts/python/.mypy_cache/3.11/locale.data.json +1 -0
  352. machineconfig/scripts/python/.mypy_cache/3.11/locale.meta.json +1 -0
  353. machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.data.json +1 -0
  354. machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.meta.json +1 -0
  355. machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.data.json +1 -0
  356. machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.meta.json +1 -0
  357. machineconfig/scripts/python/.mypy_cache/3.11/mmap.data.json +1 -0
  358. machineconfig/scripts/python/.mypy_cache/3.11/mmap.meta.json +1 -0
  359. machineconfig/scripts/python/.mypy_cache/3.11/numbers.data.json +1 -0
  360. machineconfig/scripts/python/.mypy_cache/3.11/numbers.meta.json +1 -0
  361. machineconfig/scripts/python/.mypy_cache/3.11/opcode.data.json +1 -0
  362. machineconfig/scripts/python/.mypy_cache/3.11/opcode.meta.json +1 -0
  363. machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.data.json +1 -0
  364. machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.meta.json +1 -0
  365. machineconfig/scripts/python/.mypy_cache/3.11/os/path.data.json +1 -0
  366. machineconfig/scripts/python/.mypy_cache/3.11/os/path.meta.json +1 -0
  367. machineconfig/scripts/python/.mypy_cache/3.11/pathlib.data.json +1 -0
  368. machineconfig/scripts/python/.mypy_cache/3.11/pathlib.meta.json +1 -0
  369. machineconfig/scripts/python/.mypy_cache/3.11/platform.data.json +1 -0
  370. machineconfig/scripts/python/.mypy_cache/3.11/platform.meta.json +1 -0
  371. machineconfig/scripts/python/.mypy_cache/3.11/posixpath.data.json +1 -0
  372. machineconfig/scripts/python/.mypy_cache/3.11/posixpath.meta.json +1 -0
  373. machineconfig/scripts/python/.mypy_cache/3.11/re.data.json +1 -0
  374. machineconfig/scripts/python/.mypy_cache/3.11/re.meta.json +1 -0
  375. machineconfig/scripts/python/.mypy_cache/3.11/resource.data.json +1 -0
  376. machineconfig/scripts/python/.mypy_cache/3.11/resource.meta.json +1 -0
  377. machineconfig/scripts/python/.mypy_cache/3.11/shlex.data.json +1 -0
  378. machineconfig/scripts/python/.mypy_cache/3.11/shlex.meta.json +1 -0
  379. machineconfig/scripts/python/.mypy_cache/3.11/shutil.data.json +1 -0
  380. machineconfig/scripts/python/.mypy_cache/3.11/shutil.meta.json +1 -0
  381. machineconfig/scripts/python/.mypy_cache/3.11/signal.data.json +1 -0
  382. machineconfig/scripts/python/.mypy_cache/3.11/signal.meta.json +1 -0
  383. machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.data.json +1 -0
  384. machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.meta.json +1 -0
  385. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.data.json +1 -0
  386. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.meta.json +1 -0
  387. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.data.json +1 -0
  388. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.meta.json +1 -0
  389. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.data.json +1 -0
  390. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.meta.json +1 -0
  391. machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.data.json +1 -0
  392. machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.meta.json +1 -0
  393. machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.data.json +1 -0
  394. machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.meta.json +1 -0
  395. machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.data.json +1 -0
  396. machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.meta.json +1 -0
  397. machineconfig/scripts/python/.mypy_cache/3.11/stat.data.json +1 -0
  398. machineconfig/scripts/python/.mypy_cache/3.11/stat.meta.json +1 -0
  399. machineconfig/scripts/python/.mypy_cache/3.11/string.data.json +1 -0
  400. machineconfig/scripts/python/.mypy_cache/3.11/string.meta.json +1 -0
  401. machineconfig/scripts/python/.mypy_cache/3.11/struct.data.json +1 -0
  402. machineconfig/scripts/python/.mypy_cache/3.11/struct.meta.json +1 -0
  403. machineconfig/scripts/python/.mypy_cache/3.11/subprocess.data.json +1 -0
  404. machineconfig/scripts/python/.mypy_cache/3.11/subprocess.meta.json +1 -0
  405. machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.data.json +1 -0
  406. machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.meta.json +1 -0
  407. machineconfig/scripts/python/.mypy_cache/3.11/tarfile.data.json +1 -0
  408. machineconfig/scripts/python/.mypy_cache/3.11/tarfile.meta.json +1 -0
  409. machineconfig/scripts/python/.mypy_cache/3.11/tempfile.data.json +1 -0
  410. machineconfig/scripts/python/.mypy_cache/3.11/tempfile.meta.json +1 -0
  411. machineconfig/scripts/python/.mypy_cache/3.11/textwrap.data.json +1 -0
  412. machineconfig/scripts/python/.mypy_cache/3.11/textwrap.meta.json +1 -0
  413. machineconfig/scripts/python/.mypy_cache/3.11/threading.data.json +1 -0
  414. machineconfig/scripts/python/.mypy_cache/3.11/threading.meta.json +1 -0
  415. machineconfig/scripts/python/.mypy_cache/3.11/time.data.json +1 -0
  416. machineconfig/scripts/python/.mypy_cache/3.11/time.meta.json +1 -0
  417. machineconfig/scripts/python/.mypy_cache/3.11/types.data.json +1 -0
  418. machineconfig/scripts/python/.mypy_cache/3.11/types.meta.json +1 -0
  419. machineconfig/scripts/python/.mypy_cache/3.11/typing.data.json +1 -0
  420. machineconfig/scripts/python/.mypy_cache/3.11/typing.meta.json +1 -0
  421. machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.data.json +1 -0
  422. machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.meta.json +1 -0
  423. machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.data.json +1 -0
  424. machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.meta.json +1 -0
  425. machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.data.json +1 -0
  426. machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.meta.json +1 -0
  427. machineconfig/scripts/python/.mypy_cache/3.11/uuid.data.json +1 -0
  428. machineconfig/scripts/python/.mypy_cache/3.11/uuid.meta.json +1 -0
  429. machineconfig/scripts/python/.mypy_cache/3.11/warnings.data.json +1 -0
  430. machineconfig/scripts/python/.mypy_cache/3.11/warnings.meta.json +1 -0
  431. machineconfig/scripts/python/.mypy_cache/3.11/weakref.data.json +1 -0
  432. machineconfig/scripts/python/.mypy_cache/3.11/weakref.meta.json +1 -0
  433. machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.data.json +1 -0
  434. machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.meta.json +1 -0
  435. machineconfig/scripts/python/.mypy_cache/3.11/zlib.data.json +1 -0
  436. machineconfig/scripts/python/.mypy_cache/3.11/zlib.meta.json +1 -0
  437. machineconfig/scripts/python/.mypy_cache/CACHEDIR.TAG +3 -0
  438. machineconfig/scripts/python/__pycache__/__init__.cpython-311.pyc +0 -0
  439. machineconfig/scripts/python/__pycache__/cloud_copy.cpython-311.pyc +0 -0
  440. machineconfig/scripts/python/__pycache__/cloud_mount.cpython-311.pyc +0 -0
  441. machineconfig/scripts/python/__pycache__/cloud_repo_sync.cpython-311.pyc +0 -0
  442. machineconfig/scripts/python/__pycache__/cloud_sync.cpython-311.pyc +0 -0
  443. machineconfig/scripts/python/__pycache__/croshell.cpython-311.pyc +0 -0
  444. machineconfig/scripts/python/__pycache__/devops.cpython-311.pyc +0 -0
  445. machineconfig/scripts/python/__pycache__/devops_backup_retrieve.cpython-311.pyc +0 -0
  446. machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-311.pyc +0 -0
  447. machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-311.pyc +0 -0
  448. machineconfig/scripts/python/__pycache__/fire_jobs.cpython-311.pyc +0 -0
  449. machineconfig/scripts/python/__pycache__/gh_models.cpython-311.pyc +0 -0
  450. machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
  451. machineconfig/scripts/python/__pycache__/url2md.cpython-311.pyc +0 -0
  452. machineconfig/scripts/python/__pycache__/viewer.cpython-311.pyc +0 -0
  453. machineconfig/scripts/python/__pycache__/vscode_api.cpython-311.pyc +0 -0
  454. machineconfig/scripts/python/archive/im2text.py +36 -0
  455. machineconfig/scripts/python/archive/tmate_conn.py +44 -0
  456. machineconfig/scripts/python/archive/tmate_start.py +48 -0
  457. machineconfig/scripts/python/choose_wezterm_theme.py +23 -4
  458. machineconfig/scripts/python/cloud_copy.py +131 -29
  459. machineconfig/scripts/python/cloud_manager.py +55 -2
  460. machineconfig/scripts/python/cloud_mount.py +43 -4
  461. machineconfig/scripts/python/cloud_repo_sync.py +114 -103
  462. machineconfig/scripts/python/cloud_sync.py +36 -220
  463. machineconfig/scripts/python/croshell.py +102 -32
  464. machineconfig/scripts/python/devops.py +143 -42
  465. machineconfig/scripts/python/devops_add_identity.py +112 -9
  466. machineconfig/scripts/python/devops_add_ssh_key.py +170 -15
  467. machineconfig/scripts/python/devops_backup_retrieve.py +132 -14
  468. machineconfig/scripts/python/devops_devapps_install.py +33 -11
  469. machineconfig/scripts/python/devops_update_repos.py +36 -29
  470. machineconfig/scripts/python/dotfile.py +8 -3
  471. machineconfig/scripts/python/fire_jobs.py +145 -289
  472. machineconfig/scripts/python/ftpx.py +76 -18
  473. machineconfig/scripts/python/get_zellij_cmd.py +14 -0
  474. machineconfig/scripts/python/gh_models.py +72 -25
  475. machineconfig/scripts/python/helpers/__init__.py +0 -0
  476. machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.pyc +0 -0
  477. machineconfig/scripts/python/helpers/__pycache__/cloud_helpers.cpython-311.pyc +0 -0
  478. machineconfig/scripts/python/helpers/__pycache__/helpers2.cpython-311.pyc +0 -0
  479. machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-311.pyc +0 -0
  480. machineconfig/scripts/python/helpers/cloud_helpers.py +134 -0
  481. machineconfig/scripts/python/helpers/helpers2.py +149 -0
  482. machineconfig/scripts/python/helpers/helpers4.py +178 -0
  483. machineconfig/scripts/python/helpers/helpers5.py +50 -0
  484. machineconfig/scripts/python/helpers/repo_sync_helpers.py +126 -0
  485. machineconfig/scripts/python/mount_nfs.py +46 -15
  486. machineconfig/scripts/python/mount_nw_drive.py +22 -10
  487. machineconfig/scripts/python/mount_ssh.py +28 -12
  488. machineconfig/scripts/python/onetimeshare.py +23 -15
  489. machineconfig/scripts/python/pomodoro.py +38 -24
  490. machineconfig/scripts/python/repos.py +29 -32
  491. machineconfig/scripts/python/scheduler.py +19 -18
  492. machineconfig/scripts/python/snapshot.py +14 -6
  493. machineconfig/scripts/python/start_slidev.py +24 -32
  494. machineconfig/scripts/python/start_terminals.py +23 -10
  495. machineconfig/scripts/python/viewer.py +53 -0
  496. machineconfig/scripts/python/viewer_template.py +140 -0
  497. machineconfig/scripts/python/wifi_conn.py +20 -12
  498. machineconfig/scripts/python/wsl_windows_transfer.py +18 -10
  499. machineconfig/scripts/windows/activate_ve.ps1 +54 -0
  500. machineconfig/scripts/windows/archive/gource2vid.ps1 +14 -0
  501. machineconfig/scripts/windows/archive/im2text.ps1 +27 -0
  502. machineconfig/scripts/windows/archive/secure_pull.ps1 +46 -0
  503. machineconfig/scripts/windows/archive/secure_push.ps1 +85 -0
  504. machineconfig/scripts/windows/archive/tmate_conn.ps1 +7 -0
  505. machineconfig/scripts/windows/checkout_version.ps1 +6 -0
  506. machineconfig/scripts/windows/choose_wezterm_theme.ps1 +20 -0
  507. machineconfig/scripts/windows/cloud_copy.ps1 +17 -0
  508. machineconfig/scripts/windows/cloud_manager.ps1 +8 -0
  509. machineconfig/scripts/windows/cloud_mount.ps1 +25 -0
  510. machineconfig/scripts/windows/cloud_repo_sync.ps1 +8 -0
  511. machineconfig/scripts/windows/cloud_sync.ps1 +21 -0
  512. machineconfig/scripts/windows/croshell.ps1 +40 -0
  513. machineconfig/scripts/windows/devops.ps1 +32 -0
  514. machineconfig/scripts/windows/dotfile.ps1 +9 -0
  515. machineconfig/scripts/windows/fire.ps1 +33 -0
  516. machineconfig/scripts/windows/ftpx.ps1 +5 -0
  517. machineconfig/scripts/windows/fzfb.ps1 +3 -0
  518. machineconfig/scripts/windows/fzfg.ps1 +2 -0
  519. machineconfig/scripts/windows/fzfrga.bat +20 -0
  520. machineconfig/scripts/windows/gpt.ps1 +23 -0
  521. machineconfig/scripts/windows/grep.ps1 +2 -0
  522. machineconfig/scripts/windows/kill_process.ps1 +8 -0
  523. machineconfig/scripts/windows/mount_nfs.ps1 +44 -0
  524. machineconfig/scripts/windows/mount_nw.ps1 +9 -0
  525. machineconfig/scripts/windows/mount_smb.ps1 +2 -0
  526. machineconfig/scripts/windows/mount_ssh.ps1 +17 -0
  527. machineconfig/scripts/windows/nano.ps1 +3 -0
  528. machineconfig/scripts/windows/neofetch.ps1 +2 -0
  529. machineconfig/scripts/windows/pomodoro.ps1 +8 -0
  530. machineconfig/scripts/windows/py2exe.ps1 +12 -0
  531. machineconfig/scripts/windows/reload_path.ps1 +3 -0
  532. machineconfig/scripts/windows/repos.ps1 +27 -0
  533. machineconfig/scripts/windows/scheduler.ps1 +6 -0
  534. machineconfig/scripts/windows/share_cloud.cmd +34 -0
  535. machineconfig/scripts/windows/share_nfs.ps1 +0 -0
  536. machineconfig/scripts/windows/share_smb.ps1 +22 -0
  537. machineconfig/scripts/windows/snapshot.ps1 +5 -0
  538. machineconfig/scripts/windows/start_slidev.ps1 +21 -0
  539. machineconfig/scripts/windows/start_terminals.ps1 +22 -0
  540. machineconfig/scripts/windows/unlock_bitlocker.ps1 +10 -0
  541. machineconfig/scripts/windows/utils/op_script_delete.ps1 +7 -0
  542. machineconfig/scripts/windows/wifi_conn.ps1 +7 -0
  543. machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +46 -0
  544. machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +76 -0
  545. machineconfig/scripts/windows/wsl_windows_transfer.ps1 +7 -0
  546. machineconfig/settings/__pycache__/__init__.cpython-311.pyc +0 -0
  547. machineconfig/settings/broot/br.sh +51 -0
  548. machineconfig/settings/broot/brootcd.ps1 +32 -0
  549. machineconfig/settings/broot/conf.toml +5 -0
  550. machineconfig/settings/glow/glow.yml +11 -0
  551. machineconfig/settings/gromit-mpx/gromit-mpx.cfg +34 -0
  552. machineconfig/settings/helix/config.toml +27 -0
  553. machineconfig/settings/helix/languages.toml +22 -0
  554. machineconfig/settings/keras/keras.json +6 -0
  555. machineconfig/settings/keyboard/espanso/config/default.yml +45 -0
  556. machineconfig/settings/keyboard/espanso/match/base.yml +57 -0
  557. machineconfig/settings/keyboard/kanata/kanata.kbd +0 -0
  558. machineconfig/settings/lf/linux/autocall/delete.sh +0 -0
  559. machineconfig/settings/lf/linux/autocall/on-cd.sh +0 -0
  560. machineconfig/settings/lf/linux/autocall/on-quit.sh +0 -0
  561. machineconfig/settings/lf/linux/autocall/open.sh +0 -0
  562. machineconfig/settings/lf/linux/autocall/paste.sh +0 -0
  563. machineconfig/settings/lf/linux/autocall/pre-cd.sh +0 -0
  564. machineconfig/settings/lf/linux/autocall/rename.sh +0 -0
  565. machineconfig/settings/lf/linux/colors +196 -0
  566. machineconfig/settings/lf/linux/exe/cleaner.sh +7 -0
  567. machineconfig/settings/lf/linux/exe/fzf_nano.sh +16 -0
  568. machineconfig/settings/lf/linux/exe/leftpane_previewer.sh +5 -0
  569. machineconfig/settings/lf/linux/exe/lfcd.sh +32 -0
  570. machineconfig/settings/lf/linux/exe/previewer.sh +37 -0
  571. machineconfig/settings/lf/linux/exe/previewer_archive.sh +155 -0
  572. machineconfig/settings/lf/linux/icons +357 -0
  573. machineconfig/settings/lf/linux/lfrc +226 -0
  574. machineconfig/settings/lf/windows/autocall/delete.ps1 +0 -0
  575. machineconfig/settings/lf/windows/autocall/on-cd.ps1 +0 -0
  576. machineconfig/settings/lf/windows/autocall/on-quit.ps1 +0 -0
  577. machineconfig/settings/lf/windows/autocall/open.ps1 +0 -0
  578. machineconfig/settings/lf/windows/autocall/paste.ps1 +0 -0
  579. machineconfig/settings/lf/windows/autocall/pre-cd.ps1 +0 -0
  580. machineconfig/settings/lf/windows/autocall/rename.ps1 +0 -0
  581. machineconfig/settings/lf/windows/cd_tere.ps1 +4 -0
  582. machineconfig/settings/lf/windows/cd_zoxide.ps1 +4 -0
  583. machineconfig/settings/lf/windows/cd_zoxide2.ps1 +4 -0
  584. machineconfig/settings/lf/windows/colors +159 -0
  585. machineconfig/settings/lf/windows/fzf_edit.ps1 +6 -0
  586. machineconfig/settings/lf/windows/icons +357 -0
  587. machineconfig/settings/lf/windows/leftpane_previewer.ps1 +3 -0
  588. machineconfig/settings/lf/windows/lfcd.ps1 +35 -0
  589. machineconfig/settings/lf/windows/lfrc +133 -0
  590. machineconfig/settings/lf/windows/mkdir.ps1 +3 -0
  591. machineconfig/settings/lf/windows/mkfile.ps1 +3 -0
  592. machineconfig/settings/lf/windows/previewer.ps1 +7 -0
  593. machineconfig/settings/lf/windows/tst.ps1 +1 -0
  594. machineconfig/settings/linters/.flake8 +24 -0
  595. machineconfig/settings/linters/.mypy.ini +29 -0
  596. machineconfig/settings/linters/.pylintrc +91 -0
  597. machineconfig/settings/linters/.ruff.toml +77 -0
  598. machineconfig/settings/linters/.ruff_cache/.gitignore +2 -0
  599. machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +1 -0
  600. machineconfig/settings/lvim/linux/config.lua +0 -0
  601. machineconfig/settings/lvim/windows/archive/config_additional.lua +39 -0
  602. machineconfig/settings/lvim/windows/lua/user/custom_config.lua +13 -0
  603. machineconfig/settings/mprocs/windows/mprocs.yaml +55 -0
  604. machineconfig/settings/mprocs/windows/other +12 -0
  605. machineconfig/settings/pistol/pistol.conf +8 -0
  606. machineconfig/settings/presenterm/config.yaml +76 -0
  607. machineconfig/settings/procs/.procs.toml +142 -0
  608. machineconfig/settings/pudb/pudb.cfg +25 -0
  609. machineconfig/settings/rofi/config.rasi +4 -0
  610. machineconfig/settings/rofi/config_default.rasi +147 -0
  611. machineconfig/settings/shells/alacritty/alacritty.toml +40 -0
  612. machineconfig/settings/shells/alacritty/alacritty.yml +0 -0
  613. machineconfig/settings/shells/bash/.inputrc +3 -0
  614. machineconfig/settings/shells/bash/init.sh +66 -0
  615. machineconfig/settings/shells/hyper/.hyper.js +201 -0
  616. machineconfig/settings/shells/ipy/profiles/default/__init__.py +0 -0
  617. machineconfig/settings/shells/ipy/profiles/default/__pycache__/__init__.cpython-311.pyc +0 -0
  618. machineconfig/settings/shells/ipy/profiles/default/startup/__init__.py +0 -0
  619. machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/__init__.cpython-311.pyc +0 -0
  620. machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/playext.cpython-311.pyc +0 -0
  621. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +83 -0
  622. machineconfig/settings/shells/kitty/kitty.conf +1476 -0
  623. machineconfig/settings/shells/nushell/config.nu +36 -0
  624. machineconfig/settings/shells/nushell/env.nu +13 -0
  625. machineconfig/settings/shells/pwsh/init.ps1 +88 -0
  626. machineconfig/settings/shells/pwsh/profile.ps1 +0 -0
  627. machineconfig/settings/shells/starship/starship.toml +58 -0
  628. machineconfig/settings/shells/vtm/settings.xml +297 -0
  629. machineconfig/settings/shells/wezterm/wezterm.lua +193 -0
  630. machineconfig/settings/shells/wt/settings.json +526 -0
  631. machineconfig/settings/streamlit/config.toml +22 -0
  632. machineconfig/settings/svim/linux/init.toml +48 -0
  633. machineconfig/settings/svim/windows/init.toml +48 -0
  634. machineconfig/settings/tere/terecd.ps1 +8 -0
  635. machineconfig/settings/tere/terecd.sh +8 -0
  636. machineconfig/settings/tmux/.tmate.conf +3 -0
  637. machineconfig/settings/tmux/.tmux.conf +6 -0
  638. machineconfig/settings/wsl/.wslconfig +35 -0
  639. machineconfig/settings/yazi/keymap.toml +0 -0
  640. machineconfig/settings/yazi/theme.toml +0 -0
  641. machineconfig/settings/yazi/yazi.toml +4 -0
  642. machineconfig/settings/zed/settings.json +35 -0
  643. machineconfig/settings/zellij/commands/monitor +9 -0
  644. machineconfig/settings/zellij/commands/standard_panes +33 -0
  645. machineconfig/settings/zellij/config.kdl +295 -0
  646. machineconfig/settings/zellij/config.orig.kdl +295 -0
  647. machineconfig/settings/zellij/layouts/hist +13 -0
  648. machineconfig/settings/zellij/layouts/panes.kdl +20 -0
  649. machineconfig/settings/zellij/layouts/st.kdl +21 -0
  650. machineconfig/settings/zellij/layouts/st2.kdl +59 -0
  651. machineconfig/settings/zellij/layouts/stacked_panes.kdl +11 -0
  652. machineconfig/setup_linux/nix/cli_installation.sh +166 -0
  653. machineconfig/setup_linux/others/mint_keyboard_shortcuts.sh +30 -0
  654. machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +60 -0
  655. machineconfig/setup_linux/web_shortcuts/all.sh +53 -0
  656. machineconfig/setup_linux/web_shortcuts/ascii_art.sh +100 -0
  657. machineconfig/setup_linux/web_shortcuts/croshell.sh +66 -0
  658. machineconfig/setup_linux/web_shortcuts/interactive.sh +241 -0
  659. machineconfig/setup_linux/web_shortcuts/ssh.sh +64 -0
  660. machineconfig/setup_linux/web_shortcuts/update_system.sh +55 -0
  661. machineconfig/setup_windows/others/docker.ps1 +7 -0
  662. machineconfig/setup_windows/others/obs.ps1 +4 -0
  663. machineconfig/setup_windows/web_shortcuts/all.ps1 +18 -0
  664. machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +36 -0
  665. machineconfig/setup_windows/web_shortcuts/croshell.ps1 +16 -0
  666. machineconfig/setup_windows/web_shortcuts/interactive.ps1 +200 -0
  667. machineconfig/setup_windows/web_shortcuts/ssh.ps1 +11 -0
  668. machineconfig/setup_windows/wt_and_pwsh/install_fonts.ps1 +27 -0
  669. machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +12 -2
  670. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +45 -9
  671. machineconfig/utils/ai/__init__.py +0 -0
  672. machineconfig/utils/ai/browser_user_wrapper.py +51 -0
  673. machineconfig/utils/ai/generate_file_checklist.py +74 -0
  674. machineconfig/utils/ai/url2md.py +75 -0
  675. machineconfig/utils/installer.py +101 -253
  676. machineconfig/utils/installer_utils/__init__.py +0 -0
  677. machineconfig/utils/installer_utils/installer_abc.py +100 -0
  678. machineconfig/utils/installer_utils/installer_class.py +253 -0
  679. machineconfig/utils/procs.py +69 -16
  680. machineconfig/utils/scheduling.py +47 -13
  681. machineconfig/utils/utils.py +39 -371
  682. machineconfig/utils/utils_code.py +82 -0
  683. machineconfig/utils/utils_links.py +88 -0
  684. machineconfig/utils/utils_options.py +163 -0
  685. machineconfig/utils/utils_path.py +151 -0
  686. machineconfig/utils/ve.py +37 -225
  687. machineconfig/utils/ve_utils/ve1.py +111 -0
  688. machineconfig/utils/ve_utils/ve2.py +142 -0
  689. {machineconfig-1.92.dist-info → machineconfig-1.94.dist-info}/METADATA +25 -21
  690. machineconfig-1.94.dist-info/RECORD +710 -0
  691. {machineconfig-1.92.dist-info → machineconfig-1.94.dist-info}/WHEEL +1 -1
  692. machineconfig-1.92.dist-info/LICENSE +0 -201
  693. machineconfig-1.92.dist-info/RECORD +0 -70
  694. {machineconfig-1.92.dist-info → machineconfig-1.94.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,3 @@
1
-
2
1
  """
3
2
  fire
4
3
 
@@ -9,50 +8,19 @@ fire
9
8
  """
10
9
 
11
10
 
12
- from machineconfig.utils.utils import display_options, choose_one_option, PROGRAM_PATH, choose_ssh_host, match_file_name, sanitize_path
13
- from crocodile.file_management import P, install_n_import, Read
14
- from crocodile.core import Display, randstr
15
- import inspect
11
+ from machineconfig.scripts.python.helpers.helpers4 import search_for_files_of_interest
12
+ from machineconfig.scripts.python.helpers.helpers4 import convert_kwargs_to_fire_kwargs_str
13
+ from machineconfig.scripts.python.helpers.helpers4 import parse_pyfile
14
+ from machineconfig.scripts.python.helpers.helpers4 import get_import_module_code
15
+ from machineconfig.utils.utils import display_options, choose_one_option, PROGRAM_PATH, match_file_name, sanitize_path
16
+ from machineconfig.utils.ve_utils.ve1 import get_ve_activate_line, get_ve_name_and_ipython_profile
17
+ from crocodile.file_management import P, Read
18
+ from crocodile.core import randstr
16
19
  import platform
17
- import os
18
- from typing import Callable, Any, Optional
20
+ from typing import Optional
19
21
  import argparse
20
22
 
21
-
22
- def search_for_files_of_interest(path_obj: P):
23
- if path_obj.joinpath(".venv").exists():
24
- path_objects = path_obj.search("*", not_in=[".venv"]).list
25
- files: list[P] = []
26
- for a_path_obj in path_objects:
27
- files += search_for_files_of_interest(path_obj=a_path_obj)
28
- return files
29
- py_files = path_obj.search(pattern="*.py", not_in=["__init__.py"], r=True).list
30
- ps_files = path_obj.search(pattern="*.ps1", r=True).list
31
- sh_files = path_obj.search(pattern="*.sh", r=True).list
32
- files = py_files + ps_files + sh_files
33
- return files
34
-
35
-
36
- def convert_kwargs_to_fire_kwargs_str(kwargs: dict[str, Any]) -> str:
37
- # https://google.github.io/python-fire/guide/
38
- # https://github.com/google/python-fire/blob/master/docs/guide.md#argument-parsing
39
- if not kwargs: # empty dict
40
- kwargs_str = ''
41
- else:
42
- if len(kwargs) == 1:
43
- kwargs_str = f""" --{list(kwargs.keys())[0]} {list(kwargs.values())[0]} """
44
- else:
45
- # print(f"len(kwargs) = {len(kwargs)}")
46
- tmp_list: list[str] = []
47
- for k, v in kwargs.items():
48
- if v is not None:
49
- item = f'"{k}": "{v}"'
50
- else:
51
- item = f'"{k}": None'
52
- tmp_list.append(item)
53
- tmp__ = ", ".join(tmp_list)
54
- kwargs_str = "'{" + tmp__ + "}'"
55
- return kwargs_str
23
+ from machineconfig.utils.ve_utils.ve1 import get_repo_root
56
24
 
57
25
 
58
26
  str2obj = {"True": True, "False": False, "None": None}
@@ -74,96 +42,127 @@ def main() -> None:
74
42
  parser.add_argument("--remote", "-r", action="store_true", help="launch on a remote machine")
75
43
  parser.add_argument("--module", "-m", action="store_true", help="launch the main file")
76
44
  parser.add_argument("--streamlit", "-S", action="store_true", help="run as streamlit app")
77
- parser.add_argument("--history", "-H", action="store_true", help="choose from history")
78
- # parser.add_argument("--git_pull", "-g", action="store_true", help="Start by pulling the git repo")
45
+ parser.add_argument("--holdDirectory", "-D", action="store_true", help="hold current directory and avoid cd'ing to the script directory")
46
+ parser.add_argument("--git_pull", "-g", action="store_true", help="Start by pulling the git repo")
79
47
  parser.add_argument("--optimized", "-O", action="store_true", help="Run the optimized version of the function")
80
48
  parser.add_argument("--Nprocess", "-p", type=int, help="Number of processes to use", default=1)
81
49
  parser.add_argument("--kw", nargs="*", default=None, help="keyword arguments to pass to the function in the form of k1 v1 k2 v2 ... (meaning k1=v1, k2=v2, etc)")
82
-
50
+ parser.add_argument("--zellij_tab", "-z", type=str, dest="zellij_tab", help="open in a new zellij tab")
83
51
  args = parser.parse_args()
84
52
 
85
- # Convert args.kw to dictionary
86
- if args.kw is not None:
87
- assert len(args.kw) % 2 == 0, f"args.kw must be a list of even length. Got {len(args.kw)}"
88
- kwargs = dict(zip(args.kw[::2], args.kw[1::2]))
89
- for key, value in kwargs.items():
90
- if value in str2obj:
91
- kwargs[key] = str2obj[value]
92
- if args.function is None: # if user passed arguments and forgot to pass function, then assume they want to run the main function.
93
- args.choose_function = True
94
- else:
95
- kwargs = {}
96
-
97
53
  path_obj = sanitize_path(P(args.path))
98
54
  if not path_obj.exists():
99
55
  path_obj = match_file_name(sub_string=args.path)
100
56
  else: pass
101
57
 
102
58
  if path_obj.is_dir():
103
- print(f"Seaching recursively for all python file in directory `{path_obj}`")
59
+ print(f"🔍 Searching recursively for Python, PowerShell and Shell scripts in directory `{path_obj}`")
104
60
  files = search_for_files_of_interest(path_obj)
105
61
  choice_file = choose_one_option(options=files, fzf=True)
106
62
  choice_file = P(choice_file)
107
63
  else:
108
64
  choice_file = path_obj
65
+ print(f"💾 Selected file: {choice_file}")
109
66
 
110
- if choice_file.suffix in [".ps1", ".sh"]:
111
- PROGRAM_PATH.write_text(f". {choice_file}")
112
- return None
67
+ ve_name_suggested, ipy_profile = get_ve_name_and_ipython_profile(choice_file)
68
+ if ipy_profile is None: ipy_profile = "default"
69
+ activate_ve_line = get_ve_activate_line(ve_name=args.ve or ve_name_suggested, a_path=str(choice_file))
113
70
 
114
- if args.choose_function or args.submit_to_cloud:
115
- options, func_args = parse_pyfile(file_path=str(choice_file))
116
- choice_function_tmp = display_options(msg="Choose a function to run", options=options, fzf=True, multi=False)
117
- assert isinstance(choice_function_tmp, str), f"choice_function must be a string. Got {type(choice_function_tmp)}"
118
- choice_index = options.index(choice_function_tmp)
119
- choice_function: Optional[str] = choice_function_tmp.split(' -- ')[0]
120
- choice_function_args = func_args[choice_index]
71
+ # Convert args.kw to dictionary
72
+ if choice_file.suffix == ".py":
73
+ if args.kw is not None:
74
+ assert len(args.kw) % 2 == 0, f"args.kw must be a list of even length. Got {len(args.kw)}"
75
+ kwargs = dict(zip(args.kw[::2], args.kw[1::2]))
76
+ for key, value in kwargs.items():
77
+ if value in str2obj:
78
+ kwargs[key] = str2obj[value]
79
+ if args.function is None: # if user passed arguments and forgot to pass function, then assume they want to run the main function.
80
+ args.choose_function = True
81
+ else:
82
+ kwargs = {}
83
+ else:
84
+ kwargs = {}
121
85
 
122
- if choice_function == "RUN AS MAIN": choice_function = None
123
- if len(choice_function_args) > 0 and len(kwargs) == 0:
124
- for item in choice_function_args:
125
- kwargs[item.name] = input(f"Please enter a value for argument `{item.name}` (type = {item.type}) (default = {item.default}) : ") or item.default
86
+ # ========================= choosing function to run
87
+ if args.choose_function or args.submit_to_cloud:
88
+ if choice_file.suffix == ".py":
89
+ options, func_args = parse_pyfile(file_path=str(choice_file))
90
+ choice_function_tmp = display_options(msg="Choose a function to run", options=options, fzf=True, multi=False)
91
+ assert isinstance(choice_function_tmp, str), f"choice_function must be a string. Got {type(choice_function_tmp)}"
92
+ choice_index = options.index(choice_function_tmp)
93
+ choice_function: Optional[str] = choice_function_tmp.split(' -- ')[0]
94
+ choice_function_args = func_args[choice_index]
95
+
96
+ if choice_function == "RUN AS MAIN": choice_function = None
97
+ if len(choice_function_args) > 0 and len(kwargs) == 0:
98
+ for item in choice_function_args:
99
+ kwargs[item.name] = input(f"Please enter a value for argument `{item.name}` (type = {item.type}) (default = {item.default}) : ") or item.default
100
+ elif choice_file.suffix == ".sh": # in this case, we choos lines.
101
+ options = []
102
+ for line in choice_file.read_text().splitlines():
103
+ if line.startswith("#"): continue
104
+ if line == "": continue
105
+ if line.startswith("echo"): continue
106
+ options.append(line)
107
+ choice_line = choose_one_option(options=options, fzf=True)
108
+ choice_file = P.tmpfile(suffix=".sh").write_text(choice_line)
109
+ choice_function = None
126
110
  else:
127
111
  choice_function = args.function
128
112
 
129
- if args.ve == "":
130
- from machineconfig.utils.ve import get_ve_profile # if file name is passed explicitly, then, user probably launched it from cwd different to repo root, so activate_ve can't infer ve from .ve_path, so we attempt to do that manually here
131
- args.ve = get_ve_profile(choice_file)
132
-
133
- if args.streamlit:
134
- from crocodile.environment import get_network_addresses
135
- local_ip_v4 = get_network_addresses()["local_ip_v4"]
136
- computer_name = platform.node()
137
- port = 8501
138
- if choice_file.parent.joinpath(".streamlit/config.toml").exists():
139
- config = Read.toml(choice_file.parent.joinpath(".streamlit/config.toml"))
140
- if "server" in config:
141
- if "port" in config["server"]:
142
- port = config["server"]["port"]
143
- message = f"🚀 Streamlit app is running @:\n1- http://{local_ip_v4}:{port}\n2- http://{computer_name}:{port}\n3- http://localhost:{port}"
144
- from rich.panel import Panel
145
- from rich import print as rprint
146
- rprint(Panel(message))
147
- exe = "streamlit run --server.address 0.0.0.0 --server.headless true"
148
- exe = f"cd '{choice_file.parent}'; " + exe
149
- elif args.interactive is False: exe = "python"
150
- elif args.jupyter: exe = "jupyter-lab"
113
+ if choice_file.suffix == ".py":
114
+ if args.streamlit:
115
+ from crocodile.environment import get_network_addresses
116
+ local_ip_v4 = get_network_addresses()["local_ip_v4"]
117
+ computer_name = platform.node()
118
+ port = 8501
119
+ toml_path: Optional[P] = None
120
+ toml_path_maybe = choice_file.parent.joinpath(".streamlit/config.toml")
121
+ if toml_path_maybe.exists(): toml_path = toml_path_maybe
122
+ elif choice_file.parent.name == "pages":
123
+ toml_path_maybe = choice_file.parent.parent.joinpath(".streamlit/config.toml")
124
+ if toml_path_maybe.exists(): toml_path = toml_path_maybe
125
+ if toml_path is not None:
126
+ config = Read.toml(toml_path)
127
+ if "server" in config:
128
+ if "port" in config["server"]:
129
+ port = config["server"]["port"]
130
+ message = f"🚀 Streamlit app is running @:\n1- http://{local_ip_v4}:{port}\n2- http://{computer_name}:{port}\n3- http://localhost:{port}"
131
+ from rich.panel import Panel
132
+ from rich import print as rprint
133
+ rprint(Panel(message))
134
+ exe = "streamlit run --server.address 0.0.0.0 --server.headless true"
135
+ # exe = f"cd '{choice_file.parent}'; " + exe
136
+ elif args.interactive is False: exe = "python"
137
+ elif args.jupyter: exe = "jupyter-lab"
138
+ else:
139
+ exe = f"ipython -i --no-banner --profile {ipy_profile} "
140
+ elif choice_file.suffix == ".ps1" or choice_file.suffix == ".sh":
141
+ exe = "."
142
+ elif choice_file.suffix == "":
143
+ exe = ""
151
144
  else:
152
- from machineconfig.utils.ve import get_ipython_profile
153
- exe = f"ipython -i --no-banner --profile {get_ipython_profile(choice_file)} "
145
+ raise NotImplementedError(f"File type {choice_file.suffix} not supported, in the sense that I don't know how to fire it.")
154
146
 
155
147
  if args.module or (args.debug and args.choose_function): # because debugging tools do not support choosing functions and don't interplay with fire module. So the only way to have debugging and choose function options is to import the file as a module into a new script and run the function of interest there and debug the new script.
148
+ assert choice_file.suffix == ".py", f"File must be a python file to be imported as a module. Got {choice_file.suffix}"
156
149
  import_line = get_import_module_code(str(choice_file))
150
+ repo_root = get_repo_root(str(choice_file))
151
+ if repo_root is not None:
152
+ repo_root_add = f"""sys.path.append(r'{repo_root}')"""
153
+ else:
154
+ repo_root_add = ""
157
155
  txt: str = f"""
158
156
  try:
159
157
  {import_line}
160
158
  except (ImportError, ModuleNotFoundError) as ex:
161
- print(fr"Failed to import `{choice_file}` the proper way. {{ex}} ")
162
- print(fr"Importing with an ad-hoc `$PATH` manipulation. DO NOT pickle any files in this session as there is no gaurantee of correct deserialization.")
159
+ print(fr"Failed to import `{choice_file}` as a module: {{ex}} ")
160
+ print(fr"⚠️ Attempting import with ad-hoc `$PATH` manipulation. DO NOT pickle any objects in this session as correct deserialization cannot be guaranteed.")
163
161
  import sys
164
162
  sys.path.append(r'{P(choice_file).parent}')
163
+ {repo_root_add}
165
164
  from {P(choice_file).stem} import *
166
-
165
+ print(fr"✅ Successfully imported `{choice_file}`")
167
166
  """
168
167
  if choice_function is not None:
169
168
  txt = txt + f"""
@@ -197,12 +196,20 @@ except ImportError as _ex:
197
196
  command = f"{exe} -m fire {choice_file} {choice_function} {kwargs_str}"
198
197
  elif args.streamlit:
199
198
  # for .streamlit config to work, it needs to be in the current directory.
200
- command = f"cd {choice_file.parent}\n\n{exe} {choice_file.name}\n\ncd {P.cwd()}"
199
+ if args.holdDirectory:
200
+ command = f"{exe} {choice_file}"
201
+ else:
202
+ command = f"cd {choice_file.parent}\n\n{exe} {choice_file.name}\n\ncd {P.cwd()}"
203
+
201
204
  elif args.cmd:
202
205
  command = rf""" cd /d {choice_file.parent} & {exe} {choice_file.name} """
203
206
  else:
204
- # command = f"cd {choice_file.parent}\n\n{exe} {choice_file.name}\n\ncd {P.cwd()}"
205
- command = f"{exe} {choice_file} "
207
+ if choice_file.suffix == "":
208
+ kwargs_raw = " ".join(args.kw) if args.kw is not None else ""
209
+ command = f"{exe} {choice_file} {kwargs_raw}"
210
+ else:
211
+ # command = f"cd {choice_file.parent}\n\n{exe} {choice_file.name}\n\ncd {P.cwd()}"
212
+ command = f"{exe} {choice_file} "
206
213
  # this installs in ve env, which is not execution env
207
214
  # if "ipdb" in command: install_n_import("ipdb")
208
215
  # if "pudb" in command: install_n_import("pudb")
@@ -210,10 +217,7 @@ except ImportError as _ex:
210
217
  if not args.cmd:
211
218
  if "ipdb" in command: command = f"pip install ipdb\n\n{command}"
212
219
  if "pudb" in command: command = f"pip install pudb\n\n{command}"
213
- if platform.system() == "Windows":
214
- command = f". $HOME/scripts/activate_ve {args.ve}\n\n{command}"
215
- else:
216
- command = f". $HOME/scripts/activate_ve {args.ve}\n\n{command}"
220
+ command = f"{activate_ve_line}\n\n{command}"
217
221
  else:
218
222
  # CMD equivalent
219
223
  if "ipdb" in command: command = f"pip install ipdb & {command}"
@@ -223,12 +227,13 @@ except ImportError as _ex:
223
227
 
224
228
  if args.submit_to_cloud:
225
229
  command = f"""
226
- . $HOME/scripts/activate_ve {args.ve}
227
- python -m crocodile.cluster.templates.cli_click --file {choice_file} """
230
+ {activate_ve_line}
231
+ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
228
232
  if choice_function is not None:
229
233
  command += f"--function {choice_function} "
230
- try: install_n_import("clipboard").copy(command)
231
- except Exception as ex: print(f"Failed to copy command to clipboard. {ex}")
234
+
235
+ # try: install_n_import("clipboard").copy(command)
236
+ # except Exception as ex: print(f"Failed to copy command to clipboard. {ex}")
232
237
 
233
238
  if args.loop:
234
239
  command = command + "\n" + f". {PROGRAM_PATH}"
@@ -242,11 +247,9 @@ python -m crocodile.cluster.templates.cli_click --file {choice_file} """
242
247
  sub_command = sub_command.replace("python ", "python -OO ")
243
248
  sub_command_path = P.tmpfile(suffix=".sh").write_text(sub_command)
244
249
  lines.append(f"""zellij action new-pane -- bash {sub_command_path} """)
245
- lines.append("sleep 1") # python tends to freeze if you launch instances within 1 microsecond of each other
250
+ lines.append("sleep 5") # python tends to freeze if you launch instances within 1 microsecond of each other
246
251
  command = "\n".join(lines)
247
252
 
248
- # TODO: send this command to terminal history. In powershell & bash there is no way to do it with a command other than goiing to history file. In Mcfly there is a way but its linux only tool. # if platform.system() == "Windows": command = f" ({command}) | Add-History -PassThru "
249
- # mcfly add --exit 0 command
250
253
  if args.optimized:
251
254
  # note that in ipython, optimization is meaningless.
252
255
  command = command.replace("python ", "python -OO ")
@@ -257,184 +260,37 @@ python -m crocodile.cluster.templates.cli_click --file {choice_file} """
257
260
  from rich.console import Console
258
261
  from rich.syntax import Syntax
259
262
  console = Console()
260
- console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {PROGRAM_PATH}: "), style="bold red")
261
- PROGRAM_PATH.write_text(command)
262
-
263
-
264
- def parse_pyfile(file_path: str):
265
- print(f"Loading {file_path} ...")
266
- from typing import NamedTuple
267
- args_spec = NamedTuple("args_spec", [("name", str), ("type", str), ("default", Optional[str])])
268
- func_args: list[list[args_spec]] = [[]] # this firt prepopulated dict is for the option 'RUN AS MAIN' which has no args
269
-
270
- import ast
271
- parsed_ast = ast.parse(P(file_path).read_text(encoding='utf-8'))
272
- functions = [
273
- node
274
- for node in ast.walk(parsed_ast)
275
- if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef))
276
- ]
277
- module__doc__ = ast.get_docstring(parsed_ast)
278
- main_option = f"RUN AS MAIN -- {Display.get_repr(module__doc__, limit=150) if module__doc__ is not None else 'NoDocs'}"
279
- options = [main_option]
280
- for function in functions:
281
- if function.name.startswith('__') and function.name.endswith('__'): continue
282
- if any(arg.arg == 'self' for arg in function.args.args): continue
283
- doc_string_tmp: str | None = ast.get_docstring(function)
284
- if doc_string_tmp is None: doc_string = "NoDocs"
285
- else: doc_string = doc_string_tmp.replace('\n', ' ')
286
- options.append(f"{function.name} -- {', '.join([arg.arg for arg in function.args.args])} -- {doc_string}")
287
- tmp = []
288
- for idx, arg in enumerate(function.args.args):
289
- if arg.annotation is not None:
290
- try: type_ = arg.annotation.__dict__['id']
291
- except KeyError as ke:
292
- # type_ = arg.annotation.__name__
293
- # print(f"Failed to get type for {arg.annotation}. {ke}")
294
- # Struct(get_attrs(arg.annotation)).print(as_yaml=True)
295
- type_ = "Any" # e.g. a callable object
296
- _ = ke
297
- # raise ke
298
- else: type_ = "Any"
299
- default_tmp = function.args.defaults[idx] if idx < len(function.args.defaults) else None
300
- if default_tmp is None: default = None
301
- else:
302
- if hasattr(default_tmp, "__dict__"): default = default_tmp.__dict__.get("value", None)
303
- else: default = None
304
- tmp.append(args_spec(name=arg.arg, type=type_, default=default))
305
- func_args.append(tmp)
306
- return options, func_args
307
-
308
-
309
- def get_attrs_recursively(obj: Any):
310
- if hasattr(obj, '__dict__'):
311
- res = {}
312
- for k, v in obj.__dict__.items():
313
- res[k] = get_attrs_recursively(v)
314
- return res
315
- return obj
316
-
317
-
318
- def interactively_run_function(func: Callable[[Any], Any]):
319
- sig = inspect.signature(func)
320
- params = list(sig.parameters.values())
321
- args = []
322
- kwargs = {}
323
- for param in params:
324
- if param.annotation is not inspect.Parameter.empty: hint = f" ({param.annotation.__name__})"
325
- else: hint = ""
326
- if param.default is not inspect.Parameter.empty:
327
- default = param.default
328
- value = input(f"Please enter a value for argument `{param.name}` (type = {hint}) (default = {default}) : ")
329
- if value == "": value = default
330
- else: value = input(f"Please enter a value for argument `{param.name}` (type = {hint}) : ")
331
- try:
332
- if param.annotation is not inspect.Parameter.empty:
333
- value = param.annotation
334
- except (TypeError, ValueError) as err:
335
- raise ValueError(f"Invalid input: {value} is not of type {param.annotation}") from err
336
- if param.kind == inspect.Parameter.KEYWORD_ONLY: kwargs[param.name] = value
337
- else: args.append((param.name, value))
338
- args_to_kwargs = dict(args)
339
- return args_to_kwargs, kwargs
340
263
 
341
-
342
- def run_on_remote(func_file: str, args: argparse.Namespace):
343
- host = choose_ssh_host(multi=False)
344
- assert isinstance(host, str), f"host must be a string. Got {type(host)}"
345
- from crocodile.cluster.remote_machine import RemoteMachine, RemoteMachineConfig
346
- config = RemoteMachineConfig(copy_repo=True, update_repo=False, update_essential_repos=True,
347
- notify_upon_completion=True, ssh_params=dict(host=host),
348
- # to_email=None, email_config_name='enaut',
349
- data=[],
350
- ipython=False, interactive=args.interactive, pdb=False, pudb=args.debug, wrap_in_try_except=False,
351
- transfer_method="sftp")
352
- m = RemoteMachine(func=func_file, func_kwargs=None, config=config)
353
- m.run()
354
-
355
-
356
- def find_repo_root_path(start_path: str) -> Optional[str]:
357
- root_files = ['setup.py', 'pyproject.toml', '.git']
358
- path: str=start_path
359
- trials = 0
360
- root_path = os.path.abspath(os.sep)
361
- while path != root_path and trials < 20:
362
- for root_file in root_files:
363
- if os.path.exists(os.path.join(path, root_file)):
364
- print(f"Found repo root path: {path}")
365
- return path
366
- path = os.path.dirname(path)
367
- trials += 1
368
- return None
369
-
370
-
371
- def get_import_module_code(module_path: str):
372
- root_path = find_repo_root_path(module_path)
373
- if root_path is None: # just make a desperate attempt to import it
374
- module_name = module_path.lstrip(os.sep).replace(os.sep, '.')
375
- if module_name.endswith(".py"):
376
- module_name = module_name[:-3]
377
- else:
378
- relative_path = module_path.replace(root_path, '')
379
- module_name = relative_path.lstrip(os.sep).replace(os.sep, '.')
380
- if module_name.endswith(".py"):
381
- module_name = module_name[:-3]
382
- # module_name = module_name.replace("src.", "").replace("myresources.", "").replace("resources.", "").replace("source.", "")
383
- if module_name.startswith("src."):
384
- module_name = module_name[4:]
385
- if module_name.startswith("myresources."):
386
- module_name = module_name[12:]
387
- if module_name.startswith("resources."):
388
- module_name = module_name[10:]
389
- if module_name.startswith("source."):
390
- module_name = module_name[7:]
391
- if any(char in module_name for char in "- :/\\"):
392
- module_name = "IncorrectModuleName"
393
- # TODO: use py_compile to check if the statement is valid code to avoid syntax errors that can't be caught.
394
- return f"from {module_name} import *"
395
-
396
-
397
- def get_jupyter_notebook(python_code: str):
398
- template = """
399
- {
400
- "cells": [
401
- {
402
- "cell_type": "code",
403
- "execution_count": 1,
404
- "id": "7412902a-3074-475b-9820-71b82e670a2a",
405
- "metadata": {},
406
- "outputs": [],
407
- "source": [
408
- "\n",
409
- "import math"
410
- ]
411
- }
412
- ],
413
- "metadata": {
414
- "kernelspec": {
415
- "display_name": "Python 3 (ipykernel)",
416
- "language": "python",
417
- "name": "python3"
418
- },
419
- "language_info": {
420
- "codemirror_mode": {
421
- "name": "ipython",
422
- "version": 3
423
- },
424
- "file_extension": ".py",
425
- "mimetype": "text/x-python",
426
- "name": "python",
427
- "nbconvert_exporter": "python",
428
- "pygments_lexer": "ipython3",
429
- "version": "3.11.7"
430
- }
431
- },
432
- "nbformat": 4,
433
- "nbformat_minor": 5
434
- }
264
+ if args.zellij_tab is not None:
265
+ comman_path__ = P.tmpfile(suffix=".sh").write_text(command)
266
+ console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {comman_path__}: "), style="bold red")
267
+ import subprocess
268
+ existing_tab_names = subprocess.run(["zellij", "action", "query-tab-names"], capture_output=True, text=True, check=True).stdout.splitlines()
269
+ if args.zellij_tab in existing_tab_names:
270
+ print(f"⚠️ Tab name `{args.zellij_tab}` already exists. Please choose a different name.")
271
+ # args.zellij_tab = input("Please enter a new tab name: ")
272
+ args.zellij_tab += f"_{randstr(3)}"
273
+ command = f"""
274
+ echo "Sleep 1 seconds to allow zellij to create a new tab"
275
+ sleep 1
276
+ zellij action new-tab --name {args.zellij_tab}
277
+ echo "Sleep 2 seconds to allow zellij to go to the new tab"
278
+ sleep 2
279
+ zellij action go-to-tab-name {args.zellij_tab}
280
+ echo "Sleep 2 seconds to allow zellij to start the new pane"
281
+ sleep 2
282
+ zellij action new-pane --direction down -- /bin/bash {comman_path__}
283
+ echo "Sleep 2 seconds to allow zellij to start the new pane"
284
+ sleep 1
285
+ zellij action move-focus up; sleep 2
286
+ echo "Sleep 2 seconds to allow zellij to close the pane"
287
+ sleep 1
288
+ zellij action close-pane; sleep 2
435
289
  """
436
- template.replace('"import math"', python_code)
437
- return template
290
+ if args.git_pull:
291
+ command = f"\ngit -C {choice_file.parent} pull\n\n" + command
292
+ console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {PROGRAM_PATH}: "), style="bold red")
293
+ PROGRAM_PATH.write_text(command)
438
294
 
439
295
 
440
296
  if __name__ == '__main__':