machineconfig 1.94__py3-none-any.whl → 1.96__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 (529) hide show
  1. machineconfig/cluster/cloud_manager.py +445 -343
  2. machineconfig/cluster/data_transfer.py +63 -56
  3. machineconfig/cluster/distribute.py +284 -280
  4. machineconfig/cluster/file_manager.py +234 -237
  5. machineconfig/cluster/job_params.py +133 -133
  6. machineconfig/cluster/loader_runner.py +183 -149
  7. machineconfig/cluster/remote_machine.py +269 -252
  8. machineconfig/cluster/script_execution.py +215 -209
  9. machineconfig/cluster/script_notify_upon_completion.py +50 -43
  10. machineconfig/cluster/self_ssh.py +52 -54
  11. machineconfig/cluster/sessions_managers/__init__.py +0 -0
  12. machineconfig/cluster/sessions_managers/archive/__init__.py +0 -0
  13. machineconfig/{jobs/python → cluster/sessions_managers/archive}/create_zellij_template.py +5 -3
  14. machineconfig/cluster/sessions_managers/archive/session_managers.py +184 -0
  15. machineconfig/cluster/sessions_managers/demo_rich_zellij.py +0 -0
  16. machineconfig/cluster/sessions_managers/enhanced_command_runner.py +160 -0
  17. machineconfig/cluster/sessions_managers/wt_local.py +494 -0
  18. machineconfig/cluster/sessions_managers/wt_local_manager.py +577 -0
  19. machineconfig/cluster/sessions_managers/wt_remote.py +288 -0
  20. machineconfig/cluster/sessions_managers/wt_remote_manager.py +483 -0
  21. machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +196 -0
  22. machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +418 -0
  23. machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +175 -0
  24. machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +300 -0
  25. machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +228 -0
  26. machineconfig/cluster/sessions_managers/zellij_local.py +418 -0
  27. machineconfig/cluster/sessions_managers/zellij_local_manager.py +533 -0
  28. machineconfig/cluster/sessions_managers/zellij_remote.py +229 -0
  29. machineconfig/cluster/sessions_managers/zellij_remote_manager.py +188 -0
  30. machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +64 -0
  31. machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +126 -0
  32. machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +334 -0
  33. machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +68 -0
  34. machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +119 -0
  35. machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +85 -0
  36. machineconfig/cluster/templates/cli_click.py +0 -1
  37. machineconfig/cluster/templates/cli_gooey.py +102 -104
  38. machineconfig/cluster/templates/run_cloud.py +51 -51
  39. machineconfig/cluster/templates/run_cluster.py +103 -59
  40. machineconfig/cluster/templates/run_remote.py +57 -58
  41. machineconfig/cluster/templates/utils.py +69 -36
  42. machineconfig/jobs/__pycache__/__init__.cpython-311.pyc +0 -0
  43. machineconfig/jobs/linux/msc/lid.sh +2 -4
  44. machineconfig/jobs/linux/msc/network.sh +3 -6
  45. machineconfig/jobs/python/__pycache__/__init__.cpython-311.pyc +0 -0
  46. machineconfig/jobs/python/check_installations.py +258 -190
  47. machineconfig/jobs/python/create_bootable_media.py +7 -3
  48. machineconfig/jobs/python/python_cargo_build_share.py +50 -50
  49. machineconfig/jobs/python/python_ve_symlink.py +10 -10
  50. machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
  51. machineconfig/jobs/python/vscode/api.py +3 -3
  52. machineconfig/jobs/python/vscode/link_ve.py +6 -6
  53. machineconfig/jobs/python/vscode/select_interpreter.py +13 -9
  54. machineconfig/jobs/python/vscode/sync_code.py +14 -11
  55. machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  56. machineconfig/jobs/python_custom_installers/archive/ngrok.py +5 -5
  57. machineconfig/jobs/python_custom_installers/dev/aider.py +4 -4
  58. machineconfig/jobs/python_custom_installers/dev/alacritty.py +7 -6
  59. machineconfig/jobs/python_custom_installers/dev/brave.py +11 -7
  60. machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +7 -8
  61. machineconfig/jobs/python_custom_installers/dev/code.py +7 -5
  62. machineconfig/jobs/python_custom_installers/dev/cursor.py +66 -5
  63. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +4 -5
  64. machineconfig/jobs/python_custom_installers/dev/espanso.py +21 -17
  65. machineconfig/jobs/python_custom_installers/dev/goes.py +6 -12
  66. machineconfig/jobs/python_custom_installers/dev/lvim.py +7 -6
  67. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +5 -5
  68. machineconfig/jobs/python_custom_installers/dev/redis.py +11 -7
  69. machineconfig/jobs/python_custom_installers/dev/wezterm.py +12 -8
  70. machineconfig/jobs/python_custom_installers/dev/winget.py +194 -0
  71. machineconfig/jobs/python_custom_installers/{dev/docker.py → docker.py} +12 -7
  72. machineconfig/jobs/python_custom_installers/gh.py +10 -9
  73. machineconfig/jobs/python_custom_installers/hx.py +36 -65
  74. machineconfig/jobs/python_custom_installers/scripts/linux/brave.sh +4 -8
  75. machineconfig/jobs/python_custom_installers/scripts/linux/docker.sh +5 -10
  76. machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +3 -6
  77. machineconfig/jobs/python_custom_installers/scripts/linux/edge.sh +3 -6
  78. machineconfig/jobs/python_custom_installers/scripts/linux/nerdfont.sh +5 -10
  79. machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +4 -8
  80. machineconfig/jobs/python_custom_installers/scripts/linux/redis.sh +5 -10
  81. machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +6 -12
  82. machineconfig/jobs/python_custom_installers/scripts/linux/vscode.sh +101 -33
  83. machineconfig/jobs/python_custom_installers/scripts/linux/warp-cli.sh +5 -10
  84. machineconfig/jobs/python_custom_installers/scripts/linux/wezterm.sh +3 -6
  85. machineconfig/jobs/python_custom_installers/{dev/warp-cli.py → warp-cli.py} +5 -5
  86. machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  87. machineconfig/jobs/python_generic_installers/config.json +133 -9
  88. machineconfig/jobs/python_generic_installers/dev/config.json +208 -37
  89. machineconfig/jobs/python_generic_installers/update.py +3 -0
  90. machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  91. machineconfig/jobs/python_linux_installers/config.json +42 -6
  92. machineconfig/jobs/python_linux_installers/dev/config.json +79 -11
  93. machineconfig/jobs/python_windows_installers/config.json +6 -0
  94. machineconfig/profile/__pycache__/__init__.cpython-311.pyc +0 -0
  95. machineconfig/profile/__pycache__/create.cpython-311.pyc +0 -0
  96. machineconfig/profile/__pycache__/shell.cpython-311.pyc +0 -0
  97. machineconfig/profile/create.py +5 -5
  98. machineconfig/profile/create_hardlinks.py +5 -5
  99. machineconfig/profile/shell.py +69 -63
  100. machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  101. machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
  102. machineconfig/scripts/cloud/init.sh +9 -18
  103. machineconfig/scripts/linux/fire +5 -24
  104. machineconfig/scripts/linux/fire_agents +27 -0
  105. machineconfig/scripts/linux/share_cloud.sh +6 -12
  106. machineconfig/scripts/linux/wifi_conn +24 -0
  107. machineconfig/scripts/python/__pycache__/__init__.cpython-311.pyc +0 -0
  108. machineconfig/scripts/python/__pycache__/__init__.cpython-313.pyc +0 -0
  109. machineconfig/scripts/python/__pycache__/cloud_copy.cpython-311.pyc +0 -0
  110. machineconfig/scripts/python/__pycache__/cloud_mount.cpython-311.pyc +0 -0
  111. machineconfig/scripts/python/__pycache__/cloud_sync.cpython-311.pyc +0 -0
  112. machineconfig/scripts/python/__pycache__/croshell.cpython-311.pyc +0 -0
  113. machineconfig/scripts/python/__pycache__/devops.cpython-311.pyc +0 -0
  114. machineconfig/scripts/python/__pycache__/devops_backup_retrieve.cpython-311.pyc +0 -0
  115. machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-311.pyc +0 -0
  116. machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-311.pyc +0 -0
  117. machineconfig/scripts/python/__pycache__/fire_agents.cpython-311.pyc +0 -0
  118. machineconfig/scripts/python/__pycache__/fire_jobs.cpython-311.pyc +0 -0
  119. machineconfig/scripts/python/__pycache__/fire_jobs.cpython-313.pyc +0 -0
  120. machineconfig/scripts/python/__pycache__/get_zellij_cmd.cpython-311.pyc +0 -0
  121. machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
  122. machineconfig/scripts/python/archive/im2text.py +28 -30
  123. machineconfig/scripts/python/archive/tmate_conn.py +10 -13
  124. machineconfig/scripts/python/archive/tmate_start.py +12 -16
  125. machineconfig/scripts/python/choose_wezterm_theme.py +12 -21
  126. machineconfig/scripts/python/cloud_copy.py +49 -104
  127. machineconfig/scripts/python/cloud_manager.py +77 -91
  128. machineconfig/scripts/python/cloud_mount.py +36 -46
  129. machineconfig/scripts/python/cloud_repo_sync.py +33 -79
  130. machineconfig/scripts/python/cloud_sync.py +35 -45
  131. machineconfig/scripts/python/croshell.py +70 -92
  132. machineconfig/scripts/python/devops.py +54 -113
  133. machineconfig/scripts/python/devops_add_identity.py +71 -109
  134. machineconfig/scripts/python/devops_add_ssh_key.py +42 -149
  135. machineconfig/scripts/python/devops_backup_retrieve.py +31 -119
  136. machineconfig/scripts/python/devops_devapps_install.py +6 -10
  137. machineconfig/scripts/python/devops_update_repos.py +5 -4
  138. machineconfig/scripts/python/dotfile.py +10 -7
  139. machineconfig/scripts/python/fire_agents.py +69 -0
  140. machineconfig/scripts/python/fire_jobs.py +117 -78
  141. machineconfig/scripts/python/ftpx.py +8 -8
  142. machineconfig/scripts/python/get_zellij_cmd.py +3 -3
  143. machineconfig/scripts/python/gh_models.py +6 -4
  144. machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.pyc +0 -0
  145. machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-313.pyc +0 -0
  146. machineconfig/scripts/python/helpers/__pycache__/cloud_helpers.cpython-311.pyc +0 -0
  147. machineconfig/scripts/python/helpers/__pycache__/helpers2.cpython-311.pyc +0 -0
  148. machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-311.pyc +0 -0
  149. machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-313.pyc +0 -0
  150. machineconfig/scripts/python/helpers/__pycache__/repo_sync_helpers.cpython-311.pyc +0 -0
  151. machineconfig/scripts/python/helpers/cloud_helpers.py +49 -46
  152. machineconfig/scripts/python/helpers/helpers2.py +26 -39
  153. machineconfig/scripts/python/helpers/helpers4.py +23 -35
  154. machineconfig/scripts/python/helpers/repo_sync_helpers.py +33 -67
  155. machineconfig/scripts/python/mount_nfs.py +8 -11
  156. machineconfig/scripts/python/mount_nw_drive.py +4 -4
  157. machineconfig/scripts/python/mount_ssh.py +2 -2
  158. machineconfig/scripts/python/onetimeshare.py +56 -57
  159. machineconfig/scripts/python/pomodoro.py +55 -55
  160. machineconfig/scripts/python/repos.py +72 -49
  161. machineconfig/scripts/python/scheduler.py +70 -53
  162. machineconfig/scripts/python/snapshot.py +21 -24
  163. machineconfig/scripts/python/start_slidev.py +6 -5
  164. machineconfig/scripts/python/start_terminals.py +3 -1
  165. machineconfig/scripts/python/viewer.py +5 -4
  166. machineconfig/scripts/python/viewer_template.py +138 -140
  167. machineconfig/scripts/python/wifi_conn.py +416 -62
  168. machineconfig/scripts/python/wsl_windows_transfer.py +18 -3
  169. machineconfig/scripts/windows/fire.ps1 +27 -15
  170. machineconfig/settings/linters/.pylintrc +6 -7
  171. machineconfig/settings/lvim/windows/config.lua +0 -0
  172. machineconfig/settings/shells/bash/init.sh +6 -0
  173. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +7 -6
  174. machineconfig/settings/shells/pwsh/init.ps1 +6 -6
  175. machineconfig/settings/shells/wt/settings.json +51 -266
  176. machineconfig/setup_linux/nix/cli_installation.sh +9 -18
  177. machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +3 -6
  178. machineconfig/setup_linux/web_shortcuts/all.sh +5 -10
  179. machineconfig/setup_linux/web_shortcuts/ascii_art.sh +7 -14
  180. machineconfig/setup_linux/web_shortcuts/croshell.sh +6 -12
  181. machineconfig/setup_linux/web_shortcuts/interactive.sh +39 -70
  182. machineconfig/setup_linux/web_shortcuts/ssh.sh +8 -16
  183. machineconfig/setup_linux/web_shortcuts/update_system.sh +7 -14
  184. machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +3 -6
  185. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +27 -21
  186. machineconfig/utils/ai/browser_user_wrapper.py +60 -45
  187. machineconfig/utils/ai/generate_file_checklist.py +4 -7
  188. machineconfig/utils/ai/url2md.py +15 -7
  189. machineconfig/utils/cloud/onedrive/setup_oauth.py +59 -0
  190. machineconfig/utils/cloud/onedrive/transaction.py +796 -0
  191. machineconfig/utils/{utils_code.py → code.py} +25 -22
  192. machineconfig/utils/installer.py +81 -44
  193. machineconfig/utils/installer_utils/installer_abc.py +7 -6
  194. machineconfig/utils/installer_utils/installer_class.py +44 -25
  195. machineconfig/utils/io_save.py +107 -0
  196. machineconfig/utils/{utils_links.py → links.py} +28 -35
  197. machineconfig/utils/{utils_options.py → options.py} +14 -28
  198. machineconfig/utils/path.py +112 -0
  199. machineconfig/utils/path_reduced.py +608 -0
  200. machineconfig/utils/procs.py +134 -73
  201. machineconfig/utils/scheduling.py +312 -222
  202. machineconfig/utils/utils.py +19 -26
  203. machineconfig/utils/utils2.py +42 -0
  204. machineconfig/utils/utils5.py +84 -0
  205. machineconfig/utils/ve.py +49 -103
  206. {machineconfig-1.94.dist-info → machineconfig-1.96.dist-info}/METADATA +5 -3
  207. machineconfig-1.96.dist-info/RECORD +437 -0
  208. {machineconfig-1.94.dist-info → machineconfig-1.96.dist-info}/WHEEL +1 -1
  209. machineconfig/cluster/session_managers.py +0 -183
  210. machineconfig/cluster/templates/f.py +0 -4
  211. machineconfig/jobs/python/__pycache__/check_installations.cpython-311.pyc +0 -0
  212. machineconfig/jobs/python/__pycache__/checkout_version.cpython-311.pyc +0 -0
  213. machineconfig/jobs/python/__pycache__/python_ve_symlink.cpython-311.pyc +0 -0
  214. machineconfig/jobs/python/checkout_version.py +0 -123
  215. machineconfig/jobs/python/vscode/__pycache__/api.cpython-311.pyc +0 -0
  216. machineconfig/jobs/python/vscode/__pycache__/link_ve.cpython-311.pyc +0 -0
  217. machineconfig/jobs/python_custom_installers/__pycache__/hx.cpython-311.pyc +0 -0
  218. machineconfig/jobs/python_windows_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  219. machineconfig/scripts/python/.mypy_cache/.gitignore +0 -2
  220. machineconfig/scripts/python/.mypy_cache/3.11/@plugins_snapshot.json +0 -1
  221. machineconfig/scripts/python/.mypy_cache/3.11/__future__.data.json +0 -1
  222. machineconfig/scripts/python/.mypy_cache/3.11/__future__.meta.json +0 -1
  223. machineconfig/scripts/python/.mypy_cache/3.11/_ast.data.json +0 -1
  224. machineconfig/scripts/python/.mypy_cache/3.11/_ast.meta.json +0 -1
  225. machineconfig/scripts/python/.mypy_cache/3.11/_bz2.data.json +0 -1
  226. machineconfig/scripts/python/.mypy_cache/3.11/_bz2.meta.json +0 -1
  227. machineconfig/scripts/python/.mypy_cache/3.11/_codecs.data.json +0 -1
  228. machineconfig/scripts/python/.mypy_cache/3.11/_codecs.meta.json +0 -1
  229. machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.data.json +0 -1
  230. machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.meta.json +0 -1
  231. machineconfig/scripts/python/.mypy_cache/3.11/_compression.data.json +0 -1
  232. machineconfig/scripts/python/.mypy_cache/3.11/_compression.meta.json +0 -1
  233. machineconfig/scripts/python/.mypy_cache/3.11/_decimal.data.json +0 -1
  234. machineconfig/scripts/python/.mypy_cache/3.11/_decimal.meta.json +0 -1
  235. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.data.json +0 -1
  236. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.meta.json +0 -1
  237. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.data.json +0 -1
  238. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.meta.json +0 -1
  239. machineconfig/scripts/python/.mypy_cache/3.11/_io.data.json +0 -1
  240. machineconfig/scripts/python/.mypy_cache/3.11/_io.meta.json +0 -1
  241. machineconfig/scripts/python/.mypy_cache/3.11/_locale.data.json +0 -1
  242. machineconfig/scripts/python/.mypy_cache/3.11/_locale.meta.json +0 -1
  243. machineconfig/scripts/python/.mypy_cache/3.11/_stat.data.json +0 -1
  244. machineconfig/scripts/python/.mypy_cache/3.11/_stat.meta.json +0 -1
  245. machineconfig/scripts/python/.mypy_cache/3.11/_struct.data.json +0 -1
  246. machineconfig/scripts/python/.mypy_cache/3.11/_struct.meta.json +0 -1
  247. machineconfig/scripts/python/.mypy_cache/3.11/_thread.data.json +0 -1
  248. machineconfig/scripts/python/.mypy_cache/3.11/_thread.meta.json +0 -1
  249. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.data.json +0 -1
  250. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.meta.json +0 -1
  251. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.data.json +0 -1
  252. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.meta.json +0 -1
  253. machineconfig/scripts/python/.mypy_cache/3.11/_warnings.data.json +0 -1
  254. machineconfig/scripts/python/.mypy_cache/3.11/_warnings.meta.json +0 -1
  255. machineconfig/scripts/python/.mypy_cache/3.11/_weakref.data.json +0 -1
  256. machineconfig/scripts/python/.mypy_cache/3.11/_weakref.meta.json +0 -1
  257. machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.data.json +0 -1
  258. machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.meta.json +0 -1
  259. machineconfig/scripts/python/.mypy_cache/3.11/abc.data.json +0 -1
  260. machineconfig/scripts/python/.mypy_cache/3.11/abc.meta.json +0 -1
  261. machineconfig/scripts/python/.mypy_cache/3.11/argparse.data.json +0 -1
  262. machineconfig/scripts/python/.mypy_cache/3.11/argparse.meta.json +0 -1
  263. machineconfig/scripts/python/.mypy_cache/3.11/ast.data.json +0 -1
  264. machineconfig/scripts/python/.mypy_cache/3.11/ast.meta.json +0 -1
  265. machineconfig/scripts/python/.mypy_cache/3.11/binascii.data.json +0 -1
  266. machineconfig/scripts/python/.mypy_cache/3.11/binascii.meta.json +0 -1
  267. machineconfig/scripts/python/.mypy_cache/3.11/builtins.data.json +0 -1
  268. machineconfig/scripts/python/.mypy_cache/3.11/builtins.meta.json +0 -1
  269. machineconfig/scripts/python/.mypy_cache/3.11/bz2.data.json +0 -1
  270. machineconfig/scripts/python/.mypy_cache/3.11/bz2.meta.json +0 -1
  271. machineconfig/scripts/python/.mypy_cache/3.11/calendar.data.json +0 -1
  272. machineconfig/scripts/python/.mypy_cache/3.11/calendar.meta.json +0 -1
  273. machineconfig/scripts/python/.mypy_cache/3.11/codecs.data.json +0 -1
  274. machineconfig/scripts/python/.mypy_cache/3.11/codecs.meta.json +0 -1
  275. machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.data.json +0 -1
  276. machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.meta.json +0 -1
  277. machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.data.json +0 -1
  278. machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.meta.json +0 -1
  279. machineconfig/scripts/python/.mypy_cache/3.11/configparser.data.json +0 -1
  280. machineconfig/scripts/python/.mypy_cache/3.11/configparser.meta.json +0 -1
  281. machineconfig/scripts/python/.mypy_cache/3.11/contextlib.data.json +0 -1
  282. machineconfig/scripts/python/.mypy_cache/3.11/contextlib.meta.json +0 -1
  283. machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.data.json +0 -1
  284. machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.meta.json +0 -1
  285. machineconfig/scripts/python/.mypy_cache/3.11/datetime.data.json +0 -1
  286. machineconfig/scripts/python/.mypy_cache/3.11/datetime.meta.json +0 -1
  287. machineconfig/scripts/python/.mypy_cache/3.11/decimal.data.json +0 -1
  288. machineconfig/scripts/python/.mypy_cache/3.11/decimal.meta.json +0 -1
  289. machineconfig/scripts/python/.mypy_cache/3.11/dis.data.json +0 -1
  290. machineconfig/scripts/python/.mypy_cache/3.11/dis.meta.json +0 -1
  291. machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.data.json +0 -1
  292. machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.meta.json +0 -1
  293. machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.data.json +0 -1
  294. machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.meta.json +0 -1
  295. machineconfig/scripts/python/.mypy_cache/3.11/email/charset.data.json +0 -1
  296. machineconfig/scripts/python/.mypy_cache/3.11/email/charset.meta.json +0 -1
  297. machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.data.json +0 -1
  298. machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.meta.json +0 -1
  299. machineconfig/scripts/python/.mypy_cache/3.11/email/errors.data.json +0 -1
  300. machineconfig/scripts/python/.mypy_cache/3.11/email/errors.meta.json +0 -1
  301. machineconfig/scripts/python/.mypy_cache/3.11/email/header.data.json +0 -1
  302. machineconfig/scripts/python/.mypy_cache/3.11/email/header.meta.json +0 -1
  303. machineconfig/scripts/python/.mypy_cache/3.11/email/message.data.json +0 -1
  304. machineconfig/scripts/python/.mypy_cache/3.11/email/message.meta.json +0 -1
  305. machineconfig/scripts/python/.mypy_cache/3.11/email/policy.data.json +0 -1
  306. machineconfig/scripts/python/.mypy_cache/3.11/email/policy.meta.json +0 -1
  307. machineconfig/scripts/python/.mypy_cache/3.11/enum.data.json +0 -1
  308. machineconfig/scripts/python/.mypy_cache/3.11/enum.meta.json +0 -1
  309. machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.data.json +0 -1
  310. machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.meta.json +0 -1
  311. machineconfig/scripts/python/.mypy_cache/3.11/functools.data.json +0 -1
  312. machineconfig/scripts/python/.mypy_cache/3.11/functools.meta.json +0 -1
  313. machineconfig/scripts/python/.mypy_cache/3.11/gc.data.json +0 -1
  314. machineconfig/scripts/python/.mypy_cache/3.11/gc.meta.json +0 -1
  315. machineconfig/scripts/python/.mypy_cache/3.11/genericpath.data.json +0 -1
  316. machineconfig/scripts/python/.mypy_cache/3.11/genericpath.meta.json +0 -1
  317. machineconfig/scripts/python/.mypy_cache/3.11/getpass.data.json +0 -1
  318. machineconfig/scripts/python/.mypy_cache/3.11/getpass.meta.json +0 -1
  319. machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.data.json +0 -1
  320. machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.meta.json +0 -1
  321. machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.data.json +0 -1
  322. machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.meta.json +0 -1
  323. machineconfig/scripts/python/.mypy_cache/3.11/git/compat.data.json +0 -1
  324. machineconfig/scripts/python/.mypy_cache/3.11/git/compat.meta.json +0 -1
  325. machineconfig/scripts/python/.mypy_cache/3.11/git/config.data.json +0 -1
  326. machineconfig/scripts/python/.mypy_cache/3.11/git/config.meta.json +0 -1
  327. machineconfig/scripts/python/.mypy_cache/3.11/git/db.data.json +0 -1
  328. machineconfig/scripts/python/.mypy_cache/3.11/git/db.meta.json +0 -1
  329. machineconfig/scripts/python/.mypy_cache/3.11/git/diff.data.json +0 -1
  330. machineconfig/scripts/python/.mypy_cache/3.11/git/diff.meta.json +0 -1
  331. machineconfig/scripts/python/.mypy_cache/3.11/git/exc.data.json +0 -1
  332. machineconfig/scripts/python/.mypy_cache/3.11/git/exc.meta.json +0 -1
  333. machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.data.json +0 -1
  334. machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.meta.json +0 -1
  335. machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.data.json +0 -1
  336. machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.meta.json +0 -1
  337. machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.data.json +0 -1
  338. machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.meta.json +0 -1
  339. machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.data.json +0 -1
  340. machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.meta.json +0 -1
  341. machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.data.json +0 -1
  342. machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.meta.json +0 -1
  343. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.data.json +0 -1
  344. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.meta.json +0 -1
  345. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.data.json +0 -1
  346. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.meta.json +0 -1
  347. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.data.json +0 -1
  348. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.meta.json +0 -1
  349. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.data.json +0 -1
  350. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.meta.json +0 -1
  351. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.data.json +0 -1
  352. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.meta.json +0 -1
  353. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.data.json +0 -1
  354. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.meta.json +0 -1
  355. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.data.json +0 -1
  356. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.meta.json +0 -1
  357. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.data.json +0 -1
  358. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.meta.json +0 -1
  359. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.data.json +0 -1
  360. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.meta.json +0 -1
  361. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.data.json +0 -1
  362. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.meta.json +0 -1
  363. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.data.json +0 -1
  364. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.meta.json +0 -1
  365. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.data.json +0 -1
  366. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.meta.json +0 -1
  367. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.data.json +0 -1
  368. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.meta.json +0 -1
  369. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.data.json +0 -1
  370. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.meta.json +0 -1
  371. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.data.json +0 -1
  372. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.meta.json +0 -1
  373. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.data.json +0 -1
  374. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.meta.json +0 -1
  375. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.data.json +0 -1
  376. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.meta.json +0 -1
  377. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.data.json +0 -1
  378. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.meta.json +0 -1
  379. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.data.json +0 -1
  380. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.meta.json +0 -1
  381. machineconfig/scripts/python/.mypy_cache/3.11/git/remote.data.json +0 -1
  382. machineconfig/scripts/python/.mypy_cache/3.11/git/remote.meta.json +0 -1
  383. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.data.json +0 -1
  384. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.meta.json +0 -1
  385. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.data.json +0 -1
  386. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.meta.json +0 -1
  387. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.data.json +0 -1
  388. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.meta.json +0 -1
  389. machineconfig/scripts/python/.mypy_cache/3.11/git/types.data.json +0 -1
  390. machineconfig/scripts/python/.mypy_cache/3.11/git/types.meta.json +0 -1
  391. machineconfig/scripts/python/.mypy_cache/3.11/git/util.data.json +0 -1
  392. machineconfig/scripts/python/.mypy_cache/3.11/git/util.meta.json +0 -1
  393. machineconfig/scripts/python/.mypy_cache/3.11/glob.data.json +0 -1
  394. machineconfig/scripts/python/.mypy_cache/3.11/glob.meta.json +0 -1
  395. machineconfig/scripts/python/.mypy_cache/3.11/gzip.data.json +0 -1
  396. machineconfig/scripts/python/.mypy_cache/3.11/gzip.meta.json +0 -1
  397. machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.data.json +0 -1
  398. machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.meta.json +0 -1
  399. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.data.json +0 -1
  400. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.meta.json +0 -1
  401. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.data.json +0 -1
  402. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.meta.json +0 -1
  403. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.data.json +0 -1
  404. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.meta.json +0 -1
  405. machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.data.json +0 -1
  406. machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.meta.json +0 -1
  407. machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.data.json +0 -1
  408. machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.meta.json +0 -1
  409. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.data.json +0 -1
  410. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.meta.json +0 -1
  411. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.data.json +0 -1
  412. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.meta.json +0 -1
  413. machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.data.json +0 -1
  414. machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.meta.json +0 -1
  415. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.data.json +0 -1
  416. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.meta.json +0 -1
  417. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.data.json +0 -1
  418. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.meta.json +0 -1
  419. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.data.json +0 -1
  420. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.meta.json +0 -1
  421. machineconfig/scripts/python/.mypy_cache/3.11/inspect.data.json +0 -1
  422. machineconfig/scripts/python/.mypy_cache/3.11/inspect.meta.json +0 -1
  423. machineconfig/scripts/python/.mypy_cache/3.11/io.data.json +0 -1
  424. machineconfig/scripts/python/.mypy_cache/3.11/io.meta.json +0 -1
  425. machineconfig/scripts/python/.mypy_cache/3.11/itertools.data.json +0 -1
  426. machineconfig/scripts/python/.mypy_cache/3.11/itertools.meta.json +0 -1
  427. machineconfig/scripts/python/.mypy_cache/3.11/locale.data.json +0 -1
  428. machineconfig/scripts/python/.mypy_cache/3.11/locale.meta.json +0 -1
  429. machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.data.json +0 -1
  430. machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.meta.json +0 -1
  431. machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.data.json +0 -1
  432. machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.meta.json +0 -1
  433. machineconfig/scripts/python/.mypy_cache/3.11/mmap.data.json +0 -1
  434. machineconfig/scripts/python/.mypy_cache/3.11/mmap.meta.json +0 -1
  435. machineconfig/scripts/python/.mypy_cache/3.11/numbers.data.json +0 -1
  436. machineconfig/scripts/python/.mypy_cache/3.11/numbers.meta.json +0 -1
  437. machineconfig/scripts/python/.mypy_cache/3.11/opcode.data.json +0 -1
  438. machineconfig/scripts/python/.mypy_cache/3.11/opcode.meta.json +0 -1
  439. machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.data.json +0 -1
  440. machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.meta.json +0 -1
  441. machineconfig/scripts/python/.mypy_cache/3.11/os/path.data.json +0 -1
  442. machineconfig/scripts/python/.mypy_cache/3.11/os/path.meta.json +0 -1
  443. machineconfig/scripts/python/.mypy_cache/3.11/pathlib.data.json +0 -1
  444. machineconfig/scripts/python/.mypy_cache/3.11/pathlib.meta.json +0 -1
  445. machineconfig/scripts/python/.mypy_cache/3.11/platform.data.json +0 -1
  446. machineconfig/scripts/python/.mypy_cache/3.11/platform.meta.json +0 -1
  447. machineconfig/scripts/python/.mypy_cache/3.11/posixpath.data.json +0 -1
  448. machineconfig/scripts/python/.mypy_cache/3.11/posixpath.meta.json +0 -1
  449. machineconfig/scripts/python/.mypy_cache/3.11/re.data.json +0 -1
  450. machineconfig/scripts/python/.mypy_cache/3.11/re.meta.json +0 -1
  451. machineconfig/scripts/python/.mypy_cache/3.11/resource.data.json +0 -1
  452. machineconfig/scripts/python/.mypy_cache/3.11/resource.meta.json +0 -1
  453. machineconfig/scripts/python/.mypy_cache/3.11/shlex.data.json +0 -1
  454. machineconfig/scripts/python/.mypy_cache/3.11/shlex.meta.json +0 -1
  455. machineconfig/scripts/python/.mypy_cache/3.11/shutil.data.json +0 -1
  456. machineconfig/scripts/python/.mypy_cache/3.11/shutil.meta.json +0 -1
  457. machineconfig/scripts/python/.mypy_cache/3.11/signal.data.json +0 -1
  458. machineconfig/scripts/python/.mypy_cache/3.11/signal.meta.json +0 -1
  459. machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.data.json +0 -1
  460. machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.meta.json +0 -1
  461. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.data.json +0 -1
  462. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.meta.json +0 -1
  463. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.data.json +0 -1
  464. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.meta.json +0 -1
  465. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.data.json +0 -1
  466. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.meta.json +0 -1
  467. machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.data.json +0 -1
  468. machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.meta.json +0 -1
  469. machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.data.json +0 -1
  470. machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.meta.json +0 -1
  471. machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.data.json +0 -1
  472. machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.meta.json +0 -1
  473. machineconfig/scripts/python/.mypy_cache/3.11/stat.data.json +0 -1
  474. machineconfig/scripts/python/.mypy_cache/3.11/stat.meta.json +0 -1
  475. machineconfig/scripts/python/.mypy_cache/3.11/string.data.json +0 -1
  476. machineconfig/scripts/python/.mypy_cache/3.11/string.meta.json +0 -1
  477. machineconfig/scripts/python/.mypy_cache/3.11/struct.data.json +0 -1
  478. machineconfig/scripts/python/.mypy_cache/3.11/struct.meta.json +0 -1
  479. machineconfig/scripts/python/.mypy_cache/3.11/subprocess.data.json +0 -1
  480. machineconfig/scripts/python/.mypy_cache/3.11/subprocess.meta.json +0 -1
  481. machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.data.json +0 -1
  482. machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.meta.json +0 -1
  483. machineconfig/scripts/python/.mypy_cache/3.11/tarfile.data.json +0 -1
  484. machineconfig/scripts/python/.mypy_cache/3.11/tarfile.meta.json +0 -1
  485. machineconfig/scripts/python/.mypy_cache/3.11/tempfile.data.json +0 -1
  486. machineconfig/scripts/python/.mypy_cache/3.11/tempfile.meta.json +0 -1
  487. machineconfig/scripts/python/.mypy_cache/3.11/textwrap.data.json +0 -1
  488. machineconfig/scripts/python/.mypy_cache/3.11/textwrap.meta.json +0 -1
  489. machineconfig/scripts/python/.mypy_cache/3.11/threading.data.json +0 -1
  490. machineconfig/scripts/python/.mypy_cache/3.11/threading.meta.json +0 -1
  491. machineconfig/scripts/python/.mypy_cache/3.11/time.data.json +0 -1
  492. machineconfig/scripts/python/.mypy_cache/3.11/time.meta.json +0 -1
  493. machineconfig/scripts/python/.mypy_cache/3.11/types.data.json +0 -1
  494. machineconfig/scripts/python/.mypy_cache/3.11/types.meta.json +0 -1
  495. machineconfig/scripts/python/.mypy_cache/3.11/typing.data.json +0 -1
  496. machineconfig/scripts/python/.mypy_cache/3.11/typing.meta.json +0 -1
  497. machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.data.json +0 -1
  498. machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.meta.json +0 -1
  499. machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.data.json +0 -1
  500. machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.meta.json +0 -1
  501. machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.data.json +0 -1
  502. machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.meta.json +0 -1
  503. machineconfig/scripts/python/.mypy_cache/3.11/uuid.data.json +0 -1
  504. machineconfig/scripts/python/.mypy_cache/3.11/uuid.meta.json +0 -1
  505. machineconfig/scripts/python/.mypy_cache/3.11/warnings.data.json +0 -1
  506. machineconfig/scripts/python/.mypy_cache/3.11/warnings.meta.json +0 -1
  507. machineconfig/scripts/python/.mypy_cache/3.11/weakref.data.json +0 -1
  508. machineconfig/scripts/python/.mypy_cache/3.11/weakref.meta.json +0 -1
  509. machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.data.json +0 -1
  510. machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.meta.json +0 -1
  511. machineconfig/scripts/python/.mypy_cache/3.11/zlib.data.json +0 -1
  512. machineconfig/scripts/python/.mypy_cache/3.11/zlib.meta.json +0 -1
  513. machineconfig/scripts/python/.mypy_cache/CACHEDIR.TAG +0 -3
  514. machineconfig/scripts/python/__pycache__/cloud_repo_sync.cpython-311.pyc +0 -0
  515. machineconfig/scripts/python/__pycache__/gh_models.cpython-311.pyc +0 -0
  516. machineconfig/scripts/python/__pycache__/url2md.cpython-311.pyc +0 -0
  517. machineconfig/scripts/python/__pycache__/viewer.cpython-311.pyc +0 -0
  518. machineconfig/scripts/python/__pycache__/vscode_api.cpython-311.pyc +0 -0
  519. machineconfig/settings/__pycache__/__init__.cpython-311.pyc +0 -0
  520. machineconfig/settings/linters/.ruff_cache/.gitignore +0 -2
  521. machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +0 -1
  522. machineconfig/settings/shells/ipy/profiles/default/__pycache__/__init__.cpython-311.pyc +0 -0
  523. machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/__init__.cpython-311.pyc +0 -0
  524. machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/playext.cpython-311.pyc +0 -0
  525. machineconfig/utils/utils_path.py +0 -151
  526. machineconfig/utils/ve_utils/ve1.py +0 -111
  527. machineconfig/utils/ve_utils/ve2.py +0 -142
  528. machineconfig-1.94.dist-info/RECORD +0 -710
  529. {machineconfig-1.94.dist-info → machineconfig-1.96.dist-info}/top_level.txt +0 -0
