machineconfig 1.95__py3-none-any.whl → 1.97__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 (504) hide show
  1. machineconfig/cluster/cloud_manager.py +445 -343
  2. machineconfig/cluster/data_transfer.py +63 -57
  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/python/__pycache__/__init__.cpython-311.pyc +0 -0
  44. machineconfig/jobs/python/check_installations.py +258 -190
  45. machineconfig/jobs/python/create_bootable_media.py +7 -3
  46. machineconfig/jobs/python/python_cargo_build_share.py +50 -50
  47. machineconfig/jobs/python/python_ve_symlink.py +6 -6
  48. machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
  49. machineconfig/jobs/python/vscode/api.py +1 -1
  50. machineconfig/jobs/python/vscode/link_ve.py +2 -2
  51. machineconfig/jobs/python/vscode/select_interpreter.py +9 -5
  52. machineconfig/jobs/python/vscode/sync_code.py +8 -5
  53. machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  54. machineconfig/jobs/python_custom_installers/archive/ngrok.py +1 -1
  55. machineconfig/jobs/python_custom_installers/dev/alacritty.py +3 -2
  56. machineconfig/jobs/python_custom_installers/dev/brave.py +7 -3
  57. machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +3 -4
  58. machineconfig/jobs/python_custom_installers/dev/code.py +3 -1
  59. machineconfig/jobs/python_custom_installers/dev/cursor.py +66 -5
  60. machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -1
  61. machineconfig/jobs/python_custom_installers/dev/espanso.py +13 -9
  62. machineconfig/jobs/python_custom_installers/dev/goes.py +2 -8
  63. machineconfig/jobs/python_custom_installers/dev/lvim.py +3 -2
  64. machineconfig/jobs/python_custom_installers/dev/nerdfont.py +1 -1
  65. machineconfig/jobs/python_custom_installers/dev/redis.py +7 -3
  66. machineconfig/jobs/python_custom_installers/dev/wezterm.py +8 -4
  67. machineconfig/jobs/python_custom_installers/dev/winget.py +194 -0
  68. machineconfig/jobs/python_custom_installers/{dev/docker.py → docker.py} +8 -3
  69. machineconfig/jobs/python_custom_installers/gh.py +4 -3
  70. machineconfig/jobs/python_custom_installers/hx.py +9 -8
  71. machineconfig/jobs/python_custom_installers/scripts/linux/vscode.sh +97 -30
  72. machineconfig/jobs/python_custom_installers/{dev/warp-cli.py → warp-cli.py} +1 -1
  73. machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  74. machineconfig/jobs/python_generic_installers/config.json +133 -9
  75. machineconfig/jobs/python_generic_installers/dev/config.json +208 -37
  76. machineconfig/jobs/python_generic_installers/update.py +3 -0
  77. machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  78. machineconfig/jobs/python_linux_installers/config.json +42 -6
  79. machineconfig/jobs/python_linux_installers/dev/config.json +79 -11
  80. machineconfig/jobs/python_windows_installers/config.json +6 -0
  81. machineconfig/profile/__pycache__/__init__.cpython-311.pyc +0 -0
  82. machineconfig/profile/__pycache__/create.cpython-311.pyc +0 -0
  83. machineconfig/profile/__pycache__/shell.cpython-311.pyc +0 -0
  84. machineconfig/profile/create.py +5 -5
  85. machineconfig/profile/create_hardlinks.py +5 -5
  86. machineconfig/profile/shell.py +44 -17
  87. machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  88. machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
  89. machineconfig/scripts/linux/fire_agents +27 -0
  90. machineconfig/scripts/linux/mcinit +27 -0
  91. machineconfig/scripts/linux/wifi_conn +24 -0
  92. machineconfig/scripts/python/__pycache__/__init__.cpython-311.pyc +0 -0
  93. machineconfig/scripts/python/__pycache__/__init__.cpython-313.pyc +0 -0
  94. machineconfig/scripts/python/__pycache__/cloud_copy.cpython-311.pyc +0 -0
  95. machineconfig/scripts/python/__pycache__/cloud_mount.cpython-311.pyc +0 -0
  96. machineconfig/scripts/python/__pycache__/cloud_sync.cpython-311.pyc +0 -0
  97. machineconfig/scripts/python/__pycache__/croshell.cpython-311.pyc +0 -0
  98. machineconfig/scripts/python/__pycache__/devops.cpython-311.pyc +0 -0
  99. machineconfig/scripts/python/__pycache__/devops_backup_retrieve.cpython-311.pyc +0 -0
  100. machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-311.pyc +0 -0
  101. machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-311.pyc +0 -0
  102. machineconfig/scripts/python/__pycache__/fire_agents.cpython-311.pyc +0 -0
  103. machineconfig/scripts/python/__pycache__/fire_jobs.cpython-311.pyc +0 -0
  104. machineconfig/scripts/python/__pycache__/fire_jobs.cpython-313.pyc +0 -0
  105. machineconfig/scripts/python/__pycache__/get_zellij_cmd.cpython-311.pyc +0 -0
  106. machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
  107. machineconfig/scripts/python/ai/__pycache__/init.cpython-311.pyc +0 -0
  108. machineconfig/scripts/python/ai/init.py +56 -0
  109. machineconfig/scripts/python/ai/rules/python/dev.md +31 -0
  110. machineconfig/scripts/python/archive/im2text.py +1 -3
  111. machineconfig/scripts/python/choose_wezterm_theme.py +3 -3
  112. machineconfig/scripts/python/cloud_copy.py +10 -10
  113. machineconfig/scripts/python/cloud_manager.py +77 -99
  114. machineconfig/scripts/python/cloud_mount.py +13 -12
  115. machineconfig/scripts/python/cloud_repo_sync.py +14 -11
  116. machineconfig/scripts/python/croshell.py +24 -21
  117. machineconfig/scripts/python/devops.py +12 -17
  118. machineconfig/scripts/python/devops_add_identity.py +32 -10
  119. machineconfig/scripts/python/devops_add_ssh_key.py +10 -10
  120. machineconfig/scripts/python/devops_backup_retrieve.py +9 -8
  121. machineconfig/scripts/python/devops_devapps_install.py +6 -6
  122. machineconfig/scripts/python/devops_update_repos.py +4 -3
  123. machineconfig/scripts/python/dotfile.py +10 -7
  124. machineconfig/scripts/python/fire_agents.py +69 -0
  125. machineconfig/scripts/python/fire_jobs.py +62 -65
  126. machineconfig/scripts/python/ftpx.py +8 -8
  127. machineconfig/scripts/python/get_zellij_cmd.py +3 -3
  128. machineconfig/scripts/python/gh_models.py +6 -4
  129. machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.pyc +0 -0
  130. machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-313.pyc +0 -0
  131. machineconfig/scripts/python/helpers/__pycache__/cloud_helpers.cpython-311.pyc +0 -0
  132. machineconfig/scripts/python/helpers/__pycache__/helpers2.cpython-311.pyc +0 -0
  133. machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-311.pyc +0 -0
  134. machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-313.pyc +0 -0
  135. machineconfig/scripts/python/helpers/__pycache__/repo_sync_helpers.cpython-311.pyc +0 -0
  136. machineconfig/scripts/python/helpers/cloud_helpers.py +12 -12
  137. machineconfig/scripts/python/helpers/helpers2.py +9 -8
  138. machineconfig/scripts/python/helpers/helpers4.py +23 -35
  139. machineconfig/scripts/python/helpers/repo_sync_helpers.py +17 -16
  140. machineconfig/scripts/python/mount_nfs.py +8 -11
  141. machineconfig/scripts/python/mount_nw_drive.py +4 -4
  142. machineconfig/scripts/python/mount_ssh.py +2 -2
  143. machineconfig/scripts/python/onetimeshare.py +56 -57
  144. machineconfig/scripts/python/pomodoro.py +55 -55
  145. machineconfig/scripts/python/repos.py +26 -18
  146. machineconfig/scripts/python/scheduler.py +70 -53
  147. machineconfig/scripts/python/snapshot.py +21 -24
  148. machineconfig/scripts/python/start_slidev.py +6 -5
  149. machineconfig/scripts/python/start_terminals.py +3 -1
  150. machineconfig/scripts/python/viewer.py +5 -4
  151. machineconfig/scripts/python/viewer_template.py +138 -140
  152. machineconfig/scripts/python/wifi_conn.py +412 -60
  153. machineconfig/scripts/python/wsl_windows_transfer.py +18 -3
  154. machineconfig/scripts/windows/mcinit.ps1 +4 -0
  155. machineconfig/settings/linters/.pylintrc +6 -7
  156. machineconfig/settings/lvim/windows/config.lua +0 -0
  157. machineconfig/settings/shells/bash/init.sh +6 -0
  158. machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +7 -6
  159. machineconfig/settings/shells/pwsh/init.ps1 +6 -6
  160. machineconfig/settings/shells/wt/settings.json +51 -266
  161. machineconfig/setup_linux/web_shortcuts/interactive.sh +5 -2
  162. machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +3 -6
  163. machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +11 -9
  164. machineconfig/utils/ai/url2md.py +2 -2
  165. machineconfig/utils/cloud/onedrive/setup_oauth.py +59 -0
  166. machineconfig/utils/cloud/onedrive/transaction.py +796 -0
  167. machineconfig/utils/code.py +22 -13
  168. machineconfig/utils/installer.py +78 -35
  169. machineconfig/utils/installer_utils/installer_abc.py +7 -6
  170. machineconfig/utils/installer_utils/installer_class.py +44 -25
  171. machineconfig/utils/io_save.py +107 -0
  172. machineconfig/utils/links.py +19 -15
  173. machineconfig/utils/options.py +4 -8
  174. machineconfig/utils/path.py +91 -78
  175. machineconfig/utils/path_reduced.py +608 -0
  176. machineconfig/utils/procs.py +110 -45
  177. machineconfig/utils/scheduling.py +312 -222
  178. machineconfig/utils/utils.py +7 -7
  179. machineconfig/utils/utils2.py +42 -0
  180. machineconfig/utils/utils5.py +84 -0
  181. machineconfig/utils/ve.py +49 -87
  182. {machineconfig-1.95.dist-info → machineconfig-1.97.dist-info}/METADATA +2 -2
  183. machineconfig-1.97.dist-info/RECORD +442 -0
  184. machineconfig/cluster/session_managers.py +0 -183
  185. machineconfig/cluster/templates/f.py +0 -4
  186. machineconfig/jobs/python/__pycache__/check_installations.cpython-311.pyc +0 -0
  187. machineconfig/jobs/python/__pycache__/checkout_version.cpython-311.pyc +0 -0
  188. machineconfig/jobs/python/__pycache__/python_ve_symlink.cpython-311.pyc +0 -0
  189. machineconfig/jobs/python/checkout_version.py +0 -123
  190. machineconfig/jobs/python/vscode/__pycache__/api.cpython-311.pyc +0 -0
  191. machineconfig/jobs/python/vscode/__pycache__/link_ve.cpython-311.pyc +0 -0
  192. machineconfig/jobs/python_custom_installers/__pycache__/hx.cpython-311.pyc +0 -0
  193. machineconfig/jobs/python_windows_installers/__pycache__/__init__.cpython-311.pyc +0 -0
  194. machineconfig/scripts/python/.mypy_cache/.gitignore +0 -2
  195. machineconfig/scripts/python/.mypy_cache/3.11/@plugins_snapshot.json +0 -1
  196. machineconfig/scripts/python/.mypy_cache/3.11/__future__.data.json +0 -1
  197. machineconfig/scripts/python/.mypy_cache/3.11/__future__.meta.json +0 -1
  198. machineconfig/scripts/python/.mypy_cache/3.11/_ast.data.json +0 -1
  199. machineconfig/scripts/python/.mypy_cache/3.11/_ast.meta.json +0 -1
  200. machineconfig/scripts/python/.mypy_cache/3.11/_bz2.data.json +0 -1
  201. machineconfig/scripts/python/.mypy_cache/3.11/_bz2.meta.json +0 -1
  202. machineconfig/scripts/python/.mypy_cache/3.11/_codecs.data.json +0 -1
  203. machineconfig/scripts/python/.mypy_cache/3.11/_codecs.meta.json +0 -1
  204. machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.data.json +0 -1
  205. machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.meta.json +0 -1
  206. machineconfig/scripts/python/.mypy_cache/3.11/_compression.data.json +0 -1
  207. machineconfig/scripts/python/.mypy_cache/3.11/_compression.meta.json +0 -1
  208. machineconfig/scripts/python/.mypy_cache/3.11/_decimal.data.json +0 -1
  209. machineconfig/scripts/python/.mypy_cache/3.11/_decimal.meta.json +0 -1
  210. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.data.json +0 -1
  211. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.meta.json +0 -1
  212. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.data.json +0 -1
  213. machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.meta.json +0 -1
  214. machineconfig/scripts/python/.mypy_cache/3.11/_io.data.json +0 -1
  215. machineconfig/scripts/python/.mypy_cache/3.11/_io.meta.json +0 -1
  216. machineconfig/scripts/python/.mypy_cache/3.11/_locale.data.json +0 -1
  217. machineconfig/scripts/python/.mypy_cache/3.11/_locale.meta.json +0 -1
  218. machineconfig/scripts/python/.mypy_cache/3.11/_stat.data.json +0 -1
  219. machineconfig/scripts/python/.mypy_cache/3.11/_stat.meta.json +0 -1
  220. machineconfig/scripts/python/.mypy_cache/3.11/_struct.data.json +0 -1
  221. machineconfig/scripts/python/.mypy_cache/3.11/_struct.meta.json +0 -1
  222. machineconfig/scripts/python/.mypy_cache/3.11/_thread.data.json +0 -1
  223. machineconfig/scripts/python/.mypy_cache/3.11/_thread.meta.json +0 -1
  224. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.data.json +0 -1
  225. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.meta.json +0 -1
  226. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.data.json +0 -1
  227. machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.meta.json +0 -1
  228. machineconfig/scripts/python/.mypy_cache/3.11/_warnings.data.json +0 -1
  229. machineconfig/scripts/python/.mypy_cache/3.11/_warnings.meta.json +0 -1
  230. machineconfig/scripts/python/.mypy_cache/3.11/_weakref.data.json +0 -1
  231. machineconfig/scripts/python/.mypy_cache/3.11/_weakref.meta.json +0 -1
  232. machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.data.json +0 -1
  233. machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.meta.json +0 -1
  234. machineconfig/scripts/python/.mypy_cache/3.11/abc.data.json +0 -1
  235. machineconfig/scripts/python/.mypy_cache/3.11/abc.meta.json +0 -1
  236. machineconfig/scripts/python/.mypy_cache/3.11/argparse.data.json +0 -1
  237. machineconfig/scripts/python/.mypy_cache/3.11/argparse.meta.json +0 -1
  238. machineconfig/scripts/python/.mypy_cache/3.11/ast.data.json +0 -1
  239. machineconfig/scripts/python/.mypy_cache/3.11/ast.meta.json +0 -1
  240. machineconfig/scripts/python/.mypy_cache/3.11/binascii.data.json +0 -1
  241. machineconfig/scripts/python/.mypy_cache/3.11/binascii.meta.json +0 -1
  242. machineconfig/scripts/python/.mypy_cache/3.11/builtins.data.json +0 -1
  243. machineconfig/scripts/python/.mypy_cache/3.11/builtins.meta.json +0 -1
  244. machineconfig/scripts/python/.mypy_cache/3.11/bz2.data.json +0 -1
  245. machineconfig/scripts/python/.mypy_cache/3.11/bz2.meta.json +0 -1
  246. machineconfig/scripts/python/.mypy_cache/3.11/calendar.data.json +0 -1
  247. machineconfig/scripts/python/.mypy_cache/3.11/calendar.meta.json +0 -1
  248. machineconfig/scripts/python/.mypy_cache/3.11/codecs.data.json +0 -1
  249. machineconfig/scripts/python/.mypy_cache/3.11/codecs.meta.json +0 -1
  250. machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.data.json +0 -1
  251. machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.meta.json +0 -1
  252. machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.data.json +0 -1
  253. machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.meta.json +0 -1
  254. machineconfig/scripts/python/.mypy_cache/3.11/configparser.data.json +0 -1
  255. machineconfig/scripts/python/.mypy_cache/3.11/configparser.meta.json +0 -1
  256. machineconfig/scripts/python/.mypy_cache/3.11/contextlib.data.json +0 -1
  257. machineconfig/scripts/python/.mypy_cache/3.11/contextlib.meta.json +0 -1
  258. machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.data.json +0 -1
  259. machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.meta.json +0 -1
  260. machineconfig/scripts/python/.mypy_cache/3.11/datetime.data.json +0 -1
  261. machineconfig/scripts/python/.mypy_cache/3.11/datetime.meta.json +0 -1
  262. machineconfig/scripts/python/.mypy_cache/3.11/decimal.data.json +0 -1
  263. machineconfig/scripts/python/.mypy_cache/3.11/decimal.meta.json +0 -1
  264. machineconfig/scripts/python/.mypy_cache/3.11/dis.data.json +0 -1
  265. machineconfig/scripts/python/.mypy_cache/3.11/dis.meta.json +0 -1
  266. machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.data.json +0 -1
  267. machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.meta.json +0 -1
  268. machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.data.json +0 -1
  269. machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.meta.json +0 -1
  270. machineconfig/scripts/python/.mypy_cache/3.11/email/charset.data.json +0 -1
  271. machineconfig/scripts/python/.mypy_cache/3.11/email/charset.meta.json +0 -1
  272. machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.data.json +0 -1
  273. machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.meta.json +0 -1
  274. machineconfig/scripts/python/.mypy_cache/3.11/email/errors.data.json +0 -1
  275. machineconfig/scripts/python/.mypy_cache/3.11/email/errors.meta.json +0 -1
  276. machineconfig/scripts/python/.mypy_cache/3.11/email/header.data.json +0 -1
  277. machineconfig/scripts/python/.mypy_cache/3.11/email/header.meta.json +0 -1
  278. machineconfig/scripts/python/.mypy_cache/3.11/email/message.data.json +0 -1
  279. machineconfig/scripts/python/.mypy_cache/3.11/email/message.meta.json +0 -1
  280. machineconfig/scripts/python/.mypy_cache/3.11/email/policy.data.json +0 -1
  281. machineconfig/scripts/python/.mypy_cache/3.11/email/policy.meta.json +0 -1
  282. machineconfig/scripts/python/.mypy_cache/3.11/enum.data.json +0 -1
  283. machineconfig/scripts/python/.mypy_cache/3.11/enum.meta.json +0 -1
  284. machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.data.json +0 -1
  285. machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.meta.json +0 -1
  286. machineconfig/scripts/python/.mypy_cache/3.11/functools.data.json +0 -1
  287. machineconfig/scripts/python/.mypy_cache/3.11/functools.meta.json +0 -1
  288. machineconfig/scripts/python/.mypy_cache/3.11/gc.data.json +0 -1
  289. machineconfig/scripts/python/.mypy_cache/3.11/gc.meta.json +0 -1
  290. machineconfig/scripts/python/.mypy_cache/3.11/genericpath.data.json +0 -1
  291. machineconfig/scripts/python/.mypy_cache/3.11/genericpath.meta.json +0 -1
  292. machineconfig/scripts/python/.mypy_cache/3.11/getpass.data.json +0 -1
  293. machineconfig/scripts/python/.mypy_cache/3.11/getpass.meta.json +0 -1
  294. machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.data.json +0 -1
  295. machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.meta.json +0 -1
  296. machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.data.json +0 -1
  297. machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.meta.json +0 -1
  298. machineconfig/scripts/python/.mypy_cache/3.11/git/compat.data.json +0 -1
  299. machineconfig/scripts/python/.mypy_cache/3.11/git/compat.meta.json +0 -1
  300. machineconfig/scripts/python/.mypy_cache/3.11/git/config.data.json +0 -1
  301. machineconfig/scripts/python/.mypy_cache/3.11/git/config.meta.json +0 -1
  302. machineconfig/scripts/python/.mypy_cache/3.11/git/db.data.json +0 -1
  303. machineconfig/scripts/python/.mypy_cache/3.11/git/db.meta.json +0 -1
  304. machineconfig/scripts/python/.mypy_cache/3.11/git/diff.data.json +0 -1
  305. machineconfig/scripts/python/.mypy_cache/3.11/git/diff.meta.json +0 -1
  306. machineconfig/scripts/python/.mypy_cache/3.11/git/exc.data.json +0 -1
  307. machineconfig/scripts/python/.mypy_cache/3.11/git/exc.meta.json +0 -1
  308. machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.data.json +0 -1
  309. machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.meta.json +0 -1
  310. machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.data.json +0 -1
  311. machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.meta.json +0 -1
  312. machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.data.json +0 -1
  313. machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.meta.json +0 -1
  314. machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.data.json +0 -1
  315. machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.meta.json +0 -1
  316. machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.data.json +0 -1
  317. machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.meta.json +0 -1
  318. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.data.json +0 -1
  319. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.meta.json +0 -1
  320. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.data.json +0 -1
  321. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.meta.json +0 -1
  322. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.data.json +0 -1
  323. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.meta.json +0 -1
  324. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.data.json +0 -1
  325. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.meta.json +0 -1
  326. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.data.json +0 -1
  327. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.meta.json +0 -1
  328. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.data.json +0 -1
  329. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.meta.json +0 -1
  330. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.data.json +0 -1
  331. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.meta.json +0 -1
  332. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.data.json +0 -1
  333. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.meta.json +0 -1
  334. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.data.json +0 -1
  335. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.meta.json +0 -1
  336. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.data.json +0 -1
  337. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.meta.json +0 -1
  338. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.data.json +0 -1
  339. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.meta.json +0 -1
  340. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.data.json +0 -1
  341. machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.meta.json +0 -1
  342. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.data.json +0 -1
  343. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.meta.json +0 -1
  344. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.data.json +0 -1
  345. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.meta.json +0 -1
  346. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.data.json +0 -1
  347. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.meta.json +0 -1
  348. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.data.json +0 -1
  349. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.meta.json +0 -1
  350. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.data.json +0 -1
  351. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.meta.json +0 -1
  352. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.data.json +0 -1
  353. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.meta.json +0 -1
  354. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.data.json +0 -1
  355. machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.meta.json +0 -1
  356. machineconfig/scripts/python/.mypy_cache/3.11/git/remote.data.json +0 -1
  357. machineconfig/scripts/python/.mypy_cache/3.11/git/remote.meta.json +0 -1
  358. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.data.json +0 -1
  359. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.meta.json +0 -1
  360. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.data.json +0 -1
  361. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.meta.json +0 -1
  362. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.data.json +0 -1
  363. machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.meta.json +0 -1
  364. machineconfig/scripts/python/.mypy_cache/3.11/git/types.data.json +0 -1
  365. machineconfig/scripts/python/.mypy_cache/3.11/git/types.meta.json +0 -1
  366. machineconfig/scripts/python/.mypy_cache/3.11/git/util.data.json +0 -1
  367. machineconfig/scripts/python/.mypy_cache/3.11/git/util.meta.json +0 -1
  368. machineconfig/scripts/python/.mypy_cache/3.11/glob.data.json +0 -1
  369. machineconfig/scripts/python/.mypy_cache/3.11/glob.meta.json +0 -1
  370. machineconfig/scripts/python/.mypy_cache/3.11/gzip.data.json +0 -1
  371. machineconfig/scripts/python/.mypy_cache/3.11/gzip.meta.json +0 -1
  372. machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.data.json +0 -1
  373. machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.meta.json +0 -1
  374. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.data.json +0 -1
  375. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.meta.json +0 -1
  376. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.data.json +0 -1
  377. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.meta.json +0 -1
  378. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.data.json +0 -1
  379. machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.meta.json +0 -1
  380. machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.data.json +0 -1
  381. machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.meta.json +0 -1
  382. machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.data.json +0 -1
  383. machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.meta.json +0 -1
  384. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.data.json +0 -1
  385. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.meta.json +0 -1
  386. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.data.json +0 -1
  387. machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.meta.json +0 -1
  388. machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.data.json +0 -1
  389. machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.meta.json +0 -1
  390. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.data.json +0 -1
  391. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.meta.json +0 -1
  392. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.data.json +0 -1
  393. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.meta.json +0 -1
  394. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.data.json +0 -1
  395. machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.meta.json +0 -1
  396. machineconfig/scripts/python/.mypy_cache/3.11/inspect.data.json +0 -1
  397. machineconfig/scripts/python/.mypy_cache/3.11/inspect.meta.json +0 -1
  398. machineconfig/scripts/python/.mypy_cache/3.11/io.data.json +0 -1
  399. machineconfig/scripts/python/.mypy_cache/3.11/io.meta.json +0 -1
  400. machineconfig/scripts/python/.mypy_cache/3.11/itertools.data.json +0 -1
  401. machineconfig/scripts/python/.mypy_cache/3.11/itertools.meta.json +0 -1
  402. machineconfig/scripts/python/.mypy_cache/3.11/locale.data.json +0 -1
  403. machineconfig/scripts/python/.mypy_cache/3.11/locale.meta.json +0 -1
  404. machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.data.json +0 -1
  405. machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.meta.json +0 -1
  406. machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.data.json +0 -1
  407. machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.meta.json +0 -1
  408. machineconfig/scripts/python/.mypy_cache/3.11/mmap.data.json +0 -1
  409. machineconfig/scripts/python/.mypy_cache/3.11/mmap.meta.json +0 -1
  410. machineconfig/scripts/python/.mypy_cache/3.11/numbers.data.json +0 -1
  411. machineconfig/scripts/python/.mypy_cache/3.11/numbers.meta.json +0 -1
  412. machineconfig/scripts/python/.mypy_cache/3.11/opcode.data.json +0 -1
  413. machineconfig/scripts/python/.mypy_cache/3.11/opcode.meta.json +0 -1
  414. machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.data.json +0 -1
  415. machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.meta.json +0 -1
  416. machineconfig/scripts/python/.mypy_cache/3.11/os/path.data.json +0 -1
  417. machineconfig/scripts/python/.mypy_cache/3.11/os/path.meta.json +0 -1
  418. machineconfig/scripts/python/.mypy_cache/3.11/pathlib.data.json +0 -1
  419. machineconfig/scripts/python/.mypy_cache/3.11/pathlib.meta.json +0 -1
  420. machineconfig/scripts/python/.mypy_cache/3.11/platform.data.json +0 -1
  421. machineconfig/scripts/python/.mypy_cache/3.11/platform.meta.json +0 -1
  422. machineconfig/scripts/python/.mypy_cache/3.11/posixpath.data.json +0 -1
  423. machineconfig/scripts/python/.mypy_cache/3.11/posixpath.meta.json +0 -1
  424. machineconfig/scripts/python/.mypy_cache/3.11/re.data.json +0 -1
  425. machineconfig/scripts/python/.mypy_cache/3.11/re.meta.json +0 -1
  426. machineconfig/scripts/python/.mypy_cache/3.11/resource.data.json +0 -1
  427. machineconfig/scripts/python/.mypy_cache/3.11/resource.meta.json +0 -1
  428. machineconfig/scripts/python/.mypy_cache/3.11/shlex.data.json +0 -1
  429. machineconfig/scripts/python/.mypy_cache/3.11/shlex.meta.json +0 -1
  430. machineconfig/scripts/python/.mypy_cache/3.11/shutil.data.json +0 -1
  431. machineconfig/scripts/python/.mypy_cache/3.11/shutil.meta.json +0 -1
  432. machineconfig/scripts/python/.mypy_cache/3.11/signal.data.json +0 -1
  433. machineconfig/scripts/python/.mypy_cache/3.11/signal.meta.json +0 -1
  434. machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.data.json +0 -1
  435. machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.meta.json +0 -1
  436. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.data.json +0 -1
  437. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.meta.json +0 -1
  438. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.data.json +0 -1
  439. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.meta.json +0 -1
  440. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.data.json +0 -1
  441. machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.meta.json +0 -1
  442. machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.data.json +0 -1
  443. machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.meta.json +0 -1
  444. machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.data.json +0 -1
  445. machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.meta.json +0 -1
  446. machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.data.json +0 -1
  447. machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.meta.json +0 -1
  448. machineconfig/scripts/python/.mypy_cache/3.11/stat.data.json +0 -1
  449. machineconfig/scripts/python/.mypy_cache/3.11/stat.meta.json +0 -1
  450. machineconfig/scripts/python/.mypy_cache/3.11/string.data.json +0 -1
  451. machineconfig/scripts/python/.mypy_cache/3.11/string.meta.json +0 -1
  452. machineconfig/scripts/python/.mypy_cache/3.11/struct.data.json +0 -1
  453. machineconfig/scripts/python/.mypy_cache/3.11/struct.meta.json +0 -1
  454. machineconfig/scripts/python/.mypy_cache/3.11/subprocess.data.json +0 -1
  455. machineconfig/scripts/python/.mypy_cache/3.11/subprocess.meta.json +0 -1
  456. machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.data.json +0 -1
  457. machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.meta.json +0 -1
  458. machineconfig/scripts/python/.mypy_cache/3.11/tarfile.data.json +0 -1
  459. machineconfig/scripts/python/.mypy_cache/3.11/tarfile.meta.json +0 -1
  460. machineconfig/scripts/python/.mypy_cache/3.11/tempfile.data.json +0 -1
  461. machineconfig/scripts/python/.mypy_cache/3.11/tempfile.meta.json +0 -1
  462. machineconfig/scripts/python/.mypy_cache/3.11/textwrap.data.json +0 -1
  463. machineconfig/scripts/python/.mypy_cache/3.11/textwrap.meta.json +0 -1
  464. machineconfig/scripts/python/.mypy_cache/3.11/threading.data.json +0 -1
  465. machineconfig/scripts/python/.mypy_cache/3.11/threading.meta.json +0 -1
  466. machineconfig/scripts/python/.mypy_cache/3.11/time.data.json +0 -1
  467. machineconfig/scripts/python/.mypy_cache/3.11/time.meta.json +0 -1
  468. machineconfig/scripts/python/.mypy_cache/3.11/types.data.json +0 -1
  469. machineconfig/scripts/python/.mypy_cache/3.11/types.meta.json +0 -1
  470. machineconfig/scripts/python/.mypy_cache/3.11/typing.data.json +0 -1
  471. machineconfig/scripts/python/.mypy_cache/3.11/typing.meta.json +0 -1
  472. machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.data.json +0 -1
  473. machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.meta.json +0 -1
  474. machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.data.json +0 -1
  475. machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.meta.json +0 -1
  476. machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.data.json +0 -1
  477. machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.meta.json +0 -1
  478. machineconfig/scripts/python/.mypy_cache/3.11/uuid.data.json +0 -1
  479. machineconfig/scripts/python/.mypy_cache/3.11/uuid.meta.json +0 -1
  480. machineconfig/scripts/python/.mypy_cache/3.11/warnings.data.json +0 -1
  481. machineconfig/scripts/python/.mypy_cache/3.11/warnings.meta.json +0 -1
  482. machineconfig/scripts/python/.mypy_cache/3.11/weakref.data.json +0 -1
  483. machineconfig/scripts/python/.mypy_cache/3.11/weakref.meta.json +0 -1
  484. machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.data.json +0 -1
  485. machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.meta.json +0 -1
  486. machineconfig/scripts/python/.mypy_cache/3.11/zlib.data.json +0 -1
  487. machineconfig/scripts/python/.mypy_cache/3.11/zlib.meta.json +0 -1
  488. machineconfig/scripts/python/.mypy_cache/CACHEDIR.TAG +0 -3
  489. machineconfig/scripts/python/__pycache__/cloud_repo_sync.cpython-311.pyc +0 -0
  490. machineconfig/scripts/python/__pycache__/gh_models.cpython-311.pyc +0 -0
  491. machineconfig/scripts/python/__pycache__/url2md.cpython-311.pyc +0 -0
  492. machineconfig/scripts/python/__pycache__/viewer.cpython-311.pyc +0 -0
  493. machineconfig/scripts/python/__pycache__/vscode_api.cpython-311.pyc +0 -0
  494. machineconfig/settings/__pycache__/__init__.cpython-311.pyc +0 -0
  495. machineconfig/settings/linters/.ruff_cache/.gitignore +0 -2
  496. machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +0 -1
  497. machineconfig/settings/shells/ipy/profiles/default/__pycache__/__init__.cpython-311.pyc +0 -0
  498. machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/__init__.cpython-311.pyc +0 -0
  499. machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/playext.cpython-311.pyc +0 -0
  500. machineconfig/utils/ve_utils/ve1.py +0 -111
  501. machineconfig/utils/ve_utils/ve2.py +0 -155
  502. machineconfig-1.95.dist-info/RECORD +0 -712
  503. {machineconfig-1.95.dist-info → machineconfig-1.97.dist-info}/WHEEL +0 -0
  504. {machineconfig-1.95.dist-info → machineconfig-1.97.dist-info}/top_level.txt +0 -0
