machineconfig 3.7__py3-none-any.whl → 7.69__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.
- machineconfig/__init__.py +0 -28
- machineconfig/cluster/remote/distribute.py +0 -1
- machineconfig/cluster/remote/file_manager.py +0 -2
- machineconfig/cluster/remote/script_execution.py +1 -2
- machineconfig/cluster/sessions_managers/{enhanced_command_runner.py → helpers/enhanced_command_runner.py} +4 -6
- machineconfig/cluster/sessions_managers/helpers/load_balancer_helper.py +145 -0
- machineconfig/cluster/sessions_managers/utils/load_balancer.py +53 -0
- machineconfig/cluster/sessions_managers/utils/maker.py +69 -0
- machineconfig/cluster/sessions_managers/wt_local.py +128 -330
- machineconfig/cluster/sessions_managers/wt_local_manager.py +53 -187
- machineconfig/cluster/sessions_managers/wt_remote.py +51 -43
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +49 -197
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +6 -19
- machineconfig/cluster/sessions_managers/wt_utils/manager_persistence.py +52 -0
- machineconfig/cluster/sessions_managers/wt_utils/monitoring_helpers.py +50 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +4 -2
- machineconfig/cluster/sessions_managers/wt_utils/status_reporting.py +76 -0
- machineconfig/cluster/sessions_managers/wt_utils/wt_helpers.py +199 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +81 -375
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +22 -172
- machineconfig/cluster/sessions_managers/zellij_remote.py +40 -41
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +13 -10
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +4 -8
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +5 -20
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +3 -9
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +3 -1
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper.py +298 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_restart.py +77 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_helper_with_panes.py +228 -0
- machineconfig/cluster/sessions_managers/zellij_utils/zellij_local_manager_helper.py +165 -0
- machineconfig/jobs/{python → installer}/check_installations.py +7 -21
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/gh.py +128 -0
- machineconfig/jobs/{python_custom_installers → installer/custom}/hx.py +84 -18
- machineconfig/jobs/installer/custom_dev/alacritty.py +86 -0
- machineconfig/jobs/installer/custom_dev/brave.py +82 -0
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +59 -0
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +63 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/cursor.py +7 -7
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/espanso.py +117 -0
- machineconfig/jobs/installer/custom_dev/goes.py +68 -0
- machineconfig/jobs/installer/custom_dev/lvim.py +89 -0
- machineconfig/jobs/installer/custom_dev/nerdfont.py +111 -0
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +149 -0
- machineconfig/jobs/installer/custom_dev/redis.py +88 -0
- machineconfig/jobs/installer/custom_dev/sysabc.py +145 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +92 -0
- machineconfig/jobs/{python_custom_installers/dev → installer/custom_dev}/winget.py +2 -3
- machineconfig/jobs/installer/installer_data.json +3440 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/brave.sh +4 -14
- machineconfig/jobs/{python_custom_installers/scripts/linux/warp-cli.sh → installer/linux_scripts/cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/docker.sh +6 -18
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +37 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/nerdfont.sh +5 -17
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/network.sh +2 -8
- machineconfig/jobs/installer/linux_scripts/ngrok.sh +6 -0
- machineconfig/jobs/installer/linux_scripts/q.sh +9 -0
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/redis.sh +6 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/vscode.sh +5 -17
- machineconfig/jobs/{python_custom_installers/scripts/linux → installer/linux_scripts}/wezterm.sh +4 -12
- machineconfig/jobs/installer/package_groups.py +255 -0
- machineconfig/logger.py +0 -1
- machineconfig/profile/backup.toml +49 -0
- machineconfig/profile/bash_shell_profiles.md +11 -0
- machineconfig/profile/create_helper.py +74 -0
- machineconfig/profile/create_links.py +288 -0
- machineconfig/profile/create_links_export.py +100 -0
- machineconfig/profile/create_shell_profile.py +136 -0
- machineconfig/profile/mapper.toml +258 -0
- machineconfig/scripts/__init__.py +0 -4
- machineconfig/scripts/linux/{share_cloud.sh → other/share_cloud.sh} +14 -25
- machineconfig/scripts/linux/wrap_mcfg +47 -0
- machineconfig/scripts/nu/wrap_mcfg.nu +69 -0
- machineconfig/scripts/python/agents.py +198 -0
- machineconfig/scripts/python/ai/command_runner/command_runner.sh +9 -0
- machineconfig/scripts/python/ai/command_runner/prompt.txt +9 -0
- machineconfig/scripts/python/ai/generate_files.py +307 -42
- machineconfig/scripts/python/ai/{mcinit.py → initai.py} +3 -38
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +114 -0
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +88 -22
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +4 -1
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- machineconfig/scripts/python/ai/solutions/gemini/settings.json +1 -1
- machineconfig/scripts/python/ai/solutions/generic.py +27 -4
- machineconfig/scripts/python/ai/vscode_tasks.py +37 -0
- machineconfig/scripts/python/cloud.py +29 -0
- machineconfig/scripts/python/croshell.py +129 -198
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +45 -131
- machineconfig/scripts/python/devops_navigator.py +6 -0
- machineconfig/scripts/python/env_manager/__init__.py +1 -0
- machineconfig/scripts/python/env_manager/path_manager_backend.py +47 -0
- machineconfig/scripts/python/env_manager/path_manager_tui.py +228 -0
- machineconfig/scripts/python/fire_jobs.py +166 -235
- machineconfig/scripts/python/ftpx.py +164 -100
- machineconfig/scripts/python/helpers/ast_search.py +74 -0
- machineconfig/scripts/python/helpers/repo_rag.py +325 -0
- machineconfig/scripts/python/helpers/symantic_search.py +25 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.json +14 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_crush.py +37 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_cursor_agents.py +22 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_gemini.py +42 -0
- machineconfig/scripts/python/helpers_agents/agentic_frameworks/fire_qwen.py +30 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_help_launch.py +110 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_helper_types.py +34 -0
- machineconfig/scripts/python/helpers_agents/fire_agents_load_balancer.py +22 -0
- machineconfig/scripts/python/helpers_agents/templates/prompt.txt +6 -0
- machineconfig/scripts/python/helpers_agents/templates/template.ps1 +14 -0
- machineconfig/scripts/python/helpers_agents/templates/template.sh +24 -0
- machineconfig/scripts/python/{cloud_copy.py → helpers_cloud/cloud_copy.py} +52 -39
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +13 -18
- machineconfig/scripts/python/helpers_cloud/cloud_sync.py +81 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.py} +0 -1
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +32 -20
- machineconfig/scripts/python/helpers_devops/cli_config.py +95 -0
- machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py +89 -0
- machineconfig/scripts/python/helpers_devops/cli_data.py +25 -0
- machineconfig/scripts/python/helpers_devops/cli_nw.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_repos.py +182 -0
- machineconfig/scripts/python/helpers_devops/cli_self.py +134 -0
- machineconfig/scripts/python/helpers_devops/cli_share_file.py +137 -0
- machineconfig/scripts/python/helpers_devops/cli_share_server.py +141 -0
- machineconfig/scripts/python/helpers_devops/cli_terminal.py +156 -0
- machineconfig/scripts/python/helpers_devops/cli_utils.py +96 -0
- machineconfig/scripts/python/{devops_backup_retrieve.py → helpers_devops/devops_backup_retrieve.py} +7 -10
- machineconfig/scripts/python/helpers_devops/devops_status.py +511 -0
- machineconfig/scripts/python/helpers_devops/devops_update_repos.py +269 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1 +81 -0
- machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash +3 -0
- machineconfig/scripts/python/{choose_wezterm_theme.py → helpers_devops/themes/choose_wezterm_theme.py} +2 -2
- machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.py} +0 -2
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -89
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_args_helper.py +145 -0
- machineconfig/scripts/python/helpers_fire_command/fire_jobs_route_helper.py +110 -0
- machineconfig/scripts/python/helpers_msearch/__init__.py +5 -0
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfag +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfg +1 -1
- machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/fzfrga +1 -1
- machineconfig/scripts/python/helpers_navigator/__init__.py +20 -0
- machineconfig/scripts/python/helpers_navigator/command_builder.py +111 -0
- machineconfig/scripts/python/helpers_navigator/command_detail.py +44 -0
- machineconfig/scripts/python/helpers_navigator/command_tree.py +620 -0
- machineconfig/scripts/python/helpers_navigator/data_models.py +28 -0
- machineconfig/scripts/python/helpers_navigator/main_app.py +272 -0
- machineconfig/scripts/python/helpers_navigator/search_bar.py +15 -0
- machineconfig/scripts/python/helpers_repos/action.py +209 -0
- machineconfig/scripts/python/helpers_repos/action_helper.py +150 -0
- machineconfig/scripts/python/{repos_helper_clone.py → helpers_repos/clone.py} +6 -7
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +218 -0
- machineconfig/scripts/python/helpers_repos/count_lines.py +348 -0
- machineconfig/scripts/python/helpers_repos/count_lines_frontend.py +17 -0
- machineconfig/scripts/python/helpers_repos/entrypoint.py +77 -0
- machineconfig/scripts/python/helpers_repos/grource.py +340 -0
- machineconfig/scripts/python/{repos_helper_record.py → helpers_repos/record.py} +7 -4
- machineconfig/scripts/python/helpers_repos/sync.py +66 -0
- machineconfig/scripts/python/{repos_helper_update.py → helpers_repos/update.py} +3 -3
- machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py +58 -0
- machineconfig/scripts/python/helpers_utils/download.py +152 -0
- machineconfig/scripts/python/helpers_utils/path.py +108 -0
- machineconfig/scripts/python/interactive.py +187 -0
- machineconfig/scripts/python/mcfg_entry.py +63 -0
- machineconfig/scripts/python/msearch.py +40 -0
- machineconfig/scripts/python/{devops_add_identity.py → nw/devops_add_identity.py} +1 -3
- machineconfig/scripts/python/{devops_add_ssh_key.py → nw/devops_add_ssh_key.py} +74 -44
- machineconfig/scripts/{linux → python/nw}/mount_nfs +1 -1
- machineconfig/scripts/python/{mount_nfs.py → nw/mount_nfs.py} +19 -16
- machineconfig/scripts/{linux → python/nw}/mount_nw_drive +1 -2
- machineconfig/scripts/python/{mount_ssh.py → nw/mount_ssh.py} +7 -8
- machineconfig/scripts/python/{onetimeshare.py → nw/onetimeshare.py} +0 -1
- machineconfig/scripts/python/nw/ssh_debug_linux.py +391 -0
- machineconfig/scripts/python/nw/ssh_debug_windows.py +338 -0
- machineconfig/scripts/python/{wifi_conn.py → nw/wifi_conn.py} +1 -51
- machineconfig/scripts/python/nw/wsl_windows_transfer.py +67 -0
- machineconfig/scripts/python/sessions.py +167 -0
- machineconfig/scripts/python/terminal.py +127 -0
- machineconfig/scripts/python/utils.py +66 -0
- machineconfig/scripts/windows/mounts/Restore-ThunderbirdProfile.ps1 +92 -0
- machineconfig/scripts/windows/{mount_nfs.ps1 → mounts/mount_nfs.ps1} +1 -3
- machineconfig/scripts/windows/{mount_ssh.ps1 → mounts/mount_ssh.ps1} +1 -1
- machineconfig/scripts/windows/{share_smb.ps1 → mounts/share_smb.ps1} +0 -6
- machineconfig/scripts/windows/wrap_mcfg.ps1 +60 -0
- machineconfig/settings/broot/br.sh +0 -4
- machineconfig/settings/broot/conf.toml +1 -1
- machineconfig/settings/helix/config.toml +16 -0
- machineconfig/settings/helix/languages.toml +13 -4
- machineconfig/settings/helix/yazi-picker.sh +12 -0
- machineconfig/settings/lf/linux/exe/lfcd.sh +1 -0
- machineconfig/settings/lf/linux/exe/previewer.sh +9 -3
- machineconfig/settings/lf/linux/lfrc +10 -12
- machineconfig/settings/lf/windows/fzf_edit.ps1 +2 -2
- machineconfig/settings/lf/windows/lfcd.ps1 +1 -1
- machineconfig/settings/lf/windows/lfrc +18 -38
- machineconfig/settings/lf/windows/mkfile.ps1 +1 -1
- machineconfig/settings/linters/.ruff.toml +1 -1
- machineconfig/settings/lvim/windows/archive/config_additional.lua +0 -6
- machineconfig/settings/marimo/marimo.toml +80 -0
- machineconfig/settings/marimo/snippets/globalize.py +34 -0
- machineconfig/settings/pistol/pistol.conf +1 -1
- machineconfig/settings/shells/bash/init.sh +55 -31
- machineconfig/settings/shells/nushell/config.nu +1 -34
- machineconfig/settings/shells/nushell/init.nu +127 -0
- machineconfig/settings/shells/pwsh/init.ps1 +61 -43
- machineconfig/settings/shells/starship/starship.toml +16 -0
- machineconfig/settings/shells/wezterm/wezterm.lua +2 -0
- machineconfig/settings/shells/wt/settings.json +32 -17
- machineconfig/settings/shells/zsh/init.sh +89 -0
- machineconfig/settings/svim/linux/init.toml +0 -4
- machineconfig/settings/svim/windows/init.toml +0 -3
- machineconfig/settings/yazi/init.lua +57 -0
- machineconfig/settings/yazi/keymap_linux.toml +79 -0
- machineconfig/settings/yazi/keymap_windows.toml +78 -0
- machineconfig/settings/yazi/shell/yazi_cd.ps1 +33 -0
- machineconfig/settings/yazi/shell/yazi_cd.sh +8 -0
- machineconfig/settings/yazi/yazi.toml +14 -1
- machineconfig/setup_linux/__init__.py +10 -0
- machineconfig/setup_linux/apps_desktop.sh +89 -0
- machineconfig/setup_linux/apps_gui.sh +64 -0
- machineconfig/setup_linux/{nix → others}/cli_installation.sh +9 -29
- machineconfig/setup_linux/ssh/openssh_all.sh +25 -0
- machineconfig/setup_linux/ssh/openssh_wsl.sh +38 -0
- machineconfig/setup_linux/uv.sh +15 -0
- machineconfig/setup_linux/web_shortcuts/interactive.sh +28 -203
- machineconfig/setup_mac/__init__.py +16 -0
- machineconfig/setup_mac/apps_gui.sh +248 -0
- machineconfig/setup_mac/ssh/openssh_setup.sh +114 -0
- machineconfig/setup_mac/uv.sh +36 -0
- machineconfig/setup_windows/__init__.py +8 -0
- machineconfig/setup_windows/others/power_options.ps1 +7 -0
- machineconfig/setup_windows/ssh/add-sshkey.ps1 +29 -0
- machineconfig/setup_windows/ssh/add_identity.ps1 +11 -0
- machineconfig/setup_windows/ssh/openssh-server.ps1 +37 -0
- machineconfig/setup_windows/uv.ps1 +17 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +28 -189
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +17 -0
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
- machineconfig/utils/accessories.py +52 -12
- machineconfig/utils/cloud/onedrive/README.md +139 -0
- machineconfig/utils/code.py +140 -93
- machineconfig/utils/files/art/fat_croco.txt +10 -0
- machineconfig/utils/files/art/halfwit_croco.txt +9 -0
- machineconfig/utils/files/art/happy_croco.txt +22 -0
- machineconfig/utils/files/art/water_croco.txt +11 -0
- machineconfig/utils/files/ascii_art.py +118 -0
- machineconfig/utils/files/dbms.py +257 -0
- machineconfig/utils/files/headers.py +68 -0
- machineconfig/utils/files/ouch/decompress.py +45 -0
- machineconfig/utils/files/read.py +95 -0
- machineconfig/utils/installer_utils/github_release_bulk.py +188 -0
- machineconfig/utils/installer_utils/install_from_url.py +180 -0
- machineconfig/utils/installer_utils/installer_class.py +239 -316
- machineconfig/utils/installer_utils/installer_cli.py +186 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +90 -5
- machineconfig/utils/installer_utils/installer_runner.py +191 -0
- machineconfig/utils/io.py +77 -24
- machineconfig/utils/links.py +309 -100
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +19 -47
- machineconfig/utils/path_extended.py +111 -121
- machineconfig/utils/path_helper.py +75 -22
- machineconfig/utils/procs.py +50 -74
- machineconfig/utils/scheduler.py +94 -97
- machineconfig/utils/scheduling.py +0 -3
- machineconfig/utils/schemas/fire_agents/fire_agents_input.py +5 -17
- machineconfig/utils/schemas/installer/installer_types.py +28 -6
- machineconfig/utils/schemas/layouts/layout_types.py +34 -1
- machineconfig/utils/source_of_truth.py +3 -6
- machineconfig/utils/ssh.py +742 -254
- machineconfig/utils/ssh_utils/utils.py +0 -0
- machineconfig/utils/terminal.py +3 -140
- machineconfig/utils/tst.py +20 -0
- machineconfig/utils/upgrade_packages.py +109 -28
- machineconfig/utils/ve.py +13 -5
- machineconfig-7.69.dist-info/METADATA +124 -0
- machineconfig-7.69.dist-info/RECORD +454 -0
- machineconfig-7.69.dist-info/entry_points.txt +15 -0
- machineconfig/cluster/templates/cli_click.py +0 -102
- machineconfig/cluster/templates/cli_gooey.py +0 -115
- machineconfig/cluster/templates/utils.py +0 -51
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -32
- machineconfig/jobs/python/create_bootable_media.py +0 -16
- machineconfig/jobs/python/python_cargo_build_share.py +0 -59
- machineconfig/jobs/python/python_ve_symlink.py +0 -29
- machineconfig/jobs/python/tasks.py +0 -3
- machineconfig/jobs/python/vscode/api.py +0 -48
- machineconfig/jobs/python/vscode/link_ve.py +0 -63
- machineconfig/jobs/python/vscode/select_interpreter.py +0 -87
- machineconfig/jobs/python/vscode/sync_code.py +0 -58
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +0 -63
- machineconfig/jobs/python_custom_installers/dev/aider.py +0 -37
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/brave.py +0 -71
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +0 -50
- machineconfig/jobs/python_custom_installers/dev/code.py +0 -51
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -78
- machineconfig/jobs/python_custom_installers/dev/espanso.py +0 -90
- machineconfig/jobs/python_custom_installers/dev/goes.py +0 -55
- machineconfig/jobs/python_custom_installers/dev/lvim.py +0 -77
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +0 -68
- machineconfig/jobs/python_custom_installers/dev/redis.py +0 -65
- machineconfig/jobs/python_custom_installers/dev/reverse_proxy.md +0 -31
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +0 -70
- machineconfig/jobs/python_custom_installers/docker.py +0 -74
- machineconfig/jobs/python_custom_installers/gh.py +0 -97
- machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +0 -45
- machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +0 -49
- machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +0 -85
- machineconfig/jobs/python_custom_installers/warp-cli.py +0 -71
- machineconfig/jobs/python_generic_installers/config.json +0 -603
- machineconfig/jobs/python_generic_installers/config.json.bak +0 -414
- machineconfig/jobs/python_generic_installers/dev/config.archive.json +0 -18
- machineconfig/jobs/python_generic_installers/dev/config.json +0 -825
- machineconfig/jobs/python_generic_installers/dev/config.json.bak +0 -565
- machineconfig/jobs/python_linux_installers/archive/config.json +0 -18
- machineconfig/jobs/python_linux_installers/archive/config.json.bak +0 -10
- machineconfig/jobs/python_linux_installers/config.json +0 -145
- machineconfig/jobs/python_linux_installers/config.json.bak +0 -110
- machineconfig/jobs/python_linux_installers/dev/config.json +0 -276
- machineconfig/jobs/python_linux_installers/dev/config.json.bak +0 -206
- machineconfig/jobs/python_windows_installers/archive/file.json +0 -11
- machineconfig/jobs/python_windows_installers/config.json +0 -82
- machineconfig/jobs/python_windows_installers/config.json.bak +0 -56
- machineconfig/jobs/python_windows_installers/dev/config.json +0 -4
- machineconfig/jobs/python_windows_installers/dev/config.json.bak +0 -3
- machineconfig/jobs/windows/archive/archive_pygraphviz.ps1 +0 -14
- machineconfig/jobs/windows/start_terminal.ps1 +0 -6
- machineconfig/jobs/windows/startup_file.cmd +0 -2
- machineconfig/profile/create.py +0 -169
- machineconfig/profile/shell.py +0 -176
- machineconfig/scripts/cloud/init.sh +0 -119
- machineconfig/scripts/linux/choose_wezterm_theme +0 -3
- machineconfig/scripts/linux/cloud_copy +0 -2
- machineconfig/scripts/linux/cloud_mount +0 -2
- machineconfig/scripts/linux/cloud_repo_sync +0 -2
- machineconfig/scripts/linux/cloud_sync +0 -2
- machineconfig/scripts/linux/croshell +0 -3
- machineconfig/scripts/linux/devops +0 -2
- machineconfig/scripts/linux/fire +0 -2
- machineconfig/scripts/linux/fire_agents +0 -2
- machineconfig/scripts/linux/ftpx +0 -2
- machineconfig/scripts/linux/fzf2g +0 -21
- machineconfig/scripts/linux/fzffg +0 -25
- machineconfig/scripts/linux/gh_models +0 -2
- machineconfig/scripts/linux/kill_process +0 -2
- machineconfig/scripts/linux/mcinit +0 -2
- machineconfig/scripts/linux/programs +0 -21
- machineconfig/scripts/linux/repos +0 -2
- machineconfig/scripts/linux/scheduler +0 -2
- machineconfig/scripts/linux/share_smb +0 -1
- machineconfig/scripts/linux/start_slidev +0 -2
- machineconfig/scripts/linux/start_terminals +0 -3
- machineconfig/scripts/linux/warp-cli.sh +0 -122
- machineconfig/scripts/linux/wifi_conn +0 -2
- machineconfig/scripts/linux/z_ls +0 -104
- machineconfig/scripts/python/ai/solutions/copilot/prompts/allLintersAndTypeCheckers.prompt.md +0 -5
- machineconfig/scripts/python/archive/im2text.py +0 -34
- machineconfig/scripts/python/archive/tmate_conn.py +0 -41
- machineconfig/scripts/python/archive/tmate_start.py +0 -44
- machineconfig/scripts/python/cloud_repo_sync.py +0 -192
- machineconfig/scripts/python/cloud_sync.py +0 -85
- machineconfig/scripts/python/devops_devapps_install.py +0 -202
- machineconfig/scripts/python/devops_update_repos.py +0 -180
- machineconfig/scripts/python/dotfile.py +0 -52
- machineconfig/scripts/python/fire_agents.py +0 -176
- machineconfig/scripts/python/fire_agents_help_launch.py +0 -143
- machineconfig/scripts/python/fire_agents_load_balancer.py +0 -50
- machineconfig/scripts/python/fire_jobs_args_helper.py +0 -84
- machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -66
- machineconfig/scripts/python/get_zellij_cmd.py +0 -15
- machineconfig/scripts/python/gh_models.py +0 -104
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +0 -114
- machineconfig/scripts/python/repos.py +0 -160
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/wsl_windows_transfer.py +0 -72
- machineconfig/scripts/windows/choose_wezterm_theme.ps1 +0 -1
- machineconfig/scripts/windows/cloud_copy.ps1 +0 -1
- machineconfig/scripts/windows/cloud_mount.ps1 +0 -1
- machineconfig/scripts/windows/cloud_repo_sync.ps1 +0 -1
- machineconfig/scripts/windows/cloud_sync.ps1 +0 -1
- machineconfig/scripts/windows/croshell.ps1 +0 -1
- machineconfig/scripts/windows/devops.ps1 +0 -1
- machineconfig/scripts/windows/dotfile.ps1 +0 -1
- machineconfig/scripts/windows/fire.ps1 +0 -1
- machineconfig/scripts/windows/ftpx.ps1 +0 -1
- machineconfig/scripts/windows/gpt.ps1 +0 -1
- machineconfig/scripts/windows/grep.ps1 +0 -2
- machineconfig/scripts/windows/kill_process.ps1 +0 -1
- machineconfig/scripts/windows/mcinit.ps1 +0 -1
- machineconfig/scripts/windows/nano.ps1 +0 -3
- machineconfig/scripts/windows/pomodoro.ps1 +0 -1
- machineconfig/scripts/windows/reload_path.ps1 +0 -3
- machineconfig/scripts/windows/repos.ps1 +0 -1
- machineconfig/scripts/windows/scheduler.ps1 +0 -1
- machineconfig/scripts/windows/snapshot.ps1 +0 -1
- machineconfig/scripts/windows/start_slidev.ps1 +0 -1
- machineconfig/scripts/windows/start_terminals.ps1 +0 -1
- machineconfig/scripts/windows/wifi_conn.ps1 +0 -2
- machineconfig/scripts/windows/wsl_rdp_windows_port_forwarding.ps1 +0 -46
- machineconfig/scripts/windows/wsl_ssh_windows_port_forwarding.ps1 +0 -76
- machineconfig/settings/lf/linux/exe/fzf_nano.sh +0 -16
- machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +0 -57
- machineconfig/setup_linux/web_shortcuts/ascii_art.sh +0 -93
- machineconfig/setup_linux/web_shortcuts/croshell.sh +0 -11
- machineconfig/setup_linux/web_shortcuts/ssh.sh +0 -52
- machineconfig/setup_windows/web_shortcuts/all.ps1 +0 -18
- machineconfig/setup_windows/web_shortcuts/ascii_art.ps1 +0 -36
- machineconfig/setup_windows/web_shortcuts/croshell.ps1 +0 -16
- machineconfig/setup_windows/web_shortcuts/ssh.ps1 +0 -11
- machineconfig/setup_windows/wt_and_pwsh/install_nerd_fonts.py +0 -100
- machineconfig/utils/ai/generate_file_checklist.py +0 -68
- machineconfig/utils/installer.py +0 -255
- machineconfig-3.7.dist-info/METADATA +0 -165
- machineconfig-3.7.dist-info/RECORD +0 -432
- machineconfig-3.7.dist-info/entry_points.txt +0 -18
- machineconfig/cluster/{templates → remote}/run_cloud.py +0 -0
- machineconfig/cluster/{templates → remote}/run_cluster.py +0 -0
- machineconfig/cluster/{templates → remote}/run_remote.py +0 -0
- machineconfig/jobs/{python → installer}/__init__.py +0 -0
- machineconfig/jobs/{python_custom_installers → installer/custom_dev}/__init__.py +0 -0
- machineconfig/{setup_windows/wt_and_pwsh → jobs/installer/powershell_scripts}/install_fonts.ps1 +0 -0
- machineconfig/scripts/linux/{share_nfs → other/share_nfs} +0 -0
- machineconfig/scripts/linux/{start_docker → other/start_docker} +0 -0
- machineconfig/scripts/linux/{switch_ip → other/switch_ip} +0 -0
- machineconfig/{jobs/python_generic_installers → scripts/python/helpers_agents}/__init__.py +0 -0
- machineconfig/{jobs/python_linux_installers → scripts/python/helpers_agents/agentic_frameworks}/__init__.py +0 -0
- machineconfig/scripts/python/{fire_agents_help_search.py → helpers_agents/fire_agents_help_search.py} +0 -0
- machineconfig/{jobs/python_linux_installers/dev → scripts/python/helpers_cloud}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers → helpers_cloud}/cloud_helpers.py +1 -1
- /machineconfig/scripts/python/{helpers → helpers_cloud}/helpers5.py +0 -0
- /machineconfig/{jobs/python_windows_installers → scripts/python/helpers_croshell}/__init__.py +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
- /machineconfig/scripts/python/{viewer.py → helpers_croshell/viewer.py} +0 -0
- /machineconfig/scripts/python/{viewer_template.py → helpers_croshell/viewer_template.py} +0 -0
- /machineconfig/{jobs/python_windows_installers/archive → scripts/python/helpers_devops}/__init__.py +0 -0
- /machineconfig/{jobs/python_windows_installers/dev → scripts/python/helpers_devops/themes}/__init__.py +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.bat → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{helpers → helpers_fire_command}/__init__.py +0 -0
- /machineconfig/scripts/python/{fire_jobs_streamlit_helper.py → helpers_fire_command/fire_jobs_streamlit_helper.py} +0 -0
- /machineconfig/scripts/{linux → python/helpers_msearch/scripts_linux}/skrg +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfb.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfg.ps1 +0 -0
- /machineconfig/scripts/{windows → python/helpers_msearch/scripts_windows}/fzfrga.bat +0 -0
- /machineconfig/{jobs/windows/msc/cli_agents.ps1 → scripts/python/helpers_sessions/__init__.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/nw/__init__.py} +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_drive +0 -0
- /machineconfig/scripts/python/{mount_nw_drive.py → nw/mount_nw_drive.py} +0 -0
- /machineconfig/scripts/{linux → python/nw}/mount_smb +0 -0
- /machineconfig/scripts/windows/{mount_nw.ps1 → mounts/mount_nw.ps1} +0 -0
- /machineconfig/scripts/windows/{mount_smb.ps1 → mounts/mount_smb.ps1} +0 -0
- /machineconfig/scripts/windows/{share_cloud.cmd → mounts/share_cloud.cmd} +0 -0
- /machineconfig/scripts/windows/{unlock_bitlocker.ps1 → mounts/unlock_bitlocker.ps1} +0 -0
- /machineconfig/setup_linux/{web_shortcuts → others}/android.sh +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_add_key.ps1 +0 -0
- /machineconfig/{jobs/windows/archive → setup_windows/ssh}/openssh-server_copy-ssh-id.ps1 +0 -0
- /machineconfig/{settings/yazi/keymap.toml → utils/files/ouch/__init__.py} +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/WHEEL +0 -0
- {machineconfig-3.7.dist-info → machineconfig-7.69.dist-info}/top_level.txt +0 -0
|
@@ -7,150 +7,65 @@ fire
|
|
|
7
7
|
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
from
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
from
|
|
16
|
-
from machineconfig.utils.path_helper import
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
from machineconfig.scripts.python.fire_jobs_args_helper import get_args, FireJobArgs, extract_kwargs
|
|
21
|
-
import platform
|
|
22
|
-
from typing import Optional
|
|
23
|
-
from pathlib import Path
|
|
24
|
-
import tomllib
|
|
25
|
-
# import os
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def route(args: FireJobArgs) -> None:
|
|
29
|
-
if args.layout:
|
|
30
|
-
from machineconfig.scripts.python.fire_jobs_layout_helper import handle_layout_args
|
|
31
|
-
|
|
32
|
-
return handle_layout_args(args)
|
|
33
|
-
|
|
34
|
-
path_obj = sanitize_path(args.path)
|
|
35
|
-
if not path_obj.exists():
|
|
36
|
-
suffixes = {".py", ".sh", ".ps1"}
|
|
37
|
-
choice_file = match_file_name(sub_string=args.path, search_root=PathExtended.cwd(), suffixes=suffixes)
|
|
38
|
-
elif path_obj.is_dir():
|
|
39
|
-
print(f"🔍 Searching recursively for Python, PowerShell and Shell scripts in directory `{path_obj}`")
|
|
40
|
-
files = search_for_files_of_interest(path_obj)
|
|
41
|
-
print(f"🔍 Got #{len(files)} results.")
|
|
42
|
-
choice_file = choose_from_options(multi=False, options=files, fzf=True, msg="Choose one option")
|
|
43
|
-
choice_file = PathExtended(choice_file)
|
|
44
|
-
else:
|
|
45
|
-
choice_file = path_obj
|
|
46
|
-
repo_root = get_repo_root(Path(choice_file))
|
|
10
|
+
from typing import Optional, Annotated
|
|
11
|
+
import typer
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def route(args: "FireJobArgs", fire_args: str = "") -> None:
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
from machineconfig.utils.path_helper import get_choice_file
|
|
17
|
+
from machineconfig.utils.accessories import get_repo_root, randstr
|
|
18
|
+
choice_file = get_choice_file(args.path, suffixes=None)
|
|
19
|
+
repo_root = get_repo_root(choice_file)
|
|
47
20
|
print(f"💾 Selected file: {choice_file}.\nRepo root: {repo_root}")
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
21
|
+
if args.marimo:
|
|
22
|
+
print(f"🧽 Preparing to launch Marimo notebook for `{choice_file}`...")
|
|
23
|
+
tmp_dir = Path.home().joinpath(f"tmp_results/tmp_scripts/marimo/{choice_file.stem}_{randstr()}")
|
|
24
|
+
tmp_dir.mkdir(parents=True, exist_ok=True)
|
|
25
|
+
script = f"""
|
|
26
|
+
cd {tmp_dir}
|
|
27
|
+
uv run --python 3.14 --with marimo marimo convert {choice_file} -o marimo_nb.py
|
|
28
|
+
uv run --project {repo_root} --with marimo marimo edit --host 0.0.0.0 marimo_nb.py
|
|
29
|
+
"""
|
|
30
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
31
|
+
print(f"🚀 Launching Marimo notebook for `{choice_file}`...")
|
|
32
|
+
exit_then_run_shell_script(script)
|
|
33
|
+
return
|
|
52
34
|
|
|
35
|
+
# ========================= preparing kwargs_dict
|
|
53
36
|
if choice_file.suffix == ".py":
|
|
54
|
-
|
|
37
|
+
from machineconfig.scripts.python.helpers_fire_command.fire_jobs_args_helper import extract_kwargs
|
|
38
|
+
kwargs_dict = extract_kwargs(args) # This now returns empty dict, but kept for compatibility
|
|
55
39
|
else:
|
|
56
|
-
|
|
40
|
+
kwargs_dict = {}
|
|
57
41
|
|
|
58
42
|
# ========================= choosing function to run
|
|
59
43
|
choice_function: Optional[str] = None # Initialize to avoid unbound variable
|
|
60
|
-
if args.choose_function
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
assert isinstance(choice_function_tmp, str), f"choice_function must be a string. Got {type(choice_function_tmp)}"
|
|
65
|
-
choice_index = options.index(choice_function_tmp)
|
|
66
|
-
choice_function = choice_function_tmp.split(" -- ")[0]
|
|
67
|
-
choice_function_args = func_args[choice_index]
|
|
68
|
-
|
|
69
|
-
if choice_function == "RUN AS MAIN":
|
|
70
|
-
choice_function = None
|
|
71
|
-
if len(choice_function_args) > 0 and len(kwargs) == 0:
|
|
72
|
-
for item in choice_function_args:
|
|
73
|
-
kwargs[item.name] = input(f"Please enter a value for argument `{item.name}` (type = {item.type}) (default = {item.default}) : ") or item.default
|
|
74
|
-
elif choice_file.suffix == ".sh": # in this case, we choos lines.
|
|
75
|
-
options = []
|
|
76
|
-
for line in choice_file.read_text(encoding="utf-8").splitlines():
|
|
77
|
-
if line.startswith("#"):
|
|
78
|
-
continue
|
|
79
|
-
if line == "":
|
|
80
|
-
continue
|
|
81
|
-
if line.startswith("echo"):
|
|
82
|
-
continue
|
|
83
|
-
options.append(line)
|
|
84
|
-
chosen_lines = choose_from_options(msg="Choose a line to run", options=options, fzf=True, multi=True)
|
|
85
|
-
choice_file = PathExtended.tmpfile(suffix=".sh")
|
|
86
|
-
choice_file.parent.mkdir(parents=True, exist_ok=True)
|
|
87
|
-
choice_file.write_text("\n".join(chosen_lines), encoding="utf-8")
|
|
88
|
-
choice_function = None
|
|
44
|
+
if args.choose_function:
|
|
45
|
+
from machineconfig.scripts.python.helpers_fire_command.fire_jobs_route_helper import choose_function_or_lines
|
|
46
|
+
|
|
47
|
+
choice_function, choice_file, kwargs_dict = choose_function_or_lines(choice_file, kwargs_dict)
|
|
89
48
|
else:
|
|
90
49
|
choice_function = args.function
|
|
91
50
|
|
|
92
51
|
if choice_file.suffix == ".py":
|
|
52
|
+
from machineconfig.scripts.python.helpers_fire_command.fire_jobs_route_helper import get_command_streamlit
|
|
53
|
+
|
|
54
|
+
with_project = f"--project {repo_root} " if repo_root is not None else ""
|
|
93
55
|
if args.streamlit:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
97
|
-
try:
|
|
98
|
-
s.connect(("8.8.8.8", 1))
|
|
99
|
-
local_ip_v4 = s.getsockname()[0]
|
|
100
|
-
except Exception:
|
|
101
|
-
local_ip_v4 = socket.gethostbyname(socket.gethostname())
|
|
102
|
-
finally:
|
|
103
|
-
s.close()
|
|
104
|
-
computer_name = platform.node()
|
|
105
|
-
port = 8501
|
|
106
|
-
toml_path: Optional[PathExtended] = None
|
|
107
|
-
toml_path_maybe = choice_file.parent.joinpath(".streamlit/config.toml")
|
|
108
|
-
if toml_path_maybe.exists():
|
|
109
|
-
toml_path = toml_path_maybe
|
|
110
|
-
elif choice_file.parent.name == "pages":
|
|
111
|
-
toml_path_maybe = choice_file.parent.parent.joinpath(".streamlit/config.toml")
|
|
112
|
-
if toml_path_maybe.exists():
|
|
113
|
-
toml_path = toml_path_maybe
|
|
114
|
-
if toml_path is not None:
|
|
115
|
-
print(f"📄 Reading config.toml @ {toml_path}")
|
|
116
|
-
config = tomllib.loads(toml_path.read_text(encoding="utf-8"))
|
|
117
|
-
if "server" in config:
|
|
118
|
-
if "port" in config["server"]:
|
|
119
|
-
port = config["server"]["port"]
|
|
120
|
-
secrets_path = toml_path.with_name("secrets.toml")
|
|
121
|
-
if repo_root is not None:
|
|
122
|
-
secrets_template_path = PathExtended.home().joinpath(f"dotfiles/creds/streamlit/{PathExtended(repo_root).name}/{choice_file.name}/secrets.toml")
|
|
123
|
-
if args.environment != "" and not secrets_path.exists() and secrets_template_path.exists():
|
|
124
|
-
secrets_template = tomllib.loads(secrets_template_path.read_text(encoding="utf-8"))
|
|
125
|
-
if args.environment == "ip":
|
|
126
|
-
host_url = f"http://{local_ip_v4}:{port}/oauth2callback"
|
|
127
|
-
elif args.environment == "localhost":
|
|
128
|
-
host_url = f"http://localhost:{port}/oauth2callback"
|
|
129
|
-
elif args.environment == "hostname":
|
|
130
|
-
host_url = f"http://{computer_name}:{port}/oauth2callback"
|
|
131
|
-
else:
|
|
132
|
-
host_url = f"http://{args.environment}:{port}/oauth2callback"
|
|
133
|
-
try:
|
|
134
|
-
secrets_template["auth"]["redirect_uri"] = host_url
|
|
135
|
-
secrets_template["auth"]["cookie_secret"] = randstr(35)
|
|
136
|
-
secrets_template["auth"]["auth0"]["redirect_uri"] = host_url
|
|
137
|
-
# save_toml(obj=secrets_template, path=secrets_path)
|
|
138
|
-
except Exception as ex:
|
|
139
|
-
print(ex)
|
|
140
|
-
raise ex
|
|
141
|
-
message = f"🚀 Streamlit app is running @:\n1- http://{local_ip_v4}:{port}\n2- http://{computer_name}:{port}\n3- http://localhost:{port}"
|
|
142
|
-
from rich.panel import Panel
|
|
143
|
-
from rich import print as rprint
|
|
144
|
-
|
|
145
|
-
rprint(Panel(message))
|
|
146
|
-
exe = f"streamlit run --server.address 0.0.0.0 --server.headless true --server.port {port}"
|
|
147
|
-
# exe = f"cd '{choice_file.parent}'; " + exe
|
|
148
|
-
elif args.interactive is False:
|
|
149
|
-
exe = "python"
|
|
56
|
+
exe = get_command_streamlit(choice_file=choice_file, environment=args.environment, repo_root=repo_root)
|
|
57
|
+
exe = f"uv run {with_project} {exe} "
|
|
150
58
|
elif args.jupyter:
|
|
151
|
-
exe = "jupyter-lab"
|
|
59
|
+
exe = f"uv run {with_project} jupyter-lab"
|
|
152
60
|
else:
|
|
153
|
-
|
|
61
|
+
if args.interactive:
|
|
62
|
+
from machineconfig.utils.ve import get_ve_path_and_ipython_profile
|
|
63
|
+
_ve_root_from_file, ipy_profile = get_ve_path_and_ipython_profile(choice_file)
|
|
64
|
+
if ipy_profile is None:
|
|
65
|
+
ipy_profile = "default"
|
|
66
|
+
exe = f"uv run {with_project} ipython -i --no-banner --profile {ipy_profile} "
|
|
67
|
+
else:
|
|
68
|
+
exe = f"uv run {with_project} python "
|
|
154
69
|
elif choice_file.suffix == ".ps1" or choice_file.suffix == ".sh":
|
|
155
70
|
exe = "."
|
|
156
71
|
elif choice_file.suffix == "":
|
|
@@ -158,54 +73,38 @@ def route(args: FireJobArgs) -> None:
|
|
|
158
73
|
else:
|
|
159
74
|
raise NotImplementedError(f"File type {choice_file.suffix} not supported, in the sense that I don't know how to fire it.")
|
|
160
75
|
|
|
161
|
-
if (
|
|
162
|
-
|
|
163
|
-
): # because debugging tools do not support choosing functions and don't interplay with fire module. So the only way to have debugging and choose function options is to import the file as a module into a new script and run the function of interest there and debug the new script.
|
|
76
|
+
if args.module or (args.debug and args.choose_function):
|
|
77
|
+
# because debugging tools do not support choosing functions and don't interplay with fire module. So the only way to have debugging and choose function options is to import the file as a module into a new script and run the function of interest there and debug the new script.
|
|
164
78
|
assert choice_file.suffix == ".py", f"File must be a python file to be imported as a module. Got {choice_file}"
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
import sys
|
|
177
|
-
sys.path.append(r'{PathExtended(choice_file).parent}')
|
|
178
|
-
{repo_root_add}
|
|
179
|
-
from {PathExtended(choice_file).stem} import *
|
|
180
|
-
print(fr"✅ Successfully imported `{choice_file}`")
|
|
181
|
-
"""
|
|
182
|
-
if choice_function is not None:
|
|
183
|
-
txt = (
|
|
184
|
-
txt
|
|
185
|
-
+ f"""
|
|
186
|
-
res = {choice_function}({("**" + str(kwargs)) if kwargs else ""})
|
|
187
|
-
"""
|
|
188
|
-
)
|
|
189
|
-
|
|
190
|
-
txt = (
|
|
191
|
-
f"""
|
|
192
|
-
try:
|
|
193
|
-
from rich.panel import Panel
|
|
194
|
-
from rich.console import Console
|
|
195
|
-
from rich.syntax import Syntax
|
|
196
|
-
console = Console()
|
|
197
|
-
console.print(Panel(Syntax(code=r'''{txt}''', lexer='python'), title='Import Script'), style="bold red")
|
|
198
|
-
except ImportError as _ex:
|
|
199
|
-
print(r'''{txt}''')
|
|
200
|
-
"""
|
|
201
|
-
+ txt
|
|
79
|
+
from machineconfig.scripts.python.helpers_fire_command.file_wrangler import get_import_module_code, wrap_import_in_try_except
|
|
80
|
+
from machineconfig.utils.meta import lambda_to_python_script
|
|
81
|
+
from machineconfig.utils.code import print_code
|
|
82
|
+
|
|
83
|
+
import_code = get_import_module_code(str(choice_file))
|
|
84
|
+
import_code_robust = lambda_to_python_script(
|
|
85
|
+
lambda: wrap_import_in_try_except(
|
|
86
|
+
import_line=import_code, pyfile=str(choice_file), repo_root=str(repo_root) if repo_root is not None else None
|
|
87
|
+
),
|
|
88
|
+
in_global=True,
|
|
89
|
+
import_module=False,
|
|
202
90
|
)
|
|
203
|
-
|
|
91
|
+
# print(f"🧩 Preparing import code for module import:\n{import_code}")
|
|
92
|
+
code_printing = lambda_to_python_script(
|
|
93
|
+
lambda: print_code(code=import_code_robust, lexer="python", desc="import as module code"),
|
|
94
|
+
in_global=True, import_module=False
|
|
95
|
+
)
|
|
96
|
+
print(f"🧩 Preparing import code for module import:\n{import_code}")
|
|
97
|
+
if choice_function is not None:
|
|
98
|
+
calling = f"""res = {choice_function}({("**" + str(kwargs_dict)) if kwargs_dict else ""})"""
|
|
99
|
+
else:
|
|
100
|
+
calling = """# No function selected to call. You can add your code here."""
|
|
101
|
+
choice_file = Path.home().joinpath(f"tmp_results/tmp_scripts/python/{Path(choice_file).parent.name}_{Path(choice_file).stem}_{randstr()}.py")
|
|
204
102
|
choice_file.parent.mkdir(parents=True, exist_ok=True)
|
|
205
|
-
choice_file.write_text(
|
|
103
|
+
choice_file.write_text(import_code_robust + "\n" + code_printing + "\n" + calling, encoding="utf-8")
|
|
206
104
|
|
|
207
105
|
# ========================= determining basic command structure: putting together exe & choice_file & choice_function & pdb
|
|
208
106
|
if args.debug:
|
|
107
|
+
import platform
|
|
209
108
|
if platform.system() == "Windows":
|
|
210
109
|
command = f"{exe} -m ipdb {choice_file} " # pudb is not available on windows machines, use poor man's debugger instead.
|
|
211
110
|
elif platform.system() in ["Linux", "Darwin"]:
|
|
@@ -215,71 +114,42 @@ except ImportError as _ex:
|
|
|
215
114
|
elif args.module:
|
|
216
115
|
# both selected function and kwargs are mentioned in the made up script, therefore no need for fire module.
|
|
217
116
|
command = f"{exe} {choice_file} "
|
|
218
|
-
elif choice_function is not None:
|
|
219
|
-
|
|
220
|
-
command = f"{exe} -m fire {choice_file} {choice_function} {kwargs_str}"
|
|
117
|
+
elif choice_function is not None and choice_file.suffix == ".py":
|
|
118
|
+
command = f"{exe} -m fire {choice_file} {choice_function} {fire_args}"
|
|
221
119
|
elif args.streamlit:
|
|
222
120
|
# for .streamlit config to work, it needs to be in the current directory.
|
|
223
121
|
if args.holdDirectory:
|
|
224
122
|
command = f"{exe} {choice_file}"
|
|
225
123
|
else:
|
|
226
|
-
command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {
|
|
227
|
-
|
|
124
|
+
command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {Path.cwd()}"
|
|
228
125
|
elif args.cmd:
|
|
229
126
|
command = rf""" cd /d {choice_file.parent} & {exe} {choice_file.name} """
|
|
230
127
|
else:
|
|
231
128
|
if choice_file.suffix == "":
|
|
232
|
-
|
|
233
|
-
command = f"{exe} {choice_file} {kwargs_raw}"
|
|
129
|
+
command = f"{exe} {choice_file} {fire_args}"
|
|
234
130
|
else:
|
|
235
|
-
# command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {PathExtended.cwd()}"
|
|
236
131
|
command = f"{exe} {choice_file} "
|
|
132
|
+
|
|
237
133
|
if not args.cmd:
|
|
238
|
-
|
|
239
|
-
command = f"pip install ipdb\n{command}"
|
|
240
|
-
if "pudb" in command:
|
|
241
|
-
command = f"pip install pudb\n{command}"
|
|
242
|
-
command = f"{activate_ve_line}\n{command}"
|
|
134
|
+
pass
|
|
243
135
|
else:
|
|
244
|
-
# CMD equivalent
|
|
245
|
-
if "ipdb" in command:
|
|
246
|
-
command = f"pip install ipdb & {command}"
|
|
247
|
-
if "pudb" in command:
|
|
248
|
-
command = f"pip install pudb & {command}"
|
|
249
136
|
new_line = "\n"
|
|
250
|
-
command = rf"""start cmd -Argument "/k {
|
|
251
|
-
|
|
137
|
+
command = rf"""start cmd -Argument "/k {command.replace(new_line, " & ")} " """ # this works from powershell
|
|
252
138
|
if args.submit_to_cloud:
|
|
253
|
-
command = f"""
|
|
254
|
-
{activate_ve_line}
|
|
255
|
-
python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
139
|
+
command = f"""uv run python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
256
140
|
if choice_function is not None:
|
|
257
141
|
command += f"--function {choice_function} "
|
|
258
142
|
|
|
259
|
-
if args.Nprocess > 1:
|
|
260
|
-
from machineconfig.cluster.sessions_managers.zellij_local import run_zellij_layout
|
|
261
|
-
from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
|
|
262
|
-
|
|
263
|
-
layout: LayoutConfig = {"layoutName": "fireNprocess", "layoutTabs": []}
|
|
264
|
-
for an_arg in range(args.Nprocess):
|
|
265
|
-
layout["layoutTabs"].append({"tabName": f"tab{an_arg}", "startDir": str(PathExtended.cwd()), "command": f"uv run -m fire {choice_file} {choice_function} --idx={an_arg} --idx_max={args.Nprocess}"})
|
|
266
|
-
run_zellij_layout(layout_config=layout)
|
|
267
|
-
return None
|
|
268
|
-
|
|
269
143
|
if args.optimized:
|
|
270
|
-
# note that in ipython, optimization is meaningless.
|
|
271
144
|
command = command.replace("python ", "python -OO ")
|
|
272
|
-
# if platform.system() == "Linux":
|
|
273
|
-
# command = "timeout 1s aafire -driver slang\nclear\n" + command
|
|
274
145
|
|
|
275
146
|
from rich.panel import Panel
|
|
276
147
|
from rich.console import Console
|
|
277
148
|
from rich.syntax import Syntax
|
|
278
149
|
|
|
279
150
|
console = Console()
|
|
280
|
-
|
|
281
151
|
if args.zellij_tab is not None:
|
|
282
|
-
comman_path__ =
|
|
152
|
+
comman_path__ = Path.home().joinpath(f"tmp_results/tmp_scripts/zellij_commands/{choice_file.stem}_{randstr()}.sh")
|
|
283
153
|
comman_path__.parent.mkdir(parents=True, exist_ok=True)
|
|
284
154
|
comman_path__.write_text(command, encoding="utf-8")
|
|
285
155
|
console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {comman_path__}: "), style="bold red")
|
|
@@ -288,7 +158,6 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
288
158
|
existing_tab_names = subprocess.run(["zellij", "action", "query-tab-names"], capture_output=True, text=True, check=True).stdout.splitlines()
|
|
289
159
|
if args.zellij_tab in existing_tab_names:
|
|
290
160
|
print(f"⚠️ Tab name `{args.zellij_tab}` already exists. Please choose a different name.")
|
|
291
|
-
# args.zellij_tab = input("Please enter a new tab name: ")
|
|
292
161
|
args.zellij_tab += f"_{randstr(3)}"
|
|
293
162
|
from machineconfig.cluster.sessions_managers.zellij_local import run_command_in_zellij_tab
|
|
294
163
|
|
|
@@ -298,42 +167,104 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
298
167
|
if args.git_pull:
|
|
299
168
|
command = f"\ngit -C {choice_file.parent} pull\n" + command
|
|
300
169
|
if args.PathExport:
|
|
301
|
-
|
|
302
|
-
export_line = f"""export PYTHONPATH="{repo_root}""" + """:${PYTHONPATH}" """
|
|
303
|
-
elif platform.system() == "Windows":
|
|
304
|
-
# export_line = f"""set PYTHONPATH="{repo_root}""" + """:%PYTHONPATH%" """
|
|
305
|
-
# powershell equivalent
|
|
306
|
-
export_line = f"""$env:PYTHONPATH="{repo_root}""" + """:$env:PYTHONPATH" """
|
|
307
|
-
else:
|
|
308
|
-
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
309
|
-
command = export_line + "\n" + command
|
|
170
|
+
from machineconfig.scripts.python.helpers_fire_command.file_wrangler import add_to_path
|
|
310
171
|
|
|
311
|
-
|
|
312
|
-
|
|
172
|
+
export_line = add_to_path(path_variable="PYTHONPATH", directory=str(repo_root))
|
|
173
|
+
command = export_line + "\n" + command
|
|
313
174
|
if args.loop:
|
|
175
|
+
import platform
|
|
314
176
|
if platform.system() in ["Linux", "Darwin"]:
|
|
315
177
|
command = command + "\nsleep 0.5"
|
|
316
178
|
elif platform.system() == "Windows":
|
|
317
|
-
# command = command + "timeout 0.5\n"
|
|
318
|
-
# pwsh equivalent
|
|
319
179
|
command = "$ErrorActionPreference = 'SilentlyContinue';\n" + command + "\nStart-Sleep -Seconds 0.5"
|
|
320
180
|
else:
|
|
321
181
|
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
322
|
-
# command = command + f"\n. {program_path}"
|
|
323
|
-
console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {command}: "), style="bold red")
|
|
324
|
-
# program_path.parent.mkdir(parents=True, exist_ok=True)
|
|
325
|
-
# program_path.write_text(command, encoding="utf-8")
|
|
326
|
-
import subprocess
|
|
327
182
|
|
|
328
|
-
|
|
183
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
184
|
+
|
|
185
|
+
exit_then_run_shell_script(script=command, strict=False)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def fire(
|
|
189
|
+
ctx: typer.Context,
|
|
190
|
+
path: Annotated[str, typer.Argument(help="Path to the Python file to run")] = ".",
|
|
191
|
+
function: Annotated[Optional[str], typer.Argument(help="Function to run")] = None,
|
|
192
|
+
ve: Annotated[str, typer.Option("--ve", "-v", help="Virtual environment name")] = "",
|
|
193
|
+
cmd: Annotated[bool, typer.Option("--cmd", "-B", help="Create a cmd fire command to launch the job asynchronously")] = False,
|
|
194
|
+
interactive: Annotated[bool, typer.Option("--interactive", "-i", help="Whether to run the job interactively using IPython")] = False,
|
|
195
|
+
debug: Annotated[bool, typer.Option("--debug", "-d", help="Enable debug mode")] = False,
|
|
196
|
+
choose_function: Annotated[bool, typer.Option("--choose-function", "-c", help="Choose function interactively")] = False,
|
|
197
|
+
loop: Annotated[bool, typer.Option("--loop", "-l", help="Infinite recursion (runs again after completion/interruption)")] = False,
|
|
198
|
+
jupyter: Annotated[bool, typer.Option("--jupyter", "-j", help="Open in a jupyter notebook")] = False,
|
|
199
|
+
marimo: Annotated[bool, typer.Option("--marimo", "-M", help="Open in a marimo notebook")] = False,
|
|
200
|
+
module: Annotated[bool, typer.Option("--module", "-m", help="Launch the main file")] = False,
|
|
201
|
+
optimized: Annotated[bool, typer.Option("--optimized", "-O", help="Run the optimized version of the function")] = False,
|
|
202
|
+
zellij_tab: Annotated[Optional[str], typer.Option("--zellij-tab", "-z", help="Open in a new zellij tab")] = None,
|
|
203
|
+
submit_to_cloud: Annotated[bool, typer.Option("--submit-to-cloud", "-C", help="Submit to cloud compute")] = False,
|
|
204
|
+
remote: Annotated[bool, typer.Option("--remote", "-r", help="Launch on a remote machine")] = False,
|
|
205
|
+
streamlit: Annotated[bool, typer.Option("--streamlit", "-S", help="Run as streamlit app")] = False,
|
|
206
|
+
environment: Annotated[str, typer.Option("--environment", "-E", help="Choose ip, localhost, hostname or arbitrary url")] = "",
|
|
207
|
+
holdDirectory: Annotated[
|
|
208
|
+
bool, typer.Option("--holdDirectory", "-D", help="Hold current directory and avoid cd'ing to the script directory")
|
|
209
|
+
] = False,
|
|
210
|
+
PathExport: Annotated[bool, typer.Option("--PathExport", "-P", help="Augment the PYTHONPATH with repo root")] = False,
|
|
211
|
+
git_pull: Annotated[bool, typer.Option("--git-pull", "-g", help="Start by pulling the git repo")] = False,
|
|
212
|
+
watch: Annotated[bool, typer.Option("--watch", "-w", help="Watch the file for changes")] = False,
|
|
213
|
+
) -> None:
|
|
214
|
+
"""Main function to process fire jobs arguments."""
|
|
215
|
+
|
|
216
|
+
# Get Fire arguments from context
|
|
217
|
+
from machineconfig.scripts.python.helpers_fire_command.fire_jobs_args_helper import FireJobArgs, parse_fire_args_from_context
|
|
218
|
+
fire_args = parse_fire_args_from_context(ctx)
|
|
219
|
+
|
|
220
|
+
args = FireJobArgs(
|
|
221
|
+
path=path,
|
|
222
|
+
function=function,
|
|
223
|
+
ve=ve,
|
|
224
|
+
cmd=cmd,
|
|
225
|
+
interactive=interactive,
|
|
226
|
+
debug=debug,
|
|
227
|
+
choose_function=choose_function,
|
|
228
|
+
loop=loop,
|
|
229
|
+
jupyter=jupyter,
|
|
230
|
+
marimo=marimo,
|
|
231
|
+
submit_to_cloud=submit_to_cloud,
|
|
232
|
+
remote=remote,
|
|
233
|
+
module=module,
|
|
234
|
+
streamlit=streamlit,
|
|
235
|
+
environment=environment,
|
|
236
|
+
holdDirectory=holdDirectory,
|
|
237
|
+
PathExport=PathExport,
|
|
238
|
+
git_pull=git_pull,
|
|
239
|
+
optimized=optimized,
|
|
240
|
+
zellij_tab=zellij_tab,
|
|
241
|
+
watch=watch,
|
|
242
|
+
)
|
|
243
|
+
try:
|
|
244
|
+
route(args, fire_args)
|
|
245
|
+
except SystemExit:
|
|
246
|
+
# Re-raise SystemExit to preserve exit codes and allow clean exits
|
|
247
|
+
raise
|
|
248
|
+
except Exception as e:
|
|
249
|
+
# For other exceptions, print clean error message and exit
|
|
250
|
+
import sys
|
|
251
|
+
|
|
252
|
+
print(f"❌ Error: {e}", file=sys.stderr)
|
|
253
|
+
sys.exit(1)
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def get_app():
|
|
257
|
+
from typer import Typer
|
|
258
|
+
|
|
259
|
+
app = Typer(add_completion=False)
|
|
260
|
+
app.command(context_settings={"allow_extra_args": True, "allow_interspersed_args": False})(fire)
|
|
261
|
+
return app
|
|
329
262
|
|
|
330
263
|
|
|
331
264
|
def main():
|
|
332
|
-
|
|
333
|
-
|
|
265
|
+
app = get_app()
|
|
266
|
+
app()
|
|
334
267
|
|
|
335
268
|
|
|
336
269
|
if __name__ == "__main__":
|
|
337
|
-
|
|
338
|
-
args = get_args()
|
|
339
|
-
route(args)
|
|
270
|
+
from machineconfig.scripts.python.helpers_fire_command.fire_jobs_args_helper import FireJobArgs
|