globus-cli 3.30.1__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.1/src/globus_cli.egg-info → globus_cli-3.31.0}/PKG-INFO +2 -2
- {globus_cli-3.30.1 → globus_cli-3.31.0}/pyproject.toml +1 -1
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/create/guest.py +0 -1
- {globus_cli-3.30.1 → 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.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +5 -4
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/show.py +0 -1
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/resume.py +7 -4
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/_common.py +1 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/update.py +11 -3
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/list_commands.py +1 -6
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/session/consent.py +2 -2
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/create/transfer.py +6 -6
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/resume.py +7 -4
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/auth_flows.py +3 -3
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/manager.py +21 -15
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/scopes.py +9 -9
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/__init__.py +3 -5
- {globus_cli-3.30.1 → 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.1 → globus_cli-3.31.0}/src/globus_cli/version.py +1 -1
- {globus_cli-3.30.1 → globus_cli-3.31.0/src/globus_cli.egg-info}/PKG-INFO +2 -2
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli.egg-info/requires.txt +1 -1
- 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.31.0}/LICENSE +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/README.rst +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/setup.cfg +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/setup.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/_warnings.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/api.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/search.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/start.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/flows/validate.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/set_subscription_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/gcs/endpoint/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/login.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/logout.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/session/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/delete.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/list.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/pause.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/timer/show.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/transfer.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/endpointish/endpointish.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/exception_handling/hooks.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/globus_cli_flake8.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/errors.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/local_server.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/tokenstore.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/login_manager/utils.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/commands.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_classes.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/delimited.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/identity_type.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/json_strorfile.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/location.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/notify_param.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/nullable.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/task_path.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/parsing/shell_completion.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/reflect.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/services/transfer/client.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/services/transfer/data.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/awscli_text.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/context.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/field.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/auth.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/printer.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/types.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli/utils.py +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli.egg-info/SOURCES.txt +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
- {globus_cli-3.30.1 → globus_cli-3.31.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
- {globus_cli-3.30.1 → 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.1 → 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()
|
|
@@ -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
|
|
|
@@ -7,9 +7,9 @@ from globus_sdk.scopes import (
|
|
|
7
7
|
FlowsScopes,
|
|
8
8
|
GCSCollectionScopeBuilder,
|
|
9
9
|
GroupsScopes,
|
|
10
|
-
|
|
10
|
+
Scope,
|
|
11
11
|
SearchScopes,
|
|
12
|
-
|
|
12
|
+
TimersScopes,
|
|
13
13
|
TransferScopes,
|
|
14
14
|
)
|
|
15
15
|
|
|
@@ -22,17 +22,17 @@ TRANSFER_AP_SCOPE_STR: str = (
|
|
|
22
22
|
|
|
23
23
|
def compute_timer_scope(
|
|
24
24
|
*, data_access_collection_ids: t.Sequence[str] | None = None
|
|
25
|
-
) ->
|
|
26
|
-
transfer_scope = TransferScopes.
|
|
25
|
+
) -> Scope:
|
|
26
|
+
transfer_scope = Scope(TransferScopes.all)
|
|
27
27
|
for cid in data_access_collection_ids or ():
|
|
28
28
|
transfer_scope.add_dependency(
|
|
29
|
-
GCSCollectionScopeBuilder(cid).
|
|
29
|
+
Scope(GCSCollectionScopeBuilder(cid).data_access, optional=True)
|
|
30
30
|
)
|
|
31
31
|
|
|
32
|
-
transfer_ap_scope =
|
|
32
|
+
transfer_ap_scope = Scope(TRANSFER_AP_SCOPE_STR)
|
|
33
33
|
transfer_ap_scope.add_dependency(transfer_scope)
|
|
34
34
|
|
|
35
|
-
timer_scope =
|
|
35
|
+
timer_scope = Scope(TimersScopes.timer)
|
|
36
36
|
timer_scope.add_dependency(transfer_ap_scope)
|
|
37
37
|
return timer_scope
|
|
38
38
|
|
|
@@ -46,7 +46,7 @@ class _ServiceRequirement(t.TypedDict):
|
|
|
46
46
|
min_contract_version: int
|
|
47
47
|
resource_server: str
|
|
48
48
|
nice_server_name: str
|
|
49
|
-
scopes: list[str |
|
|
49
|
+
scopes: list[str | Scope]
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
class _CLIScopeRequirements(t.Dict[ServiceNameLiteral, _ServiceRequirement]):
|
|
@@ -88,7 +88,7 @@ class _CLIScopeRequirements(t.Dict[ServiceNameLiteral, _ServiceRequirement]):
|
|
|
88
88
|
}
|
|
89
89
|
self["timer"] = {
|
|
90
90
|
"min_contract_version": 1,
|
|
91
|
-
"resource_server":
|
|
91
|
+
"resource_server": TimersScopes.resource_server,
|
|
92
92
|
"nice_server_name": "Globus Timers",
|
|
93
93
|
"scopes": [
|
|
94
94
|
TIMER_SCOPE_WITH_DEPENDENCIES,
|
|
@@ -112,11 +112,9 @@ def task_submission_options(f: C) -> C:
|
|
|
112
112
|
callback=format_deadline_callback,
|
|
113
113
|
help="Set a deadline for this to be canceled if not completed by.",
|
|
114
114
|
)(f)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
help="Submit the task even if the endpoint(s) aren't currently activated.",
|
|
119
|
-
)(f)
|
|
115
|
+
# deprecated -- this will be removed in a future release, as 'activation' as a
|
|
116
|
+
# concept has been removed from the ecosystem
|
|
117
|
+
f = click.option("--skip-activation-check", is_flag=True, hidden=True)(f)
|
|
120
118
|
|
|
121
119
|
return f
|
|
122
120
|
|
|
@@ -2,7 +2,6 @@ import typing as t
|
|
|
2
2
|
|
|
3
3
|
from globus_cli.termio import Field, formatters
|
|
4
4
|
|
|
5
|
-
from .activation import activation_requirements_help_text, supported_activation_methods
|
|
6
5
|
from .client import CustomTransferClient
|
|
7
6
|
from .data import (
|
|
8
7
|
add_batch_to_transfer_data,
|
|
@@ -31,8 +30,6 @@ __all__ = (
|
|
|
31
30
|
"ENDPOINT_LIST_FIELDS",
|
|
32
31
|
"CustomTransferClient",
|
|
33
32
|
"RecursiveLsResponse",
|
|
34
|
-
"supported_activation_methods",
|
|
35
|
-
"activation_requirements_help_text",
|
|
36
33
|
"display_name_or_cname",
|
|
37
34
|
"iterable_response_to_dict",
|
|
38
35
|
"assemble_generic_doc",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import globus_sdk
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def supported_activation_methods(
|
|
7
|
+
res: globus_sdk.GlobusHTTPResponse,
|
|
8
|
+
) -> list[str]:
|
|
9
|
+
"""
|
|
10
|
+
Given an activation_requirements document
|
|
11
|
+
returns a list of activation methods supported by this endpoint.
|
|
12
|
+
"""
|
|
13
|
+
supported = ["web"] # web activation is always supported.
|
|
14
|
+
|
|
15
|
+
# oauth
|
|
16
|
+
if res["oauth_server"]:
|
|
17
|
+
supported.append("oauth")
|
|
18
|
+
|
|
19
|
+
for req in res["DATA"]:
|
|
20
|
+
# myproxy
|
|
21
|
+
if (
|
|
22
|
+
req["type"] == "myproxy"
|
|
23
|
+
and req["name"] == "hostname"
|
|
24
|
+
and req["value"] != "myproxy.globusonline.org"
|
|
25
|
+
):
|
|
26
|
+
supported.append("myproxy")
|
|
27
|
+
|
|
28
|
+
return supported
|