@@ -3,21 +3,24 @@ croshell
3
3
  """
4
4
 
5
5
  import argparse
6
- from crocodile.file_management import P
7
- from crocodile.core_modules.core_1 import randstr
6
+ from machineconfig.utils.path_reduced import P as PathExtended
7
+ from machineconfig.utils.utils2 import randstr
8
8
  from machineconfig.utils.utils import PROGRAM_PATH, display_options
9
- from machineconfig.utils.ve_utils.ve1 import get_ve_name_and_ipython_profile, get_ve_activate_line
9
+ from machineconfig.utils.ve import get_ve_path_and_ipython_profile, get_ve_activate_line
10
10
  from typing import Optional
11
11
  from rich.console import Console
12
12
  from rich.panel import Panel
13
13
  from rich.text import Text # Added import for rich.text
14
+ # from machineconfig.utils.utils2 import pprint
14
15
 
15
16
  console = Console()
16
17
 
17
18
 
18
19
  def add_print_header_pycode(path: str, title: str):
19
20
  return f"""
20
- pycode = P(r'{path}').read_text(encoding="utf-8")
21
+ # from machineconfig.utils.path_reduced import P as PathExtended
22
+ from crocodile.file_management import P as PathExtended
23
+ pycode = PathExtended(r'{path}').read_text(encoding="utf-8")
21
24
  pycode = pycode.split("except Exception: print(pycode)")[2]