@@ -1,59 +1,57 @@
1
1
 
2
- """SelfSSh
3
- """
2
+ # """SelfSSh
3
+ # """
4
4
 
5
5
 
6
- from crocodile.file_management import PLike
7
- from crocodile.meta import MACHINE, Terminal
8
- from typing import Optional, Any
9
- import getpass
10
- import platform
11
- import subprocess
6
+ # from typing import Optional, Any
7
+ # import getpass
8
+ # import platform
9
+ # import subprocess
12
10
 
13
11
 
14
- class SelfSSH:
15
- """Instead of SSH'ing to the same machine, one can use this interface.
16
- """
17
- def __init__(self):
18
- self.hostname = "localhost"
19
- self._remote_machine: Optional[MACHINE] = None
20
- self.remote_env_cmd = ". activate_ve"
21
- self.sftp: Any
22
- def __getstate__(self) -> object: return {}
23
- def __setstate__(self, state: dict[str, Any]) -> None:
24
- """This behaviour makes SelfSSH dynamic, even if it was pickled from windows machine, when unpickled on Linux, it will behave as a Linux machine instance."""
25
- _ = state
26
- new_instance = SelfSSH()
27
- self.__dict__.update(new_instance.__dict__)
28
- return None
29
- def run(self, cmd: str, desc: str = "", verbose: bool = False):
30
- _ = desc, verbose
31
- return Terminal().run(cmd, shell="powershell")
32
- def run_py(self, cmd: str, verbose: bool = False, desc: str = ''):
33
- _ = verbose, cmd, desc
34
- exec(cmd) # type: ignore # pylint: disable=exec-used
35
- return None
36
- def get_ssh_conn_str(self): return "ssh localhost"
37
- def get_remote_machine(self) -> MACHINE:
38
- if self._remote_machine is None:
39
- self._remote_machine = "Windows" if (self.run("$env:OS").op.rstrip("\n") == "Windows_NT" or self.run("echo %OS%").op == "Windows_NT") else "Linux"
40
- return self._remote_machine
41
- def get_remote_repr(self, add_machine: bool = False):
42
- _ = add_machine
43
- host = f"{getpass.getuser()}@{platform.node()}"
44
- return f"SelfSSH({host}) REMOTE"
45
- def get_local_repr(self, add_machine: bool = False): return self.get_remote_repr(add_machine=add_machine).replace("REMOTE", "LOCAL")
46
- def open_console(self, cmd: str = '', new_window: bool = True, terminal: Optional[str] = None, shell: str = "pwsh"):
47
- _ = cmd, shell, new_window, terminal
48
- # return Terminal().run_async("", new_window=True, shell=shell)
49
- # Terminal().run_async(*(self.get_ssh_conn_str(cmd=cmd).split(" ")), new_window=new_window, terminal=terminal, shell=shell)
50
- if platform.system() == "Windows":
51
- subprocess.Popen(["wt", "--profile", "pwsh"], stdin=subprocess.PIPE, shell=True)
52
- elif platform.system() == "Linux":
53
- subprocess.Popen(["zellij --session haha"], shell=True, stdin=None, stdout=None, stderr=None)
54
- def copy_to_here(self, source: PLike = '', target: Optional[str] = '', z: bool = True, r: bool = True, desc: str = '', overwrite: bool = False):
55
- _ = source, target, z, r, desc, overwrite
56
- return None
57
- def copy_from_here(self, source: PLike = '', target: Optional[str] = '', z: bool = True, r: bool = True, desc: str = '', overwrite: bool = False):
58
- _ = source, target, z, r, desc, overwrite
59
- return None
12
+ # class SelfSSH:
13
+ # """Instead of SSH'ing to the same machine, one can use this interface.
14
+ # """
15
+ # def __init__(self):
16
+ # self.hostname = "localhost"
17
+ # self._remote_machine: Optional[MACHINE] = None
18
+ # self.remote_env_cmd = ". activate_ve"
19
+ # self.sftp: Any
20
+ # def __getstate__(self) -> object: return {}
21
+ # def __setstate__(self, state: dict[str, Any]) -> None:
22
+ # """This behaviour makes SelfSSH dynamic, even if it was pickled from windows machine, when unpickled on Linux, it will behave as a Linux machine instance."""
23
+ # _ = state
24
+ # new_instance = SelfSSH()
25
+ # self.__dict__.update(new_instance.__dict__)
26
+ # return None
27
+ # def run(self, cmd: str, desc: str = "", verbose: bool = False):
28
+ # _ = desc, verbose
29
+ # return Terminal().run(cmd, shell="powershell")
30
+ # def run_py(self, cmd: str, verbose: bool = False, desc: str = ''):
31
+ # _ = verbose, cmd, desc
32
+ # exec(cmd) # type: ignore # pylint: disable=exec-used
33
+ # return None
34
+ # def get_ssh_conn_str(self): return "ssh localhost"
35
+ # def get_remote_machine(self) -> MACHINE:
36
+ # if self._remote_machine is None:
37
+ # self._remote_machine = "Windows" if (self.run("$env:OS").op.rstrip("\n") == "Windows_NT" or self.run("echo %OS%").op == "Windows_NT") else "Linux"
38
+ # return self._remote_machine
39
+ # def get_remote_repr(self, add_machine: bool = False):
40
+ # _ = add_machine
41
+ # host = f"{getpass.getuser()}@{platform.node()}"
42
+ # return f"SelfSSH({host}) REMOTE"
43
+ # def get_local_repr(self, add_machine: bool = False): return self.get_remote_repr(add_machine=add_machine).replace("REMOTE", "LOCAL")
44
+ # def open_console(self, cmd: str = '', new_window: bool = True, terminal: Optional[str] = None, shell: str = "pwsh"):
45
+ # _ = cmd, shell, new_window, terminal
46
+ # # return Terminal().run_async("", new_window=True, shell=shell)
47
+ # # Terminal().run_async(*(self.get_ssh_conn_str(cmd=cmd).split(" ")), new_window=new_window, terminal=terminal, shell=shell)
48
+ # if platform.system() == "Windows":
49
+ # subprocess.Popen(["wt", "--profile", "pwsh"], stdin=subprocess.PIPE, shell=True)
50
+ # elif platform.system() in ["Linux", "Darwin"]:
51
+ # subprocess.Popen(["zellij --session haha"], shell=True, stdin=None, stdout=None, stderr=None)
52
+ # def copy_to_here(self, source: PLike = '', target: Optional[str] = '', z: bool = True, r: bool = True, desc: str = '', overwrite: bool = False):
53
+ # _ = source, target, z, r, desc, overwrite
54
+ # return None
55
+ # def copy_from_here(self, source: PLike = '', target: Optional[str] = '', z: bool = True, r: bool = True, desc: str = '', overwrite: bool = False):
56
+ # _ = source, target, z, r, desc, overwrite
57
+ # return None
File without changes
@@ -4,7 +4,7 @@
4
4
 
