globus-cli 3.30.1__tar.gz → 3.32.0__tar.gz
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.
- {globus_cli-3.30.1/src/globus_cli.egg-info → globus_cli-3.32.0}/PKG-INFO +3 -3
- {globus_cli-3.30.1 → globus_cli-3.32.0}/pyproject.toml +4 -3
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/create/guest.py +0 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/update.py +14 -15
- globus_cli-3.32.0/src/globus_cli/commands/endpoint/activate.py +46 -0
- globus_cli-3.32.0/src/globus_cli/commands/endpoint/deactivate.py +24 -0
- globus_cli-3.32.0/src/globus_cli/commands/endpoint/is_activated.py +33 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +5 -4
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/show.py +0 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/resume.py +5 -9
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/_common.py +1 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/update.py +11 -3
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/list_commands.py +1 -6
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/session/consent.py +2 -2
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/show.py +3 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/create/transfer.py +42 -22
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/resume.py +5 -9
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/transfer.py +34 -8
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/endpointish/endpointish.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/exception_handling/hooks.py +2 -4
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/globus_cli_flake8.py +2 -2
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/auth_flows.py +3 -3
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/errors.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/manager.py +12 -15
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/scopes.py +11 -18
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/task_path.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/__init__.py +3 -5
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/services/transfer/__init__.py +0 -3
- globus_cli-3.32.0/src/globus_cli/services/transfer/activation.py +28 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/services/transfer/client.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/field.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/auth.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/version.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.32.0/src/globus_cli.egg-info}/PKG-INFO +3 -3
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli.egg-info/requires.txt +2 -2
- globus_cli-3.30.1/src/globus_cli/commands/endpoint/activate.py +0 -228
- globus_cli-3.30.1/src/globus_cli/commands/endpoint/deactivate.py +0 -18
- globus_cli-3.30.1/src/globus_cli/commands/endpoint/is_activated.py +0 -87
- globus_cli-3.30.1/src/globus_cli/services/transfer/activation.py +0 -66
- {globus_cli-3.30.1 → globus_cli-3.32.0}/LICENSE +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/README.rst +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/setup.cfg +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/setup.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/_warnings.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/api.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/search.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/start.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/flows/validate.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/set_subscription_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/login.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/logout.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/session/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/pause.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/timer/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/local_server.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/tokenstore.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/login_manager/utils.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/commands.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_classes.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/delimited.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/identity_type.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/json_strorfile.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/location.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/notify_param.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/nullable.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/parsing/shell_completion.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/reflect.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/services/transfer/data.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/awscli_text.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/context.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/printer.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/types.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/utils.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli.egg-info/SOURCES.txt +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
- {globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: globus-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.32.0
|
|
4
4
|
Summary: Globus CLI
|
|
5
5
|
Author-email: Stephen Rosen <sirosen@globus.org>
|
|
6
6
|
Project-URL: homepage, https://github.com/globus/globus-cli
|
|
@@ -18,7 +18,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
18
18
|
Requires-Python: >=3.8
|
|
19
19
|
Description-Content-Type: text/x-rst
|
|
20
20
|
License-File: LICENSE
|
|
21
|
-
Requires-Dist: globus-sdk==3.
|
|
21
|
+
Requires-Dist: globus-sdk==3.46.0
|
|
22
22
|
Requires-Dist: click<9,>=8.1.4
|
|
23
23
|
Requires-Dist: jmespath==1.0.1
|
|
24
24
|
Requires-Dist: packaging>=17.0
|
|
@@ -29,7 +29,7 @@ Requires-Dist: coverage>=7; extra == "test"
|
|
|
29
29
|
Requires-Dist: pytest>=7; extra == "test"
|
|
30
30
|
Requires-Dist: pytest-xdist<4; extra == "test"
|
|
31
31
|
Requires-Dist: pytest-timeout<3; extra == "test"
|
|
32
|
-
Requires-Dist: click-type-test==0.0
|
|
32
|
+
Requires-Dist: click-type-test==1.0.0; python_version >= "3.10" and extra == "test"
|
|
33
33
|
Requires-Dist: responses==0.25.3; extra == "test"
|
|
34
34
|
Requires-Dist: ruamel.yaml==0.18.6; extra == "test"
|
|
35
35
|
Requires-Dist: setuptools; python_version >= "3.12" and extra == "test"
|
|
@@ -28,7 +28,7 @@ classifiers = [
|
|
|
28
28
|
]
|
|
29
29
|
requires-python = ">=3.8"
|
|
30
30
|
dependencies = [
|
|
31
|
-
"globus-sdk==3.
|
|
31
|
+
"globus-sdk==3.46.0",
|
|
32
32
|
"click>=8.1.4,<9",
|
|
33
33
|
"jmespath==1.0.1",
|
|
34
34
|
"packaging>=17.0",
|
|
@@ -48,7 +48,7 @@ test = [
|
|
|
48
48
|
"pytest>=7",
|
|
49
49
|
"pytest-xdist<4",
|
|
50
50
|
"pytest-timeout<3",
|
|
51
|
-
"click-type-test==0.0
|
|
51
|
+
"click-type-test==1.0.0;python_version>='3.10'",
|
|
52
52
|
"responses==0.25.3",
|
|
53
53
|
# loading test fixture data
|
|
54
54
|
"ruamel.yaml==0.18.6",
|
|
@@ -66,7 +66,7 @@ attr = "globus_cli.version.__version__"
|
|
|
66
66
|
profile = "black"
|
|
67
67
|
|
|
68
68
|
[tool.pytest.ini_options]
|
|
69
|
-
addopts = "--timeout 3"
|
|
69
|
+
addopts = "--timeout 3 --color=yes"
|
|
70
70
|
filterwarnings = ["error"]
|
|
71
71
|
|
|
72
72
|
[tool.scriv]
|
|
@@ -79,6 +79,7 @@ entry_title_template = '{{ version }} ({{ date.strftime("%Y-%m-%d") }})'
|
|
|
79
79
|
|
|
80
80
|
[tool.mypy]
|
|
81
81
|
strict = true
|
|
82
|
+
sqlite_cache = true
|
|
82
83
|
|
|
83
84
|
# additional settings (not part of strict=true)
|
|
84
85
|
warn_unreachable = true
|
|
@@ -37,14 +37,14 @@ class _FullDataField(Field):
|
|
|
37
37
|
"--force-encryption/--no-force-encryption",
|
|
38
38
|
"force_encryption",
|
|
39
39
|
default=None,
|
|
40
|
-
help="When set, all transfers to and from this collection are always encrypted",
|
|
40
|
+
help="When set, all transfers to and from this collection are always encrypted.",
|
|
41
41
|
)
|
|
42
42
|
@click.option(
|
|
43
43
|
"--sharing-restrict-paths",
|
|
44
44
|
type=JSONStringOrFile(null="null"),
|
|
45
45
|
help=(
|
|
46
46
|
"Path restrictions for sharing data on guest collections "
|
|
47
|
-
"based on this collection. This option is only usable on Mapped Collections"
|
|
47
|
+
"based on this collection. This option is only usable on Mapped Collections."
|
|
48
48
|
),
|
|
49
49
|
)
|
|
50
50
|
@click.option(
|
|
@@ -55,7 +55,7 @@ class _FullDataField(Field):
|
|
|
55
55
|
"Allow Guest Collections to be created on this Collection. This option "
|
|
56
56
|
"is only usable on Mapped Collections. If this option is disabled on a "
|
|
57
57
|
"Mapped Collection which already has associated Guest Collections, "
|
|
58
|
-
"those collections will no longer be accessible"
|
|
58
|
+
"those collections will no longer be accessible."
|
|
59
59
|
),
|
|
60
60
|
)
|
|
61
61
|
@click.option(
|
|
@@ -66,7 +66,7 @@ class _FullDataField(Field):
|
|
|
66
66
|
"Mapped Collection. This option is only usable on non high assurance "
|
|
67
67
|
"Mapped Collections and the setting is inherited by the hosted Guest "
|
|
68
68
|
"Collections. Anonymous write ACLs are enabled by default "
|
|
69
|
-
"(requires an endpoint with API v1.8.0)"
|
|
69
|
+
"(requires an endpoint with API v1.8.0)."
|
|
70
70
|
),
|
|
71
71
|
)
|
|
72
72
|
@click.option(
|
|
@@ -74,10 +74,9 @@ class _FullDataField(Field):
|
|
|
74
74
|
"domain_name",
|
|
75
75
|
default=None,
|
|
76
76
|
help=(
|
|
77
|
-
"DNS host name for the collection (mapped "
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"it must be a subdomain of the endpoint's domain"
|
|
77
|
+
"DNS host name for the collection (mapped collections only). "
|
|
78
|
+
"This may be either a host name or a fully-qualified domain name, "
|
|
79
|
+
"but if it is the latter it must be a subdomain of the endpoint's domain."
|
|
81
80
|
),
|
|
82
81
|
)
|
|
83
82
|
@click.option(
|
|
@@ -85,8 +84,8 @@ class _FullDataField(Field):
|
|
|
85
84
|
"enable_https",
|
|
86
85
|
default=None,
|
|
87
86
|
help=(
|
|
88
|
-
"Explicitly enable or disable
|
|
89
|
-
"with API v1.1.0)"
|
|
87
|
+
"Explicitly enable or disable HTTPS support "
|
|
88
|
+
"(requires a managed endpoint with API v1.1.0)."
|
|
90
89
|
),
|
|
91
90
|
)
|
|
92
91
|
@click.option(
|
|
@@ -95,9 +94,9 @@ class _FullDataField(Field):
|
|
|
95
94
|
multiple=True,
|
|
96
95
|
callback=emptyable_opt_list_callback,
|
|
97
96
|
help=(
|
|
98
|
-
"Connector-specific username allowed to create guest collections."
|
|
97
|
+
"Connector-specific username allowed to create guest collections. "
|
|
99
98
|
f"{_MULTI_USE_OPTION_STR} to allow multiple users. "
|
|
100
|
-
'Set a value of "" to clear this'
|
|
99
|
+
'Set a value of "" to clear this.'
|
|
101
100
|
),
|
|
102
101
|
)
|
|
103
102
|
@click.option(
|
|
@@ -106,9 +105,9 @@ class _FullDataField(Field):
|
|
|
106
105
|
multiple=True,
|
|
107
106
|
callback=emptyable_opt_list_callback,
|
|
108
107
|
help=(
|
|
109
|
-
"Connector-specific username denied permission to create guest "
|
|
110
|
-
f"
|
|
111
|
-
'Set a value of "" to clear this'
|
|
108
|
+
"Connector-specific username denied permission to create guest collections. "
|
|
109
|
+
f"{_MULTI_USE_OPTION_STR} to deny multiple users. "
|
|
110
|
+
'Set a value of "" to clear this.'
|
|
112
111
|
),
|
|
113
112
|
)
|
|
114
113
|
@LoginManager.requires_login("auth", "transfer")
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import uuid
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from globus_cli.parsing import command, endpoint_id_arg, mutex_option_group
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@command("activate", deprecated=True, hidden=True)
|
|
11
|
+
@endpoint_id_arg
|
|
12
|
+
@click.option("--web", is_flag=True, default=False)
|
|
13
|
+
@click.option("--no-browser", is_flag=True, default=False)
|
|
14
|
+
@click.option("--myproxy", is_flag=True, default=False)
|
|
15
|
+
@click.option("--myproxy-username", "-U")
|
|
16
|
+
@click.option("--myproxy-password", "-P", hidden=True)
|
|
17
|
+
@click.option("--myproxy-lifetime", type=int)
|
|
18
|
+
@click.option("--no-autoactivate", is_flag=True, default=False)
|
|
19
|
+
@click.option("--force", is_flag=True, default=False)
|
|
20
|
+
@mutex_option_group("--web", "--myproxy")
|
|
21
|
+
def endpoint_activate(
|
|
22
|
+
*,
|
|
23
|
+
endpoint_id: uuid.UUID,
|
|
24
|
+
myproxy: bool,
|
|
25
|
+
myproxy_username: str | None,
|
|
26
|
+
myproxy_password: str | None,
|
|
27
|
+
myproxy_lifetime: int | None,
|
|
28
|
+
web: bool,
|
|
29
|
+
no_browser: bool,
|
|
30
|
+
no_autoactivate: bool,
|
|
31
|
+
force: bool,
|
|
32
|
+
) -> None:
|
|
33
|
+
"""
|
|
34
|
+
Activate an endpoint.
|
|
35
|
+
|
|
36
|
+
Endpoint Activation has been removed from the Globus ecosystem. This command
|
|
37
|
+
no longer does anything.
|
|
38
|
+
"""
|
|
39
|
+
click.echo(
|
|
40
|
+
click.style(
|
|
41
|
+
"`globus endpoint activate` has been deprecated and "
|
|
42
|
+
"will be removed in a future release.",
|
|
43
|
+
fg="yellow",
|
|
44
|
+
),
|
|
45
|
+
err=True,
|
|
46
|
+
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import uuid
|
|
2
|
+
|
|
3
|
+
import click
|
|
4
|
+
|
|
5
|
+
from globus_cli.parsing import command, endpoint_id_arg
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@command("deactivate", deprecated=True, hidden=True)
|
|
9
|
+
@endpoint_id_arg
|
|
10
|
+
def endpoint_deactivate(*, endpoint_id: uuid.UUID) -> None:
|
|
11
|
+
"""
|
|
12
|
+
Deactivate an endpoint.
|
|
13
|
+
|
|
14
|
+
Endpoint Activation has been removed from the Globus ecosystem. This command
|
|
15
|
+
no longer does anything.
|
|
16
|
+
"""
|
|
17
|
+
click.echo(
|
|
18
|
+
click.style(
|
|
19
|
+
"`globus endpoint deactivate` has been deprecated and "
|
|
20
|
+
"will be removed in a future release.",
|
|
21
|
+
fg="yellow",
|
|
22
|
+
),
|
|
23
|
+
err=True,
|
|
24
|
+
)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import uuid
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from globus_cli.parsing import command, endpoint_id_arg
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@command("is-activated", deprecated=True, hidden=True)
|
|
11
|
+
@endpoint_id_arg
|
|
12
|
+
@click.option("--until", type=int)
|
|
13
|
+
@click.option("--absolute-time", is_flag=True, show_default=True, default=False)
|
|
14
|
+
def endpoint_is_activated(
|
|
15
|
+
*,
|
|
16
|
+
endpoint_id: uuid.UUID,
|
|
17
|
+
until: int | None,
|
|
18
|
+
absolute_time: bool,
|
|
19
|
+
) -> None:
|
|
20
|
+
"""
|
|
21
|
+
Check if an endpoint is activated or requires activation.
|
|
22
|
+
|
|
23
|
+
Endpoint Activation has been removed from the Globus ecosystem. This command
|
|
24
|
+
no longer does anything.
|
|
25
|
+
"""
|
|
26
|
+
click.echo(
|
|
27
|
+
click.style(
|
|
28
|
+
"`globus endpoint is-activated` has been deprecated and "
|
|
29
|
+
"will be removed in a future release.",
|
|
30
|
+
fg="yellow",
|
|
31
|
+
),
|
|
32
|
+
err=True,
|
|
33
|
+
)
|
{globus_cli-3.30.1 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/set_subscription_id.py
RENAMED
|
@@ -40,10 +40,11 @@ def set_endpoint_subscription_id(
|
|
|
40
40
|
login_manager: LoginManager, *, endpoint_id: uuid.UUID, subscription_id: str
|
|
41
41
|
) -> None:
|
|
42
42
|
"""
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
[NOTE]
|
|
44
|
+
====
|
|
45
|
+
For GCS endpoints, refer to ``globus gcs endpoint set-subscription-id``.
|
|
46
|
+
For GCP endpoints, refer to ``globus gcp set-subscription-id``.
|
|
47
|
+
====
|
|
47
48
|
|
|
48
49
|
Set an endpoint's subscription ID.
|
|
49
50
|
|
|
@@ -12,7 +12,6 @@ STANDARD_FIELDS = [
|
|
|
12
12
|
Field("ID", "id"),
|
|
13
13
|
Field("Owner", "owner_string"),
|
|
14
14
|
Field("Description", "description", wrap_enabled=True),
|
|
15
|
-
Field("Activated", "activated"),
|
|
16
15
|
Field("Shareable", "shareable"),
|
|
17
16
|
Field("Department", "department"),
|
|
18
17
|
Field("Keywords", "keywords"),
|
|
@@ -35,7 +35,7 @@ def s3(
|
|
|
35
35
|
gcs_client = login_manager.get_gcs_client(endpoint_id=endpoint_id)
|
|
36
36
|
auth_client = login_manager.get_auth_client()
|
|
37
37
|
|
|
38
|
-
# TODO: replace with SDK class
|
|
38
|
+
# TODO: replace with SDK class if one becomes available
|
|
39
39
|
policies = {
|
|
40
40
|
"DATA_TYPE": "s3_user_credential_policies#1.0.0",
|
|
41
41
|
"s3_key_id": s3_key_id,
|
|
@@ -16,9 +16,7 @@ from globus_cli.utils import CLIAuthRequirementsError
|
|
|
16
16
|
# NB: GARE parsing requires other SDK components and therefore needs to be deferred to
|
|
17
17
|
# avoid the performance impact of non-lazy imports
|
|
18
18
|
if t.TYPE_CHECKING:
|
|
19
|
-
from globus_sdk.
|
|
20
|
-
GlobusAuthRequirementsError,
|
|
21
|
-
)
|
|
19
|
+
from globus_sdk.gare import GARE
|
|
22
20
|
|
|
23
21
|
|
|
24
22
|
@command("resume")
|
|
@@ -66,7 +64,7 @@ def resume_command(
|
|
|
66
64
|
def check_inactive_reason(
|
|
67
65
|
login_manager: LoginManager,
|
|
68
66
|
run_id: uuid.UUID,
|
|
69
|
-
gare:
|
|
67
|
+
gare: GARE | None,
|
|
70
68
|
) -> None:
|
|
71
69
|
if gare is None:
|
|
72
70
|
return
|
|
@@ -109,10 +107,8 @@ def check_inactive_reason(
|
|
|
109
107
|
|
|
110
108
|
def _get_inactive_reason(
|
|
111
109
|
run_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
|
|
112
|
-
) ->
|
|
113
|
-
from globus_sdk.
|
|
114
|
-
to_auth_requirements_error,
|
|
115
|
-
)
|
|
110
|
+
) -> GARE | None:
|
|
111
|
+
from globus_sdk.gare import to_gare
|
|
116
112
|
|
|
117
113
|
if not run_doc.get("status") == "INACTIVE":
|
|
118
114
|
return None
|
|
@@ -121,7 +117,7 @@ def _get_inactive_reason(
|
|
|
121
117
|
if not isinstance(details, dict):
|
|
122
118
|
return None
|
|
123
119
|
|
|
124
|
-
return
|
|
120
|
+
return to_gare(details)
|
|
125
121
|
|
|
126
122
|
|
|
127
123
|
def _has_required_consent(
|
|
@@ -64,6 +64,7 @@ _BASE_GROUP_RECORD_FIELDS = [
|
|
|
64
64
|
"my_memberships[].role",
|
|
65
65
|
formatter=formatters.SortedArray,
|
|
66
66
|
),
|
|
67
|
+
Field("Terms and Conditions", "terms_and_conditions", wrap_enabled=True),
|
|
67
68
|
]
|
|
68
69
|
GROUP_FIELDS = [Field("Group ID", "id")] + _BASE_GROUP_RECORD_FIELDS
|
|
69
70
|
GROUP_FIELDS_W_SUBSCRIPTION = (
|
|
@@ -15,6 +15,9 @@ from ._common import group_id_arg
|
|
|
15
15
|
@group_id_arg
|
|
16
16
|
@click.option("--name", help="Name for the group")
|
|
17
17
|
@click.option("--description", help="Description for the group")
|
|
18
|
+
@click.option(
|
|
19
|
+
"--terms-and-conditions", help="Terms and conditions for group membership"
|
|
20
|
+
)
|
|
18
21
|
@LoginManager.requires_login("groups")
|
|
19
22
|
def group_update(
|
|
20
23
|
login_manager: LoginManager,
|
|
@@ -22,6 +25,7 @@ def group_update(
|
|
|
22
25
|
group_id: uuid.UUID,
|
|
23
26
|
name: str | None,
|
|
24
27
|
description: str | None,
|
|
28
|
+
terms_and_conditions: str | None,
|
|
25
29
|
) -> None:
|
|
26
30
|
"""Update an existing group."""
|
|
27
31
|
groups_client = login_manager.get_groups_client()
|
|
@@ -30,10 +34,14 @@ def group_update(
|
|
|
30
34
|
group = groups_client.get_group(group_id)
|
|
31
35
|
|
|
32
36
|
# assemble put data using existing values for any field not given
|
|
33
|
-
# note that the API
|
|
34
|
-
#
|
|
37
|
+
# note that the API only allows modification of certain fields
|
|
38
|
+
# https://groups.api.globus.org/redoc#tag/groups/operation/update_group_v2_groups__group_id__put
|
|
35
39
|
data = {}
|
|
36
|
-
for attrname, argval in (
|
|
40
|
+
for attrname, argval in (
|
|
41
|
+
("name", name),
|
|
42
|
+
("description", description),
|
|
43
|
+
("terms_and_conditions", terms_and_conditions),
|
|
44
|
+
):
|
|
37
45
|
if argval is not None:
|
|
38
46
|
data[attrname] = argval
|
|
39
47
|
else:
|
|
@@ -42,12 +42,7 @@ def _print_tree(
|
|
|
42
42
|
def list_commands() -> None:
|
|
43
43
|
"""
|
|
44
44
|
Prints the name and a short description of every command available in the globus
|
|
45
|
-
cli. Commands are grouped by their parent commands
|
|
46
|
-
e.g. 'globus endpoint activate' is listed as 'activate' under 'globus endpoint'.
|
|
47
|
-
|
|
48
|
-
Note that commands with the same listed name under different parent commands
|
|
49
|
-
are distinct. e.g. 'globus task update' is a distinct command from
|
|
50
|
-
'globus endpoint update'.
|
|
45
|
+
cli. Commands are grouped by their parent commands.
|
|
51
46
|
"""
|
|
52
47
|
# get the root context (the click context for the entire CLI tree)
|
|
53
48
|
root_ctx = click.get_current_context().find_root()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import click
|
|
4
|
-
from globus_sdk.scopes import
|
|
4
|
+
from globus_sdk.scopes import Scope
|
|
5
5
|
|
|
6
6
|
from globus_cli import utils
|
|
7
7
|
from globus_cli.login_manager import LoginManager, compute_timer_scope
|
|
@@ -36,7 +36,7 @@ def session_consent(
|
|
|
36
36
|
This command is necessary when the CLI needs access to resources which require the
|
|
37
37
|
user to explicitly consent to access.
|
|
38
38
|
"""
|
|
39
|
-
scope_list: list[str |
|
|
39
|
+
scope_list: list[str | Scope] = [
|
|
40
40
|
utils.unquote_cmdprompt_single_quotes(s) for s in scopes
|
|
41
41
|
]
|
|
42
42
|
|
|
@@ -53,6 +53,9 @@ TRANSFER_FIELDS = [
|
|
|
53
53
|
SUCCESSFULL_TRANSFER_FIELDS = [
|
|
54
54
|
Field("Source Path", "source_path"),
|
|
55
55
|
Field("Destination Path", "destination_path"),
|
|
56
|
+
Field("Size", "size"),
|
|
57
|
+
Field("Checksum Algorithm", "checksum_algorithm"),
|
|
58
|
+
Field("Checksum", "checksum"),
|
|
56
59
|
]
|
|
57
60
|
|
|
58
61
|
SKIPPED_PATHS_FIELDS = [
|
|
@@ -6,7 +6,7 @@ import uuid
|
|
|
6
6
|
|
|
7
7
|
import click
|
|
8
8
|
import globus_sdk
|
|
9
|
-
from globus_sdk.scopes import GCSCollectionScopeBuilder,
|
|
9
|
+
from globus_sdk.scopes import GCSCollectionScopeBuilder, Scope
|
|
10
10
|
|
|
11
11
|
from globus_cli.endpointish import Endpointish
|
|
12
12
|
from globus_cli.login_manager import LoginManager, is_client_login
|
|
@@ -102,11 +102,22 @@ e.g. '1h30m', '500s', '10d'
|
|
|
102
102
|
"--delete",
|
|
103
103
|
is_flag=True,
|
|
104
104
|
default=False,
|
|
105
|
+
hidden=True,
|
|
105
106
|
help=(
|
|
106
107
|
"Delete any files in the destination directory not contained in the source. "
|
|
107
108
|
'This results in "directory mirroring." Only valid on recursive transfers.'
|
|
108
109
|
),
|
|
109
110
|
)
|
|
111
|
+
@click.option(
|
|
112
|
+
"--delete-destination-extra",
|
|
113
|
+
is_flag=True,
|
|
114
|
+
default=False,
|
|
115
|
+
help=(
|
|
116
|
+
"Delete any files in the destination directory not contained in the source. "
|
|
117
|
+
'This results in "directory mirroring." Only valid on recursive transfers.'
|
|
118
|
+
),
|
|
119
|
+
)
|
|
120
|
+
@mutex_option_group("--delete", "--delete-destination-extra")
|
|
110
121
|
@LoginManager.requires_login("auth", "timer", "transfer")
|
|
111
122
|
def transfer_command(
|
|
112
123
|
login_manager: LoginManager,
|
|
@@ -122,6 +133,7 @@ def transfer_command(
|
|
|
122
133
|
stop_after_date: datetime.datetime | None,
|
|
123
134
|
stop_after_runs: int | None,
|
|
124
135
|
delete: bool,
|
|
136
|
+
delete_destination_extra: bool,
|
|
125
137
|
sync_level: t.Literal["exists", "size", "mtime", "checksum"] | None,
|
|
126
138
|
encrypt_data: bool,
|
|
127
139
|
verify_checksum: bool,
|
|
@@ -174,21 +186,30 @@ def transfer_command(
|
|
|
174
186
|
source_endpoint, cmd_source_path = source
|
|
175
187
|
dest_endpoint, cmd_dest_path = destination
|
|
176
188
|
|
|
177
|
-
if
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
f"Instead, use {option_name} on lines of --batch input which need it."
|
|
184
|
-
)
|
|
189
|
+
if delete:
|
|
190
|
+
msg = (
|
|
191
|
+
"`--delete` has been deprecated and will be removed in a future release. "
|
|
192
|
+
"Use `--delete-destination-extra` instead."
|
|
193
|
+
)
|
|
194
|
+
click.echo(click.style(msg, fg="yellow"), err=True)
|
|
185
195
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
196
|
+
# avoid 'mutex_option_group', emit a custom error message
|
|
197
|
+
if recursive is not None and batch:
|
|
198
|
+
option_name = "--recursive" if recursive else "--no-recursive"
|
|
199
|
+
raise click.UsageError(
|
|
200
|
+
f"You cannot use `{option_name}` in addition to `--batch`. "
|
|
201
|
+
f"Instead, use `{option_name}` on lines of `--batch` input which need it."
|
|
202
|
+
)
|
|
203
|
+
if recursive is False and (delete_destination_extra or delete):
|
|
204
|
+
option_name = (
|
|
205
|
+
"--delete-destination-extra" if delete_destination_extra else "--delete"
|
|
206
|
+
)
|
|
207
|
+
raise click.UsageError(
|
|
208
|
+
f"The `{option_name}` option cannot be specified with `--no-recursive`."
|
|
209
|
+
)
|
|
189
210
|
if (cmd_source_path is None or cmd_dest_path is None) and (not batch):
|
|
190
211
|
raise click.UsageError(
|
|
191
|
-
"
|
|
212
|
+
"Transfer requires either `SOURCE_PATH` and `DEST_PATH` or `--batch`"
|
|
192
213
|
)
|
|
193
214
|
|
|
194
215
|
# Interval must be null iff the timer is 'once', i.e. stop-after-runs == 1.
|
|
@@ -197,12 +218,12 @@ def transfer_command(
|
|
|
197
218
|
start_ = resolve_optional_local_time(start)
|
|
198
219
|
if stop_after_runs == 1:
|
|
199
220
|
if interval is not None:
|
|
200
|
-
raise click.UsageError("
|
|
221
|
+
raise click.UsageError("`--interval` is invalid with `--stop-after-runs=1`")
|
|
201
222
|
schedule = globus_sdk.OnceTimerSchedule(datetime=start_)
|
|
202
223
|
else:
|
|
203
224
|
if interval is None:
|
|
204
225
|
raise click.UsageError(
|
|
205
|
-
"
|
|
226
|
+
"`--interval` is required unless `--stop-after-runs=1`"
|
|
206
227
|
)
|
|
207
228
|
|
|
208
229
|
end: dict[str, t.Any] | globus_sdk.MissingType = globus_sdk.MISSING
|
|
@@ -278,7 +299,7 @@ def transfer_command(
|
|
|
278
299
|
encrypt_data=encrypt_data,
|
|
279
300
|
skip_source_errors=skip_source_errors,
|
|
280
301
|
fail_on_quota_errors=fail_on_quota_errors,
|
|
281
|
-
delete_destination_extra=delete,
|
|
302
|
+
delete_destination_extra=(delete or delete_destination_extra),
|
|
282
303
|
# mypy can't understand kwargs expansion very well
|
|
283
304
|
**notify, # type: ignore[arg-type]
|
|
284
305
|
)
|
|
@@ -314,14 +335,13 @@ def resolve_optional_local_time(
|
|
|
314
335
|
|
|
315
336
|
def _derive_needed_scopes(
|
|
316
337
|
needs_data_access: list[str],
|
|
317
|
-
) -> dict[str,
|
|
338
|
+
) -> dict[str, Scope]:
|
|
318
339
|
# Render the fully nested scope strings for each target
|
|
319
340
|
scopes_needed = {}
|
|
320
341
|
for target in needs_data_access:
|
|
321
342
|
target_scope = GCSCollectionScopeBuilder(target).data_access
|
|
322
343
|
scopes_needed[target] = _ez_make_nested_scope(
|
|
323
344
|
globus_sdk.TimerClient.scopes.timer,
|
|
324
|
-
"https://auth.globus.org/scopes/actions.globus.org/transfer/transfer",
|
|
325
345
|
globus_sdk.TransferClient.scopes.all,
|
|
326
346
|
target_scope,
|
|
327
347
|
)
|
|
@@ -330,7 +350,7 @@ def _derive_needed_scopes(
|
|
|
330
350
|
|
|
331
351
|
def _derive_missing_scopes(
|
|
332
352
|
auth_client: CustomAuthClient,
|
|
333
|
-
scopes_needed: dict[str,
|
|
353
|
+
scopes_needed: dict[str, Scope],
|
|
334
354
|
) -> list[str]:
|
|
335
355
|
# read the identity ID stored from the login flow
|
|
336
356
|
user_identity_id = get_current_identity_id()
|
|
@@ -350,8 +370,8 @@ def _derive_missing_scopes(
|
|
|
350
370
|
|
|
351
371
|
|
|
352
372
|
# shorthand helper for constructing a nested scope
|
|
353
|
-
def _ez_make_nested_scope(*scope_strings: str) ->
|
|
354
|
-
current_node =
|
|
373
|
+
def _ez_make_nested_scope(*scope_strings: str) -> Scope:
|
|
374
|
+
current_node = Scope(scope_strings[-1])
|
|
355
375
|
for current_scope in scope_strings[-2::-1]:
|
|
356
|
-
current_node =
|
|
376
|
+
current_node = Scope(current_scope, dependencies=[current_node])
|
|
357
377
|
return current_node
|
|
@@ -16,9 +16,7 @@ from globus_cli.utils import CLIAuthRequirementsError
|
|
|
16
16
|
# NB: GARE parsing requires other SDK components and therefore needs to be deferred to
|
|
17
17
|
# avoid the performance impact of non-lazy imports
|
|
18
18
|
if t.TYPE_CHECKING:
|
|
19
|
-
from globus_sdk.
|
|
20
|
-
GlobusAuthRequirementsError,
|
|
21
|
-
)
|
|
19
|
+
from globus_sdk.gare import GARE
|
|
22
20
|
|
|
23
21
|
|
|
24
22
|
@command("resume", short_help="Resume a timer.")
|
|
@@ -59,7 +57,7 @@ def resume_command(
|
|
|
59
57
|
def check_inactive_reason(
|
|
60
58
|
login_manager: LoginManager,
|
|
61
59
|
timer_id: uuid.UUID,
|
|
62
|
-
gare:
|
|
60
|
+
gare: GARE | None,
|
|
63
61
|
) -> None:
|
|
64
62
|
if gare is None:
|
|
65
63
|
return
|
|
@@ -102,10 +100,8 @@ def check_inactive_reason(
|
|
|
102
100
|
|
|
103
101
|
def _get_inactive_reason(
|
|
104
102
|
timer_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
|
|
105
|
-
) ->
|
|
106
|
-
from globus_sdk.
|
|
107
|
-
to_auth_requirements_error,
|
|
108
|
-
)
|
|
103
|
+
) -> GARE | None:
|
|
104
|
+
from globus_sdk.gare import to_gare
|
|
109
105
|
|
|
110
106
|
if timer_doc.get("status") != "inactive":
|
|
111
107
|
return None
|
|
@@ -114,7 +110,7 @@ def _get_inactive_reason(
|
|
|
114
110
|
if reason.get("cause") != "globus_auth_requirements":
|
|
115
111
|
return None
|
|
116
112
|
|
|
117
|
-
return
|
|
113
|
+
return to_gare(reason.get("detail", {}))
|
|
118
114
|
|
|
119
115
|
|
|
120
116
|
def _has_required_consent(
|