22
25
 
23
26
  try:
@@ -40,13 +43,13 @@ from rich.panel import Panel
40
43
  from rich.text import Text
41
44
  from rich.console import Console
42
45
  console = Console()
43
- p = P(r'{path}').absolute()
46
+ p = PathExtended(r'{path}').absolute()
44
47
  try:
45
48
  dat = p.readit()
46
49
  if isinstance(dat, dict):
47
50
  panel_title = f"📄 File Data: {{p.name}}"
48
51
  console.print(Panel(Text(str(dat), justify="left"), title=panel_title, expand=False))
49
- Struct(dat).print(as_config=True, title=p.name)
52
+ pprint(dat, PathExtended.name)
50
53
  else:
51
54
  panel_title = f"📄 Successfully read the file: {{p.name}}"
52
55
  console.print(Panel(Text(str(dat), justify="left"), title=panel_title, expand=False))
@@ -56,7 +59,7 @@ except Exception as e:
56
59
  """
57
60
 
58
61
 
59
- def get_read_pyfile_pycode(path: P, as_module: bool, cmd: str=""):
62
+ def get_read_pyfile_pycode(path: PathExtended, as_module: bool, cmd: str=""):
60
63
  if as_module: pycode = fr"""
61
64
  import sys
62
65
  sys.path.append(r'{path.parent}')