5
5
  import socket
6
6
  from machineconfig.utils.utils import choose_ssh_host, write_shell_script_to_default_program_path
7
- from crocodile.file_management import P
7
+ from machineconfig.utils.path_reduced import P as PathExtended
8
8
 
9
9
  prefix = """
10
10
 
@@ -42,7 +42,9 @@ def build_template(tabs: list[str]):
42
42
  for t in tabs:
43
43
  res += tab.replace("TABNAME", t).replace("TABCOMMAND", "ssh").replace("TABARGS", t)
44
44
  res += suffix.replace("THISMACHINE", socket.gethostname())
45
- file = P.tmp().joinpath("tmp_files/templates/zellij_template.kdl").create(parents_only=True).write_text(res)
45
+ file = PathExtended.tmp().joinpath("tmp_files/templates/zellij_template.kdl")
46
+ file.parent.mkdir(parents=True, exist_ok=True)
47
+ file.write_text(res)
46
48
  res = f"zellij --layout {file}"
47
49
  return res
48
50
 
@@ -51,7 +53,7 @@ def launch_from_ssh_config():
51
53
  hosts = choose_ssh_host(multi=True)
52
54
  assert isinstance(hosts, list)
53
55
  res = build_template(hosts)
54
- write_shell_script_to_default_program_path(res, execute=False, desc="zellij launch script")
56
+ write_shell_script_to_default_program_path(res, execute=False, desc="zellij launch script", preserve_cwd=False, display=False)
55
57
  return None
56
58
 
57
59
 
@@ -0,0 +1,184 @@
1
+
2
+ # """
3
+ # Session Manager
4
+ # """
5
+
6
+ # from machineconfig.cluster.self_ssh import SelfSSH
7
+
8
+ # from machineconfig.utils.io_save import save_yaml
9
+ # import time
10
+ # import subprocess
11
+ # from typing import Union
12
+
13
+
14
+ # class Zellij:
15
+ # @staticmethod
16
+ # def get_current_zellij_session() -> str:
17
+ # try:
18
+ # output_lines = Terminal().run("zellij ls --no-formatting").op.split("\n")
19
+ # current_lines = [line for line in output_lines if "(current)" in line]
20
+ # return current_lines[0].split(" [Created")[0]
21
+ # except IndexError as ie:
22
+ # print("""Fails if there is no zellij session running, fails if there is no (current) suffix against the session name.""")
23
+ # raise ie
24
+ # @staticmethod
25
+ # def get_new_session_command(sess_name: str) -> str: return f"zellij attach {sess_name} -c " # -c means create if not exists.
26
+ # @staticmethod
27
+ # def get_new_session_ssh_command(ssh: Union[SSH, SelfSSH], sess_name: str):
28
+ # if isinstance(ssh, SelfSSH): return Zellij.get_new_session_command(sess_name=sess_name)
29
+ # return f"{ssh.get_ssh_conn_str()} -t {Zellij.get_new_session_command(sess_name=sess_name)}"
30
+ # @staticmethod
31
+ # def open_console(ssh: Union[SSH, SelfSSH], sess_name: str):
32
+ # if isinstance(ssh, SelfSSH):
33
+ # # return Terminal().run_async(Zellij.get_new_session_command(sess_name=sess_name), shell="powershell")
34
+ # # currently, there is a limitation in zellij on creating a detached sessions, there is no way to fix this now.
35
+ # # this will get stuck in the new session and won't run parallel.
36
+ # return subprocess.Popen(["zellij", "--session", sess_name], shell=True, stdin=None, stdout=None, stderr=None)
37
+ # return Terminal().run_async(Zellij.get_new_session_ssh_command(ssh=ssh, sess_name=sess_name))
38
+ # @staticmethod
39
+ # def asssert_session_started(ssh: Union[SSH, SelfSSH], sess_name: str):
40
+ # while True:
41
+ # raw_resp = ssh.run("zellij ls --no-formatting", verbose=False).op.split("\n")
42
+ # current_sessions = [item.split(" [Created")[0] for item in raw_resp if "EXITED" not in item]
43
+ # if sess_name in current_sessions:
44
+ # print(f"--> Session {sess_name} has started at the remote.")
45
+ # time.sleep(6)
46
+ # break
47
+ # time.sleep(2)
48
+ # print(f"--> Waiting for zellij session {sess_name} to start before sending fire commands ...")
49
+
50
+ # @staticmethod
51
+ # def close_tab(sess_name: str, tab_name: str):
52
+ # cmd = f"""
53
+ # zellij --session {sess_name} action close-tab --tab-name '{tab_name}'
54
+ # zellij --session {sess_name} action new-tab --name '🖥️{tab_name}'
55
+ # zellij --session {sess_name} action new-tab --name '🔍{tab_name}'
56
+ # zellij --session {sess_name} action new-tab --name '🪪{tab_name}'
57
+ # zellij --session {sess_name} action new-tab --name '🧑‍💻{tab_name}'
58
+ # """
59
+ # print(f"Closing tab `{tab_name}` in zellij session `{sess_name}` with command \n{cmd}")
60
+ # return Terminal().run_script(cmd)
61
+
62
+ # @staticmethod
63
+ # def setup_layout(ssh: Union[SSH, SelfSSH], sess_name: str, cmd: str = "", run: bool = False, job_wd: str = "$HOME/tmp_results/remote_machines", tab_name: str = "", compact: bool = False):
64
+ # sleep = 0.9
65
+ # if run:
66
+ # if cmd.startswith(". "): cmd = cmd[2:]
67
+ # elif cmd.startswith("source "): cmd = cmd[7:]
68
+ # else: pass
69
+ # exe = f"""
70
+ # zellij --session {sess_name} action new-tab --name '{tab_name}'; sleep {sleep}
71
+ # zellij --session {sess_name} run -d down -- /bin/bash {cmd}; sleep {sleep}
72
+ # zellij --session {sess_name} action move-focus up; sleep {sleep}
73
+ # zellij --session {sess_name} action close-pane; sleep {sleep}
74
+ # """
75
+ # else: exe = f"""
76
+ # zellij --session {sess_name} action write-chars "{cmd}"
77
+ # """
78
+ # if not compact: cmd = f"""
79
+ # zellij --session {sess_name} action new-tab --name '{tab_name}'; sleep {sleep}
80
+ # zellij --session {sess_name} action rename-tab '🖥️{tab_name}'; sleep {sleep} # rename the focused first tab
81
+ # zellij --session {sess_name} action new-tab --name '🔍{tab_name}'; sleep {sleep}
82
+ # zellij --session {sess_name} action write-chars htop; sleep {sleep}
83
+
84
+ # zellij --session {sess_name} action new-tab --name '📁{tab_name}'; sleep {sleep}
85
+ # zellij --session {sess_name} run --direction down --cwd {job_wd} -- lf; sleep {sleep}
86
+ # zellij --session {sess_name} action move-focus up; sleep {sleep}
87
+ # zellij --session {sess_name} action close-pane; sleep {sleep}
88
+
89
+ # zellij --session {sess_name} action new-tab --name '🪪{tab_name}'; sleep {sleep}
90
+ # zellij --session {sess_name} run --direction down -- neofetch;cpufetch; sleep {sleep}
91
+ # zellij --session {sess_name} action move-focus up; sleep {sleep}
92
+ # zellij --session {sess_name} action close-pane; sleep {sleep}
93
+
94
+ # zellij --session {sess_name} action new-tab --name '🧑‍💻{tab_name}'; sleep {sleep}
95
+ # zellij --session {sess_name} action write-chars "cd {job_wd}"; sleep {sleep}
96
+ # zellij --session {sess_name} action go-to-tab 1; sleep {sleep}
97
+ # {exe}
98
+
99
+ # """
100
+ # else: cmd = exe
101
+ # if isinstance(ssh, SelfSSH):
102
+ # # print(1)
103
+ # print(f"Setting up zellij layout `{sess_name}` on `{ssh.get_remote_repr()}` to run `{P(job_wd).name}`")
104
+ # # return Terminal().run_script(cmd) # Zellij not happy with launching scripts of zellij commands.
105
+ # return Response.from_completed_process(subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True))
106
+ # # print(2)
107
+ # return ssh.run(cmd, desc=f"Setting up zellij layout on `{ssh.get_remote_repr()}`", verbose=False)
108
+ # @staticmethod
109
+ # def kill_session(ssh: Union[SSH, SelfSSH], sess_name: str):
110
+ # cmd = f'zellij kill-session {sess_name}'
111
+ # return ssh.run(cmd, desc=f"Killing zellij session `{sess_name}` on `{ssh.get_remote_repr()}`", verbose=False)
112
+
113
+
114
+ # class WindowsTerminal:
115
+ # @staticmethod
116
+ # def kill_session(sess_name: str):
117
+ # from machineconfig.utils.procs import ProcessManager
118
+ # pm = ProcessManager()
119
+ # pm.kill(commands=[sess_name])
120
+ # @staticmethod
121
+ # def open_reference(): PathExtended(r"https://learn.microsoft.com/en-us/windows/terminal/command-line-arguments?tabs=windows")()
122
+ # @staticmethod
123
+ # def get_new_session_command(sess_name: str): return f"wt -w {sess_name} -d ."
124
+ # @staticmethod
125
+ # def get_new_session_ssh_command(ssh: Union[SSH, SelfSSH], sess_name: str):
126
+ # if isinstance(ssh, SelfSSH): return WindowsTerminal.get_new_session_command(sess_name=sess_name)
127
+ # return f"{ssh.get_ssh_conn_str()} -t {WindowsTerminal.get_new_session_command(sess_name=sess_name)}"
128
+ # @staticmethod
129
+ # def open_console(ssh: Union[SSH, SelfSSH], sess_name: str):
130
+ # if isinstance(ssh, SelfSSH):
131
+ # # return Terminal().run_async(WindowsTerminal.get_new_session_command(sess_name=sess_name), shell="powershell")
132
+ # return subprocess.Popen(["wt", "--window", sess_name], shell=True, stdin=None, stdout=None, stderr=None)
133
+ # return Terminal().run_async(WindowsTerminal.get_new_session_ssh_command(ssh=ssh, sess_name=sess_name), shell="pwsh")
134
+ # @staticmethod
135
+ # def asssert_session_started(ssh: Union[SSH, SelfSSH], sess_name: str):
136
+ # _ = sess_name, ssh
137
+ # time.sleep(6)
138
+ # return True
139
+ # @staticmethod
140
+ # def setup_layout(ssh: Union[SSH, SelfSSH], sess_name: str, tab_name: str = "", cmd: str = "", run: bool = True, job_wd: str = "$HOME/tmp_results/remote_machines", compact: bool = True):
141
+ # if run:
142
+ # if cmd.startswith(". "): cmd = cmd[2:]
143
+ # elif cmd.startswith("source "): cmd = cmd[7:]
144
+ # else: pass
145
+ # exe: str = f"""
146
+ # wt --window {sess_name} new-tab --title '{tab_name}' pwsh -noExit -Command {cmd}
147
+ # """
148
+ # else: raise NotImplementedError("I don't know how to write-chars in Windows Terminal") # exe = f""" wt --window {sess_name} action write-chars "{cmd}" """
149
+ # sleep = 0.9
150
+ # if compact: cmd = f"""
151
+ # wt --window {sess_name} new-tab --title '💻{tab_name}' htop `; split-pane --horizontal --title '📁{tab_name}' --startingDirectory {job_wd} --profile pwsh lf `; split-pane --vertical --title '🪪{tab_name}' powershell -noExit "$HOME/scripts/neofetch.ps1" `; move-focus up `; split-pane --vertical --startingDirectory {job_wd} --title '🧑‍💻{tab_name}' --profile pwsh
152
+ # """ # when pane-splitting, the tab title goes to the last pane declared.
153
+ # else: cmd = f"""'
154
+ # wt --window {sess_name} new-tab --title '💻{tab_name}' htop; sleep {sleep}
155
+ # wt --window {sess_name} new-tab --title '📁{tab_name}' --startingDirectory {job_wd} lf; sleep {sleep}
156
+ # wt --window {sess_name} new-tab --title '🪪{tab_name}' powershell -noExit "$HOME/scripts/neofetch.ps1"; sleep {sleep}
157
+ # wt --window {sess_name} new-tab --title '🧑‍💻{tab_name}' --startingDirectory {job_wd} --profile pwsh; sleep {sleep}
158
+ # """
159
+ # cmd = cmd + f"\nsleep {sleep};" + exe
160
+ # # print(cmd)
161
+ # if isinstance(ssh, SelfSSH):
162
+ # print(f"Firing WindowsTerminal Session `{sess_name}` on `{ssh.get_remote_repr()}` to run `{P(job_wd).name}`")
163
+ # return Terminal().run_script(cmd, shell="pwsh")
164
+ # return ssh.run(cmd, desc=f"Setting up WindowsTerminal layout on `{ssh.get_remote_repr()}`", verbose=False)
165
+
166
+
167
+ # class Mprocs:
168
+ # @staticmethod
169
+ # def get_template():
170
+ # import machineconfig
171
+ # return PathExtended(machineconfig.__file__).parent.joinpath(r"settings/mprocs/windows/mprocs.yaml").readit()
172
+ # # def get_new_session_name(self): return f"mprocs{self.id}"
173
+ # @staticmethod
174
+ # def get_ssh_command(): return ""
175
+ # def open_console(self, cmd: str, shell: str = "powershell"):
176
+ # _ = cmd, shell
177
+ # return "wt -w 0 -d ."
178
+ # def get_layout(self):
179
+ # temp = self.get_template()
180
+ # temp.procs['main']['shell']['windows'] = "croshell"
181
+ # _template_file = save_yaml(obj=temp, path=PathExtended.tmpfile(suffix=".yaml"))
182
+ # def asssert_session_started(self):
183
+ # time.sleep(3)
184
+ # return True
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Enhanced command execution utilities with Rich formatting for better user experience.
4
+ """
5
+
6
+ import subprocess
7
+ import re
8
+ from typing import Optional, Dict, Any
9
+ from rich.console import Console
10
+ from rich.panel import Panel
11
+ from rich.progress import Progress, SpinnerColumn, TextColumn
12
+ from rich import box
13
+
14
+ console = Console()
15
+
16
+ def run_enhanced_command(
17
+ command: str,
18
+ description: Optional[str] = None,
19
+ show_progress: bool = True,
20
+ timeout: Optional[int] = None
21
+ ) -> Dict[str, Any]:
22
+ """
23
+ Run a command with enhanced Rich formatting and user feedback.
24
+
25
+ Args:
26
+ command: The command to execute
27
+ description: Optional description for progress display
28
+ show_progress: Whether to show a progress spinner
29
+ timeout: Optional timeout in seconds
30
+
31
+ Returns:
32
+ Dictionary with success status, output, and error information
33
+ """
34
+
35
+ if description is None:
36
+ description = f"Executing: {command[:50]}..."
37
+
38
+ try:
39
+ if show_progress:
40
+ with Progress(
41
+ SpinnerColumn(),
42
+ TextColumn("[progress.description]{task.description}"),
43
+ console=console,
44
+ transient=True
45
+ ) as progress:
46
+ task = progress.add_task(f"[cyan]{description}[/cyan]", total=None)
47
+
48
+ result = subprocess.run(
49
+ command,
50
+ shell=True,
51
+ capture_output=True,
52
+ text=True,
53
+ timeout=timeout
54
+ )
55
+
56
+ progress.update(task, completed=True)
57
+ else:
58
+ result = subprocess.run(
59
+ command,
60
+ shell=True,
61
+ capture_output=True,
62
+ text=True,
63
+ timeout=timeout
64
+ )
65
+
66
+ # Enhanced output processing
67
+ stdout = result.stdout.strip() if result.stdout else ""
68
+ stderr = result.stderr.strip() if result.stderr else ""
69
+
70
+ # Process common Zellij messages with enhanced formatting
71
+ if "Session:" in stdout and "successfully deleted" in stdout:
72
+ session_match = re.search(r'Session: "([^"]+)" successfully deleted', stdout)
73
+ if session_match:
74
+ session_name = session_match.group(1)
75
+ console.print(f"[bold red]🗑️ Session[/bold red] [yellow]'{session_name}'[/yellow] [red]successfully deleted[/red]")
76
+
77
+ if "zellij layout is running" in stdout:
78
+ console.print(stdout.replace("zellij layout is running @",
79
+ "[bold green]🚀 Zellij layout is running[/bold green] [yellow]@[/yellow]"))
80
+
81
+ # Handle pseudo-terminal warnings with less alarming appearance
82
+ if "Pseudo-terminal will not be allocated" in stderr:
83
+ console.print("[dim yellow]ℹ️ Note: Running in non-interactive mode[/dim yellow]")
84
+ stderr = stderr.replace("Pseudo-terminal will not be allocated because stdin is not a terminal.\n", "")
85
+
86
+ if result.returncode == 0:
87
+ if stdout and not any(msg in stdout for msg in ["Session:", "zellij layout is running"]):
88
+ console.print(f"[green]{stdout}[/green]")
89
+ return {
90
+ "success": True,
91
+ "returncode": result.returncode,
92
+ "stdout": stdout,
93
+ "stderr": stderr
94
+ }
95
+ else:
96
+ if stderr:
97
+ console.print(f"[bold red]Error:[/bold red] [red]{stderr}[/red]")
98
+ return {
99
+ "success": False,
100
+ "returncode": result.returncode,
101
+ "stdout": stdout,
102
+ "stderr": stderr
103
+ }
104
+
105
+ except subprocess.TimeoutExpired:
106
+ console.print(f"[bold red]⏰ Command timed out after {timeout} seconds[/bold red]")
107
+ return {
108
+ "success": False,
109
+ "error": "Timeout",
110
+ "timeout": timeout
111
+ }
112
+ except Exception as e:
113
+ console.print(f"[bold red]💥 Unexpected error:[/bold red] [red]{str(e)}[/red]")
114
+ return {
115
+ "success": False,
116
+ "error": str(e)
117
+ }
118
+
119
+ def enhanced_zellij_session_start(session_name: str, layout_path: str) -> Dict[str, Any]:
120
+ """
121
+ Start a Zellij session with enhanced visual feedback.
122
+ """
123
+ console.print()
124
+ console.print(Panel.fit(f"🚀 Starting Zellij Session: [bold cyan]{session_name}[/bold cyan]",
125
+ style="green", box=box.ROUNDED))
126
+
127
+ # Delete existing session first (suppress normal output)
128
+ delete_cmd = f"zellij delete-session --force {session_name}"
129
+ run_enhanced_command(
130
+ delete_cmd,
131
+ f"Cleaning up existing session '{session_name}'",
132
+ show_progress=False,
133
+ timeout=5 # Quick timeout for cleanup
134
+ )
135
+
136
+ # Start new session (use -b for background to avoid hanging)
137
+ start_cmd = f"zellij --layout {layout_path} a -b {session_name}"
138
+ start_result = run_enhanced_command(
139
+ start_cmd,
140
+ f"Starting session '{session_name}' with layout",
141
+ show_progress=False,
142
+ timeout=10 # Add timeout to prevent hanging
143
+ )
144
+
145
+ if start_result["success"]:
146
+ console.print(Panel(f"[bold green]✅ Session '{session_name}' is now running![/bold green]\n[dim]Layout: {layout_path}[/dim]",
147
+ style="green", title="🎉 Success"))
148
+ else:
149
+ console.print(Panel(f"[bold red]❌ Failed to start session '{session_name}'[/bold red]\n[red]{start_result.get('stderr', 'Unknown error')}[/red]",
150
+ style="red", title="💥 Error"))
151
+
152
+ return start_result
153
+
154
+ if __name__ == "__main__":
155
+ # Demo the enhanced command execution
156
+ console.print(Panel.fit("🎨 Enhanced Command Execution Demo", style="bold cyan"))
157
+
158
+ # Test with a simple command
159
+ result = run_enhanced_command("echo 'Hello, Rich world!'", "Testing enhanced output")
160
+ console.print(f"Result: {result}")