machineconfig 1.95__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 -57
- 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/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 +6 -6
- machineconfig/jobs/python/vscode/__pycache__/select_interpreter.cpython-311.pyc +0 -0
- machineconfig/jobs/python/vscode/api.py +1 -1
- machineconfig/jobs/python/vscode/link_ve.py +2 -2
- machineconfig/jobs/python/vscode/select_interpreter.py +9 -5
- machineconfig/jobs/python/vscode/sync_code.py +8 -5
- machineconfig/jobs/python_custom_installers/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/jobs/python_custom_installers/archive/ngrok.py +1 -1
- machineconfig/jobs/python_custom_installers/dev/alacritty.py +3 -2
- machineconfig/jobs/python_custom_installers/dev/brave.py +7 -3
- machineconfig/jobs/python_custom_installers/dev/bypass_paywall.py +3 -4
- machineconfig/jobs/python_custom_installers/dev/code.py +3 -1
- machineconfig/jobs/python_custom_installers/dev/cursor.py +66 -5
- machineconfig/jobs/python_custom_installers/dev/docker_desktop.py +0 -1
- machineconfig/jobs/python_custom_installers/dev/espanso.py +13 -9
- machineconfig/jobs/python_custom_installers/dev/goes.py +2 -8
- machineconfig/jobs/python_custom_installers/dev/lvim.py +3 -2
- machineconfig/jobs/python_custom_installers/dev/nerdfont.py +1 -1
- machineconfig/jobs/python_custom_installers/dev/redis.py +7 -3
- machineconfig/jobs/python_custom_installers/dev/wezterm.py +8 -4
- machineconfig/jobs/python_custom_installers/dev/winget.py +194 -0
- machineconfig/jobs/python_custom_installers/{dev/docker.py → docker.py} +8 -3
- machineconfig/jobs/python_custom_installers/gh.py +4 -3
- machineconfig/jobs/python_custom_installers/hx.py +9 -8
- machineconfig/jobs/python_custom_installers/scripts/linux/vscode.sh +97 -30
- machineconfig/jobs/python_custom_installers/{dev/warp-cli.py → warp-cli.py} +1 -1
- 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 +44 -17
- machineconfig/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- machineconfig/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
- machineconfig/scripts/linux/fire_agents +27 -0
- 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 +1 -3
- machineconfig/scripts/python/choose_wezterm_theme.py +3 -3
- machineconfig/scripts/python/cloud_copy.py +10 -10
- machineconfig/scripts/python/cloud_manager.py +77 -99
- machineconfig/scripts/python/cloud_mount.py +13 -12
- machineconfig/scripts/python/cloud_repo_sync.py +14 -11
- machineconfig/scripts/python/croshell.py +24 -21
- machineconfig/scripts/python/devops.py +12 -17
- machineconfig/scripts/python/devops_add_identity.py +32 -10
- machineconfig/scripts/python/devops_add_ssh_key.py +10 -10
- machineconfig/scripts/python/devops_backup_retrieve.py +9 -8
- machineconfig/scripts/python/devops_devapps_install.py +6 -6
- machineconfig/scripts/python/devops_update_repos.py +4 -3
- machineconfig/scripts/python/dotfile.py +10 -7
- machineconfig/scripts/python/fire_agents.py +69 -0
- machineconfig/scripts/python/fire_jobs.py +56 -65
- 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 +12 -12
- machineconfig/scripts/python/helpers/helpers2.py +9 -8
- machineconfig/scripts/python/helpers/helpers4.py +23 -35
- machineconfig/scripts/python/helpers/repo_sync_helpers.py +17 -16
- 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 +26 -18
- 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 +412 -60
- machineconfig/scripts/python/wsl_windows_transfer.py +18 -3
- 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/web_shortcuts/interactive.sh +5 -2
- machineconfig/setup_windows/wt_and_pwsh/set_pwsh_theme.py +3 -6
- machineconfig/setup_windows/wt_and_pwsh/set_wt_settings.py +11 -9
- machineconfig/utils/ai/url2md.py +2 -2
- machineconfig/utils/cloud/onedrive/setup_oauth.py +59 -0
- machineconfig/utils/cloud/onedrive/transaction.py +796 -0
- machineconfig/utils/code.py +22 -13
- machineconfig/utils/installer.py +78 -35
- 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/links.py +19 -15
- machineconfig/utils/options.py +4 -8
- machineconfig/utils/path.py +91 -78
- machineconfig/utils/path_reduced.py +608 -0
- machineconfig/utils/procs.py +110 -45
- machineconfig/utils/scheduling.py +312 -222
- machineconfig/utils/utils.py +7 -7
- machineconfig/utils/utils2.py +42 -0
- machineconfig/utils/utils5.py +84 -0
- machineconfig/utils/ve.py +49 -87
- {machineconfig-1.95.dist-info → machineconfig-1.96.dist-info}/METADATA +2 -2
- machineconfig-1.96.dist-info/RECORD +437 -0
- 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/ve_utils/ve1.py +0 -111
- machineconfig/utils/ve_utils/ve2.py +0 -155
- machineconfig-1.95.dist-info/RECORD +0 -712
- {machineconfig-1.95.dist-info → machineconfig-1.96.dist-info}/WHEEL +0 -0
- {machineconfig-1.95.dist-info → machineconfig-1.96.dist-info}/top_level.txt +0 -0
|
@@ -12,11 +12,11 @@ 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.
|
|
15
|
+
from machineconfig.utils.ve import get_repo_root, get_ve_activate_line, get_ve_path_and_ipython_profile
|
|
16
16
|
from machineconfig.utils.utils import display_options, choose_one_option, PROGRAM_PATH, match_file_name, sanitize_path
|
|
17
|
-
from machineconfig.utils.
|
|
18
|
-
from
|
|
19
|
-
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
|
|
20
20
|
import platform
|
|
21
21
|
from typing import Optional
|
|
22
22
|
import argparse
|
|
@@ -51,32 +51,29 @@ def main() -> None:
|
|
|
51
51
|
parser.add_argument("--zellij_tab", "-z", type=str, dest="zellij_tab", help="open in a new zellij tab")
|
|
52
52
|
parser.add_argument("--watch", "-w", action="store_true", help="watch the file for changes")
|
|
53
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
|
-
|
|
55
54
|
try:
|
|
56
55
|
args = parser.parse_args()
|
|
57
56
|
except Exception as ex:
|
|
58
57
|
print(f"❌ Failed to parse arguments: {ex}")
|
|
59
58
|
parser.print_help()
|
|
60
59
|
raise ex
|
|
61
|
-
|
|
62
|
-
path_obj = sanitize_path(P(args.path))
|
|
60
|
+
path_obj = sanitize_path(PathExtended(args.path))
|
|
63
61
|
if not path_obj.exists():
|
|
64
|
-
path_obj = match_file_name(sub_string=args.path)
|
|
62
|
+
path_obj = match_file_name(sub_string=args.path, search_root=PathExtended.cwd())
|
|
65
63
|
else: pass
|
|
66
|
-
|
|
67
64
|
if path_obj.is_dir():
|
|
68
65
|
print(f"🔍 Searching recursively for Python, PowerShell and Shell scripts in directory `{path_obj}`")
|
|
69
66
|
files = search_for_files_of_interest(path_obj)
|
|
70
67
|
choice_file = choose_one_option(options=files, fzf=True)
|
|
71
|
-
choice_file =
|
|
68
|
+
choice_file = PathExtended(choice_file)
|
|
72
69
|
else:
|
|
73
70
|
choice_file = path_obj
|
|
74
71
|
repo_root = get_repo_root(str(choice_file))
|
|
75
|
-
print(f"💾 Selected file: {choice_file}
|
|
72
|
+
print(f"💾 Selected file: {choice_file}.\nRepo root: {repo_root}")
|
|
76
73
|
|
|
77
|
-
|
|
74
|
+
ve_root_from_file, ipy_profile = get_ve_path_and_ipython_profile(choice_file)
|
|
78
75
|
if ipy_profile is None: ipy_profile = "default"
|
|
79
|
-
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")
|
|
80
77
|
|
|
81
78
|
# Convert args.kw to dictionary
|
|
82
79
|
if choice_file.suffix == ".py":
|
|
@@ -94,13 +91,14 @@ def main() -> None:
|
|
|
94
91
|
kwargs = {}
|
|
95
92
|
|
|
96
93
|
# ========================= choosing function to run
|
|
94
|
+
choice_function: Optional[str] = None # Initialize to avoid unbound variable
|
|
97
95
|
if args.choose_function or args.submit_to_cloud:
|
|
98
96
|
if choice_file.suffix == ".py":
|
|
99
97
|
options, func_args = parse_pyfile(file_path=str(choice_file))
|
|
100
98
|
choice_function_tmp = display_options(msg="Choose a function to run", options=options, fzf=True, multi=False)
|
|
101
99
|
assert isinstance(choice_function_tmp, str), f"choice_function must be a string. Got {type(choice_function_tmp)}"
|
|
102
100
|
choice_index = options.index(choice_function_tmp)
|
|
103
|
-
choice_function
|
|
101
|
+
choice_function = choice_function_tmp.split(' -- ')[0]
|
|
104
102
|
choice_function_args = func_args[choice_index]
|
|
105
103
|
|
|
106
104
|
if choice_function == "RUN AS MAIN": choice_function = None
|
|
@@ -114,19 +112,26 @@ def main() -> None:
|
|
|
114
112
|
if line == "": continue
|
|
115
113
|
if line.startswith("echo"): continue
|
|
116
114
|
options.append(line)
|
|
117
|
-
|
|
118
|
-
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))
|
|
119
117
|
choice_function = None
|
|
120
118
|
else:
|
|
121
119
|
choice_function = args.function
|
|
122
120
|
|
|
123
121
|
if choice_file.suffix == ".py":
|
|
124
122
|
if args.streamlit:
|
|
125
|
-
|
|
126
|
-
|
|
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()
|
|
127
132
|
computer_name = platform.node()
|
|
128
133
|
port = 8501
|
|
129
|
-
toml_path: Optional[
|
|
134
|
+
toml_path: Optional[PathExtended] = None
|
|
130
135
|
toml_path_maybe = choice_file.parent.joinpath(".streamlit/config.toml")
|
|
131
136
|
if toml_path_maybe.exists():
|
|
132
137
|
toml_path = toml_path_maybe
|
|
@@ -135,15 +140,15 @@ def main() -> None:
|
|
|
135
140
|
if toml_path_maybe.exists(): toml_path = toml_path_maybe
|
|
136
141
|
if toml_path is not None:
|
|
137
142
|
print(f"📄 Reading config.toml @ {toml_path}")
|
|
138
|
-
config =
|
|
143
|
+
config = read_toml(toml_path)
|
|
139
144
|
if "server" in config:
|
|
140
145
|
if "port" in config["server"]:
|
|
141
146
|
port = config["server"]["port"]
|
|
142
147
|
secrets_path = toml_path.with_name("secrets.toml")
|
|
143
148
|
if repo_root is not None:
|
|
144
|
-
secrets_template_path =
|
|
149
|
+
secrets_template_path = PathExtended.home().joinpath(f"dotfiles/creds/streamlit/{PathExtended(repo_root).name}/{choice_file.name}/secrets.toml")
|
|
145
150
|
if args.environment != "" and not secrets_path.exists() and secrets_template_path.exists():
|
|
146
|
-
secrets_template =
|
|
151
|
+
secrets_template = read_toml(secrets_template_path)
|
|
147
152
|
if args.environment == "ip": host_url = f"http://{local_ip_v4}:{port}/oauth2callback"
|
|
148
153
|
elif args.environment == "localhost": host_url = f"http://localhost:{port}/oauth2callback"
|
|
149
154
|
elif args.environment == "hostname": host_url = f"http://{computer_name}:{port}/oauth2callback"
|
|
@@ -152,7 +157,7 @@ def main() -> None:
|
|
|
152
157
|
secrets_template["auth"]["redirect_uri"] = host_url
|
|
153
158
|
secrets_template["auth"]["cookie_secret"] = randstr(35)
|
|
154
159
|
secrets_template["auth"]["auth0"]["redirect_uri"] = host_url
|
|
155
|
-
|
|
160
|
+
save_toml(obj=secrets_template, path=secrets_path)
|
|
156
161
|
except Exception as ex:
|
|
157
162
|
print(ex)
|
|
158
163
|
raise ex
|
|
@@ -187,9 +192,9 @@ except (ImportError, ModuleNotFoundError) as ex:
|
|
|
187
192
|
print(fr"❌ Failed to import `{choice_file}` as a module: {{ex}} ")
|
|
188
193
|
print(fr"⚠️ Attempting import with ad-hoc `$PATH` manipulation. DO NOT pickle any objects in this session as correct deserialization cannot be guaranteed.")
|
|
189
194
|
import sys
|
|
190
|
-
sys.path.append(r'{
|
|
195
|
+
sys.path.append(r'{PathExtended(choice_file).parent}')
|
|
191
196
|
{repo_root_add}
|
|
192
|
-
from {
|
|
197
|
+
from {PathExtended(choice_file).stem} import *
|
|
193
198
|
print(fr"✅ Successfully imported `{choice_file}`")
|
|
194
199
|
"""
|
|
195
200
|
if choice_function is not None:
|
|
@@ -207,7 +212,9 @@ try:
|
|
|
207
212
|
except ImportError as _ex:
|
|
208
213
|
print(r'''{txt}''')
|
|
209
214
|
""" + txt
|
|
210
|
-
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)
|
|
211
218
|
|
|
212
219
|
# ========================= determining basic command structure: putting together exe & choice_file & choice_function & pdb
|
|
213
220
|
if args.debug:
|
|
@@ -227,7 +234,7 @@ except ImportError as _ex:
|
|
|
227
234
|
if args.holdDirectory:
|
|
228
235
|
command = f"{exe} {choice_file}"
|
|
229
236
|
else:
|
|
230
|
-
command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {
|
|
237
|
+
command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {PathExtended.cwd()}"
|
|
231
238
|
|
|
232
239
|
elif args.cmd:
|
|
233
240
|
command = rf""" cd /d {choice_file.parent} & {exe} {choice_file.name} """
|
|
@@ -236,12 +243,8 @@ except ImportError as _ex:
|
|
|
236
243
|
kwargs_raw = " ".join(args.kw) if args.kw is not None else ""
|
|
237
244
|
command = f"{exe} {choice_file} {kwargs_raw}"
|
|
238
245
|
else:
|
|
239
|
-
# command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {
|
|
246
|
+
# command = f"cd {choice_file.parent}\n{exe} {choice_file.name}\ncd {PathExtended.cwd()}"
|
|
240
247
|
command = f"{exe} {choice_file} "
|
|
241
|
-
# this installs in ve env, which is not execution env
|
|
242
|
-
# if "ipdb" in command: install_n_import("ipdb")
|
|
243
|
-
# if "pudb" in command: install_n_import("pudb")
|
|
244
|
-
|
|
245
248
|
if not args.cmd:
|
|
246
249
|
if "ipdb" in command: command = f"pip install ipdb\n{command}"
|
|
247
250
|
if "pudb" in command: command = f"pip install pudb\n{command}"
|
|
@@ -261,20 +264,23 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
261
264
|
if choice_function is not None:
|
|
262
265
|
command += f"--function {choice_function} "
|
|
263
266
|
|
|
264
|
-
# try: install_n_import("clipboard").copy(command)
|
|
265
|
-
# except Exception as ex: print(f"Failed to copy command to clipboard. {ex}")
|
|
266
|
-
|
|
267
267
|
if args.Nprocess > 1:
|
|
268
|
-
lines = [f""" zellij action new-tab --name nProcess{randstr(2)}"""]
|
|
269
|
-
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 = {}
|
|
270
279
|
for an_arg in range(args.Nprocess):
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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)
|
|
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
|
|
278
284
|
|
|
279
285
|
if args.optimized:
|
|
280
286
|
# note that in ipython, optimization is meaningless.
|
|
@@ -288,7 +294,7 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
288
294
|
console = Console()
|
|
289
295
|
|
|
290
296
|
if args.zellij_tab is not None:
|
|
291
|
-
comman_path__ =
|
|
297
|
+
comman_path__ = PathExtended.tmpfile(suffix=".sh").write_text(command)
|
|
292
298
|
console.print(Panel(Syntax(command, lexer="shell"), title=f"🔥 fire command @ {comman_path__}: "), style="bold red")
|
|
293
299
|
import subprocess
|
|
294
300
|
existing_tab_names = subprocess.run(["zellij", "action", "query-tab-names"], capture_output=True, text=True, check=True).stdout.splitlines()
|
|
@@ -296,27 +302,12 @@ python -m machineconfig.cluster.templates.cli_click --file {choice_file} """
|
|
|
296
302
|
print(f"⚠️ Tab name `{args.zellij_tab}` already exists. Please choose a different name.")
|
|
297
303
|
# args.zellij_tab = input("Please enter a new tab name: ")
|
|
298
304
|
args.zellij_tab += f"_{randstr(3)}"
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
sleep 1
|
|
302
|
-
zellij action new-tab --name {args.zellij_tab}
|
|
303
|
-
echo "Sleep 2 seconds to allow zellij to go to the new tab"
|
|
304
|
-
sleep 2
|
|
305
|
-
zellij action go-to-tab-name {args.zellij_tab}
|
|
306
|
-
echo "Sleep 2 seconds to allow zellij to start the new pane"
|
|
307
|
-
sleep 2
|
|
308
|
-
zellij action new-pane --direction down -- /bin/bash {comman_path__}
|
|
309
|
-
echo "Sleep 2 seconds to allow zellij to start the new pane"
|
|
310
|
-
sleep 1
|
|
311
|
-
zellij action move-focus up; sleep 2
|
|
312
|
-
echo "Sleep 2 seconds to allow zellij to close the pane"
|
|
313
|
-
sleep 1
|
|
314
|
-
zellij action close-pane; sleep 2
|
|
315
|
-
"""
|
|
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)
|
|
316
307
|
if args.watch: command = "watchexec --restart --exts py,sh,ps1 " + command
|
|
317
308
|
if args.git_pull: command = f"\ngit -C {choice_file.parent} pull\n" + command
|
|
318
309
|
if args.PathExport:
|
|
319
|
-
if platform.system()
|
|
310
|
+
if platform.system() in ["Linux", "Darwin"]: export_line = f"""export PYTHONPATH="{repo_root}""" + """:${PYTHONPATH}" """
|
|
320
311
|
elif platform.system() == "Windows":
|
|
321
312
|
# export_line = f"""set PYTHONPATH="{repo_root}""" + """:%PYTHONPATH%" """
|
|
322
313
|
# powershell equivalent
|
|
@@ -326,9 +317,9 @@ zellij action close-pane; sleep 2
|
|
|
326
317
|
command = export_line + "\n" + command
|
|
327
318
|
|
|
328
319
|
program_path = os.environ.get("op_script", None)
|
|
329
|
-
program_path =
|
|
320
|
+
program_path = PathExtended(program_path) if program_path is not None else PROGRAM_PATH
|
|
330
321
|
if args.loop:
|
|
331
|
-
if platform.system()
|
|
322
|
+
if platform.system() in ["Linux", "Darwin"]:
|
|
332
323
|
command = command + "\nsleep 0.5"
|
|
333
324
|
elif platform.system() == "Windows":
|
|
334
325
|
# command = command + "timeout 0.5\n"
|
|
@@ -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,5 +1,5 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from machineconfig.utils.utils2 import pprint, read_json, read_ini
|
|
3
3
|
from pydantic import ConfigDict
|
|
4
4
|
from pydantic.dataclasses import dataclass
|
|
5
5
|
from typing import Optional
|
|
@@ -46,18 +46,18 @@ class Args():
|
|
|
46
46
|
config: Optional[str] = None
|
|
47
47
|
|
|
48
48
|
@staticmethod
|
|
49
|
-
def from_config(config_path:
|
|
50
|
-
return Args(**
|
|
49
|
+
def from_config(config_path: Path):
|
|
50
|
+
return Args(**read_json(config_path))
|
|
51
51
|
|
|
52
52
|
|
|
53
|
-
def find_cloud_config(path:
|
|
53
|
+
def find_cloud_config(path: Path):
|
|
54
54
|
display_header(f"Searching for cloud configuration file @ {path}")
|
|
55
55
|
|
|
56
56
|
for _i in range(len(path.parts)):
|
|
57
57
|
if path.joinpath("cloud.json").exists():
|
|
58
58
|
res = Args.from_config(path.joinpath("cloud.json"))
|
|
59
59
|
display_success(f"Found cloud config at: {path.joinpath('cloud.json')}")
|
|
60
|
-
|
|
60
|
+
pprint(res.__dict__, "Cloud Config")
|
|
61
61
|
return res
|
|
62
62
|
path = path.parent
|
|
63
63
|
|
|
@@ -65,10 +65,10 @@ def find_cloud_config(path: P):
|
|
|
65
65
|
return None
|
|
66
66
|
|
|
67
67
|
|
|
68
|
-
def absolute(path: str) ->
|
|
69
|
-
obj =
|
|
68
|
+
def absolute(path: str) -> Path:
|
|
69
|
+
obj = Path(path).expanduser()
|
|
70
70
|
if not path.startswith(".") and obj.exists(): return obj
|
|
71
|
-
try_absing =
|
|
71
|
+
try_absing = Path.cwd().joinpath(path)
|
|
72
72
|
if try_absing.exists(): return try_absing
|
|
73
73
|
display_warning(f"Path {path} could not be resolved to absolute path.")
|
|
74
74
|
display_warning("Trying to resolve symlinks (this may result in unintended paths).")
|
|
@@ -88,7 +88,7 @@ def get_secure_share_cloud_config(interactive: bool, cloud: Optional[str]) -> Ar
|
|
|
88
88
|
console.print(f"☁️ Using cloud from environment: {cloud}")
|
|
89
89
|
else:
|
|
90
90
|
try:
|
|
91
|
-
default_cloud__ =
|
|
91
|
+
default_cloud__ = read_ini(DEFAULTS_PATH)['general']['rclone_config_name']
|
|
92
92
|
except Exception:
|
|
93
93
|
default_cloud__ = 'No default cloud found.'
|
|
94
94
|
if default_cloud__ == 'No default cloud found.' or interactive:
|
|
@@ -98,7 +98,7 @@ def get_secure_share_cloud_config(interactive: bool, cloud: Optional[str]) -> Ar
|
|
|
98
98
|
cloud = default_cloud__
|
|
99
99
|
console.print(f"☁️ Using default cloud: {cloud}")
|
|
100
100
|
|
|
101
|
-
default_password_path =
|
|
101
|
+
default_password_path = Path.home().joinpath("dotfiles/creds/passwords/quick_password")
|
|
102
102
|
if default_password_path.exists():
|
|
103
103
|
pwd = default_password_path.read_text().strip()
|
|
104
104
|
default_message = "defaults to quick_password"
|
|
@@ -112,7 +112,7 @@ def get_secure_share_cloud_config(interactive: bool, cloud: Optional[str]) -> Ar
|
|
|
112
112
|
rel2home=True, root="myshare", os_specific=False,)
|
|
113
113
|
|
|
114
114
|
display_success("Using SecureShare cloud config")
|
|
115
|
-
|
|
115
|
+
pprint(res.__dict__, "SecureShare Config")
|
|
116
116
|
return res
|
|
117
117
|
|
|
118
118
|
def display_header(title: str):
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
from crocodile.core import Struct
|
|
2
|
-
from crocodile.file_management import Read
|
|
3
1
|
from machineconfig.scripts.python.helpers.cloud_helpers import Args, ArgsDefaults, absolute, find_cloud_config, get_secure_share_cloud_config
|
|
4
2
|
from machineconfig.utils.utils import DEFAULTS_PATH
|
|
3
|
+
from machineconfig.utils.utils2 import read_ini, pprint
|
|
5
4
|
from typing import Optional
|
|
6
5
|
from rich.console import Console
|
|
7
6
|
from rich.panel import Panel
|
|
@@ -54,7 +53,7 @@ def parse_cloud_source_target(args: Args, source: str, target: str) -> tuple[str
|
|
|
54
53
|
maybe_config = tmp_maybe_config
|
|
55
54
|
|
|
56
55
|
if maybe_config is None:
|
|
57
|
-
default_cloud: str=
|
|
56
|
+
default_cloud: str=read_ini(DEFAULTS_PATH)['general']['rclone_config_name']
|
|
58
57
|
console.print(Panel(f"⚠️ No cloud config found. Using default cloud: {default_cloud}", width=150, border_style="yellow"))
|
|
59
58
|
source = default_cloud + ":" + source[1:]
|
|
60
59
|
else:
|
|
@@ -74,7 +73,7 @@ def parse_cloud_source_target(args: Args, source: str, target: str) -> tuple[str
|
|
|
74
73
|
maybe_config = find_cloud_config(path)
|
|
75
74
|
|
|
76
75
|
if maybe_config is None:
|
|
77
|
-
default_cloud =
|
|
76
|
+
default_cloud = read_ini(DEFAULTS_PATH)['general']['rclone_config_name']
|
|
78
77
|
console.print(Panel(f"⚠️ No cloud config found. Using default cloud: {default_cloud}", width=150, border_style="yellow"))
|
|
79
78
|
target = default_cloud + ":" + target[1:]
|
|
80
79
|
print("target mutated to:", target, f"because of default cloud being {default_cloud}")
|
|
@@ -97,7 +96,8 @@ def parse_cloud_source_target(args: Args, source: str, target: str) -> tuple[str
|
|
|
97
96
|
if len(source_parts) > 1 and source_parts[1] == ES: # the source path is to be inferred from target.
|
|
98
97
|
assert ES not in target, f"You can't use expand symbol `{ES}` in both source and target. Cyclical inference dependency arised."
|
|
99
98
|
target_obj = absolute(target)
|
|
100
|
-
|
|
99
|
+
from machineconfig.utils.path_reduced import P as PathExtended
|
|
100
|
+
remote_path = PathExtended(target_obj).get_remote_path(os_specific=os_specific, root=root, rel2home=rel2home, strict=False)
|
|
101
101
|
source = f"{cloud}:{remote_path.as_posix()}"
|
|
102
102
|
else: # source path is mentioned, target? maybe.
|
|
103
103
|
if target == ES: # target path is to be inferred from source.
|
|
@@ -115,7 +115,8 @@ def parse_cloud_source_target(args: Args, source: str, target: str) -> tuple[str
|
|
|
115
115
|
if len(target_parts) > 1 and target_parts[1] == ES: # the target path is to be inferred from source.
|
|
116
116
|
assert ES not in source, "You can't use $ in both source and target. Cyclical inference dependency arised."
|
|
117
117
|
source_obj = absolute(source)
|
|
118
|
-
|
|
118
|
+
from machineconfig.utils.path_reduced import P as PathExtended
|
|
119
|
+
remote_path = PathExtended(source_obj).get_remote_path(os_specific=os_specific, root=root, rel2home=rel2home, strict=False)
|
|
119
120
|
target = f"{cloud}:{remote_path.as_posix()}"
|
|
120
121
|
else: # target path is mentioned, source? maybe.
|
|
121
122
|
target = str(target)
|
|
@@ -130,6 +131,6 @@ def parse_cloud_source_target(args: Args, source: str, target: str) -> tuple[str
|
|
|
130
131
|
raise ValueError(f"Either source or target must be a remote path (i.e. machine:path)\nGot: source: `{source}`, target: `{target}`")
|
|
131
132
|
|
|
132
133
|
console.print(Panel("🔍 Path resolution complete", title="[bold blue]Resolution[/bold blue]", border_style="blue"))
|
|
133
|
-
|
|
134
|
+
pprint({"cloud": cloud, "source": str(source), "target": str(target)}, "CLI Resolution")
|
|
134
135
|
_ = pwd, encrypt, zip_arg, share
|
|
135
|
-
return cloud, str(source), str(target)
|
|
136
|
+
return cloud, str(source), str(target)
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
from typing import Any, Callable, Optional
|
|
3
3
|
import inspect
|
|
4
4
|
import os
|
|
5
|
-
import argparse
|
|
5
|
+
# import argparse
|
|
6
6
|
from crocodile.core import Display
|
|
7
|
-
from
|
|
8
|
-
from machineconfig.utils.utils import choose_ssh_host
|
|
7
|
+
from machineconfig.utils.path_reduced import P as PathExtended
|
|
8
|
+
# from machineconfig.utils.utils import choose_ssh_host
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
def search_for_files_of_interest(path_obj:
|
|
11
|
+
def search_for_files_of_interest(path_obj: PathExtended):
|
|
12
12
|
if path_obj.joinpath(".venv").exists():
|
|
13
13
|
path_objects = path_obj.search("*", not_in=[".venv"]).list
|
|
14
|
-
files: list[
|
|
14
|
+
files: list[PathExtended] = []
|
|
15
15
|
for a_path_obj in path_objects:
|
|
16
16
|
files += search_for_files_of_interest(path_obj=a_path_obj)
|
|
17
17
|
return files
|
|
@@ -28,19 +28,11 @@ def convert_kwargs_to_fire_kwargs_str(kwargs: dict[str, Any]) -> str:
|
|
|
28
28
|
if not kwargs: # empty dict
|
|
29
29
|
kwargs_str = ''
|
|
30
30
|
else:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
for k, v in kwargs.items():
|
|
37
|
-
if v is not None:
|
|
38
|
-
item = f'"{k}": "{v}"'
|
|
39
|
-
else:
|
|
40
|
-
item = f'"{k}": None'
|
|
41
|
-
tmp_list.append(item)
|
|
42
|
-
tmp__ = ", ".join(tmp_list)
|
|
43
|
-
kwargs_str = "'{" + tmp__ + "}'"
|
|
31
|
+
# For fire module, all keyword arguments should be passed as --key value pairs
|
|
32
|
+
tmp_list: list[str] = []
|
|
33
|
+
for k, v in kwargs.items():
|
|
34
|
+
tmp_list.append(f"--{k} {v}")
|
|
35
|
+
kwargs_str = " " + " ".join(tmp_list) + " "
|
|
44
36
|
return kwargs_str
|
|
45
37
|
|
|
46
38
|
|
|
@@ -51,7 +43,7 @@ def parse_pyfile(file_path: str):
|
|
|
51
43
|
func_args: list[list[args_spec]] = [[]] # this firt prepopulated dict is for the option 'RUN AS MAIN' which has no args
|
|
52
44
|
|
|
53
45
|
import ast
|
|
54
|
-
parsed_ast = ast.parse(
|
|
46
|
+
parsed_ast = ast.parse(PathExtended(file_path).read_text(encoding='utf-8'))
|
|
55
47
|
functions = [
|
|
56
48
|
node
|
|
57
49
|
for node in ast.walk(parsed_ast)
|
|
@@ -73,12 +65,8 @@ def parse_pyfile(file_path: str):
|
|
|
73
65
|
if arg.annotation is not None:
|
|
74
66
|
try: type_ = arg.annotation.__dict__['id']
|
|
75
67
|
except KeyError as ke:
|
|
76
|
-
# type_ = arg.annotation.__name__
|
|
77
|
-
# print(f"Failed to get type for {arg.annotation}. {ke}")
|
|
78
|
-
# Struct(get_attrs(arg.annotation)).print(as_yaml=True)
|
|
79
68
|
type_ = "Any" # e.g. a callable object
|
|
80
69
|
_ = ke
|
|
81
|
-
# raise ke
|
|
82
70
|
else: type_ = "Any"
|
|
83
71
|
default_tmp = function.args.defaults[idx] if idx < len(function.args.defaults) else None
|
|
84
72
|
if default_tmp is None: default = None
|
|
@@ -123,18 +111,18 @@ def get_attrs_recursively(obj: Any):
|
|
|
123
111
|
return obj
|
|
124
112
|
|
|
125
113
|
|
|
126
|
-
def run_on_remote(func_file: str, args: argparse.Namespace):
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
114
|
+
# def run_on_remote(func_file: str, args: argparse.Namespace):
|
|
115
|
+
# host = choose_ssh_host(multi=False)
|
|
116
|
+
# assert isinstance(host, str), f"host must be a string. Got {type(host)}"
|
|
117
|
+
# from machineconfig.cluster.remote_machine import RemoteMachine, RemoteMachineConfig
|
|
118
|
+
# config = RemoteMachineConfig(copy_repo=True, update_repo=False, update_essential_repos=True,
|
|
119
|
+
# notify_upon_completion=True, ssh_params=dict(host=host),
|
|
120
|
+
# # to_email=None, email_config_name='enaut',
|
|
121
|
+
# data=[],
|
|
122
|
+
# ipython=False, interactive=args.interactive, pdb=False, pudb=args.debug, wrap_in_try_except=False,
|
|
123
|
+
# transfer_method="sftp")
|
|
124
|
+
# m = RemoteMachine(func=func_file, func_kwargs=None, config=config)
|
|
125
|
+
# m.run()
|
|
138
126
|
|
|
139
127
|
|
|
140
128
|
def find_repo_root_path(start_path: str) -> Optional[str]:
|