@@ -64,7 +67,7 @@ from {path.stem} import *
64
67
  {cmd}
65
68
  """
66
69
  else: pycode = f"""
67
- __file__ = P(r'{path}')
70
+ __file__ = PathExtended(r'{path}')
68
71
  {path.read_text(encoding="utf-8")}
69
72
  """
70
73
  return pycode
@@ -98,7 +101,7 @@ def build_parser():
98
101
  interactivity = '' if args.nonInteratctive else '-i'
99
102
  interpreter = 'python' if args.python else 'ipython'
100
103
  ipython_profile: Optional[str] = args.profile
101
- file = P.cwd() # initialization value, could be modified according to args.
104
+ file = PathExtended.cwd() # initialization value, could be modified according to args.
102
105
 
103
106
  if args.cmd != "":
104
107
  text = "🖥️ Executing command from CLI argument"
@@ -109,15 +112,15 @@ def build_parser():
109
112
  elif args.fzf:
110
113
  text = "🔍 Searching for Python files..."
111
114
  console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
112
- options = P.cwd().search("*.py", r=True).apply(str).list
115
+ options = PathExtended.cwd().search("*.py", r=True).apply(str).list
113
116
  file = display_options(msg="Choose a python file to run", options=options, fzf=True, multi=False, )
114
117
  assert isinstance(file, str)
115
- program = P(file).read_text(encoding='utf-8')
116
- text = f"📄 Selected file: {P(file).name}"
118
+ program = PathExtended(file).read_text(encoding='utf-8')
119
+ text = f"📄 Selected file: {PathExtended(file).name}"
117
120
  console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
118
121
 
119
122
  elif args.file != "":
120
- file = P(args.file.lstrip()).expanduser().absolute()
123
+ file = PathExtended(args.file.lstrip()).expanduser().absolute()
121
124
  program = get_read_pyfile_pycode(file, as_module=args.module, cmd=args.cmd)
122
125
  text1 = f"📄 Loading file: {file.name}"
123
126
  text2 = f"🔄 Mode: {'Module' if args.module else 'Script'}"
@@ -136,7 +139,7 @@ streamlit run {py_file_path}
136
139
  """
