machineconfig 3.99__py3-none-any.whl → 7.66__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 +2 -16
- machineconfig/jobs/installer/custom/boxes.py +61 -0
- machineconfig/jobs/installer/custom/gh.py +69 -53
- machineconfig/jobs/installer/custom/hx.py +77 -20
- machineconfig/jobs/installer/custom_dev/alacritty.py +45 -30
- machineconfig/jobs/installer/custom_dev/brave.py +43 -35
- machineconfig/jobs/installer/custom_dev/bypass_paywall.py +31 -20
- machineconfig/jobs/installer/custom_dev/cloudflare_warp_cli.py +23 -0
- machineconfig/jobs/installer/custom_dev/code.py +33 -21
- machineconfig/jobs/installer/custom_dev/dubdb_adbc.py +30 -0
- machineconfig/jobs/installer/custom_dev/espanso.py +64 -41
- machineconfig/jobs/installer/custom_dev/goes.py +41 -36
- machineconfig/jobs/installer/custom_dev/lvim.py +49 -33
- machineconfig/jobs/installer/custom_dev/nerdfont.py +71 -47
- machineconfig/jobs/installer/custom_dev/nerfont_windows_helper.py +32 -26
- machineconfig/jobs/installer/custom_dev/redis.py +51 -33
- machineconfig/jobs/installer/custom_dev/sysabc.py +119 -0
- machineconfig/jobs/installer/custom_dev/wezterm.py +55 -39
- machineconfig/jobs/installer/custom_dev/winget.py +1 -0
- machineconfig/jobs/installer/installer_data.json +3406 -0
- machineconfig/jobs/installer/linux_scripts/brave.sh +4 -14
- machineconfig/jobs/installer/linux_scripts/{warp-cli.sh → cloudflare_warp_cli.sh} +5 -17
- machineconfig/jobs/installer/linux_scripts/docker.sh +5 -17
- machineconfig/jobs/installer/linux_scripts/docker_start.sh +6 -14
- machineconfig/jobs/installer/linux_scripts/edge.sh +3 -11
- machineconfig/jobs/{linux/msc → installer/linux_scripts}/lid.sh +2 -8
- machineconfig/jobs/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/installer/linux_scripts/redis.sh +6 -17
- machineconfig/jobs/installer/linux_scripts/vscode.sh +5 -17
- machineconfig/jobs/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/Restore-ThunderbirdProfile.ps1 +92 -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/initai.py +3 -28
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.ps1 +17 -18
- machineconfig/scripts/python/ai/scripts/lint_and_type_check.sh +17 -18
- machineconfig/scripts/python/ai/solutions/_shared.py +9 -1
- machineconfig/scripts/python/ai/solutions/copilot/instructions/python/dev.instructions.md +1 -1
- machineconfig/scripts/python/ai/solutions/copilot/prompts/pyright_fix.md +16 -0
- 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 +117 -181
- machineconfig/scripts/python/define.py +31 -0
- machineconfig/scripts/python/devops.py +44 -124
- machineconfig/scripts/python/devops_navigator.py +10 -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/explore.py +49 -0
- machineconfig/scripts/python/fire_jobs.py +106 -244
- machineconfig/scripts/python/ftpx.py +125 -68
- 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} +30 -23
- machineconfig/scripts/python/{cloud_mount.py → helpers_cloud/cloud_mount.py} +11 -19
- machineconfig/scripts/python/{cloud_sync.py → helpers_cloud/cloud_sync.py} +12 -18
- machineconfig/scripts/python/{helpers → helpers_cloud}/helpers2.py +3 -3
- machineconfig/scripts/python/helpers_croshell/crosh.py +39 -0
- machineconfig/scripts/python/{start_slidev.py → helpers_croshell/start_slidev.py} +17 -7
- 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/helpers_fire_command/__init__.py +0 -0
- machineconfig/scripts/python/{helpers/helpers4.py → helpers_fire_command/file_wrangler.py} +57 -87
- 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_fire_command/fire_jobs_streamlit_helper.py +0 -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 +588 -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/__init__.py +0 -0
- 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 +79 -160
- machineconfig/scripts/python/machineconfig.py +63 -0
- machineconfig/scripts/python/msearch.py +21 -0
- machineconfig/scripts/python/nw/__init__.py +0 -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 -53
- machineconfig/scripts/python/{wsl_windows_transfer.py → nw/wsl_windows_transfer.py} +6 -5
- machineconfig/scripts/python/sessions.py +167 -0
- machineconfig/scripts/python/terminal.py +127 -0
- machineconfig/scripts/python/utils.py +66 -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/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 +60 -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 +13 -0
- 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 +26 -6
- 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 +10 -0
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +27 -9
- machineconfig/setup_windows/web_shortcuts/quick_init.ps1 +16 -0
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +37 -23
- machineconfig/utils/accessories.py +7 -5
- 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/__init__.py +0 -0
- machineconfig/utils/files/ouch/decompress.py +45 -0
- machineconfig/utils/files/read.py +95 -0
- machineconfig/utils/installer_utils/github_release_bulk.py +2 -12
- machineconfig/utils/installer_utils/installer_class.py +68 -126
- machineconfig/utils/installer_utils/installer_cli.py +181 -0
- machineconfig/utils/installer_utils/{installer_abc.py → installer_locator_utils.py} +38 -85
- machineconfig/utils/{installer.py → installer_utils/installer_runner.py} +69 -69
- machineconfig/utils/io.py +77 -23
- machineconfig/utils/links.py +309 -100
- machineconfig/utils/meta.py +255 -0
- machineconfig/utils/notifications.py +1 -1
- machineconfig/utils/options.py +10 -25
- machineconfig/utils/path_extended.py +94 -104
- 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 +0 -1
- machineconfig/utils/schemas/layouts/layout_types.py +2 -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.66.dist-info/METADATA +124 -0
- machineconfig-7.66.dist-info/RECORD +451 -0
- machineconfig-7.66.dist-info/entry_points.txt +15 -0
- machineconfig/cluster/templates/utils.py +0 -51
- machineconfig/jobs/installer/linux_scripts/pgsql.sh +0 -49
- machineconfig/jobs/installer/linux_scripts/timescaledb.sh +0 -85
- machineconfig/jobs/installer/packages_custom_dev.json +0 -226
- machineconfig/jobs/installer/packages_custom_essential.json +0 -39
- machineconfig/jobs/installer/packages_github_dev.json +0 -1110
- machineconfig/jobs/installer/packages_github_essential.json +0 -804
- machineconfig/jobs/linux/msc/cli_agents.sh +0 -37
- 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 -49
- machineconfig/jobs/python/vscode/sync_code.py +0 -58
- 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 -170
- 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/initai +0 -2
- machineconfig/scripts/linux/kill_process +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/cloud_repo_sync.py +0 -186
- machineconfig/scripts/python/devops_devapps_install.py +0 -159
- machineconfig/scripts/python/devops_update_repos.py +0 -180
- machineconfig/scripts/python/dotfile.py +0 -52
- machineconfig/scripts/python/fire_agents.py +0 -175
- 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 -75
- machineconfig/scripts/python/fire_jobs_layout_helper.py +0 -74
- 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 -80
- machineconfig/scripts/python/repos_helper_action.py +0 -335
- machineconfig/scripts/python/share_terminal.py +0 -104
- machineconfig/scripts/python/snapshot.py +0 -25
- machineconfig/scripts/python/start_terminals.py +0 -121
- machineconfig/scripts/python/t4.py +0 -17
- 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/initai.ps1 +0 -1
- machineconfig/scripts/windows/kill_process.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/utils/ai/generate_file_checklist.py +0 -68
- machineconfig-3.99.dist-info/METADATA +0 -167
- machineconfig-3.99.dist-info/RECORD +0 -409
- machineconfig-3.99.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/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 → scripts/python/helpers_agents}/__init__.py +0 -0
- machineconfig/scripts/python/{helpers → 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/windows/msc/cli_agents.bat → 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/windows/msc/cli_agents.ps1 → scripts/python/helpers_croshell/__init__.py} +0 -0
- /machineconfig/scripts/python/{pomodoro.py → helpers_croshell/pomodoro.py} +0 -0
- /machineconfig/scripts/python/{scheduler.py → helpers_croshell/scheduler.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/scripts/python/{fire_jobs_streamlit_helper.py → helpers_devops/__init__.py} +0 -0
- /machineconfig/scripts/{windows/share_nfs.ps1 → python/helpers_devops/themes/__init__.py} +0 -0
- /machineconfig/{settings/yazi/keymap.toml → scripts/python/helpers_devops/themes/choose_starship_theme.ps1} +0 -0
- /machineconfig/scripts/python/{cloud_manager.py → helpers_fire_command/cloud_manager.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/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-3.99.dist-info → machineconfig-7.66.dist-info}/WHEEL +0 -0
- {machineconfig-3.99.dist-info → machineconfig-7.66.dist-info}/top_level.txt +0 -0
|
@@ -7,150 +7,65 @@ fire
|
|
|
7
7
|
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
from machineconfig.scripts.python.helpers.helpers4 import search_for_files_of_interest
|
|
11
|
-
from machineconfig.scripts.python.helpers.helpers4 import parse_pyfile
|
|
12
|
-
from machineconfig.scripts.python.helpers.helpers4 import get_import_module_code
|
|
13
|
-
from machineconfig.utils.ve import get_ve_activate_line, get_ve_path_and_ipython_profile
|
|
14
|
-
from machineconfig.utils.options import choose_from_options
|
|
15
|
-
from machineconfig.utils.path_helper import match_file_name, sanitize_path
|
|
16
|
-
|
|
17
|
-
from machineconfig.utils.path_extended import PathExtended as PathExtended
|
|
18
|
-
from machineconfig.utils.accessories import get_repo_root, randstr
|
|
19
|
-
from machineconfig.scripts.python.fire_jobs_args_helper import FireJobArgs, extract_kwargs, parse_fire_args_from_context
|
|
20
|
-
import platform
|
|
21
10
|
from typing import Optional, Annotated
|
|
22
|
-
from pathlib import Path
|
|
23
|
-
import tomllib
|
|
24
11
|
import typer
|
|
25
|
-
# import os
|
|
26
12
|
|
|
27
13
|
|
|
28
|
-
def route(args: FireJobArgs, fire_args: str = "") -> None:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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))
|
|
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
|
-
|
|
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
|
|
51
34
|
|
|
35
|
+
# ========================= preparing kwargs_dict
|
|
52
36
|
if choice_file.suffix == ".py":
|
|
53
|
-
|
|
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
|
-
|
|
57
|
-
kwargs = {}
|
|
40
|
+
kwargs_dict = {}
|
|
58
41
|
|
|
59
42
|
# ========================= choosing function to run
|
|
60
43
|
choice_function: Optional[str] = None # Initialize to avoid unbound variable
|
|
61
|
-
if args.choose_function
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
assert isinstance(choice_function_tmp, str), f"choice_function must be a string. Got {type(choice_function_tmp)}"
|
|
66
|
-
choice_index = options.index(choice_function_tmp)
|
|
67
|
-
choice_function = choice_function_tmp.split(" -- ")[0]
|
|
68
|
-
choice_function_args = func_args[choice_index]
|
|
69
|
-
|
|
70
|
-
if choice_function == "RUN AS MAIN":
|
|
71
|
-
choice_function = None
|
|
72
|
-
if len(choice_function_args) > 0 and len(kwargs) == 0:
|
|
73
|
-
for item in choice_function_args:
|
|
74
|
-
kwargs[item.name] = input(f"Please enter a value for argument `{item.name}` (type = {item.type}) (default = {item.default}) : ") or item.default
|
|
75
|
-
elif choice_file.suffix == ".sh": # in this case, we choos lines.
|
|
76
|
-
options = []
|
|
77
|
-
for line in choice_file.read_text(encoding="utf-8").splitlines():
|
|
78
|
-
if line.startswith("#"):
|
|
79
|
-
continue
|
|
80
|
-
if line == "":
|
|
81
|
-
continue
|
|
82
|
-
if line.startswith("echo"):
|
|
83
|
-
continue
|
|
84
|
-
options.append(line)
|
|
85
|
-
chosen_lines = choose_from_options(msg="Choose a line to run", options=options, fzf=True, multi=True)
|
|
86
|
-
choice_file = PathExtended.tmpfile(suffix=".sh")
|
|
87
|
-
choice_file.parent.mkdir(parents=True, exist_ok=True)
|
|
88
|
-
choice_file.write_text("\n".join(chosen_lines), encoding="utf-8")
|
|
89
|
-
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)
|
|
90
48
|
else:
|
|
91
49
|
choice_function = args.function
|
|
92
50
|
|
|
93
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 ""
|
|
94
55
|
if args.streamlit:
|
|
95
|
-
|
|
96
|
-
|
|
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, fire_args: str = "") -> 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,69 +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:
|
|
117
|
+
elif choice_function is not None and choice_file.suffix == ".py":
|
|
219
118
|
command = f"{exe} -m fire {choice_file} {choice_function} {fire_args}"
|
|
220
119
|
elif args.streamlit:
|
|
221
120
|
# for .streamlit config to work, it needs to be in the current directory.
|
|
222
121
|
if args.holdDirectory:
|
|
223
122
|
command = f"{exe} {choice_file}"
|
|
224
123
|
else:
|
|
225
|
-
command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {
|
|
226
|
-
|
|
124
|
+
command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {Path.cwd()}"
|
|
227
125
|
elif args.cmd:
|
|
228
126
|
command = rf""" cd /d {choice_file.parent} & {exe} {choice_file.name} """
|
|
229
127
|
else:
|
|
230
128
|
if choice_file.suffix == "":
|
|
231
129
|
command = f"{exe} {choice_file} {fire_args}"
|
|
232
130
|
else:
|
|
233
|
-
# command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {PathExtended.cwd()}"
|
|
234
131
|
command = f"{exe} {choice_file} "
|
|
132
|
+
|
|
235
133
|
if not args.cmd:
|
|
236
|
-
|
|
237
|
-
command = f"pip install ipdb\n{command}"
|
|
238
|
-
if "pudb" in command:
|
|
239
|
-
command = f"pip install pudb\n{command}"
|
|
240
|
-
command = f"{activate_ve_line}\n{command}"
|
|
134
|
+
pass
|
|
241
135
|
else:
|
|
242
|
-
# CMD equivalent
|
|
243
|
-
if "ipdb" in command:
|
|
244
|
-
command = f"pip install ipdb & {command}"
|
|
245
|
-
if "pudb" in command:
|
|
246
|
-
command = f"pip install pudb & {command}"
|
|
247
136
|
new_line = "\n"
|
|
248
|
-
command = rf"""start cmd -Argument "/k {
|
|
249
|
-
|
|
137
|
+
command = rf"""start cmd -Argument "/k {command.replace(new_line, " & ")} " """ # this works from powershell
|
|
250
138
|
if args.submit_to_cloud:
|
|
251
|
-
command = f"""
|
|
252
|
-
{activate_ve_line}
|
|
253
|
-
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} """
|
|
254
140
|
if choice_function is not None:
|
|
255
141
|
command += f"--function {choice_function} "
|
|
256
142
|
|
|
257
|
-
if args.Nprocess > 1:
|
|
258
|
-
from machineconfig.cluster.sessions_managers.zellij_local import run_zellij_layout
|
|
259
|
-
from machineconfig.utils.schemas.layouts.layout_types import LayoutConfig
|
|
260
|
-
|
|
261
|
-
layout: LayoutConfig = {"layoutName": "fireNprocess", "layoutTabs": []}
|
|
262
|
-
for an_arg in range(args.Nprocess):
|
|
263
|
-
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}"})
|
|
264
|
-
run_zellij_layout(layout_config=layout)
|
|
265
|
-
return None
|
|
266
|
-
|
|
267
143
|
if args.optimized:
|
|
268
|
-
# note that in ipython, optimization is meaningless.
|
|
269
144
|
command = command.replace("python ", "python -OO ")
|
|
270
|
-
# if platform.system() == "Linux":
|
|
271
|
-
# command = "timeout 1s aafire -driver slang\nclear\n" + command
|
|
272
145
|
|
|
273
146
|
from rich.panel import Panel
|
|
274
147
|
from rich.console import Console
|
|
275
148
|
from rich.syntax import Syntax
|
|
276
149
|
|
|
277
150
|
console = Console()
|
|
278
|
-
|
|
279
151
|
if args.zellij_tab is not None:
|
|
280
|
-
comman_path__ =
|
|
152
|
+
comman_path__ = Path.home().joinpath(f"tmp_results/tmp_scripts/zellij_commands/{choice_file.stem}_{randstr()}.sh")
|
|
281
153
|
comman_path__.parent.mkdir(parents=True, exist_ok=True)
|
|
282
154
|
comman_path__.write_text(command, encoding="utf-8")
|
|
283
155
|
console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {comman_path__}: "), style="bold red")
|
|
@@ -286,7 +158,6 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
286
158
|
existing_tab_names = subprocess.run(["zellij", "action", "query-tab-names"], capture_output=True, text=True, check=True).stdout.splitlines()
|
|
287
159
|
if args.zellij_tab in existing_tab_names:
|
|
288
160
|
print(f"⚠️ Tab name `{args.zellij_tab}` already exists. Please choose a different name.")
|
|
289
|
-
# args.zellij_tab = input("Please enter a new tab name: ")
|
|
290
161
|
args.zellij_tab += f"_{randstr(3)}"
|
|
291
162
|
from machineconfig.cluster.sessions_managers.zellij_local import run_command_in_zellij_tab
|
|
292
163
|
|
|
@@ -296,37 +167,25 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
296
167
|
if args.git_pull:
|
|
297
168
|
command = f"\ngit -C {choice_file.parent} pull\n" + command
|
|
298
169
|
if args.PathExport:
|
|
299
|
-
|
|
300
|
-
export_line = f"""export PYTHONPATH="{repo_root}""" + """:${PYTHONPATH}" """
|
|
301
|
-
elif platform.system() == "Windows":
|
|
302
|
-
# export_line = f"""set PYTHONPATH="{repo_root}""" + """:%PYTHONPATH%" """
|
|
303
|
-
# powershell equivalent
|
|
304
|
-
export_line = f"""$env:PYTHONPATH="{repo_root}""" + """:$env:PYTHONPATH" """
|
|
305
|
-
else:
|
|
306
|
-
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
307
|
-
command = export_line + "\n" + command
|
|
170
|
+
from machineconfig.scripts.python.helpers_fire_command.file_wrangler import add_to_path
|
|
308
171
|
|
|
309
|
-
|
|
310
|
-
|
|
172
|
+
export_line = add_to_path(path_variable="PYTHONPATH", directory=str(repo_root))
|
|
173
|
+
command = export_line + "\n" + command
|
|
311
174
|
if args.loop:
|
|
175
|
+
import platform
|
|
312
176
|
if platform.system() in ["Linux", "Darwin"]:
|
|
313
177
|
command = command + "\nsleep 0.5"
|
|
314
178
|
elif platform.system() == "Windows":
|
|
315
|
-
# command = command + "timeout 0.5\n"
|
|
316
|
-
# pwsh equivalent
|
|
317
179
|
command = "$ErrorActionPreference = 'SilentlyContinue';\n" + command + "\nStart-Sleep -Seconds 0.5"
|
|
318
180
|
else:
|
|
319
181
|
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
320
|
-
# command = command + f"\n. {program_path}"
|
|
321
|
-
console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {command}: "), style="bold red")
|
|
322
|
-
# program_path.parent.mkdir(parents=True, exist_ok=True)
|
|
323
|
-
# program_path.write_text(command, encoding="utf-8")
|
|
324
|
-
import subprocess
|
|
325
182
|
|
|
326
|
-
|
|
183
|
+
from machineconfig.utils.code import exit_then_run_shell_script
|
|
184
|
+
|
|
185
|
+
exit_then_run_shell_script(script=command, strict=False)
|
|
327
186
|
|
|
328
187
|
|
|
329
|
-
def
|
|
188
|
+
def fire(
|
|
330
189
|
ctx: typer.Context,
|
|
331
190
|
path: Annotated[str, typer.Argument(help="Path to the Python file to run")] = ".",
|
|
332
191
|
function: Annotated[Optional[str], typer.Argument(help="Function to run")] = None,
|
|
@@ -334,28 +193,30 @@ def main(
|
|
|
334
193
|
cmd: Annotated[bool, typer.Option("--cmd", "-B", help="Create a cmd fire command to launch the job asynchronously")] = False,
|
|
335
194
|
interactive: Annotated[bool, typer.Option("--interactive", "-i", help="Whether to run the job interactively using IPython")] = False,
|
|
336
195
|
debug: Annotated[bool, typer.Option("--debug", "-d", help="Enable debug mode")] = False,
|
|
337
|
-
choose_function: Annotated[bool, typer.Option("--
|
|
196
|
+
choose_function: Annotated[bool, typer.Option("--choose-function", "-c", help="Choose function interactively")] = False,
|
|
338
197
|
loop: Annotated[bool, typer.Option("--loop", "-l", help="Infinite recursion (runs again after completion/interruption)")] = False,
|
|
339
198
|
jupyter: Annotated[bool, typer.Option("--jupyter", "-j", help="Open in a jupyter notebook")] = False,
|
|
340
|
-
|
|
341
|
-
remote: Annotated[bool, typer.Option("--remote", "-r", help="Launch on a remote machine")] = False,
|
|
199
|
+
marimo: Annotated[bool, typer.Option("--marimo", "-M", help="Open in a marimo notebook")] = False,
|
|
342
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,
|
|
343
205
|
streamlit: Annotated[bool, typer.Option("--streamlit", "-S", help="Run as streamlit app")] = False,
|
|
344
206
|
environment: Annotated[str, typer.Option("--environment", "-E", help="Choose ip, localhost, hostname or arbitrary url")] = "",
|
|
345
|
-
holdDirectory: Annotated[
|
|
207
|
+
holdDirectory: Annotated[
|
|
208
|
+
bool, typer.Option("--holdDirectory", "-D", help="Hold current directory and avoid cd'ing to the script directory")
|
|
209
|
+
] = False,
|
|
346
210
|
PathExport: Annotated[bool, typer.Option("--PathExport", "-P", help="Augment the PYTHONPATH with repo root")] = False,
|
|
347
|
-
git_pull: Annotated[bool, typer.Option("--
|
|
348
|
-
optimized: Annotated[bool, typer.Option("--optimized", "-O", help="Run the optimized version of the function")] = False,
|
|
349
|
-
Nprocess: Annotated[int, typer.Option("--Nprocess", "-p", help="Number of processes to use")] = 1,
|
|
350
|
-
zellij_tab: Annotated[Optional[str], typer.Option("--zellij_tab", "-z", help="Open in a new zellij tab")] = None,
|
|
211
|
+
git_pull: Annotated[bool, typer.Option("--git-pull", "-g", help="Start by pulling the git repo")] = False,
|
|
351
212
|
watch: Annotated[bool, typer.Option("--watch", "-w", help="Watch the file for changes")] = False,
|
|
352
|
-
layout: Annotated[bool, typer.Option("--layout", "-L", help="Use layout configuration (Zellij Or WindowsTerminal)")] = False,
|
|
353
213
|
) -> None:
|
|
354
214
|
"""Main function to process fire jobs arguments."""
|
|
355
|
-
|
|
215
|
+
|
|
356
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
|
|
357
218
|
fire_args = parse_fire_args_from_context(ctx)
|
|
358
|
-
|
|
219
|
+
|
|
359
220
|
args = FireJobArgs(
|
|
360
221
|
path=path,
|
|
361
222
|
function=function,
|
|
@@ -366,6 +227,7 @@ def main(
|
|
|
366
227
|
choose_function=choose_function,
|
|
367
228
|
loop=loop,
|
|
368
229
|
jupyter=jupyter,
|
|
230
|
+
marimo=marimo,
|
|
369
231
|
submit_to_cloud=submit_to_cloud,
|
|
370
232
|
remote=remote,
|
|
371
233
|
module=module,
|
|
@@ -375,10 +237,8 @@ def main(
|
|
|
375
237
|
PathExport=PathExport,
|
|
376
238
|
git_pull=git_pull,
|
|
377
239
|
optimized=optimized,
|
|
378
|
-
Nprocess=Nprocess,
|
|
379
240
|
zellij_tab=zellij_tab,
|
|
380
241
|
watch=watch,
|
|
381
|
-
layout=layout,
|
|
382
242
|
)
|
|
383
243
|
try:
|
|
384
244
|
route(args, fire_args)
|
|
@@ -388,21 +248,23 @@ def main(
|
|
|
388
248
|
except Exception as e:
|
|
389
249
|
# For other exceptions, print clean error message and exit
|
|
390
250
|
import sys
|
|
251
|
+
|
|
391
252
|
print(f"❌ Error: {e}", file=sys.stderr)
|
|
392
253
|
sys.exit(1)
|
|
393
254
|
|
|
394
255
|
|
|
395
|
-
def
|
|
396
|
-
# from trogon.typer import init_tui
|
|
397
|
-
# from trogon.typer import init_tui
|
|
256
|
+
def get_app():
|
|
398
257
|
from typer import Typer
|
|
258
|
+
|
|
399
259
|
app = Typer(add_completion=False)
|
|
400
|
-
app.command(context_settings={"allow_extra_args": True, "allow_interspersed_args": False})(
|
|
401
|
-
|
|
402
|
-
|
|
260
|
+
app.command(context_settings={"allow_extra_args": True, "allow_interspersed_args": False})(fire)
|
|
261
|
+
return app
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
def main():
|
|
265
|
+
app = get_app()
|
|
403
266
|
app()
|
|
404
267
|
|
|
405
268
|
|
|
406
269
|
if __name__ == "__main__":
|
|
407
|
-
|
|
408
|
-
main_from_parser()
|
|
270
|
+
from machineconfig.scripts.python.helpers_fire_command.fire_jobs_args_helper import FireJobArgs
|