machineconfig 1.94__py3-none-any.whl → 1.96__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/cluster/cloud_manager.py +445 -343
- machineconfig/cluster/data_transfer.py +63 -56
- machineconfig/cluster/distribute.py +284 -280
- machineconfig/cluster/file_manager.py +234 -237
- machineconfig/cluster/job_params.py +133 -133
- machineconfig/cluster/loader_runner.py +183 -149
- machineconfig/cluster/remote_machine.py +269 -252
- machineconfig/cluster/script_execution.py +215 -209
- machineconfig/cluster/script_notify_upon_completion.py +50 -43
- machineconfig/cluster/self_ssh.py +52 -54
- machineconfig/cluster/sessions_managers/__init__.py +0 -0
- machineconfig/cluster/sessions_managers/archive/__init__.py +0 -0
- machineconfig/{jobs/python → cluster/sessions_managers/archive}/create_zellij_template.py +5 -3
- machineconfig/cluster/sessions_managers/archive/session_managers.py +184 -0
- machineconfig/cluster/sessions_managers/demo_rich_zellij.py +0 -0
- machineconfig/cluster/sessions_managers/enhanced_command_runner.py +160 -0
- machineconfig/cluster/sessions_managers/wt_local.py +494 -0
- machineconfig/cluster/sessions_managers/wt_local_manager.py +577 -0
- machineconfig/cluster/sessions_managers/wt_remote.py +288 -0
- machineconfig/cluster/sessions_managers/wt_remote_manager.py +483 -0
- machineconfig/cluster/sessions_managers/wt_utils/layout_generator.py +196 -0
- machineconfig/cluster/sessions_managers/wt_utils/process_monitor.py +418 -0
- machineconfig/cluster/sessions_managers/wt_utils/remote_executor.py +175 -0
- machineconfig/cluster/sessions_managers/wt_utils/session_manager.py +300 -0
- machineconfig/cluster/sessions_managers/wt_utils/status_reporter.py +228 -0
- machineconfig/cluster/sessions_managers/zellij_local.py +418 -0
- machineconfig/cluster/sessions_managers/zellij_local_manager.py +533 -0
- machineconfig/cluster/sessions_managers/zellij_remote.py +229 -0
- machineconfig/cluster/sessions_managers/zellij_remote_manager.py +188 -0
- machineconfig/cluster/sessions_managers/zellij_utils/example_usage.py +64 -0
- machineconfig/cluster/sessions_managers/zellij_utils/layout_generator.py +126 -0
- machineconfig/cluster/sessions_managers/zellij_utils/process_monitor.py +334 -0
- machineconfig/cluster/sessions_managers/zellij_utils/remote_executor.py +68 -0
- machineconfig/cluster/sessions_managers/zellij_utils/session_manager.py +119 -0
- machineconfig/cluster/sessions_managers/zellij_utils/status_reporter.py +85 -0
- machineconfig/cluster/templates/cli_click.py +0 -1
- machineconfig/cluster/templates/cli_gooey.py +102 -104
- machineconfig/cluster/templates/run_cloud.py +51 -51
- machineconfig/cluster/templates/run_cluster.py +103 -59
- machineconfig/cluster/templates/run_remote.py +57 -58
- machineconfig/cluster/templates/utils.py +69 -36
- machineconfig/jobs/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/linux/msc/lid.sh +2 -4
- machineconfig/jobs/linux/msc/network.sh +3 -6
- machineconfig/jobs/python/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python/check_installations.py +258 -190
- machineconfig/jobs/python/create_bootable_media.py +7 -3
- machineconfig/jobs/python/python_cargo_build_share.py +50 -50
- machineconfig/jobs/python/python_ve_symlink.py +10 -10
- machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
- machineconfig/jobs/python/vscode/api.py +3 -3
- machineconfig/jobs/python/vscode/link_ve.py +6 -6
- machineconfig/jobs/python/vscode/select_interpreter.py +13 -9
- machineconfig/jobs/python/vscode/sync_code.py +14 -11
- machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +5 -5
- machineconfig/jobs/python_custom_installers/dev/aider.py +4 -4
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +7 -6
- machineconfig/jobs/python_custom_installers/dev/brave.py +11 -7
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +7 -8
- machineconfig/jobs/python_custom_installers/dev/code.py +7 -5
- machineconfig/jobs/python_custom_installers/dev/cursor.py +66 -5
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +4 -5
- machineconfig/jobs/python_custom_installers/dev/espanso.py +21 -17
- machineconfig/jobs/python_custom_installers/dev/goes.py +6 -12
- machineconfig/jobs/python_custom_installers/dev/lvim.py +7 -6
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +5 -5
- machineconfig/jobs/python_custom_installers/dev/redis.py +11 -7
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +12 -8
- machineconfig/jobs/python_custom_installers/dev/winget.py +194 -0
- machineconfig/jobs/python_custom_installers/{dev/docker.py → docker.py} +12 -7
- machineconfig/jobs/python_custom_installers/gh.py +10 -9
- machineconfig/jobs/python_custom_installers/hx.py +36 -65
- machineconfig/jobs/python_custom_installers/scripts/linux/brave.sh +4 -8
- machineconfig/jobs/python_custom_installers/scripts/linux/docker.sh +5 -10
- machineconfig/jobs/python_custom_installers/scripts/linux/docker_start.sh +3 -6
- machineconfig/jobs/python_custom_installers/scripts/linux/edge.sh +3 -6
- machineconfig/jobs/python_custom_installers/scripts/linux/nerdfont.sh +5 -10
- machineconfig/jobs/python_custom_installers/scripts/linux/pgsql.sh +4 -8
- machineconfig/jobs/python_custom_installers/scripts/linux/redis.sh +5 -10
- machineconfig/jobs/python_custom_installers/scripts/linux/timescaledb.sh +6 -12
- machineconfig/jobs/python_custom_installers/scripts/linux/vscode.sh +101 -33
- machineconfig/jobs/python_custom_installers/scripts/linux/warp-cli.sh +5 -10
- machineconfig/jobs/python_custom_installers/scripts/linux/wezterm.sh +3 -6
- machineconfig/jobs/python_custom_installers/{dev/warp-cli.py → warp-cli.py} +5 -5
- machineconfig/jobs/python_generic_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_generic_installers/config.json +133 -9
- machineconfig/jobs/python_generic_installers/dev/config.json +208 -37
- machineconfig/jobs/python_generic_installers/update.py +3 -0
- machineconfig/jobs/python_linux_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_linux_installers/config.json +42 -6
- machineconfig/jobs/python_linux_installers/dev/config.json +79 -11
- machineconfig/jobs/python_windows_installers/config.json +6 -0
- machineconfig/profile/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/profile/__pycache__/create.cpython-311.pyc +0 -0
- machineconfig/profile/__pycache__/shell.cpython-311.pyc +0 -0
- machineconfig/profile/create.py +5 -5
- machineconfig/profile/create_hardlinks.py +5 -5
- machineconfig/profile/shell.py +69 -63
- machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/cloud/init.sh +9 -18
- machineconfig/scripts/linux/fire +5 -24
- machineconfig/scripts/linux/fire_agents +27 -0
- machineconfig/scripts/linux/share_cloud.sh +6 -12
- machineconfig/scripts/linux/wifi_conn +24 -0
- machineconfig/scripts/python/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_copy.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_mount.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/cloud_sync.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/croshell.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_backup_retrieve.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_devapps_install.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/devops_update_repos.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_agents.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_jobs.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/fire_jobs.cpython-313.pyc +0 -0
- machineconfig/scripts/python/__pycache__/get_zellij_cmd.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/repos.cpython-311.pyc +0 -0
- machineconfig/scripts/python/archive/im2text.py +28 -30
- machineconfig/scripts/python/archive/tmate_conn.py +10 -13
- machineconfig/scripts/python/archive/tmate_start.py +12 -16
- machineconfig/scripts/python/choose_wezterm_theme.py +12 -21
- machineconfig/scripts/python/cloud_copy.py +49 -104
- machineconfig/scripts/python/cloud_manager.py +77 -91
- machineconfig/scripts/python/cloud_mount.py +36 -46
- machineconfig/scripts/python/cloud_repo_sync.py +33 -79
- machineconfig/scripts/python/cloud_sync.py +35 -45
- machineconfig/scripts/python/croshell.py +70 -92
- machineconfig/scripts/python/devops.py +54 -113
- machineconfig/scripts/python/devops_add_identity.py +71 -109
- machineconfig/scripts/python/devops_add_ssh_key.py +42 -149
- machineconfig/scripts/python/devops_backup_retrieve.py +31 -119
- machineconfig/scripts/python/devops_devapps_install.py +6 -10
- machineconfig/scripts/python/devops_update_repos.py +5 -4
- machineconfig/scripts/python/dotfile.py +10 -7
- machineconfig/scripts/python/fire_agents.py +69 -0
- machineconfig/scripts/python/fire_jobs.py +117 -78
- machineconfig/scripts/python/ftpx.py +8 -8
- machineconfig/scripts/python/get_zellij_cmd.py +3 -3
- machineconfig/scripts/python/gh_models.py +6 -4
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/cloud_helpers.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers2.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/helpers4.cpython-313.pyc +0 -0
- machineconfig/scripts/python/helpers/__pycache__/repo_sync_helpers.cpython-311.pyc +0 -0
- machineconfig/scripts/python/helpers/cloud_helpers.py +49 -46
- machineconfig/scripts/python/helpers/helpers2.py +26 -39
- machineconfig/scripts/python/helpers/helpers4.py +23 -35
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +33 -67
- machineconfig/scripts/python/mount_nfs.py +8 -11
- machineconfig/scripts/python/mount_nw_drive.py +4 -4
- machineconfig/scripts/python/mount_ssh.py +2 -2
- machineconfig/scripts/python/onetimeshare.py +56 -57
- machineconfig/scripts/python/pomodoro.py +55 -55
- machineconfig/scripts/python/repos.py +72 -49
- machineconfig/scripts/python/scheduler.py +70 -53
- machineconfig/scripts/python/snapshot.py +21 -24
- machineconfig/scripts/python/start_slidev.py +6 -5
- machineconfig/scripts/python/start_terminals.py +3 -1
- machineconfig/scripts/python/viewer.py +5 -4
- machineconfig/scripts/python/viewer_template.py +138 -140
- machineconfig/scripts/python/wifi_conn.py +416 -62
- machineconfig/scripts/python/wsl_windows_transfer.py +18 -3
- machineconfig/scripts/windows/fire.ps1 +27 -15
- machineconfig/settings/linters/.pylintrc +6 -7
- machineconfig/settings/lvim/windows/config.lua +0 -0
- machineconfig/settings/shells/bash/init.sh +6 -0
- machineconfig/settings/shells/ipy/profiles/default/startup/playext.py +7 -6
- machineconfig/settings/shells/pwsh/init.ps1 +6 -6
- machineconfig/settings/shells/wt/settings.json +51 -266
- machineconfig/setup_linux/nix/cli_installation.sh +9 -18
- machineconfig/setup_linux/others/openssh-server_add_pub_key.sh +3 -6
- machineconfig/setup_linux/web_shortcuts/all.sh +5 -10
- machineconfig/setup_linux/web_shortcuts/ascii_art.sh +7 -14
- machineconfig/setup_linux/web_shortcuts/croshell.sh +6 -12
- machineconfig/setup_linux/web_shortcuts/interactive.sh +39 -70
- machineconfig/setup_linux/web_shortcuts/ssh.sh +8 -16
- machineconfig/setup_linux/web_shortcuts/update_system.sh +7 -14
- machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +3 -6
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +27 -21
- machineconfig/utils/ai/browser_user_wrapper.py +60 -45
- machineconfig/utils/ai/generate_file_checklist.py +4 -7
- machineconfig/utils/ai/url2md.py +15 -7
- machineconfig/utils/cloud/onedrive/setup_oauth.py +59 -0
- machineconfig/utils/cloud/onedrive/transaction.py +796 -0
- machineconfig/utils/{utils_code.py → code.py} +25 -22
- machineconfig/utils/installer.py +81 -44
- machineconfig/utils/installer_utils/installer_abc.py +7 -6
- machineconfig/utils/installer_utils/installer_class.py +44 -25
- machineconfig/utils/io_save.py +107 -0
- machineconfig/utils/{utils_links.py → links.py} +28 -35
- machineconfig/utils/{utils_options.py → options.py} +14 -28
- machineconfig/utils/path.py +112 -0
- machineconfig/utils/path_reduced.py +608 -0
- machineconfig/utils/procs.py +134 -73
- machineconfig/utils/scheduling.py +312 -222
- machineconfig/utils/utils.py +19 -26
- machineconfig/utils/utils2.py +42 -0
- machineconfig/utils/utils5.py +84 -0
- machineconfig/utils/ve.py +49 -103
- {machineconfig-1.94.dist-info → machineconfig-1.96.dist-info}/METADATA +5 -3
- machineconfig-1.96.dist-info/RECORD +437 -0
- {machineconfig-1.94.dist-info → machineconfig-1.96.dist-info}/WHEEL +1 -1
- machineconfig/cluster/session_managers.py +0 -183
- machineconfig/cluster/templates/f.py +0 -4
- machineconfig/jobs/python/__pycache__/check_installations.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/checkout_version.cpython-311.pyc +0 -0
- machineconfig/jobs/python/__pycache__/python_ve_symlink.cpython-311.pyc +0 -0
- machineconfig/jobs/python/checkout_version.py +0 -123
- machineconfig/jobs/python/vscode/__pycache__/api.cpython-311.pyc +0 -0
- machineconfig/jobs/python/vscode/__pycache__/link_ve.cpython-311.pyc +0 -0
- machineconfig/jobs/python_custom_installers/__pycache__/hx.cpython-311.pyc +0 -0
- machineconfig/jobs/python_windows_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/python/.mypy_cache/.gitignore +0 -2
- machineconfig/scripts/python/.mypy_cache/3.11/@plugins_snapshot.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/__future__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/__future__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_ast.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_ast.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_bz2.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_bz2.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_codecs.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_codecs.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_collections_abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_compression.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_compression.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_decimal.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_decimal.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_frozen_importlib_external.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_io.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_io.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_locale.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_locale.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_stat.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_stat.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_struct.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_struct.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_thread.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_thread.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_typeshed/importlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_warnings.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_warnings.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakref.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakref.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/_weakrefset.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/argparse.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/argparse.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/ast.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/ast.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/binascii.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/binascii.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/builtins.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/builtins.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/bz2.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/bz2.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/calendar.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/calendar.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/codecs.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/codecs.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/collections/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/configparser.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/configparser.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/contextlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/contextlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dataclasses.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/datetime.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/datetime.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/decimal.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/decimal.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dis.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/dis.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/_policybase.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/charset.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/charset.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/contentmanager.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/errors.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/errors.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/header.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/header.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/message.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/message.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/policy.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/email/policy.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/enum.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/enum.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/fnmatch.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/functools.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/functools.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/genericpath.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/genericpath.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/getpass.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/getpass.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/cmd.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/compat.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/compat.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/config.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/config.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/db.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/db.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/diff.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/diff.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/exc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/exc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/fun.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/typ.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/index/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/blob.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/commit.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/fun.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/root.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/submodule/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tag.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/tree.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/objects/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/head.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/log.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/reference.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/remote.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/symbolic.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/refs/tag.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/remote.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/remote.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/base.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/repo/fun.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/types.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/types.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/util.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/git/util.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/glob.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/glob.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gzip.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/gzip.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/_bootstrap_external.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/machinery.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/metadata/_meta.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/readers.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/_common.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/importlib/resources/abc.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/inspect.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/inspect.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/io.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/io.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/itertools.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/itertools.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/locale.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/locale.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/logging/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mimetypes.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mmap.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/mmap.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/numbers.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/numbers.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/opcode.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/opcode.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/path.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/os/path.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/pathlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/pathlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/platform.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/platform.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/posixpath.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/posixpath.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/re.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/re.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/resource.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/resource.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shlex.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shlex.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shutil.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/shutil.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/signal.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/signal.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/src/machineconfig/scripts/python/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_compile.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_constants.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sre_parse.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/stat.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/stat.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/string.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/string.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/struct.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/struct.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/subprocess.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/subprocess.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/sys/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tarfile.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tarfile.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tempfile.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/tempfile.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/textwrap.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/textwrap.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/threading.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/threading.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/time.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/time.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/types.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/types.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/typing_extensions.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/urllib/parse.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/uuid.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/uuid.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/warnings.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/warnings.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/weakref.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/weakref.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zipfile/__init__.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zlib.data.json +0 -1
- machineconfig/scripts/python/.mypy_cache/3.11/zlib.meta.json +0 -1
- machineconfig/scripts/python/.mypy_cache/CACHEDIR.TAG +0 -3
- machineconfig/scripts/python/__pycache__/cloud_repo_sync.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/gh_models.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/url2md.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/viewer.cpython-311.pyc +0 -0
- machineconfig/scripts/python/__pycache__/vscode_api.cpython-311.pyc +0 -0
- machineconfig/settings/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/settings/linters/.ruff_cache/.gitignore +0 -2
- machineconfig/settings/linters/.ruff_cache/CACHEDIR.TAG +0 -1
- machineconfig/settings/shells/ipy/profiles/default/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/settings/shells/ipy/profiles/default/startup/__pycache__/playext.cpython-311.pyc +0 -0
- machineconfig/utils/utils_path.py +0 -151
- machineconfig/utils/ve_utils/ve1.py +0 -111
- machineconfig/utils/ve_utils/ve2.py +0 -142
- machineconfig-1.94.dist-info/RECORD +0 -710
- {machineconfig-1.94.dist-info → machineconfig-1.96.dist-info}/top_level.txt +0 -0
|
@@ -12,15 +12,15 @@ from machineconfig.scripts.python.helpers.helpers4 import search_for_files_of_in
|
|
|
12
12
|
from machineconfig.scripts.python.helpers.helpers4 import convert_kwargs_to_fire_kwargs_str
|
|
13
13
|
from machineconfig.scripts.python.helpers.helpers4 import parse_pyfile
|
|
14
14
|
from machineconfig.scripts.python.helpers.helpers4 import get_import_module_code
|
|
15
|
+
from machineconfig.utils.ve import get_repo_root, get_ve_activate_line, get_ve_path_and_ipython_profile
|
|
15
16
|
from machineconfig.utils.utils import display_options, choose_one_option, PROGRAM_PATH, match_file_name, sanitize_path
|
|
16
|
-
from machineconfig.utils.
|
|
17
|
-
from
|
|
18
|
-
from
|
|
17
|
+
from machineconfig.utils.path_reduced import P as PathExtended
|
|
18
|
+
from machineconfig.utils.io_save import save_toml
|
|
19
|
+
from machineconfig.utils.utils2 import randstr, read_toml
|
|
19
20
|
import platform
|
|
20
21
|
from typing import Optional
|
|
21
22
|
import argparse
|
|
22
|
-
|
|
23
|
-
from machineconfig.utils.ve_utils.ve1 import get_repo_root
|
|
23
|
+
import os
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
str2obj = {"True": True, "False": False, "None": None}
|
|
@@ -36,37 +36,44 @@ def main() -> None:
|
|
|
36
36
|
parser.add_argument("--interactive", "-i", action="store_true", help="Whether to run the job interactively using IPython")
|
|
37
37
|
parser.add_argument("--debug", "-d", action="store_true", help="debug")
|
|
38
38
|
parser.add_argument("--choose_function", "-c", action="store_true", help="debug")
|
|
39
|
-
parser.add_argument("--loop", "-l", action="store_true", help="infinite recusion (runs again after completion)")
|
|
39
|
+
parser.add_argument("--loop", "-l", action="store_true", help="infinite recusion (runs again after completion/interruption)")
|
|
40
40
|
parser.add_argument("--jupyter", "-j", action="store_true", help="open in a jupyter notebook")
|
|
41
41
|
parser.add_argument("--submit_to_cloud", "-C", action="store_true", help="submit to cloud compute")
|
|
42
42
|
parser.add_argument("--remote", "-r", action="store_true", help="launch on a remote machine")
|
|
43
43
|
parser.add_argument("--module", "-m", action="store_true", help="launch the main file")
|
|
44
44
|
parser.add_argument("--streamlit", "-S", action="store_true", help="run as streamlit app")
|
|
45
|
+
parser.add_argument("--environment", "-E", type=str, help="Choose ip, localhost, hostname or arbitrary url", default="")
|
|
45
46
|
parser.add_argument("--holdDirectory", "-D", action="store_true", help="hold current directory and avoid cd'ing to the script directory")
|
|
47
|
+
parser.add_argument("--PathExport", "-P", action="store_true", help="augment the PYTHONPATH with repo root.")
|
|
46
48
|
parser.add_argument("--git_pull", "-g", action="store_true", help="Start by pulling the git repo")
|
|
47
|
-
parser.add_argument("--optimized",
|
|
49
|
+
parser.add_argument("--optimized", "-O", action="store_true", help="Run the optimized version of the function")
|
|
48
50
|
parser.add_argument("--Nprocess", "-p", type=int, help="Number of processes to use", default=1)
|
|
49
|
-
parser.add_argument("--kw", nargs="*", default=None, help="keyword arguments to pass to the function in the form of k1 v1 k2 v2 ... (meaning k1=v1, k2=v2, etc)")
|
|
50
51
|
parser.add_argument("--zellij_tab", "-z", type=str, dest="zellij_tab", help="open in a new zellij tab")
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
parser.add_argument("--watch", "-w", action="store_true", help="watch the file for changes")
|
|
53
|
+
parser.add_argument("--kw", nargs="*", default=None, help="keyword arguments to pass to the function in the form of k1 v1 k2 v2 ... (meaning k1=v1, k2=v2, etc)")
|
|
54
|
+
try:
|
|
55
|
+
args = parser.parse_args()
|
|
56
|
+
except Exception as ex:
|
|
57
|
+
print(f"❌ Failed to parse arguments: {ex}")
|
|
58
|
+
parser.print_help()
|
|
59
|
+
raise ex
|
|
60
|
+
path_obj = sanitize_path(PathExtended(args.path))
|
|
54
61
|
if not path_obj.exists():
|
|
55
|
-
path_obj = match_file_name(sub_string=args.path)
|
|
62
|
+
path_obj = match_file_name(sub_string=args.path, search_root=PathExtended.cwd())
|
|
56
63
|
else: pass
|
|
57
|
-
|
|
58
64
|
if path_obj.is_dir():
|
|
59
65
|
print(f"🔍 Searching recursively for Python, PowerShell and Shell scripts in directory `{path_obj}`")
|
|
60
66
|
files = search_for_files_of_interest(path_obj)
|
|
61
67
|
choice_file = choose_one_option(options=files, fzf=True)
|
|
62
|
-
choice_file =
|
|
68
|
+
choice_file = PathExtended(choice_file)
|
|
63
69
|
else:
|
|
64
70
|
choice_file = path_obj
|
|
65
|
-
|
|
71
|
+
repo_root = get_repo_root(str(choice_file))
|
|
72
|
+
print(f"💾 Selected file: {choice_file}.\nRepo root: {repo_root}")
|
|
66
73
|
|
|
67
|
-
|
|
74
|
+
ve_root_from_file, ipy_profile = get_ve_path_and_ipython_profile(choice_file)
|
|
68
75
|
if ipy_profile is None: ipy_profile = "default"
|
|
69
|
-
activate_ve_line = get_ve_activate_line(
|
|
76
|
+
activate_ve_line = get_ve_activate_line(ve_root=args.ve or ve_root_from_file or "$HOME/venvs/ve")
|
|
70
77
|
|
|
71
78
|
# Convert args.kw to dictionary
|
|
72
79
|
if choice_file.suffix == ".py":
|
|
@@ -84,13 +91,14 @@ def main() -> None:
|
|
|
84
91
|
kwargs = {}
|
|
85
92
|
|
|
86
93
|
# ========================= choosing function to run
|
|
94
|
+
choice_function: Optional[str] = None # Initialize to avoid unbound variable
|
|
87
95
|
if args.choose_function or args.submit_to_cloud:
|
|
88
96
|
if choice_file.suffix == ".py":
|
|
89
97
|
options, func_args = parse_pyfile(file_path=str(choice_file))
|
|
90
98
|
choice_function_tmp = display_options(msg="Choose a function to run", options=options, fzf=True, multi=False)
|
|
91
99
|
assert isinstance(choice_function_tmp, str), f"choice_function must be a string. Got {type(choice_function_tmp)}"
|
|
92
100
|
choice_index = options.index(choice_function_tmp)
|
|
93
|
-
choice_function
|
|
101
|
+
choice_function = choice_function_tmp.split(' -- ')[0]
|
|
94
102
|
choice_function_args = func_args[choice_index]
|
|
95
103
|
|
|
96
104
|
if choice_function == "RUN AS MAIN": choice_function = None
|
|
@@ -104,34 +112,60 @@ def main() -> None:
|
|
|
104
112
|
if line == "": continue
|
|
105
113
|
if line.startswith("echo"): continue
|
|
106
114
|
options.append(line)
|
|
107
|
-
|
|
108
|
-
choice_file =
|
|
115
|
+
chosen_lines = display_options(msg="Choose a line to run", options=options, fzf=True, multi=True)
|
|
116
|
+
choice_file = PathExtended.tmpfile(suffix=".sh").write_text("\n".join(chosen_lines))
|
|
109
117
|
choice_function = None
|
|
110
118
|
else:
|
|
111
119
|
choice_function = args.function
|
|
112
120
|
|
|
113
121
|
if choice_file.suffix == ".py":
|
|
114
122
|
if args.streamlit:
|
|
115
|
-
|
|
116
|
-
|
|
123
|
+
import socket
|
|
124
|
+
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
125
|
+
try:
|
|
126
|
+
s.connect(('8.8.8.8', 1))
|
|
127
|
+
local_ip_v4 = s.getsockname()[0]
|
|
128
|
+
except Exception:
|
|
129
|
+
local_ip_v4 = socket.gethostbyname(socket.gethostname())
|
|
130
|
+
finally:
|
|
131
|
+
s.close()
|
|
117
132
|
computer_name = platform.node()
|
|
118
133
|
port = 8501
|
|
119
|
-
toml_path: Optional[
|
|
134
|
+
toml_path: Optional[PathExtended] = None
|
|
120
135
|
toml_path_maybe = choice_file.parent.joinpath(".streamlit/config.toml")
|
|
121
|
-
if toml_path_maybe.exists():
|
|
136
|
+
if toml_path_maybe.exists():
|
|
137
|
+
toml_path = toml_path_maybe
|
|
122
138
|
elif choice_file.parent.name == "pages":
|
|
123
139
|
toml_path_maybe = choice_file.parent.parent.joinpath(".streamlit/config.toml")
|
|
124
140
|
if toml_path_maybe.exists(): toml_path = toml_path_maybe
|
|
125
141
|
if toml_path is not None:
|
|
126
|
-
|
|
142
|
+
print(f"📄 Reading config.toml @ {toml_path}")
|
|
143
|
+
config = read_toml(toml_path)
|
|
127
144
|
if "server" in config:
|
|
128
145
|
if "port" in config["server"]:
|
|
129
146
|
port = config["server"]["port"]
|
|
147
|
+
secrets_path = toml_path.with_name("secrets.toml")
|
|
148
|
+
if repo_root is not None:
|
|
149
|
+
secrets_template_path = PathExtended.home().joinpath(f"dotfiles/creds/streamlit/{PathExtended(repo_root).name}/{choice_file.name}/secrets.toml")
|
|
150
|
+
if args.environment != "" and not secrets_path.exists() and secrets_template_path.exists():
|
|
151
|
+
secrets_template = read_toml(secrets_template_path)
|
|
152
|
+
if args.environment == "ip": host_url = f"http://{local_ip_v4}:{port}/oauth2callback"
|
|
153
|
+
elif args.environment == "localhost": host_url = f"http://localhost:{port}/oauth2callback"
|
|
154
|
+
elif args.environment == "hostname": host_url = f"http://{computer_name}:{port}/oauth2callback"
|
|
155
|
+
else: host_url = f"http://{args.environment}:{port}/oauth2callback"
|
|
156
|
+
try:
|
|
157
|
+
secrets_template["auth"]["redirect_uri"] = host_url
|
|
158
|
+
secrets_template["auth"]["cookie_secret"] = randstr(35)
|
|
159
|
+
secrets_template["auth"]["auth0"]["redirect_uri"] = host_url
|
|
160
|
+
save_toml(obj=secrets_template, path=secrets_path)
|
|
161
|
+
except Exception as ex:
|
|
162
|
+
print(ex)
|
|
163
|
+
raise ex
|
|
130
164
|
message = f"🚀 Streamlit app is running @:\n1- http://{local_ip_v4}:{port}\n2- http://{computer_name}:{port}\n3- http://localhost:{port}"
|
|
131
165
|
from rich.panel import Panel
|
|
132
166
|
from rich import print as rprint
|
|
133
167
|
rprint(Panel(message))
|
|
134
|
-
exe = "streamlit run --server.address 0.0.0.0 --server.headless true"
|
|
168
|
+
exe = f"streamlit run --server.address 0.0.0.0 --server.headless true --server.port {port}"
|
|
135
169
|
# exe = f"cd '{choice_file.parent}'; " + exe
|
|
136
170
|
elif args.interactive is False: exe = "python"
|
|
137
171
|
elif args.jupyter: exe = "jupyter-lab"
|
|
@@ -145,9 +179,8 @@ def main() -> None:
|
|
|
145
179
|
raise NotImplementedError(f"File type {choice_file.suffix} not supported, in the sense that I don't know how to fire it.")
|
|
146
180
|
|
|
147
181
|
if args.module or (args.debug and args.choose_function): # because debugging tools do not support choosing functions and don't interplay with fire module. So the only way to have debugging and choose function options is to import the file as a module into a new script and run the function of interest there and debug the new script.
|
|
148
|
-
assert choice_file.suffix == ".py", f"File must be a python file to be imported as a module. Got {choice_file
|
|
182
|
+
assert choice_file.suffix == ".py", f"File must be a python file to be imported as a module. Got {choice_file}"
|
|
149
183
|
import_line = get_import_module_code(str(choice_file))
|
|
150
|
-
repo_root = get_repo_root(str(choice_file))
|
|
151
184
|
if repo_root is not None:
|
|
152
185
|
repo_root_add = f"""sys.path.append(r'{repo_root}')"""
|
|
153
186
|
else:
|
|
@@ -159,9 +192,9 @@ except (ImportError, ModuleNotFoundError) as ex:
|
|
|
159
192
|
print(fr"❌ Failed to import `{choice_file}` as a module: {{ex}} ")
|
|
160
193
|
print(fr"⚠️ Attempting import with ad-hoc `$PATH` manipulation. DO NOT pickle any objects in this session as correct deserialization cannot be guaranteed.")
|
|
161
194
|
import sys
|
|
162
|
-
sys.path.append(r'{
|
|
195
|
+
sys.path.append(r'{PathExtended(choice_file).parent}')
|
|
163
196
|
{repo_root_add}
|
|
164
|
-
from {
|
|
197
|
+
from {PathExtended(choice_file).stem} import *
|
|
165
198
|
print(fr"✅ Successfully imported `{choice_file}`")
|
|
166
199
|
"""
|
|
167
200
|
if choice_function is not None:
|
|
@@ -179,7 +212,9 @@ try:
|
|
|
179
212
|
except ImportError as _ex:
|
|
180
213
|
print(r'''{txt}''')
|
|
181
214
|
""" + txt
|
|
182
|
-
choice_file =
|
|
215
|
+
choice_file = PathExtended.tmp().joinpath(f'tmp_scripts/python/{PathExtended(choice_file).parent.name}_{PathExtended(choice_file).stem}_{randstr()}.py')
|
|
216
|
+
choice_file.parent.mkdir(parents=True, exist_ok=True)
|
|
217
|
+
choice_file.write_text(txt)
|
|
183
218
|
|
|
184
219
|
# ========================= determining basic command structure: putting together exe & choice_file & choice_function & pdb
|
|
185
220
|
if args.debug:
|
|
@@ -199,7 +234,7 @@ except ImportError as _ex:
|
|
|
199
234
|
if args.holdDirectory:
|
|
200
235
|
command = f"{exe} {choice_file}"
|
|
201
236
|
else:
|
|
202
|
-
command = f"cd {choice_file.parent}\n
|
|
237
|
+
command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {PathExtended.cwd()}"
|
|
203
238
|
|
|
204
239
|
elif args.cmd:
|
|
205
240
|
command = rf""" cd /d {choice_file.parent} & {exe} {choice_file.name} """
|
|
@@ -208,21 +243,18 @@ except ImportError as _ex:
|
|
|
208
243
|
kwargs_raw = " ".join(args.kw) if args.kw is not None else ""
|
|
209
244
|
command = f"{exe} {choice_file} {kwargs_raw}"
|
|
210
245
|
else:
|
|
211
|
-
# command = f"cd {choice_file.parent}\n
|
|
246
|
+
# command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {PathExtended.cwd()}"
|
|
212
247
|
command = f"{exe} {choice_file} "
|
|
213
|
-
# this installs in ve env, which is not execution env
|
|
214
|
-
# if "ipdb" in command: install_n_import("ipdb")
|
|
215
|
-
# if "pudb" in command: install_n_import("pudb")
|
|
216
|
-
|
|
217
248
|
if not args.cmd:
|
|
218
|
-
if "ipdb" in command: command = f"pip install ipdb\n
|
|
219
|
-
if "pudb" in command: command = f"pip install pudb\n
|
|
220
|
-
command = f"{activate_ve_line}\n
|
|
249
|
+
if "ipdb" in command: command = f"pip install ipdb\n{command}"
|
|
250
|
+
if "pudb" in command: command = f"pip install pudb\n{command}"
|
|
251
|
+
command = f"{activate_ve_line}\n{command}"
|
|
221
252
|
else:
|
|
222
253
|
# CMD equivalent
|
|
223
254
|
if "ipdb" in command: command = f"pip install ipdb & {command}"
|
|
224
255
|
if "pudb" in command: command = f"pip install pudb & {command}"
|
|
225
|
-
|
|
256
|
+
new_line = "\n"
|
|
257
|
+
command = fr"""start cmd -Argument "/k {activate_ve_line.replace(".ps1", ".bat").replace(". ", "")} & {command.replace(new_line, " & ")} " """ # this works from powershell
|
|
226
258
|
# this works from cmd # command = fr""" start cmd /k "%USERPROFILE%\venvs\{args.ve}\Scripts\activate.bat & {command} " """ # because start in cmd is different from start in powershell (in powershell it is short for Start-Process)
|
|
227
259
|
|
|
228
260
|
if args.submit_to_cloud:
|
|
@@ -232,23 +264,23 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
232
264
|
if choice_function is not None:
|
|
233
265
|
command += f"--function {choice_function} "
|
|
234
266
|
|
|
235
|
-
# try: install_n_import("clipboard").copy(command)
|
|
236
|
-
# except Exception as ex: print(f"Failed to copy command to clipboard. {ex}")
|
|
237
|
-
|
|
238
|
-
if args.loop:
|
|
239
|
-
command = command + "\n" + f". {PROGRAM_PATH}"
|
|
240
|
-
|
|
241
267
|
if args.Nprocess > 1:
|
|
242
|
-
lines = [f""" zellij action new-tab --name nProcess{randstr(2)}"""]
|
|
243
|
-
command = command.replace(". activate_ve", ". $HOME/scripts/activate_ve")
|
|
268
|
+
# lines = [f""" zellij action new-tab --name nProcess{randstr(2)}"""]
|
|
269
|
+
# command = command.replace(". activate_ve", ". $HOME/scripts/activate_ve")
|
|
270
|
+
# for an_arg in range(args.Nprocess):
|
|
271
|
+
# sub_command = f"{command} --idx={an_arg} --idx_max={args.Nprocess}"
|
|
272
|
+
# if args.optimized:
|
|
273
|
+
# sub_command = sub_command.replace("python ", "python -OO ")
|
|
274
|
+
# sub_command_path = PathExtended.tmpfile(suffix=".sh").write_text(sub_command)
|
|
275
|
+
# lines.append(f"""zellij action new-pane -- bash {sub_command_path} """)
|
|
276
|
+
# lines.append("sleep 5") # python tends to freeze if you launch instances within 1 microsecond of each other
|
|
277
|
+
# command = "\n".join(lines)
|
|
278
|
+
tab_config = {}
|
|
244
279
|
for an_arg in range(args.Nprocess):
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
lines.append(f"""zellij action new-pane -- bash {sub_command_path} """)
|
|
250
|
-
lines.append("sleep 5") # python tends to freeze if you launch instances within 1 microsecond of each other
|
|
251
|
-
command = "\n".join(lines)
|
|
280
|
+
tab_config[f"tab{an_arg}"] = (str(PathExtended.cwd()), f"uv run python -m fire {choice_file} {choice_function} --idx={an_arg} --idx_max={args.Nprocess}")
|
|
281
|
+
from machineconfig.cluster.sessions_managers.zellij_local import run_zellij_layout
|
|
282
|
+
run_zellij_layout(tab_config=tab_config, session_name=None)
|
|
283
|
+
return None
|
|
252
284
|
|
|
253
285
|
if args.optimized:
|
|
254
286
|
# note that in ipython, optimization is meaningless.
|
|
@@ -262,7 +294,7 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
262
294
|
console = Console()
|
|
263
295
|
|
|
264
296
|
if args.zellij_tab is not None:
|
|
265
|
-
comman_path__ =
|
|
297
|
+
comman_path__ = PathExtended.tmpfile(suffix=".sh").write_text(command)
|
|
266
298
|
console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {comman_path__}: "), style="bold red")
|
|
267
299
|
import subprocess
|
|
268
300
|
existing_tab_names = subprocess.run(["zellij", "action", "query-tab-names"], capture_output=True, text=True, check=True).stdout.splitlines()
|
|
@@ -270,27 +302,34 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
270
302
|
print(f"⚠️ Tab name `{args.zellij_tab}` already exists. Please choose a different name.")
|
|
271
303
|
# args.zellij_tab = input("Please enter a new tab name: ")
|
|
272
304
|
args.zellij_tab += f"_{randstr(3)}"
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
305
|
+
from machineconfig.cluster.sessions_managers.zellij_local import run_command_in_zellij_tab
|
|
306
|
+
command = run_command_in_zellij_tab(command=str(comman_path__), tab_name=args.zellij_tab, cwd=None)
|
|
307
|
+
if args.watch: command = "watchexec --restart --exts py,sh,ps1 " + command
|
|
308
|
+
if args.git_pull: command = f"\ngit -C {choice_file.parent} pull\n" + command
|
|
309
|
+
if args.PathExport:
|
|
310
|
+
if platform.system() in ["Linux", "Darwin"]: export_line = f"""export PYTHONPATH="{repo_root}""" + """:${PYTHONPATH}" """
|
|
311
|
+
elif platform.system() == "Windows":
|
|
312
|
+
# export_line = f"""set PYTHONPATH="{repo_root}""" + """:%PYTHONPATH%" """
|
|
313
|
+
# powershell equivalent
|
|
314
|
+
export_line = f"""$env:PYTHONPATH="{repo_root}""" + """:$env:PYTHONPATH" """
|
|
315
|
+
else:
|
|
316
|
+
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
317
|
+
command = export_line + "\n" + command
|
|
318
|
+
|
|
319
|
+
program_path = os.environ.get("op_script", None)
|
|
320
|
+
program_path = PathExtended(program_path) if program_path is not None else PROGRAM_PATH
|
|
321
|
+
if args.loop:
|
|
322
|
+
if platform.system() in ["Linux", "Darwin"]:
|
|
323
|
+
command = command + "\nsleep 0.5"
|
|
324
|
+
elif platform.system() == "Windows":
|
|
325
|
+
# command = command + "timeout 0.5\n"
|
|
326
|
+
#pwsh equivalent
|
|
327
|
+
command ="$ErrorActionPreference = 'SilentlyContinue';\n" + command + "\nStart-Sleep -Seconds 0.5"
|
|
328
|
+
else:
|
|
329
|
+
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
330
|
+
command = command + f"\n. {program_path}"
|
|
331
|
+
console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {program_path}: "), style="bold red")
|
|
332
|
+
program_path.write_text(command)
|
|
294
333
|
|
|
295
334
|
|
|
296
335
|
if __name__ == '__main__':
|
|
@@ -7,9 +7,9 @@ Currently, the only way to work around this is to predifine the host in ~/.ssh/c
|
|
|
7
7
|
|
|
8
8
|
import argparse
|
|
9
9
|
from crocodile.meta import SSH
|
|
10
|
-
from
|
|
11
|
-
from crocodile.file_management import P
|
|
10
|
+
from machineconfig.utils.path_reduced import P as PathExtended
|
|
12
11
|
from machineconfig.scripts.python.helpers.helpers2 import ES
|
|
12
|
+
from machineconfig.utils.utils2 import pprint
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def main():
|
|
@@ -43,12 +43,12 @@ def main():
|
|
|
43
43
|
┃ Cannot use expand symbol `{ES}` in both source and target
|
|
44
44
|
┃ This creates a cyclical inference dependency
|
|
45
45
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
|
|
46
|
-
else: target =
|
|
46
|
+
else: target = PathExtended(args.target).expanduser().absolute()
|
|
47
47
|
source = target.collapseuser().as_posix()
|
|
48
48
|
else:
|
|
49
49
|
source = ":".join(args.source.split(":")[1:])
|
|
50
50
|
if args.target == ES: target = None
|
|
51
|
-
else: target =
|
|
51
|
+
else: target = PathExtended(args.target).expanduser().absolute().as_posix()
|
|
52
52
|
|
|
53
53
|
elif ":" in args.target and (args.target[1] != ":" if len(args.target) > 1 else True): # avoid the case of "C:/":
|
|
54
54
|
source_is_remote = False
|
|
@@ -66,7 +66,7 @@ def main():
|
|
|
66
66
|
else:
|
|
67
67
|
target = ":".join(args.target.split(":")[1:])
|
|
68
68
|
if args.source == ES: source = None
|
|
69
|
-
else: source =
|
|
69
|
+
else: source = PathExtended(args.source).expanduser().absolute()
|
|
70
70
|
|
|
71
71
|
else:
|
|
72
72
|
raise ValueError("""
|
|
@@ -76,7 +76,7 @@ def main():
|
|
|
76
76
|
┃ Format should be: machine:path
|
|
77
77
|
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━""")
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
pprint({"source": str(source), "target": str(target), "machine": machine}, "CLI Resolution")
|
|
80
80
|
|
|
81
81
|
from paramiko.ssh_exception import AuthenticationException # type: ignore
|
|
82
82
|
try:
|
|
@@ -107,7 +107,7 @@ def main():
|
|
|
107
107
|
│ Downloading from cloud to local...
|
|
108
108
|
└────────────────────────────────────────────────────────────────""")
|
|
109
109
|
ssh.run_locally(f"cloud_copy :^ {target}").print()
|
|
110
|
-
received_file =
|
|
110
|
+
received_file = PathExtended(target) # type: ignore
|
|
111
111
|
else:
|
|
112
112
|
if source_is_remote:
|
|
113
113
|
assert source is not None, """
|
|
@@ -132,7 +132,7 @@ def main():
|
|
|
132
132
|
└────────────────────────────────────────────────────────────────""")
|
|
133
133
|
received_file = ssh.copy_from_here(source=source, target=target, z=args.zipFirst, r=args.recursive)
|
|
134
134
|
|
|
135
|
-
if source_is_remote and isinstance(received_file,
|
|
135
|
+
if source_is_remote and isinstance(received_file, PathExtended):
|
|
136
136
|
print(f"""
|
|
137
137
|
┌────────────────────────────────────────────────────────────────
|
|
138
138
|
│ 📁 File Received
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from
|
|
1
|
+
from pathlib import Path
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
def get_zellij_cmd(wd1:
|
|
4
|
+
def get_zellij_cmd(wd1: Path, wd2: Path) -> str:
|
|
5
5
|
_ = wd1, wd2
|
|
6
6
|
lines = [""" zellij action new-tab --name gitdiff""",
|
|
7
7
|
"""zellij action new-pane --direction down --name local --cwd ./data """,
|
|
@@ -11,4 +11,4 @@ def get_zellij_cmd(wd1: P, wd2: P) -> str:
|
|
|
11
11
|
"""zellij action write-chars "cd '{wd2}' """,
|
|
12
12
|
"""git status" """
|
|
13
13
|
]
|
|
14
|
-
return "; ".join(lines)
|
|
14
|
+
return "; ".join(lines)
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# as per https://github.com/marketplace/models/azure-openai/o1-preview
|
|
2
2
|
from openai import OpenAI
|
|
3
|
-
from
|
|
3
|
+
from machineconfig.utils.path_reduced import P as PathExtended
|
|
4
|
+
from machineconfig.utils.utils2 import read_ini
|
|
4
5
|
from rich import print as rprint
|
|
5
6
|
from rich.panel import Panel
|
|
7
|
+
from typing import Any
|
|
6
8
|
|
|
7
9
|
|
|
8
|
-
gh_token =
|
|
10
|
+
gh_token = read_ini(PathExtended.home().joinpath("dotfiles/creds/git/git_host_tokens.ini"))['thisismygitrepo']['newLongterm']
|
|
9
11
|
endpoint = "https://models.inference.ai.azure.com"
|
|
10
12
|
model_name_preferences = ["o3-mini", "o1-preview", "o1-mini", "GPT-4o", "GPT-4-o-mini"]
|
|
11
13
|
client__ = OpenAI(
|
|
@@ -14,7 +16,7 @@ client__ = OpenAI(
|
|
|
14
16
|
)
|
|
15
17
|
|
|
16
18
|
|
|
17
|
-
def get_response(client, model_name: str, messages: list[dict[str, str]]):
|
|
19
|
+
def get_response(client: Any, model_name: str, messages: list[dict[str, str]]):
|
|
18
20
|
print(f"""
|
|
19
21
|
┌────────────────────────────────────────────────────────────────
|
|
20
22
|
│ 🤖 Querying Model: {model_name}
|
|
@@ -78,7 +80,7 @@ def interactive_chat():
|
|
|
78
80
|
title=f"🤖 AI ({model_name})",
|
|
79
81
|
border_style="blue"
|
|
80
82
|
))
|
|
81
|
-
except:
|
|
83
|
+
except Exception:
|
|
82
84
|
# Fallback if rich formatting fails
|
|
83
85
|
print(f"""
|
|
84
86
|
┌────────────────────────────────────────────────────────────────
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
from
|
|
3
|
-
from crocodile.file_management import P, Read
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from machineconfig.utils.utils2 import pprint, read_json, read_ini
|
|
4
3
|
from pydantic import ConfigDict
|
|
5
4
|
from pydantic.dataclasses import dataclass
|
|
6
5
|
from typing import Optional
|
|
7
6
|
import os
|
|
8
7
|
from machineconfig.utils.utils import DEFAULTS_PATH
|
|
8
|
+
from rich.console import Console
|
|
9
|
+
from rich.panel import Panel
|
|
10
|
+
from rich import box # Import box
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
console = Console()
|
|
9
14
|
|
|
10
15
|
|
|
11
16
|
class ArgsDefaults:
|
|
@@ -41,68 +46,49 @@ class Args():
|
|
|
41
46
|
config: Optional[str] = None
|
|
42
47
|
|
|
43
48
|
@staticmethod
|
|
44
|
-
def from_config(config_path:
|
|
45
|
-
|
|
46
|
-
# install_n_import("pydantic")
|
|
47
|
-
# from pydantic import BaseModel, ConfigDict
|
|
48
|
-
return Args(**Read.json(config_path))
|
|
49
|
+
def from_config(config_path: Path):
|
|
50
|
+
return Args(**read_json(config_path))
|
|
49
51
|
|
|
50
52
|
|
|
51
|
-
def find_cloud_config(path:
|
|
52
|
-
|
|
53
|
-
╭{'─' * 70}╮
|
|
54
|
-
│ 🔍 Searching for cloud configuration file... │
|
|
55
|
-
╰{'─' * 70}╯
|
|
56
|
-
""")
|
|
53
|
+
def find_cloud_config(path: Path):
|
|
54
|
+
display_header(f"Searching for cloud configuration file @ {path}")
|
|
57
55
|
|
|
58
56
|
for _i in range(len(path.parts)):
|
|
59
57
|
if path.joinpath("cloud.json").exists():
|
|
60
58
|
res = Args.from_config(path.joinpath("cloud.json"))
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
│ ✅ Found cloud config at: {path.joinpath('cloud.json')} │
|
|
64
|
-
╰{'─' * 70}╯
|
|
65
|
-
""")
|
|
66
|
-
Struct(res.__dict__).print(as_config=True, title="Cloud Config")
|
|
59
|
+
display_success(f"Found cloud config at: {path.joinpath('cloud.json')}")
|
|
60
|
+
pprint(res.__dict__, "Cloud Config")
|
|
67
61
|
return res
|
|
68
62
|
path = path.parent
|
|
69
63
|
|
|
70
|
-
|
|
64
|
+
display_error("No cloud configuration file found")
|
|
71
65
|
return None
|
|
72
66
|
|
|
73
67
|
|
|
74
|
-
def absolute(path: str) ->
|
|
75
|
-
obj =
|
|
68
|
+
def absolute(path: str) -> Path:
|
|
69
|
+
obj = Path(path).expanduser()
|
|
76
70
|
if not path.startswith(".") and obj.exists(): return obj
|
|
77
|
-
try_absing =
|
|
71
|
+
try_absing = Path.cwd().joinpath(path)
|
|
78
72
|
if try_absing.exists(): return try_absing
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
│ ⚠️ WARNING: │
|
|
82
|
-
│ Path {path} could not be resolved to absolute path.
|
|
83
|
-
│ Trying to resolve symlinks (this may result in unintended paths). │
|
|
84
|
-
╰{'─' * 70}╯
|
|
85
|
-
""")
|
|
73
|
+
display_warning(f"Path {path} could not be resolved to absolute path.")
|
|
74
|
+
display_warning("Trying to resolve symlinks (this may result in unintended paths).")
|
|
86
75
|
return obj.absolute()
|
|
87
76
|
|
|
88
77
|
|
|
89
78
|
|
|
90
79
|
def get_secure_share_cloud_config(interactive: bool, cloud: Optional[str]) -> Args:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
║ 🔐 Secure Share Cloud Configuration ║
|
|
94
|
-
╚{'═' * 70}╝
|
|
95
|
-
""")
|
|
80
|
+
console = Console()
|
|
81
|
+
console.print(Panel("🔐 Secure Share Cloud Configuration", expand=False))
|
|
96
82
|
|
|
97
83
|
if cloud is None:
|
|
98
84
|
if os.environ.get("CLOUD_CONFIG_NAME") is not None:
|
|
99
85
|
default_cloud = os.environ.get("CLOUD_CONFIG_NAME")
|
|
100
86
|
assert default_cloud is not None
|
|
101
87
|
cloud = default_cloud
|
|
102
|
-
print(f"☁️ Using cloud from environment: {cloud}")
|
|
88
|
+
console.print(f"☁️ Using cloud from environment: {cloud}")
|
|
103
89
|
else:
|
|
104
90
|
try:
|
|
105
|
-
default_cloud__ =
|
|
91
|
+
default_cloud__ = read_ini(DEFAULTS_PATH)['general']['rclone_config_name']
|
|
106
92
|
except Exception:
|
|
107
93
|
default_cloud__ = 'No default cloud found.'
|
|
108
94
|
if default_cloud__ == 'No default cloud found.' or interactive:
|
|
@@ -110,9 +96,9 @@ def get_secure_share_cloud_config(interactive: bool, cloud: Optional[str]) -> Ar
|
|
|
110
96
|
cloud = input(f"☁️ Enter cloud name (default {default_cloud__}): ") or default_cloud__
|
|
111
97
|
else:
|
|
112
98
|
cloud = default_cloud__
|
|
113
|
-
print(f"☁️ Using default cloud: {cloud}")
|
|
99
|
+
console.print(f"☁️ Using default cloud: {cloud}")
|
|
114
100
|
|
|
115
|
-
default_password_path =
|
|
101
|
+
default_password_path = Path.home().joinpath("dotfiles/creds/passwords/quick_password")
|
|
116
102
|
if default_password_path.exists():
|
|
117
103
|
pwd = default_password_path.read_text().strip()
|
|
118
104
|
default_message = "defaults to quick_password"
|
|
@@ -125,10 +111,27 @@ def get_secure_share_cloud_config(interactive: bool, cloud: Optional[str]) -> Ar
|
|
|
125
111
|
zip=True, overwrite=True, share=True,
|
|
126
112
|
rel2home=True, root="myshare", os_specific=False,)
|
|
127
113
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
│ ⚙️ Using SecureShare cloud config │
|
|
131
|
-
╰{'─' * 70}╯
|
|
132
|
-
""")
|
|
133
|
-
Struct(res.__dict__).print(as_config=True, title="SecureShare Config")
|
|
114
|
+
display_success("Using SecureShare cloud config")
|
|
115
|
+
pprint(res.__dict__, "SecureShare Config")
|
|
134
116
|
return res
|
|
117
|
+
|
|
118
|
+
def display_header(title: str):
|
|
119
|
+
console.print(Panel(title, box=box.DOUBLE_EDGE, title_align="left")) # Replace print with Panel
|
|
120
|
+
|
|
121
|
+
def display_subheader(title: str):
|
|
122
|
+
console.print(Panel(title, box=box.ROUNDED, title_align="left")) # Replace print with Panel
|
|
123
|
+
|
|
124
|
+
def display_content(content: str):
|
|
125
|
+
console.print(Panel(content, box=box.ROUNDED, title_align="left")) # Replace print with Panel
|
|
126
|
+
|
|
127
|
+
def display_status(status: str):
|
|
128
|
+
console.print(Panel(status, box=box.ROUNDED, title_align="left")) # Replace print with Panel
|
|
129
|
+
|
|
130
|
+
def display_success(message: str):
|
|
131
|
+
console.print(Panel(message, box=box.ROUNDED, border_style="green", title_align="left")) # Replace print with Panel
|
|
132
|
+
|
|
133
|
+
def display_warning(message: str):
|
|
134
|
+
console.print(Panel(message, box=box.ROUNDED, border_style="yellow", title_align="left")) # Replace print with Panel
|
|
135
|
+
|
|
136
|
+
def display_error(message: str):
|
|
137
|
+
console.print(Panel(message, box=box.ROUNDED, border_style="red", title_align="left")) # Replace print with Panel
|