137
140
  PROGRAM_PATH.write_text(data=final_program)
138
141
  return None
139
- file = P(str(args.read).lstrip()).expanduser().absolute()
142
+ file = PathExtended(str(args.read).lstrip()).expanduser().absolute()
140
143
  program = get_read_data_pycode(str(file))
141
144
  text = f"📄 Reading data from: {file.name}"
142
145
  console.print(Panel(text, title="[bold blue]Info[/bold blue]"))
@@ -157,7 +160,8 @@ print_header()
157
160
  print_logo(logo="crocodile")
158
161
  """
159
162
 
160
- pyfile = P.tmp().joinpath(f"tmp_scripts/python/croshell/{randstr()}.py").create(parents_only=True)
163
+ pyfile = PathExtended.tmp().joinpath(f"tmp_scripts/python/croshell/{randstr()}.py")
164
+ pyfile.parent.mkdir(parents=True, exist_ok=True)
161
165
 
162
166
  if args.read != "": title = "Reading Data"
163
167
  elif args.file != "": title = "Running Python File"
@@ -166,15 +170,14 @@ print_logo(logo="crocodile")
166
170
 
167
171
  pyfile.write_text(total_program, encoding='utf-8')
168
172
 
169
- ve_profile_suggested: Optional[str] = None
170
- if ipython_profile is None:
171
- ve_profile_suggested, ipython_profile = get_ve_name_and_ipython_profile(P(file))
172
- ipython_profile = ipython_profile if ipython_profile is not None else "default"
173
- ve_activateion_line = get_ve_activate_line(ve_name=args.ve or ve_profile_suggested, a_path=P.cwd())
173
+ ve_root_from_file, ipython_profile = get_ve_path_and_ipython_profile(PathExtended(file))
174
+ ipython_profile = ipython_profile if ipython_profile is not None else "default"
175
+ # ve_activateion_line = get_ve_activate_line(ve_name=args.ve or ve_profile_suggested, a_path=str(PathExtended.cwd()))
176
+ activate_ve_line = get_ve_activate_line(ve_root=args.ve or ve_root_from_file or "$HOME/venvs/ve")
174
177
  final_program = f"""
175
178
  #!/bin/bash
176
179
 
177
- {ve_activateion_line}
180
+ {activate_ve_line}
178
181
 
