globus-cli 3.33.1__tar.gz → 3.35.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.33.1/src/globus_cli.egg-info → globus_cli-3.35.0}/PKG-INFO +3 -3
- {globus_cli-3.33.1 → globus_cli-3.35.0}/pyproject.toml +37 -4
- globus_cli-3.35.0/src/globus_cli/_click_compat.py +55 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/api.py +20 -9
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/create/guest.py +4 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/list.py +16 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/update.py +4 -6
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/create.py +38 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/list.py +22 -6
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/list.py +34 -2
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/show.py +17 -1
- globus_cli-3.35.0/src/globus_cli/commands/flows/start.py +310 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/update.py +36 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/guest.py +4 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/update/guest.py +4 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/update.py +3 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/list_commands.py +2 -5
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/login.py +3 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/list.py +2 -2
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/create/transfer.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/delete.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/list.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/pause.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/resume.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/show.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/scopes.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/commands.py +18 -13
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/__init__.py +6 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/delimited.py +59 -5
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +4 -1
- globus_cli-3.35.0/src/globus_cli/parsing/param_types/guest_activity_notify_param.py +200 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/identity_type.py +4 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/json_strorfile.py +3 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/notify_param.py +4 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/nullable.py +7 -3
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/__init__.py +42 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/reflect.py +4 -4
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/types.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/version.py +1 -1
- {globus_cli-3.33.1 → globus_cli-3.35.0/src/globus_cli.egg-info}/PKG-INFO +3 -3
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/SOURCES.txt +2 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/requires.txt +1 -1
- globus_cli-3.33.1/src/globus_cli/commands/flows/start.py +0 -154
- {globus_cli-3.33.1 → globus_cli-3.35.0}/LICENSE +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/README.rst +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/setup.cfg +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/setup.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/_warnings.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/activate.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/deactivate.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/is_activated.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/search.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/resume.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/validate.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/set_subscription_id.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/logout.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/consent.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/show.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/transfer.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/endpointish.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/auth_requirements.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/authapi_hooks.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/endpoint_types.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/flows_hooks.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/generic_hooks.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/search_hooks.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/transfer_hooks.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/messages.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/globus_cli_flake8.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/auth_flows.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/errors.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/local_server.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/manager.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/storage.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/utils.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_classes.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/location.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/task_path.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shell_completion.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/activation.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/client.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/data.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/_display.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/context.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/field.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/auth.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/base.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/custom_printer.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/json_printer.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/record_printer.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/table_printer.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/unix_printer/__init__.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/unix_printer/awscli_text.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/unix_printer/unix_printer.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/utils.py +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
- {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/top_level.txt +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: globus-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.35.0
|
|
4
4
|
Summary: Globus CLI
|
|
5
5
|
Author-email: Stephen Rosen <sirosen@globus.org>
|
|
6
|
+
License-Expression: Apache-2.0
|
|
6
7
|
Project-URL: homepage, https://github.com/globus/globus-cli
|
|
7
8
|
Keywords: globus,cli,command line
|
|
8
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
9
10
|
Classifier: Intended Audience :: Developers
|
|
10
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
11
11
|
Classifier: Operating System :: POSIX
|
|
12
12
|
Classifier: Programming Language :: Python
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.8
|
|
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
19
19
|
Requires-Python: >=3.8
|
|
20
20
|
Description-Content-Type: text/x-rst
|
|
21
21
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist: globus-sdk==3.
|
|
22
|
+
Requires-Dist: globus-sdk==3.56.0
|
|
23
23
|
Requires-Dist: click<9,>=8.1.4
|
|
24
24
|
Requires-Dist: jmespath==1.0.1
|
|
25
25
|
Requires-Dist: packaging>=17.0
|
|
@@ -9,6 +9,7 @@ readme = "README.rst"
|
|
|
9
9
|
authors = [
|
|
10
10
|
{ name = "Stephen Rosen", email = "sirosen@globus.org" },
|
|
11
11
|
]
|
|
12
|
+
license = "Apache-2.0"
|
|
12
13
|
keywords = [
|
|
13
14
|
"globus",
|
|
14
15
|
"cli",
|
|
@@ -17,7 +18,6 @@ keywords = [
|
|
|
17
18
|
classifiers = [
|
|
18
19
|
"Development Status :: 5 - Production/Stable",
|
|
19
20
|
"Intended Audience :: Developers",
|
|
20
|
-
"License :: OSI Approved :: Apache Software License",
|
|
21
21
|
"Operating System :: POSIX",
|
|
22
22
|
"Programming Language :: Python",
|
|
23
23
|
"Programming Language :: Python :: 3.8",
|
|
@@ -29,7 +29,7 @@ classifiers = [
|
|
|
29
29
|
]
|
|
30
30
|
requires-python = ">=3.8"
|
|
31
31
|
dependencies = [
|
|
32
|
-
"globus-sdk==3.
|
|
32
|
+
"globus-sdk==3.56.0",
|
|
33
33
|
"click>=8.1.4,<9",
|
|
34
34
|
"jmespath==1.0.1",
|
|
35
35
|
"packaging>=17.0",
|
|
@@ -88,8 +88,41 @@ attr = "globus_cli.version.__version__"
|
|
|
88
88
|
profile = "black"
|
|
89
89
|
|
|
90
90
|
[tool.pytest.ini_options]
|
|
91
|
-
addopts = "--timeout 3 --color=yes"
|
|
92
|
-
filterwarnings = [
|
|
91
|
+
addopts = "-n auto --maxprocesses 4 --dist loadscope --timeout 3 --color=yes"
|
|
92
|
+
filterwarnings = [
|
|
93
|
+
"error",
|
|
94
|
+
# ignore SDK warnings for 'filter_role' until
|
|
95
|
+
# 'filter_roles' update is applied
|
|
96
|
+
"ignore:The `filter_role` parameter is deprecated.:globus_sdk.exc.RemovedInV4Warning:",
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
[tool.coverage.run]
|
|
100
|
+
parallel = true
|
|
101
|
+
source = ["globus_cli"]
|
|
102
|
+
[tool.coverage.paths]
|
|
103
|
+
source = [
|
|
104
|
+
"src/",
|
|
105
|
+
"*/site-packages/",
|
|
106
|
+
]
|
|
107
|
+
[tool.coverage.report]
|
|
108
|
+
show_missing = true
|
|
109
|
+
skip_covered = true
|
|
110
|
+
fail_under = 87
|
|
111
|
+
exclude_lines =[
|
|
112
|
+
# the pragma to disable coverage
|
|
113
|
+
"pragma: no cover",
|
|
114
|
+
# don't complain if tests don't hit unimplemented methods/modes
|
|
115
|
+
"raise NotImplementedError",
|
|
116
|
+
"assert_never()",
|
|
117
|
+
# don't check on executable components of importable modules
|
|
118
|
+
"if __name__ == .__main__.:",
|
|
119
|
+
# don't check coverage on type checking conditionals
|
|
120
|
+
"if t.TYPE_CHECKING:",
|
|
121
|
+
# skip overloads
|
|
122
|
+
"@t.overload",
|
|
123
|
+
# skip abstract methods
|
|
124
|
+
"@abc.abstractmethod",
|
|
125
|
+
]
|
|
93
126
|
|
|
94
127
|
[tool.scriv]
|
|
95
128
|
version = "literal: src/globus_cli/version.py: __version__"
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""
|
|
2
|
+
A compatibility module for handling click v8.2.0+ and 8.1.x API differences.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import functools
|
|
6
|
+
import importlib.metadata
|
|
7
|
+
import typing as t
|
|
8
|
+
|
|
9
|
+
import click
|
|
10
|
+
|
|
11
|
+
C = t.TypeVar("C", bound=t.Callable[..., t.Any])
|
|
12
|
+
|
|
13
|
+
CLICK_VERSION = importlib.metadata.version("click")
|
|
14
|
+
|
|
15
|
+
OLDER_CLICK_API = CLICK_VERSION.startswith("8.1.")
|
|
16
|
+
NEWER_CLICK_API = not OLDER_CLICK_API
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def shim_get_metavar(f: C) -> C:
|
|
20
|
+
"""
|
|
21
|
+
Make a ParamType.get_metavar function compatible with both the 8.1.x and
|
|
22
|
+
the 8.2.0+ APIs.
|
|
23
|
+
|
|
24
|
+
Under 8.2.0, `ctx: click.Context` is passed, while older versions do not.
|
|
25
|
+
Therefore, do nothing on 8.2.0+ and pass `ctx=None' if the older click
|
|
26
|
+
version is in use.
|
|
27
|
+
|
|
28
|
+
NOTE: we pass `ctx=None` which violates the declared types (but works at
|
|
29
|
+
runtime) because when running under older click versions, there may not be
|
|
30
|
+
a current click context.
|
|
31
|
+
"""
|
|
32
|
+
if OLDER_CLICK_API:
|
|
33
|
+
|
|
34
|
+
@functools.wraps(f)
|
|
35
|
+
def wrapper(*args: t.Any, **kwargs: t.Any) -> t.Any:
|
|
36
|
+
return f(*args, **kwargs, ctx=None)
|
|
37
|
+
|
|
38
|
+
return wrapper # type: ignore[return-value]
|
|
39
|
+
|
|
40
|
+
return f
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def shim_get_missing_message(f: C) -> C:
|
|
44
|
+
"""
|
|
45
|
+
Shim `get_missing_message` in a similar way to `get_metavar` above.
|
|
46
|
+
"""
|
|
47
|
+
if OLDER_CLICK_API:
|
|
48
|
+
|
|
49
|
+
@functools.wraps(f)
|
|
50
|
+
def wrapper(*args: t.Any, **kwargs: t.Any) -> t.Any:
|
|
51
|
+
return f(*args, **kwargs, ctx=click.get_current_context())
|
|
52
|
+
|
|
53
|
+
return wrapper # type: ignore[return-value]
|
|
54
|
+
|
|
55
|
+
return f
|
|
@@ -9,6 +9,7 @@ import click
|
|
|
9
9
|
import globus_sdk
|
|
10
10
|
|
|
11
11
|
from globus_cli import termio, version
|
|
12
|
+
from globus_cli._click_compat import shim_get_metavar
|
|
12
13
|
from globus_cli.login_manager import LoginManager, is_client_login
|
|
13
14
|
from globus_cli.login_manager.scopes import CLI_SCOPE_REQUIREMENTS
|
|
14
15
|
from globus_cli.parsing import command, endpoint_id_arg, group, mutex_option_group
|
|
@@ -19,7 +20,8 @@ C = t.TypeVar("C", bound=AnyCommand)
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
class QueryParamType(click.ParamType):
|
|
22
|
-
|
|
23
|
+
@shim_get_metavar
|
|
24
|
+
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
23
25
|
return "Key=Value"
|
|
24
26
|
|
|
25
27
|
def get_type_annotation(self, param: click.Parameter) -> type:
|
|
@@ -44,7 +46,8 @@ class QueryParamType(click.ParamType):
|
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
class HeaderParamType(click.ParamType):
|
|
47
|
-
|
|
49
|
+
@shim_get_metavar
|
|
50
|
+
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
48
51
|
return "Key:Value"
|
|
49
52
|
|
|
50
53
|
def get_type_annotation(self, param: click.Parameter) -> type:
|
|
@@ -134,7 +137,7 @@ def _get_resource_server(service_name: str) -> str:
|
|
|
134
137
|
"groups": globus_sdk.GroupsClient.resource_server,
|
|
135
138
|
"search": globus_sdk.SearchClient.resource_server,
|
|
136
139
|
"transfer": globus_sdk.TransferClient.resource_server,
|
|
137
|
-
"
|
|
140
|
+
"timers": globus_sdk.TimerClient.resource_server,
|
|
138
141
|
}.get(service_name)
|
|
139
142
|
if _resource_server is None:
|
|
140
143
|
raise NotImplementedError(f"unrecognized service: {service_name}")
|
|
@@ -154,7 +157,7 @@ def _get_client(
|
|
|
154
157
|
return login_manager.get_search_client()
|
|
155
158
|
elif service_name == "transfer":
|
|
156
159
|
return login_manager.get_transfer_client()
|
|
157
|
-
elif service_name == "
|
|
160
|
+
elif service_name == "timers":
|
|
158
161
|
return login_manager.get_timer_client()
|
|
159
162
|
else:
|
|
160
163
|
raise NotImplementedError(f"unrecognized service: {service_name}")
|
|
@@ -167,7 +170,7 @@ def _get_url(service_name: str) -> str:
|
|
|
167
170
|
"groups": "https://groups.api.globus.org/v2/",
|
|
168
171
|
"search": "https://search.api.globus.org/",
|
|
169
172
|
"transfer": "https://transfer.api.globus.org/v0.10/",
|
|
170
|
-
"
|
|
173
|
+
"timers": "https://timer.automate.globus.org/",
|
|
171
174
|
"gcs": "https://$GCS_MANAGER/",
|
|
172
175
|
}[service_name]
|
|
173
176
|
|
|
@@ -356,7 +359,14 @@ def api_command() -> None:
|
|
|
356
359
|
|
|
357
360
|
# note: this must be written as a separate call and not inlined into the loop body
|
|
358
361
|
# this ensures that it acts as a closure over 'service_name'
|
|
359
|
-
def build_command(
|
|
362
|
+
def build_command(
|
|
363
|
+
command_name: ServiceNameLiteral | t.Literal["gcs", "timer"],
|
|
364
|
+
) -> click.Command:
|
|
365
|
+
service_name: ServiceNameLiteral | t.Literal["gcs"] = (
|
|
366
|
+
"timers" if command_name == "timer" else command_name
|
|
367
|
+
)
|
|
368
|
+
hidden: bool = command_name == "timer"
|
|
369
|
+
|
|
360
370
|
helptext = f"""\
|
|
361
371
|
Make API calls to Globus {service_name.title()}
|
|
362
372
|
|
|
@@ -364,14 +374,14 @@ The arguments are an HTTP method name and a path within the service to which the
|
|
|
364
374
|
should be made. The path will be joined with the known service URL.
|
|
365
375
|
For example, a call of
|
|
366
376
|
|
|
367
|
-
globus api {
|
|
377
|
+
globus api {command_name} GET /foo/bar
|
|
368
378
|
|
|
369
|
-
sends a 'GET' request to
|
|
379
|
+
sends a 'GET' request to `{_get_url(service_name)}foo/bar`
|
|
370
380
|
"""
|
|
371
381
|
|
|
372
382
|
if service_name != "gcs":
|
|
373
383
|
|
|
374
|
-
@command(
|
|
384
|
+
@command(command_name, help=helptext, hidden=hidden)
|
|
375
385
|
@LoginManager.requires_login(service_name)
|
|
376
386
|
@_service_command_params
|
|
377
387
|
def service_command(
|
|
@@ -457,3 +467,4 @@ for service_name_ in CLI_SCOPE_REQUIREMENTS:
|
|
|
457
467
|
del service_name_
|
|
458
468
|
|
|
459
469
|
api_command.add_command(build_command("gcs"))
|
|
470
|
+
api_command.add_command(build_command("timer"))
|
|
@@ -17,6 +17,7 @@ from globus_cli.endpointish import EntityType
|
|
|
17
17
|
from globus_cli.login_manager import LoginManager, MissingLoginError
|
|
18
18
|
from globus_cli.login_manager.context import LoginContext
|
|
19
19
|
from globus_cli.parsing import command, endpointish_params, mutex_option_group
|
|
20
|
+
from globus_cli.parsing.shared_options import activity_notifications_option
|
|
20
21
|
from globus_cli.services.gcs import CustomGCSClient
|
|
21
22
|
from globus_cli.termio import display
|
|
22
23
|
|
|
@@ -42,6 +43,7 @@ from globus_cli.termio import display
|
|
|
42
43
|
@mutex_option_group("--user-credential-id", "--local-username")
|
|
43
44
|
@endpointish_params.create(name="collection")
|
|
44
45
|
@identity_id_option
|
|
46
|
+
@activity_notifications_option("GCS")
|
|
45
47
|
@click.option(
|
|
46
48
|
"--enable-https/--disable-https",
|
|
47
49
|
"enable_https",
|
|
@@ -74,6 +76,7 @@ def collection_create_guest(
|
|
|
74
76
|
organization: str | None | ExplicitNullType,
|
|
75
77
|
user_message: str | None | ExplicitNullType,
|
|
76
78
|
user_message_link: str | None | ExplicitNullType,
|
|
79
|
+
activity_notifications: dict[str, list[str]] | None | ExplicitNullType,
|
|
77
80
|
verify: dict[str, bool],
|
|
78
81
|
) -> None:
|
|
79
82
|
"""
|
|
@@ -99,6 +102,7 @@ def collection_create_guest(
|
|
|
99
102
|
|
|
100
103
|
converted_kwargs: dict[str, t.Any] = ExplicitNullType.nullify_dict(
|
|
101
104
|
{
|
|
105
|
+
"activity_notification_policy": activity_notifications,
|
|
102
106
|
"collection_base_path": collection_base_path,
|
|
103
107
|
"contact_info": contact_info,
|
|
104
108
|
"contact_email": contact_email,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import sys
|
|
3
4
|
import typing as t
|
|
4
5
|
import uuid
|
|
5
6
|
|
|
@@ -11,8 +12,22 @@ from globus_cli.parsing import command, endpoint_id_arg
|
|
|
11
12
|
from globus_cli.termio import Field, display, formatters
|
|
12
13
|
from globus_cli.utils import PagingWrapper
|
|
13
14
|
|
|
15
|
+
if sys.version_info >= (3, 10):
|
|
16
|
+
from typing import TypeAlias
|
|
17
|
+
else:
|
|
18
|
+
from typing_extensions import TypeAlias
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
# until our minimum click version is 8.2.0+ , we need to handle the fact that
|
|
21
|
+
# click.Choice became a generic in 8.2.0
|
|
22
|
+
# we cannot leave it without a defined type parameter, as we have
|
|
23
|
+
# "no-any-generics" set for mypy
|
|
24
|
+
if t.TYPE_CHECKING:
|
|
25
|
+
ChoiceType: TypeAlias = click.Choice[str]
|
|
26
|
+
else:
|
|
27
|
+
ChoiceType = click.Choice
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class ChoiceSlugified(ChoiceType):
|
|
16
31
|
"""
|
|
17
32
|
Allow either hyphens or underscores, e.g. both 'mapped-collections' or
|
|
18
33
|
'mapped_collections'
|
|
@@ -18,6 +18,7 @@ from globus_cli.parsing import (
|
|
|
18
18
|
emptyable_opt_list_callback,
|
|
19
19
|
endpointish_params,
|
|
20
20
|
)
|
|
21
|
+
from globus_cli.parsing.shared_options import activity_notifications_option
|
|
21
22
|
from globus_cli.termio import Field, display
|
|
22
23
|
|
|
23
24
|
_MULTI_USE_OPTION_STR = "Give this option multiple times in a single command"
|
|
@@ -33,12 +34,6 @@ class _FullDataField(Field):
|
|
|
33
34
|
@command("update", short_help="Update a Collection definition.")
|
|
34
35
|
@collection_id_arg
|
|
35
36
|
@endpointish_params.update(name="collection")
|
|
36
|
-
@click.option(
|
|
37
|
-
"--force-encryption/--no-force-encryption",
|
|
38
|
-
"force_encryption",
|
|
39
|
-
default=None,
|
|
40
|
-
help="When set, all transfers to and from this collection are always encrypted.",
|
|
41
|
-
)
|
|
42
37
|
@click.option(
|
|
43
38
|
"--sharing-restrict-paths",
|
|
44
39
|
type=JSONStringOrFile(null="null"),
|
|
@@ -110,10 +105,12 @@ class _FullDataField(Field):
|
|
|
110
105
|
'Set a value of "" to clear this.'
|
|
111
106
|
),
|
|
112
107
|
)
|
|
108
|
+
@activity_notifications_option("GCS")
|
|
113
109
|
@LoginManager.requires_login("auth", "transfer")
|
|
114
110
|
def collection_update(
|
|
115
111
|
login_manager: LoginManager,
|
|
116
112
|
*,
|
|
113
|
+
activity_notifications: dict[str, list[str]] | None | ExplicitNullType,
|
|
117
114
|
collection_id: uuid.UUID,
|
|
118
115
|
display_name: str | None,
|
|
119
116
|
description: str | None | ExplicitNullType,
|
|
@@ -181,6 +178,7 @@ def collection_update(
|
|
|
181
178
|
"user_message_link": user_message_link,
|
|
182
179
|
"sharing_users_allow": sharing_users_allow,
|
|
183
180
|
"sharing_users_deny": sharing_users_deny,
|
|
181
|
+
"activity_notification_policy": activity_notifications,
|
|
184
182
|
}
|
|
185
183
|
)
|
|
186
184
|
converted_kwargs.update(verify)
|
|
@@ -38,6 +38,30 @@ ROLE_TYPES = ("flow_viewer", "flow_starter", "flow_administrator", "flow_owner")
|
|
|
38
38
|
@starters_option
|
|
39
39
|
@viewers_option
|
|
40
40
|
@keywords_option
|
|
41
|
+
@click.option(
|
|
42
|
+
"--run-manager",
|
|
43
|
+
"run_managers",
|
|
44
|
+
type=str,
|
|
45
|
+
multiple=True,
|
|
46
|
+
help="""
|
|
47
|
+
A principal that may manage the flow's runs.
|
|
48
|
+
|
|
49
|
+
This option can be specified multiple times
|
|
50
|
+
to create a list of run managers.
|
|
51
|
+
""",
|
|
52
|
+
)
|
|
53
|
+
@click.option(
|
|
54
|
+
"--run-monitor",
|
|
55
|
+
"run_monitors",
|
|
56
|
+
type=str,
|
|
57
|
+
multiple=True,
|
|
58
|
+
help="""
|
|
59
|
+
A principal that may monitor the flow's runs.
|
|
60
|
+
|
|
61
|
+
This option can be specified multiple times
|
|
62
|
+
to create a list of run monitors.
|
|
63
|
+
""",
|
|
64
|
+
)
|
|
41
65
|
@click.option(
|
|
42
66
|
"--subscription-id",
|
|
43
67
|
help="Set a subscription_id for the flow, marking it as subscription tier.",
|
|
@@ -56,6 +80,8 @@ def create_command(
|
|
|
56
80
|
starters: tuple[str, ...],
|
|
57
81
|
viewers: tuple[str, ...],
|
|
58
82
|
keywords: tuple[str, ...],
|
|
83
|
+
run_managers: tuple[str, ...],
|
|
84
|
+
run_monitors: tuple[str, ...],
|
|
59
85
|
subscription_id: uuid.UUID | None,
|
|
60
86
|
) -> None:
|
|
61
87
|
"""
|
|
@@ -106,6 +132,8 @@ def create_command(
|
|
|
106
132
|
flow_starters=list(starters),
|
|
107
133
|
flow_administrators=list(administrators),
|
|
108
134
|
keywords=list(keywords),
|
|
135
|
+
run_managers=list(run_managers),
|
|
136
|
+
run_monitors=list(run_monitors),
|
|
109
137
|
subscription_id=subscription_id,
|
|
110
138
|
)
|
|
111
139
|
|
|
@@ -141,6 +169,16 @@ def create_command(
|
|
|
141
169
|
"flow_starters",
|
|
142
170
|
formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
|
|
143
171
|
),
|
|
172
|
+
Field(
|
|
173
|
+
"Run Managers",
|
|
174
|
+
"run_managers",
|
|
175
|
+
formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
|
|
176
|
+
),
|
|
177
|
+
Field(
|
|
178
|
+
"Run Monitors",
|
|
179
|
+
"run_monitors",
|
|
180
|
+
formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
|
|
181
|
+
),
|
|
144
182
|
]
|
|
145
183
|
|
|
146
184
|
display(res, fields=fields, text_mode=display.RECORD)
|
|
@@ -10,7 +10,14 @@ from globus_cli.parsing import ColonDelimitedChoiceTuple, command
|
|
|
10
10
|
from globus_cli.termio import Field, display, formatters
|
|
11
11
|
from globus_cli.utils import PagingWrapper
|
|
12
12
|
|
|
13
|
-
ROLE_TYPES = (
|
|
13
|
+
ROLE_TYPES = (
|
|
14
|
+
"flow_viewer",
|
|
15
|
+
"flow_starter",
|
|
16
|
+
"flow_administrator",
|
|
17
|
+
"flow_owner",
|
|
18
|
+
"run_manager",
|
|
19
|
+
"run_monitor",
|
|
20
|
+
)
|
|
14
21
|
ORDER_BY_FIELDS = (
|
|
15
22
|
"id",
|
|
16
23
|
"scope_string",
|
|
@@ -29,8 +36,10 @@ ORDER_BY_FIELDS = (
|
|
|
29
36
|
@command("list")
|
|
30
37
|
@click.option(
|
|
31
38
|
"--filter-role",
|
|
39
|
+
"filter_roles",
|
|
32
40
|
type=click.Choice(ROLE_TYPES),
|
|
33
41
|
help="Filter results by the flow's role type associated with the caller",
|
|
42
|
+
multiple=True,
|
|
34
43
|
)
|
|
35
44
|
@click.option(
|
|
36
45
|
"--filter-fulltext",
|
|
@@ -71,10 +80,17 @@ ORDER_BY_FIELDS = (
|
|
|
71
80
|
def list_command(
|
|
72
81
|
login_manager: LoginManager,
|
|
73
82
|
*,
|
|
74
|
-
|
|
75
|
-
t.Literal[
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
filter_roles: tuple[
|
|
84
|
+
t.Literal[
|
|
85
|
+
"flow_viewer",
|
|
86
|
+
"flow_starter",
|
|
87
|
+
"flow_administrator",
|
|
88
|
+
"flow_owner",
|
|
89
|
+
"run_manager",
|
|
90
|
+
"run_monitor",
|
|
91
|
+
],
|
|
92
|
+
...,
|
|
93
|
+
],
|
|
78
94
|
orderby: tuple[
|
|
79
95
|
tuple[
|
|
80
96
|
t.Literal[
|
|
@@ -98,7 +114,7 @@ def list_command(
|
|
|
98
114
|
paginator = Paginator.wrap(flows_client.list_flows)
|
|
99
115
|
flow_iterator = PagingWrapper(
|
|
100
116
|
paginator(
|
|
101
|
-
|
|
117
|
+
filter_roles=filter_roles, # type: ignore[arg-type]
|
|
102
118
|
filter_fulltext=filter_fulltext,
|
|
103
119
|
orderby=",".join(f"{field} {order}" for field, order in orderby),
|
|
104
120
|
).items(),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import typing as t
|
|
3
4
|
import uuid
|
|
4
5
|
|
|
5
6
|
import click
|
|
@@ -10,6 +11,14 @@ from globus_cli.parsing import command
|
|
|
10
11
|
from globus_cli.termio import Field, display
|
|
11
12
|
from globus_cli.utils import PagingWrapper
|
|
12
13
|
|
|
14
|
+
ROLE_TYPES = (
|
|
15
|
+
"run_owner",
|
|
16
|
+
"run_manager",
|
|
17
|
+
"run_monitor",
|
|
18
|
+
"flow_run_manager",
|
|
19
|
+
"flow_run_monitor",
|
|
20
|
+
)
|
|
21
|
+
|
|
13
22
|
|
|
14
23
|
@command("list")
|
|
15
24
|
@click.option(
|
|
@@ -22,6 +31,13 @@ from globus_cli.utils import PagingWrapper
|
|
|
22
31
|
multiple=True,
|
|
23
32
|
type=click.UUID,
|
|
24
33
|
)
|
|
34
|
+
@click.option(
|
|
35
|
+
"--filter-role",
|
|
36
|
+
"filter_roles",
|
|
37
|
+
type=click.Choice(ROLE_TYPES),
|
|
38
|
+
help="Filter results by the run's role type associated with the caller",
|
|
39
|
+
multiple=True,
|
|
40
|
+
)
|
|
25
41
|
@click.option(
|
|
26
42
|
"--limit",
|
|
27
43
|
default=25,
|
|
@@ -32,7 +48,20 @@ from globus_cli.utils import PagingWrapper
|
|
|
32
48
|
)
|
|
33
49
|
@LoginManager.requires_login("flows")
|
|
34
50
|
def list_command(
|
|
35
|
-
login_manager: LoginManager,
|
|
51
|
+
login_manager: LoginManager,
|
|
52
|
+
*,
|
|
53
|
+
limit: int,
|
|
54
|
+
filter_flow_id: tuple[uuid.UUID, ...],
|
|
55
|
+
filter_roles: tuple[
|
|
56
|
+
t.Literal[
|
|
57
|
+
"run_owner",
|
|
58
|
+
"run_manager",
|
|
59
|
+
"run_monitor",
|
|
60
|
+
"flow_run_manager",
|
|
61
|
+
"flow_run_monitor",
|
|
62
|
+
],
|
|
63
|
+
...,
|
|
64
|
+
],
|
|
36
65
|
) -> None:
|
|
37
66
|
"""
|
|
38
67
|
List runs.
|
|
@@ -45,7 +74,10 @@ def list_command(
|
|
|
45
74
|
|
|
46
75
|
paginator = Paginator.wrap(flows_client.list_runs)
|
|
47
76
|
run_iterator = PagingWrapper(
|
|
48
|
-
paginator(
|
|
77
|
+
paginator(
|
|
78
|
+
filter_flow_id=filter_flow_id,
|
|
79
|
+
filter_roles=filter_roles, # type: ignore[arg-type]
|
|
80
|
+
).items(),
|
|
49
81
|
json_conversion_key="runs",
|
|
50
82
|
limit=limit,
|
|
51
83
|
)
|
|
@@ -20,7 +20,13 @@ def show_command(login_manager: LoginManager, *, flow_id: uuid.UUID) -> None:
|
|
|
20
20
|
res = flows_client.get_flow(flow_id)
|
|
21
21
|
|
|
22
22
|
principal_formatter = formatters.auth.PrincipalURNFormatter(auth_client)
|
|
23
|
-
for principal_set_name in (
|
|
23
|
+
for principal_set_name in (
|
|
24
|
+
"flow_administrators",
|
|
25
|
+
"flow_viewers",
|
|
26
|
+
"flow_starters",
|
|
27
|
+
"run_managers",
|
|
28
|
+
"run_monitors",
|
|
29
|
+
):
|
|
24
30
|
for value in res.get(principal_set_name, ()):
|
|
25
31
|
principal_formatter.add_item(value)
|
|
26
32
|
principal_formatter.add_item(res.get("flow_owner"))
|
|
@@ -48,6 +54,16 @@ def show_command(login_manager: LoginManager, *, flow_id: uuid.UUID) -> None:
|
|
|
48
54
|
"flow_starters",
|
|
49
55
|
formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
|
|
50
56
|
),
|
|
57
|
+
Field(
|
|
58
|
+
"Run Managers",
|
|
59
|
+
"run_managers",
|
|
60
|
+
formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
|
|
61
|
+
),
|
|
62
|
+
Field(
|
|
63
|
+
"Run Monitors",
|
|
64
|
+
"run_monitors",
|
|
65
|
+
formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
|
|
66
|
+
),
|
|
51
67
|
]
|
|
52
68
|
|
|
53
69
|
display(res, fields=fields, text_mode=display.RECORD)
|