globus-cli 3.30.0__tar.gz → 3.31.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.0/src/globus_cli.egg-info → globus_cli-3.31.0}/PKG-INFO +2 -2
- {globus_cli-3.30.0 → globus_cli-3.31.0}/pyproject.toml +1 -1
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/create/guest.py +0 -1
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/update.py +14 -15
- globus_cli-3.31.0/src/globus_cli/commands/endpoint/activate.py +46 -0
- globus_cli-3.31.0/src/globus_cli/commands/endpoint/deactivate.py +24 -0
- globus_cli-3.31.0/src/globus_cli/commands/endpoint/is_activated.py +33 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +5 -4
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/show.py +0 -1
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/resume.py +7 -4
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/_common.py +1 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/update.py +11 -3
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/list_commands.py +1 -6
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/logout.py +18 -11
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/delete.py +5 -3
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/session/consent.py +2 -2
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/create/transfer.py +6 -6
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/resume.py +7 -4
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/auth_flows.py +3 -3
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/manager.py +21 -15
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/scopes.py +9 -9
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/__init__.py +3 -5
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/services/transfer/__init__.py +0 -3
- globus_cli-3.31.0/src/globus_cli/services/transfer/activation.py +28 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/version.py +1 -1
- {globus_cli-3.30.0 → globus_cli-3.31.0/src/globus_cli.egg-info}/PKG-INFO +2 -2
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli.egg-info/requires.txt +1 -1
- globus_cli-3.30.0/src/globus_cli/commands/endpoint/activate.py +0 -228
- globus_cli-3.30.0/src/globus_cli/commands/endpoint/deactivate.py +0 -18
- globus_cli-3.30.0/src/globus_cli/commands/endpoint/is_activated.py +0 -87
- globus_cli-3.30.0/src/globus_cli/services/transfer/activation.py +0 -66
- {globus_cli-3.30.0 → globus_cli-3.31.0}/LICENSE +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/README.rst +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/setup.cfg +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/setup.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/_warnings.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/api.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/search.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/start.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/flows/validate.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/set_subscription_id.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/login.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/session/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/delete.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/list.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/pause.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/timer/show.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/transfer.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/endpointish/endpointish.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/exception_handling/hooks.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/globus_cli_flake8.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/errors.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/local_server.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/tokenstore.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/login_manager/utils.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/commands.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_classes.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/delimited.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/identity_type.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/json_strorfile.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/location.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/notify_param.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/nullable.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/task_path.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/parsing/shell_completion.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/reflect.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/services/transfer/client.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/services/transfer/data.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/awscli_text.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/context.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/field.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/auth.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/printer.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/types.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli/utils.py +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli.egg-info/SOURCES.txt +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
- {globus_cli-3.30.0 → globus_cli-3.31.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.31.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.45.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
|
|
@@ -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.0 → globus_cli-3.31.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"),
|
|
@@ -110,9 +110,12 @@ def check_inactive_reason(
|
|
|
110
110
|
def _get_inactive_reason(
|
|
111
111
|
run_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
|
|
112
112
|
) -> GlobusAuthRequirementsError | None:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
try:
|
|
114
|
+
from globus_sdk.gare import to_gare # type: ignore[import-not-found]
|
|
115
|
+
except ImportError:
|
|
116
|
+
from globus_sdk.experimental.auth_requirements_error import (
|
|
117
|
+
to_auth_requirements_error as to_gare,
|
|
118
|
+
)
|
|
116
119
|
|
|
117
120
|
if not run_doc.get("status") == "INACTIVE":
|
|
118
121
|
return None
|
|
@@ -121,7 +124,7 @@ def _get_inactive_reason(
|
|
|
121
124
|
if not isinstance(details, dict):
|
|
122
125
|
return None
|
|
123
126
|
|
|
124
|
-
return
|
|
127
|
+
return to_gare(details) # type: ignore[no-any-return]
|
|
125
128
|
|
|
126
129
|
|
|
127
130
|
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()
|
|
@@ -54,8 +54,14 @@ flow.
|
|
|
54
54
|
is_flag=True,
|
|
55
55
|
default=False,
|
|
56
56
|
)
|
|
57
|
+
@click.option("--delete-client", is_flag=True, hidden=True)
|
|
57
58
|
@LoginManager.requires_login()
|
|
58
|
-
def logout_command(
|
|
59
|
+
def logout_command(
|
|
60
|
+
login_manager: LoginManager,
|
|
61
|
+
*,
|
|
62
|
+
ignore_errors: bool,
|
|
63
|
+
delete_client: bool,
|
|
64
|
+
) -> None:
|
|
59
65
|
"""
|
|
60
66
|
Logout of the Globus CLI
|
|
61
67
|
|
|
@@ -89,10 +95,15 @@ def logout_command(login_manager: LoginManager, *, ignore_errors: bool) -> None:
|
|
|
89
95
|
"Logging out of Globus{}\n".format(" as " + username if username else "")
|
|
90
96
|
)
|
|
91
97
|
|
|
92
|
-
#
|
|
93
|
-
#
|
|
94
|
-
#
|
|
95
|
-
|
|
98
|
+
# By default, preserve the templated client to avoid revocation of associated
|
|
99
|
+
# consents (which can cause refresh token revocation, causing resources
|
|
100
|
+
# associated with those tokens to become inoperable)
|
|
101
|
+
# If the user has specifically requested a client deletion via hidden option,
|
|
102
|
+
# then try to delete the templated credentialed client
|
|
103
|
+
# ignoring failure by default (maybe creds are already invalidated or the
|
|
104
|
+
# client was deleted)
|
|
105
|
+
# Always skip for client logins, which don't use a templated client
|
|
106
|
+
if delete_client and not is_client_login():
|
|
96
107
|
try:
|
|
97
108
|
delete_templated_client()
|
|
98
109
|
except globus_sdk.AuthAPIError:
|
|
@@ -108,13 +119,9 @@ def logout_command(login_manager: LoginManager, *, ignore_errors: bool) -> None:
|
|
|
108
119
|
"Continuing... (--ignore-errors)",
|
|
109
120
|
)
|
|
110
121
|
|
|
111
|
-
#
|
|
112
|
-
#
|
|
113
|
-
# tokens
|
|
114
|
-
# use the native client for this purpose so that we definitely have a valid API
|
|
115
|
-
# client in this case
|
|
122
|
+
# Attempt to revoke all tokens in storage; use the internal native client to ensure
|
|
123
|
+
# we have a valid Auth client
|
|
116
124
|
native_client = internal_native_client()
|
|
117
|
-
|
|
118
125
|
adapter = token_storage_adapter()
|
|
119
126
|
|
|
120
127
|
for rs, tokendata in adapter.get_by_resource_server().items():
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import uuid
|
|
2
2
|
|
|
3
3
|
from globus_cli.login_manager import LoginManager
|
|
4
4
|
from globus_cli.parsing import command
|
|
5
5
|
from globus_cli.termio import display
|
|
6
6
|
|
|
7
|
+
from .._common import index_id_arg
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
@command("delete")
|
|
9
11
|
@LoginManager.requires_login("search")
|
|
10
|
-
@
|
|
11
|
-
def delete_command(login_manager: LoginManager, *, index_id:
|
|
12
|
+
@index_id_arg
|
|
13
|
+
def delete_command(login_manager: LoginManager, *, index_id: uuid.UUID) -> None:
|
|
12
14
|
"""Delete a Search index."""
|
|
13
15
|
search_client = login_manager.get_search_client()
|
|
14
16
|
display(
|
|
@@ -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
|
|
|
@@ -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
|
|
@@ -314,7 +314,7 @@ def resolve_optional_local_time(
|
|
|
314
314
|
|
|
315
315
|
def _derive_needed_scopes(
|
|
316
316
|
needs_data_access: list[str],
|
|
317
|
-
) -> dict[str,
|
|
317
|
+
) -> dict[str, Scope]:
|
|
318
318
|
# Render the fully nested scope strings for each target
|
|
319
319
|
scopes_needed = {}
|
|
320
320
|
for target in needs_data_access:
|
|
@@ -330,7 +330,7 @@ def _derive_needed_scopes(
|
|
|
330
330
|
|
|
331
331
|
def _derive_missing_scopes(
|
|
332
332
|
auth_client: CustomAuthClient,
|
|
333
|
-
scopes_needed: dict[str,
|
|
333
|
+
scopes_needed: dict[str, Scope],
|
|
334
334
|
) -> list[str]:
|
|
335
335
|
# read the identity ID stored from the login flow
|
|
336
336
|
user_identity_id = get_current_identity_id()
|
|
@@ -350,8 +350,8 @@ def _derive_missing_scopes(
|
|
|
350
350
|
|
|
351
351
|
|
|
352
352
|
# shorthand helper for constructing a nested scope
|
|
353
|
-
def _ez_make_nested_scope(*scope_strings: str) ->
|
|
354
|
-
current_node =
|
|
353
|
+
def _ez_make_nested_scope(*scope_strings: str) -> Scope:
|
|
354
|
+
current_node = Scope(scope_strings[-1])
|
|
355
355
|
for current_scope in scope_strings[-2::-1]:
|
|
356
|
-
current_node =
|
|
356
|
+
current_node = Scope(current_scope, dependencies=[current_node])
|
|
357
357
|
return current_node
|
|
@@ -103,9 +103,12 @@ def check_inactive_reason(
|
|
|
103
103
|
def _get_inactive_reason(
|
|
104
104
|
timer_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
|
|
105
105
|
) -> GlobusAuthRequirementsError | None:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
try:
|
|
107
|
+
from globus_sdk.gare import to_gare # type: ignore[import-not-found]
|
|
108
|
+
except ImportError:
|
|
109
|
+
from globus_sdk.experimental.auth_requirements_error import (
|
|
110
|
+
to_auth_requirements_error as to_gare,
|
|
111
|
+
)
|
|
109
112
|
|
|
110
113
|
if timer_doc.get("status") != "inactive":
|
|
111
114
|
return None
|
|
@@ -114,7 +117,7 @@ def _get_inactive_reason(
|
|
|
114
117
|
if reason.get("cause") != "globus_auth_requirements":
|
|
115
118
|
return None
|
|
116
119
|
|
|
117
|
-
return
|
|
120
|
+
return to_gare(reason.get("detail", {})) # type: ignore[no-any-return]
|
|
118
121
|
|
|
119
122
|
|
|
120
123
|
def _has_required_consent(
|
|
@@ -6,7 +6,7 @@ import typing as t
|
|
|
6
6
|
|
|
7
7
|
import click
|
|
8
8
|
import globus_sdk
|
|
9
|
-
from globus_sdk.scopes import
|
|
9
|
+
from globus_sdk.scopes import Scope
|
|
10
10
|
|
|
11
11
|
from .tokenstore import (
|
|
12
12
|
internal_auth_client,
|
|
@@ -17,7 +17,7 @@ from .tokenstore import (
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def do_link_auth_flow(
|
|
20
|
-
scopes: str | t.Sequence[str |
|
|
20
|
+
scopes: str | t.Sequence[str | Scope],
|
|
21
21
|
*,
|
|
22
22
|
session_params: dict[str, str] | None = None,
|
|
23
23
|
) -> bool:
|
|
@@ -58,7 +58,7 @@ def do_link_auth_flow(
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
def do_local_server_auth_flow(
|
|
61
|
-
scopes: str | t.Sequence[str |
|
|
61
|
+
scopes: str | t.Sequence[str | Scope],
|
|
62
62
|
*,
|
|
63
63
|
session_params: dict[str, str] | None = None,
|
|
64
64
|
) -> bool:
|
|
@@ -7,20 +7,26 @@ import uuid
|
|
|
7
7
|
|
|
8
8
|
import click
|
|
9
9
|
import globus_sdk
|
|
10
|
-
from globus_sdk.experimental.consents import ConsentForest
|
|
11
|
-
from globus_sdk.experimental.scope_parser import Scope
|
|
12
10
|
from globus_sdk.scopes import (
|
|
13
11
|
AuthScopes,
|
|
14
12
|
FlowsScopes,
|
|
15
13
|
GCSCollectionScopeBuilder,
|
|
16
14
|
GCSEndpointScopeBuilder,
|
|
17
15
|
GroupsScopes,
|
|
18
|
-
|
|
16
|
+
Scope,
|
|
19
17
|
SearchScopes,
|
|
20
|
-
|
|
18
|
+
TimersScopes,
|
|
21
19
|
TransferScopes,
|
|
22
20
|
)
|
|
23
21
|
|
|
22
|
+
# TODO: remove this after an SDK release provides scopes.consents
|
|
23
|
+
try:
|
|
24
|
+
from globus_sdk.scopes.consents import ( # type: ignore[import-not-found]
|
|
25
|
+
ConsentForest,
|
|
26
|
+
)
|
|
27
|
+
except ImportError:
|
|
28
|
+
from globus_sdk.experimental.consents import ConsentForest
|
|
29
|
+
|
|
24
30
|
from globus_cli.endpointish import Endpointish, EntityType
|
|
25
31
|
from globus_cli.types import ServiceNameLiteral
|
|
26
32
|
|
|
@@ -54,21 +60,19 @@ R = t.TypeVar("R")
|
|
|
54
60
|
class LoginManager:
|
|
55
61
|
def __init__(self) -> None:
|
|
56
62
|
self._token_storage = token_storage_adapter()
|
|
57
|
-
self._nonstatic_requirements: dict[str, list[str |
|
|
63
|
+
self._nonstatic_requirements: dict[str, list[str | Scope]] = {}
|
|
58
64
|
|
|
59
|
-
def add_requirement(
|
|
60
|
-
self, rs_name: str, scopes: t.Sequence[str | MutableScope]
|
|
61
|
-
) -> None:
|
|
65
|
+
def add_requirement(self, rs_name: str, scopes: t.Sequence[str | Scope]) -> None:
|
|
62
66
|
self._nonstatic_requirements[rs_name] = list(scopes)
|
|
63
67
|
|
|
64
68
|
@property
|
|
65
|
-
def login_requirements(self) -> t.Iterator[tuple[str, list[str |
|
|
69
|
+
def login_requirements(self) -> t.Iterator[tuple[str, list[str | Scope]]]:
|
|
66
70
|
for req in CLI_SCOPE_REQUIREMENTS.values():
|
|
67
71
|
yield req["resource_server"], req["scopes"]
|
|
68
72
|
yield from self._nonstatic_requirements.items()
|
|
69
73
|
|
|
70
74
|
@property
|
|
71
|
-
def always_required_scopes(self) -> t.Iterator[str |
|
|
75
|
+
def always_required_scopes(self) -> t.Iterator[str | Scope]:
|
|
72
76
|
"""
|
|
73
77
|
scopes which are required on all login flows, regardless of the specified
|
|
74
78
|
scopes for that flow
|
|
@@ -179,7 +183,9 @@ class LoginManager:
|
|
|
179
183
|
else:
|
|
180
184
|
# If there are dependent scopes all required scope paths are present in the
|
|
181
185
|
# user's cached consent forest.
|
|
182
|
-
return
|
|
186
|
+
return ( # type: ignore[no-any-return]
|
|
187
|
+
self._cached_consent_forest.meets_scope_requirements(required_scopes)
|
|
188
|
+
)
|
|
183
189
|
|
|
184
190
|
@property
|
|
185
191
|
@functools.lru_cache(maxsize=1) # noqa: B019
|
|
@@ -195,7 +201,7 @@ class LoginManager:
|
|
|
195
201
|
local_server_message: str | None = None,
|
|
196
202
|
epilog: str | None = None,
|
|
197
203
|
session_params: dict[str, str] | None = None,
|
|
198
|
-
scopes: list[str |
|
|
204
|
+
scopes: list[str | Scope] | None = None,
|
|
199
205
|
) -> None:
|
|
200
206
|
if is_client_login():
|
|
201
207
|
click.echo(
|
|
@@ -371,7 +377,7 @@ class LoginManager:
|
|
|
371
377
|
return globus_sdk.SearchClient(authorizer=authorizer, app_name=version.app_name)
|
|
372
378
|
|
|
373
379
|
def get_timer_client(self) -> globus_sdk.TimerClient:
|
|
374
|
-
authorizer = self._get_client_authorizer(
|
|
380
|
+
authorizer = self._get_client_authorizer(TimersScopes.resource_server)
|
|
375
381
|
return globus_sdk.TimerClient(authorizer=authorizer, app_name=version.app_name)
|
|
376
382
|
|
|
377
383
|
def _get_gcs_info(
|
|
@@ -455,7 +461,7 @@ class LoginManager:
|
|
|
455
461
|
|
|
456
462
|
if not include_data_access:
|
|
457
463
|
# Just require an endpoint:manage_collections scope
|
|
458
|
-
scope = GCSEndpointScopeBuilder(gcs_id).
|
|
464
|
+
scope = Scope(GCSEndpointScopeBuilder(gcs_id).manage_collections)
|
|
459
465
|
login_context = LoginContext(
|
|
460
466
|
login_command=f"globus login --gcs {gcs_id}",
|
|
461
467
|
error_message="Missing 'manage_collections' consent on an endpoint.",
|
|
@@ -463,7 +469,7 @@ class LoginManager:
|
|
|
463
469
|
else:
|
|
464
470
|
# Require an endpoint:manage_collections scope with a dependent
|
|
465
471
|
# collection[data_access] scope
|
|
466
|
-
scope = GCSEndpointScopeBuilder(gcs_id).
|
|
472
|
+
scope = Scope(GCSEndpointScopeBuilder(gcs_id).manage_collections)
|
|
467
473
|
data_access = GCSCollectionScopeBuilder(str(collection_id)).data_access
|
|
468
474
|
scope.add_dependency(data_access)
|
|
469
475
|
|