179
182
  """
180
183
  if args.jupyter:
@@ -17,7 +17,6 @@ BOX_WIDTH = 150 # width for box drawing
17
17
  class Options(Enum):
18
18
  update = '🔄 UPDATE essential repos'
19
19
  cli_install = '⚙️ DEVAPPS install'
20
- ve = '🐍 VE install'
21
20
  sym_path_shell = '🔗 SYMLINKS, PATH & SHELL PROFILE'
22
21
  sym_new = '🆕 SYMLINKS new'
23
22
  ssh_add_pubkey = '🔑 SSH add pub key to this machine'
@@ -43,25 +42,25 @@ def args_parser():
43
42
  main(which=args.which)
44
43
 
45
44
 
46
- def display_title(title):
45
+ def display_title(title: str) -> None:
47
46
  console.print(Panel(title, box=box.DOUBLE_EDGE, title_align="left")) # Replace print with Panel
48
47
 
49
- def display_task_title(title):
48
+ def display_task_title(title: str) -> None:
50
49
  console.print(Panel(title, box=box.ROUNDED, title_align="left")) # Replace print with Panel
51
50
 
52
- def display_task_status(status):
51
+ def display_task_status(status: str) -> None:
53
52
  console.print(Panel(status, box=box.ROUNDED, title_align="left")) # Replace print with Panel
54
53
 
55
- def display_task_result(result):
54
+ def display_task_result(result: str) -> None:
56
55
  console.print(Panel(result, box=box.ROUNDED, title_align="left")) # Replace print with Panel
57
56
 
58
- def display_task_error(error):
57
+ def display_task_error(error: str) -> None:
59
58
  console.print(Panel(error, box=box.ROUNDED, border_style="red", title_align="left")) # Replace print with Panel
60
59
 
61
- def display_task_warning(warning):
60
+ def display_task_warning(warning: str) -> None:
62
61
  console.print(Panel(warning, box=box.ROUNDED, border_style="yellow", title_align="left")) # Replace print with Panel
63
62
 
64
- def display_task_success(success):
63
+ def display_task_success(success: str) -> None:
65
64
  console.print(Panel(success, box=box.ROUNDED, border_style="green", title_align="left")) # Replace print with Panel
66
65
 
67
66
 
@@ -85,11 +84,6 @@ def main(which: Optional[str] = None):
85
84
  import machineconfig.scripts.python.devops_update_repos as helper
86
85
  program = helper.main()
87
86
 
88
- elif choice_key == Options.ve.value:
89
- console.print(Panel("🐍 Setting up virtual environment...", width=BOX_WIDTH, border_style="blue"))
90
- from machineconfig.utils.ve import get_ve_install_script
91
- program = get_ve_install_script()
92
-
93
87
  elif choice_key == Options.cli_install.value:
94
88
  console.print(Panel("⚙️ Installing development applications...", width=BOX_WIDTH, border_style="blue"))
95
89
  import machineconfig.scripts.python.devops_devapps_install as helper
@@ -142,13 +136,14 @@ def main(which: Optional[str] = None):
142
136
 
143
137
  elif choice_key == Options.scheduler.value:
144
138
  console.print(Panel("⏰ Setting up scheduler...", width=BOX_WIDTH, border_style="blue"))
145
- from machineconfig.scripts.python.scheduler import main as helper
146
- program = helper()
139
+ # from machineconfig.scripts.python.scheduler import main as helper
140
+ # program = helper()
141
+ program = ""
147
142
 
148
143
  elif choice_key == Options.dot_files_sync.value:
149
144
  console.print(Panel("🔗 Synchronizing dotfiles...", width=BOX_WIDTH, border_style="blue"))
150
- from machineconfig.scripts.python.cloud_repo_sync import main as helper, P
151
- program = helper(cloud=None, path=str(P.home() / "dotfiles"), pwd=None, action="ask")
145
+ from machineconfig.scripts.python.cloud_repo_sync import main as helper, PathExtended
146
+ program = helper(cloud=None, path=str(PathExtended.home() / "dotfiles"), pwd=None, action="ask")
152
147
 
153
148
  else:
154
149
  console.print(Panel("❌ ERROR: Invalid choice", title_align="left", border_style="red", width=BOX_WIDTH))
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
  # from platform import system
6
- from crocodile.file_management import P
6
+ from machineconfig.utils.path_reduced import P as PathExtended, modify_text
7
7
  from machineconfig.utils.options import display_options
8
8
  from rich.panel import Panel
9
9
  from rich.text import Text
@@ -17,7 +17,7 @@ def main():
17
17
 
18
18
  print(Panel("🔍 Searching for existing SSH keys...", expand=False))
19
19
 
20
- private_keys = P.home().joinpath(".ssh").search("*.pub").apply(lambda x: x.with_name(x.stem)).filter(lambda x: x.exists())
20
+ private_keys = PathExtended.home().joinpath(".ssh").search("*.pub").apply(lambda x: x.with_name(x.stem)).filter(lambda x: x.exists())
21
21
 
22
22
  if private_keys:
23
23
  print(Panel(f"✅ Found {len(private_keys)} SSH private key(s)", expand=False))
@@ -28,17 +28,17 @@ def main():
28
28
 
29
29
  if choice == "I have the path to the key file":
30
30
  print(Panel("📄 Please enter the path to your private key file", expand=False))
31
- path_to_key = P(input("📋 Input path here: ")).expanduser().absolute()
31
+ path_to_key = PathExtended(input("📋 Input path here: ")).expanduser().absolute()
32
32
  print(Panel(f"📂 Using key from custom path: {path_to_key}", expand=False))
33
33
 
34
34
  elif choice == "I want to paste the key itself":
35
35
  print(Panel("📋 Please provide a filename and paste the private key content", expand=False))
36
36
  key_filename = input("📝 File name (default: my_pasted_key): ") or "my_pasted_key"
37
- path_to_key = P.home().joinpath(f".ssh/{key_filename}").write_text(input("🔑 Paste the private key here: "))
37
+ path_to_key = PathExtended.home().joinpath(f".ssh/{key_filename}").write_text(input("🔑 Paste the private key here: "))
38
38
  print(Panel(f"💾 Key saved to: {path_to_key}", expand=False))
39
39
 
40
40
  elif isinstance(choice, str):
41
- path_to_key = P(choice)
41
+ path_to_key = PathExtended(choice)
42
42
  print(Panel(f"🔑 Using selected key: {path_to_key.name}", expand=False))
43
43
 
44
44
  else:
@@ -47,18 +47,40 @@ def main():
47
47
  raise NotImplementedError(f"Choice {choice} not supported")
48
48
 
49
49
  txt = f"IdentityFile {path_to_key.collapseuser().as_posix()}" # adds this id for all connections, no host specified.
50
- config_path = P.home().joinpath(".ssh/config")
50
+ config_path = PathExtended.home().joinpath(".ssh/config")
51
51
 
52
52
  print(Panel("📝 Updating SSH configuration...", expand=False))
53
53
 
54
+ # Inline the previous P.modify_text behavior (now deprecated):
55
+ # - If file doesn't exist, seed content with txt_search
56
+ # - Then run modify_text to replace/append accordingly and write back
54
57
  if config_path.exists():
55
- config_path.modify_text(txt_search=txt, txt_alt=txt, replace_line=True, notfound_append=True, prepend=True) # note that Identity line must come on top of config file otherwise it won't work, hence `prepend=True`
58
+ current = config_path.read_text()
56
59
  print(Panel("✏️ Updated existing SSH config file", expand=False))
57
60
  else:
58
- config_path.write_text(txt)
61
+ current = txt
59
62
  print(Panel("📄 Created new SSH config file", expand=False))
60
-
61
- program = f"""echo '{Panel(Text("✅ SSH IDENTITY CONFIGURATION COMPLETE\nIdentity added to SSH config file\nConsider reloading the SSH config to apply changes", justify="center"), expand=False, border_style="green")}' """
63
+ new_content = modify_text(
64
+ txt_raw=current,
65
+ txt_search=txt,
66
+ txt_alt=txt,
67
+ replace_line=True,
68
+ notfound_append=True,
69
+ prepend=True,
70
+ )
71
+ config_path.write_text(new_content)
72
+
73
+ panel_complete = Panel(
74
+ Text(
75
+ "✅ SSH IDENTITY CONFIGURATION COMPLETE\n"
76
+ "Identity added to SSH config file\n"
77
+ "Consider reloading the SSH config to apply changes",
78
+ justify="center"
79
+ ),
80
+ expand=False,
81
+ border_style="green"
82
+ )
83
+ program = f"echo '{panel_complete}'"
62
84
 
63
85
  success_message = f"🎉 CONFIGURATION SUCCESSFUL\nIdentity added: {path_to_key.name}\nConfig file: {config_path}"
64
86
  print(Panel(Text(success_message, justify="center"), expand=False, border_style="green"))
@@ -4,7 +4,7 @@
4
4
 
5
5
  from platform import system
6
6
  from machineconfig.utils.utils import LIBRARY_ROOT, display_options
7
- from crocodile.file_management import P
7
+ from machineconfig.utils.path_reduced import P as PathExtended
8
8
  from rich.console import Console
9
9
  from rich.panel import Panel
10
10
  from rich import box # Import box
@@ -13,14 +13,14 @@ from rich import box # Import box
13
13
  console = Console()
14
14
 
15
15
 
16
- def get_add_ssh_key_script(path_to_key: P):
16
+ def get_add_ssh_key_script(path_to_key: PathExtended):
17
17
  console.print(Panel("🔑 SSH KEY CONFIGURATION", title="[bold blue]SSH Setup[/bold blue]"))
18
18
 
19
19
  if system() == "Linux":
20
- authorized_keys = P.home().joinpath(".ssh/authorized_keys")
20
+ authorized_keys = PathExtended.home().joinpath(".ssh/authorized_keys")
21
21
  console.print(Panel(f"🐧 Linux SSH configuration\n📄 Authorized keys file: {authorized_keys}", title="[bold blue]System Info[/bold blue]"))
22
22
  elif system() == "Windows":
23
- authorized_keys = P("C:/ProgramData/ssh/administrators_authorized_keys")
23
+ authorized_keys = PathExtended("C:/ProgramData/ssh/administrators_authorized_keys")
24
24
  console.print(Panel(f"🪟 Windows SSH configuration\n📄 Authorized keys file: {authorized_keys}", title="[bold blue]System Info[/bold blue]"))
25
25
  else:
26
26
  console.print(Panel("❌ ERROR: Unsupported operating system\nOnly Linux and Windows are supported", title="[bold red]Error[/bold red]"))
@@ -53,7 +53,7 @@ def get_add_ssh_key_script(path_to_key: P):
53
53
  program = f"cat {path_to_key} > ~/.ssh/authorized_keys"
54
54
  else:
55
55
  program_path = LIBRARY_ROOT.joinpath("setup_windows/openssh-server_add-sshkey.ps1")
56
- program = P(program_path).expanduser().read_text().replace('$sshfile=""', f'$sshfile="{path_to_key}"')
56
+ program = PathExtended(program_path).expanduser().read_text().replace('$sshfile=""', f'$sshfile="{path_to_key}"')
57
57
  console.print(Panel("🔧 Configured PowerShell script for Windows\n📝 Set key path in script", title="[bold blue]Configuration[/bold blue]"))
58
58
 
59
59
  if system() == "Linux":
@@ -73,7 +73,7 @@ def main():
73
73
 
74
74
  console.print(Panel("🔍 Searching for public keys...", title="[bold blue]SSH Setup[/bold blue]", border_style="blue"))
75
75
 
76
- pub_keys = P.home().joinpath(".ssh").search("*.pub")
76
+ pub_keys = PathExtended.home().joinpath(".ssh").search("*.pub")
77
77
 
78
78
  if pub_keys:
79
79
  console.print(Panel(f"✅ Found {len(pub_keys)} public key(s)", title="[bold green]Status[/bold green]", border_style="green"))
@@ -93,21 +93,21 @@ def main():
93
93
 
94
94
  elif res == i_have_path_option:
95
95
  console.print(Panel("📂 Please provide the path to your public key", title="[bold blue]Input Required[/bold blue]", border_style="blue"))
96
- key_path = P(input("📋 Path: ")).expanduser().absolute()
96
+ key_path = PathExtended(input("📋 Path: ")).expanduser().absolute()
97
97
  console.print(Panel(f"📄 Using key from path: {key_path}", title="[bold blue]Info[/bold blue]", border_style="blue"))
98
98
  program = get_add_ssh_key_script(key_path)
99
99
 
100
100
  elif res == i_paste_option:
101
101
  console.print(Panel("📋 Please provide a filename and paste the public key content", title="[bold blue]Input Required[/bold blue]", border_style="blue"))
102
102
  key_filename = input("📝 File name (default: my_pasted_key.pub): ") or "my_pasted_key.pub"
103
- key_path = P.home().joinpath(f".ssh/{key_filename}")
103
+ key_path = PathExtended.home().joinpath(f".ssh/{key_filename}")
104
104
  key_path.write_text(input("🔑 Paste the public key here: "))
105
105
  console.print(Panel(f"💾 Key saved to: {key_path}", title="[bold green]Success[/bold green]", border_style="green"))
106
106
  program = get_add_ssh_key_script(key_path)
107
107
 
108
108
  else:
109
- console.print(Panel(f"🔑 Using selected key: {P(res).name}", title="[bold blue]Info[/bold blue]", border_style="blue"))
110
- program = get_add_ssh_key_script(P(res))
109
+ console.print(Panel(f"🔑 Using selected key: {PathExtended(res).name}", title="[bold blue]Info[/bold blue]", border_style="blue"))
110
+ program = get_add_ssh_key_script(PathExtended(res))
111
111
 
112
112
  console.print(Panel("🚀 SSH KEY AUTHORIZATION READY\nRun the generated script to apply changes", box=box.DOUBLE_EDGE, title_align="left"))
113
113
 
@@ -2,7 +2,8 @@
2
2
  """
3
3
 
4
4
  # import subprocess
5
- from crocodile.file_management import Read, P
5
+ from machineconfig.utils.path_reduced import P as PathExtended
6
+ from machineconfig.utils.utils2 import read_ini, read_toml
6
7
  from machineconfig.utils.utils import LIBRARY_ROOT, DEFAULTS_PATH, print_code, choose_cloud_interactively, choose_multiple_options
7
8
  from machineconfig.scripts.python.helpers.helpers2 import ES
8
9
  from platform import system
@@ -18,13 +19,13 @@ def main_backup_retrieve(direction: OPTIONS, which: Optional[str] = None):
18
19
  console = Console()
19
20
 
20
21
  try:
21
- cloud: str = Read.ini(DEFAULTS_PATH)['general']['rclone_config_name']
22
+ cloud: str = read_ini(DEFAULTS_PATH)['general']['rclone_config_name']
22
23
  console.print(Panel(f"⚠️ DEFAULT CLOUD CONFIGURATION\n🌥️ Using default cloud: {cloud}", title="[bold blue]Cloud Configuration[/bold blue]", border_style="blue"))
23
24
  except (FileNotFoundError, KeyError, IndexError):
24
25
  console.print(Panel("🔍 DEFAULT CLOUD NOT FOUND\n🔄 Please select a cloud configuration from the options below", title="[bold red]Error: Cloud Not Found[/bold red]", border_style="red"))
25
26
  cloud = choose_cloud_interactively()
26
27
 
27
- bu_file: dict[str, Any] = Read.toml(LIBRARY_ROOT.joinpath("profile/backup.toml"))
28
+ bu_file: dict[str, Any] = read_toml(LIBRARY_ROOT.joinpath("profile/backup.toml"))
28
29
 
29
30
  console.print(Panel(f"🧰 LOADING BACKUP CONFIGURATION\n📄 File: {LIBRARY_ROOT.joinpath('profile/backup.toml')}", title="[bold blue]Backup Configuration[/bold blue]", border_style="blue"))
30
31
 
@@ -39,7 +40,7 @@ def main_backup_retrieve(direction: OPTIONS, which: Optional[str] = None):
39
40
  console.print(Panel(f"🔍 SELECT {direction} ITEMS\n📋 Choose which configuration entries to process", title="[bold blue]Select Items[/bold blue]", border_style="blue"))
40
41
  choices = choose_multiple_options(msg=f"WHICH FILE of the following do you want to {direction}?", options=['all'] + list(bu_file.keys()))
41
42
  else:
42
- choices = which.split(",") if isinstance(which, str) else which
43
+ choices = which.split(",") if which else []
43
44
  console.print(Panel(f"🔖 PRE-SELECTED ITEMS\n📝 Using: {', '.join(choices)}", title="[bold blue]Pre-selected Items[/bold blue]", border_style="blue"))
44
45
 
45
46
  if "all" in choices:
@@ -56,12 +57,12 @@ def main_backup_retrieve(direction: OPTIONS, which: Optional[str] = None):
56
57
  flags += 'e' if item['encrypt'] == 'True' else ''
57
58
  flags += 'r' if item['rel2home'] == 'True' else ''
58
59
  flags += 'o' if system().lower() in item_name else ''
59
- console.print(Panel(f"📦 PROCESSING: {item_name}\n📂 Path: {P(item['path']).as_posix()}\n🏳️ Flags: {flags or 'None'}", title=f"[bold blue]Processing Item: {item_name}[/bold blue]", border_style="blue"))
60
+ console.print(Panel(f"📦 PROCESSING: {item_name}\n📂 Path: {PathExtended(item['path']).as_posix()}\n🏳️ Flags: {flags or 'None'}", title=f"[bold blue]Processing Item: {item_name}[/bold blue]", border_style="blue"))
60
61
  if flags: flags = "-" + flags
61
62
  if direction == "BACKUP":
62
- program += f"""\ncloud_copy "{P(item['path']).as_posix()}" $cloud {flags}\n"""
63
+ program += f"""\ncloud_copy "{PathExtended(item['path']).as_posix()}" $cloud {flags}\n"""
63
64
  elif direction == "RETRIEVE":
64
- program += f"""\ncloud_copy $cloud "{P(item['path']).as_posix()}" {flags}\n"""
65
+ program += f"""\ncloud_copy $cloud "{PathExtended(item['path']).as_posix()}" {flags}\n"""
65
66
  else:
66
67
  console.print(Panel("❌ ERROR: INVALID DIRECTION\n⚠️ Direction must be either \"BACKUP\" or \"RETRIEVE\"", title="[bold red]Error: Invalid Direction[/bold red]", border_style="red"))
67
68
  raise RuntimeError(f"Unknown direction: {direction}")
@@ -83,7 +84,7 @@ def main(direction: OPTIONS, which: Optional[str] = None):
83
84
 
84
85
  console.print(Panel("💾 GENERATING SHELL SCRIPT\n📄 Filename: backup_retrieve.sh", title="[bold blue]Shell Script Generation[/bold blue]", border_style="blue"))
85
86
 
86
- write_shell_script_to_default_program_path(program=code, desc="backup_retrieve.sh")
87
+ write_shell_script_to_default_program_path(program=code, desc="backup_retrieve.sh", preserve_cwd=True, display=True, execute=False)
87
88
 
88
89
 
89
90
  if __name__ == "__main__":
@@ -4,7 +4,6 @@
4
4
  # import subprocess
5
5
  from machineconfig.utils.installer_utils.installer_class import Installer
6
6
  from tqdm import tqdm
7
- from crocodile.core import List as L
8
7
  from machineconfig.utils.utils import LIBRARY_ROOT, choose_multiple_options
9
8
  from machineconfig.utils.installer import get_installers, install_all, get_all_dicts
10
9
  from platform import system
@@ -67,7 +66,7 @@ def get_programs_by_category(program_name: WHICH_CAT):
67
66
  installers_ = get_installers(dev=False, system=system())
68
67
  if program_name == "EssentialsAndOthers":
69
68
  installers_ += get_installers(dev=True, system=system())
70
- install_all(installers=L(installers_))
69
+ install_all(installers=installers_)
71
70
  program = ""
72
71
 
73
72
  case "SystemInstallers":
@@ -107,10 +106,11 @@ def get_programs_by_category(program_name: WHICH_CAT):
107
106
  # sub_program = installers[idx].install_robust(version=None) # finish the task
108
107
 
109
108
  case "PrecheckedCloudInstaller":
110
- from machineconfig.jobs.python.check_installations import PrecheckedCloudInstaller
111
- ci = PrecheckedCloudInstaller()
112
- ci.download_safe_apps(name="AllEssentials")
113
- program = ""
109
+ # from machineconfig.jobs.python.check_installations import PrecheckedCloudInstaller
110
+ # ci = PrecheckedCloudInstaller()
111
+ # ci.download_safe_apps(name="AllEssentials")
112
+ # program = ""
113
+ raise NotImplementedError("PrecheckedCloudInstaller is not implemented yet.")
114
114
  return program
115
115
 
116
116
 
@@ -1,8 +1,9 @@
1
1
  """Update repositories with fancy output
2
2
  """
3
3
 
4
- from crocodile.file_management import P, Read
4
+ from machineconfig.utils.path_reduced import P as PathExtended
5
5
  from machineconfig.utils.utils import DEFAULTS_PATH
6
+ from machineconfig.utils.utils2 import read_ini
6
7
  from platform import system
7
8
 
8
9
 
@@ -13,7 +14,7 @@ def main(verbose: bool=True) -> str:
13
14
  _ = verbose
14
15
  repos: list[str] = ["~/code/crocodile", "~/code/machineconfig", ]
15
16
  try:
16
- tmp = Read.ini(DEFAULTS_PATH)['general']['repos'].split(",")
17
+ tmp = read_ini(DEFAULTS_PATH)['general']['repos'].split(",")
17
18
  if tmp[-1] == "": tmp = tmp[:-1]
18
19
  repos += tmp
19
20
  except (FileNotFoundError, KeyError, IndexError):
@@ -37,7 +38,7 @@ def main(verbose: bool=True) -> str:
37
38
  for a_package_path in repos:
38
39
  try:
39
40
  import git
40
- repo = git.Repo(str(P(a_package_path).expanduser()), search_parent_directories=True)
41
+ repo = git.Repo(str(PathExtended(a_package_path).expanduser()), search_parent_directories=True)
41
42
  repos_objs.append(repo)
42
43
  except Exception as ex:
43
44
  print(f"""
@@ -2,7 +2,7 @@
2
2
  """
3
3
 
4
4
 
5
- from crocodile.file_management import P
5
+ from machineconfig.utils.path_reduced import P as PathExtended
6
6
  from machineconfig.profile.create import symlink_func
7
7
  from machineconfig.utils.utils import LIBRARY_ROOT, REPO_ROOT
8
8
  import argparse
@@ -18,14 +18,17 @@ def main():
18
18
  parser.add_argument("-d", "--dest", help="destination folder", default="")
19
19
 
20
20
  args = parser.parse_args()
21
- orig_path = P(args.file).expanduser().absolute()
21
+ orig_path = PathExtended(args.file).expanduser().absolute()
22
22
  if args.dest == "":
23
- if "Local" in orig_path: junction = orig_path.split(at="Local", sep=-1)[1]
24
- elif "Roaming" in orig_path: junction = orig_path.split(at="Roaming", sep=-1)[1]
25
- elif ".config" in orig_path: junction = orig_path.split(at=".config", sep=-1)[1]
23
+ if "Local" in str(orig_path): junction = orig_path.split(at="Local", sep=-1)[1]
24
+ elif "Roaming" in str(orig_path): junction = orig_path.split(at="Roaming", sep=-1)[1]
25
+ elif ".config" in str(orig_path): junction = orig_path.split(at=".config", sep=-1)[1]
26
26
  else: junction = orig_path.rel2home()
27
27
  new_path = REPO_ROOT.joinpath(junction)
28
- else: new_path = P(args.dest).expanduser().absolute().create().joinpath(orig_path.name)
28
+ else:
29
+ dest_path = PathExtended(args.dest).expanduser().absolute()
30
+ dest_path.mkdir(parents=True, exist_ok=True)
31
+ new_path = dest_path.joinpath(orig_path.name)
29
32
 
30
33
  symlink_func(this=orig_path, to_this=new_path, prioritize_to_this=args.overwrite)
31
34
 
@@ -39,7 +42,7 @@ def main():
39
42
  📝 Edit configuration file: nano {LIBRARY_ROOT}/symlinks/mapper.toml
40
43
 
41
44
  [{new_path.parent.name}]
42
- {orig_path.trunk} = {{ this = '{orig_path.collapseuser().as_posix()}', to_this = '{new_path.collapseuser().as_posix()}' }}
45
+ {orig_path.name.split('.')[0]} = {{ this = '{orig_path.collapseuser().as_posix()}', to_this = '{new_path.collapseuser().as_posix()}' }}
43
46
  """)
44
47
 
45
48
 
@@ -0,0 +1,69 @@
1
+
2
+
3
+ from pathlib import Path
4
+ # from machineconfig.cluster.sessions_managers.zellij_local import run_zellij_layout
5
+ from machineconfig.cluster.sessions_managers.zellij_local_manager import ZellijLocalManager
6
+
7
+
8
+ def launch_agents(repo_root: Path, prompts: list[str]):
9
+ tab_config: dict[str, tuple[str, str]] = {}
10
+ for idx, a_prompt in enumerate(prompts):
11
+ tmp_file_path = repo_root.joinpath(f".ai/tmp_prompts/agent{idx}.txt")
12
+ tmp_file_path.parent.mkdir(parents=True, exist_ok=True)
13
+ Path(tmp_file_path).write_text(a_prompt)
14
+ tab_config[f"Agent{idx}"] = (str(repo_root), f"cursor-agent --print --output-format text < .ai/tmp_prompts/agent{idx}.txt")
15
+ if len(tab_config) > 15:
16
+ raise RuntimeError(f"Too many agents (#{len(tab_config)}), please cut them down to 15 or less")
17
+ print(f"Launching a template with #{len(tab_config)} agents")
18
+ return tab_config
19
+
20
+
21
+ def main():
22
+ repo_root = Path.cwd()
23
+ print(f"Operating @ {repo_root}")
24
+ file_path = input("Enter path to target file [press Enter to generate it from searching]: ")
25
+ if file_path == "":
26
+ keyword = input("Enter keyword to search recursively for all .py files containing it. ")
27
+ py_files = list(repo_root.rglob("*.py"))
28
+ matching_files = [
29
+ f for f in py_files
30
+ if keyword in f.read_text(encoding='utf-8', errors='ignore')
31
+ ]
32
+ if not matching_files:
33
+ print(f"💥 No .py files found containing keyword: {keyword}")
34
+ return
35
+ print(f"Found {len(matching_files)} .py files containing keyword: {keyword}")
36
+ file_path = repo_root.joinpath(".ai", "target_file.txt")
37
+ file_path.parent.mkdir(parents=True, exist_ok=True)
38
+ file_path.write_text("\n".join(str(f) for f in matching_files), encoding='utf-8')
39
+ separator = "\n"
40
+ else:
41
+ separator = input("Enter separator [\\n]: ") or "\n"
42
+
43
+ err_file = Path(file_path).expanduser().absolute().read_text(encoding='utf-8', errors='ignore')
44
+ prefix = input("Enter prefix prompt: ")
45
+ prompts = [item for item in err_file.split(separator)]
46
+ # Dynamically choose chunk size so we end up with <= 15 combined prompts.
47
+ # If we already have 15 or fewer, keep them as-is.
48
+ if len(prompts) <= 15:
49
+ combined_prompts = prompts
50
+ else:
51
+ # Compute minimal chunk size so that number_of_chunks <= 15.
52
+ # number_of_chunks = ceil(len(prompts)/chunk_size) <= 15
53
+ # => chunk_size >= len(prompts)/15 -> choose ceil(len/15)
54
+ from math import ceil
55
+ chunk_size = ceil(len(prompts) / 15)
56
+ combined_prompts: list[str] = []
57
+ for i in range(0, len(prompts), chunk_size):
58
+ combined_prompts.append("\nTargeted Locations:\n".join(prompts[i:i+chunk_size]))
59
+ combined_prompts = [prefix + "\n" + item for item in combined_prompts]
60
+ tab_config = launch_agents(repo_root=repo_root, prompts=combined_prompts)
61
+ from machineconfig.utils.utils2 import randstr
62
+ random_name = randstr(length=3)
63
+ manager = ZellijLocalManager(session2zellij_tabs={"Agents": tab_config}, session_name_prefix=random_name)
64
+ manager.start_all_sessions()
65
+ manager.run_monitoring_routine()
66
+
67
+
68
+ if __name__ == "__main__":
69
+ main()