globus-cli 3.41.0__tar.gz → 3.42.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.41.0 → globus_cli-3.42.0}/PKG-INFO +6 -6
- {globus_cli-3.41.0 → globus_cli-3.42.0}/changelog.adoc +27 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/pyproject.toml +8 -6
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/api.py +20 -17
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/list.py +2 -19
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/show.py +2 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/__init__.py +2 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/_common.py +3 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/_fields.py +54 -0
- globus_cli-3.42.0/src/globus_cli/commands/flows/registered_api/__init__.py +12 -0
- globus_cli-3.42.0/src/globus_cli/commands/flows/registered_api/list.py +92 -0
- globus_cli-3.42.0/src/globus_cli/commands/flows/registered_api/show.py +27 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/resume.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/start.py +0 -2
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/create/_common.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/set_subscription_id.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +3 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/update.py +1 -3
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/_common.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/list.py +1 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/login.py +6 -19
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/__init__.py +1 -0
- globus_cli-3.42.0/src/globus_cli/commands/streams/tunnel/events.py +37 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/create/_common.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/create/transfer.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/resume.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/local_server.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/commands.py +0 -18
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/delimited.py +3 -20
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +2 -5
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/guest_activity_notify_param.py +3 -3
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/identity_type.py +1 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/json_strorfile.py +1 -3
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/location.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/notify_param.py +1 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/nullable.py +2 -6
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/omittable.py +19 -23
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/task_path.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/timedelta.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/shared_options/__init__.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +2 -4
- globus_cli-3.42.0/src/globus_cli/services/transfer/__init__.py +66 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/_display.py +11 -2
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/context.py +5 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/__init__.py +2 -0
- globus_cli-3.42.0/src/globus_cli/termio/printers/folded_table_printer.py +355 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/version.py +1 -1
- globus_cli-3.41.0/src/globus_cli/_click_compat.py +0 -55
- globus_cli-3.41.0/src/globus_cli/services/transfer/__init__.py +0 -35
- {globus_cli-3.41.0 → globus_cli-3.42.0}/LICENSE +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/README.rst +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/_warnings.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/_removal_stub.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/create/guest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/role/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/collection/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/search.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/flows/validate.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/set_subscription_admin_verified.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/set_subscription_admin_verified.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/group/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/list_commands.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/logout.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/session/consent.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/session/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/access_point/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/access_point/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/stop.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/streams/tunnel/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/create/flow.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/pause.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/timer/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/transfer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/endpointish/endpointish.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/auth_requirements.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/authapi_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/endpoint_types.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/flows_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/generic_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/search_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/hooks/transfer_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/messages.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/globus_cli_flake8.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/auth_flows.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/errors.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/manager.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/scopes.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/storage.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/login_manager/utils.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_classes.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/shared_options/flow_options.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/parsing/shell_completion.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/reflect.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/services/transfer/client.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/services/transfer/data.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/field.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/formatters/auth.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/base.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/custom_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/json_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/record_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/table_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/unix_printer/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/unix_printer/_formatter.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/printers/unix_printer/unix_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/types.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/utils.py +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: globus-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.42.0
|
|
4
4
|
Summary: Globus CLI
|
|
5
5
|
Keywords: globus,cli,command line
|
|
6
6
|
Author-email: Stephen Rosen <sirosen@globus.org>
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
8
|
Description-Content-Type: text/x-rst
|
|
9
9
|
License-Expression: Apache-2.0
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
12
|
Classifier: Operating System :: POSIX
|
|
13
13
|
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
19
|
License-File: LICENSE
|
|
20
|
-
Requires-Dist: globus-sdk==4.
|
|
21
|
-
Requires-Dist: click>=8.
|
|
22
|
-
Requires-Dist: jmespath==1.0
|
|
20
|
+
Requires-Dist: globus-sdk==4.8.0
|
|
21
|
+
Requires-Dist: click>=8.4,<8.5
|
|
22
|
+
Requires-Dist: jmespath==1.1.0
|
|
23
23
|
Requires-Dist: packaging>=17.0
|
|
24
24
|
Requires-Dist: typing_extensions>=4.0;python_version<'3.11'
|
|
25
25
|
Requires-Dist: requests>=2.32.3,<3.0.0
|
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
// scriv-insert-here
|
|
4
4
|
|
|
5
|
+
== 3.42.0 (2026-06-10)
|
|
6
|
+
|
|
7
|
+
Bugfixes:
|
|
8
|
+
|
|
9
|
+
* `globus api transfer` no longer prepends `/v0.10/` to `/v2/` paths
|
|
10
|
+
|
|
11
|
+
Enhancements:
|
|
12
|
+
|
|
13
|
+
* Added Domain field to default output of `globus endpoint search` and `globus endpoint show`
|
|
14
|
+
|
|
15
|
+
* Added `globus streams tunnel events` command to show tunnel events
|
|
16
|
+
|
|
17
|
+
* When using table output on narrow terminals, the Globus CLI will now stack
|
|
18
|
+
table elements in a new "folded table" layout. This behavior is only used
|
|
19
|
+
when the output device is a TTY. To disable the new output altogether, users
|
|
20
|
+
can set `GLOBUS_CLI_FOLD_TABLES=0`.
|
|
21
|
+
|
|
22
|
+
* Added Subscription ID to the text output of `globus group list`
|
|
23
|
+
|
|
24
|
+
* Added `globus flows registered-api show` command to display details of a registered API
|
|
25
|
+
|
|
26
|
+
* Added `globus flows registered-api list` command to list registered APIs
|
|
27
|
+
|
|
28
|
+
Other:
|
|
29
|
+
|
|
30
|
+
* Removed support for Python 3.9 .
|
|
31
|
+
|
|
5
32
|
== 3.41.0 (2026-01-14)
|
|
6
33
|
|
|
7
34
|
Bugfixes:
|
|
@@ -20,17 +20,19 @@ classifiers = [
|
|
|
20
20
|
"Intended Audience :: Developers",
|
|
21
21
|
"Operating System :: POSIX",
|
|
22
22
|
"Programming Language :: Python",
|
|
23
|
-
"Programming Language :: Python :: 3.9",
|
|
24
23
|
"Programming Language :: Python :: 3.10",
|
|
25
24
|
"Programming Language :: Python :: 3.11",
|
|
26
25
|
"Programming Language :: Python :: 3.12",
|
|
27
26
|
"Programming Language :: Python :: 3.13",
|
|
27
|
+
"Programming Language :: Python :: 3.14",
|
|
28
28
|
]
|
|
29
|
-
requires-python = ">=3.
|
|
29
|
+
requires-python = ">=3.10"
|
|
30
30
|
dependencies = [
|
|
31
|
-
"globus-sdk==4.
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
"globus-sdk==4.8.0",
|
|
32
|
+
# NOTE: `click` does not use semver; minor releases are expected to contain
|
|
33
|
+
# minor breaking changes
|
|
34
|
+
"click>=8.4,<8.5",
|
|
35
|
+
"jmespath==1.1.0",
|
|
34
36
|
"packaging>=17.0",
|
|
35
37
|
"typing_extensions>=4.0;python_version<'3.11'",
|
|
36
38
|
# these are dependencies of the SDK, but they are used directly in the CLI
|
|
@@ -61,7 +63,7 @@ test = [
|
|
|
61
63
|
]
|
|
62
64
|
test-mindeps = [
|
|
63
65
|
{include-group = "test"},
|
|
64
|
-
"click==8.
|
|
66
|
+
"click==8.4.0",
|
|
65
67
|
"requests==2.32.4",
|
|
66
68
|
"pyjwt==2.0.0",
|
|
67
69
|
"cryptography==3.3.1",
|
|
@@ -10,7 +10,6 @@ import globus_sdk
|
|
|
10
10
|
from globus_sdk.scopes import ScopeParser
|
|
11
11
|
|
|
12
12
|
from globus_cli import termio, version
|
|
13
|
-
from globus_cli._click_compat import shim_get_metavar
|
|
14
13
|
from globus_cli.login_manager import LoginManager, is_client_login
|
|
15
14
|
from globus_cli.login_manager.scopes import CLI_SCOPE_REQUIREMENTS
|
|
16
15
|
from globus_cli.parsing import command, endpoint_id_arg, group, mutex_option_group
|
|
@@ -20,8 +19,7 @@ from globus_cli.types import AnyCommand, ServiceNameLiteral
|
|
|
20
19
|
C = t.TypeVar("C", bound=AnyCommand)
|
|
21
20
|
|
|
22
21
|
|
|
23
|
-
class QueryParamType(click.ParamType):
|
|
24
|
-
@shim_get_metavar
|
|
22
|
+
class QueryParamType(click.ParamType[tuple[str, str] | None]):
|
|
25
23
|
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
26
24
|
return "Key=Value"
|
|
27
25
|
|
|
@@ -33,21 +31,17 @@ class QueryParamType(click.ParamType):
|
|
|
33
31
|
|
|
34
32
|
def convert(
|
|
35
33
|
self,
|
|
36
|
-
value: str
|
|
34
|
+
value: str,
|
|
37
35
|
param: click.Parameter | None,
|
|
38
36
|
ctx: click.Context | None,
|
|
39
37
|
) -> tuple[str, str] | None:
|
|
40
|
-
value = super().convert(value, param, ctx)
|
|
41
|
-
if value is None:
|
|
42
|
-
return None
|
|
43
38
|
if "=" not in value:
|
|
44
39
|
self.fail("invalid query param", param=param, ctx=ctx)
|
|
45
40
|
left, right = value.split("=", 1)
|
|
46
41
|
return (left, right)
|
|
47
42
|
|
|
48
43
|
|
|
49
|
-
class HeaderParamType(click.ParamType):
|
|
50
|
-
@shim_get_metavar
|
|
44
|
+
class HeaderParamType(click.ParamType[tuple[str, str] | None]):
|
|
51
45
|
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
52
46
|
return "Key:Value"
|
|
53
47
|
|
|
@@ -59,13 +53,10 @@ class HeaderParamType(click.ParamType):
|
|
|
59
53
|
|
|
60
54
|
def convert(
|
|
61
55
|
self,
|
|
62
|
-
value: str
|
|
56
|
+
value: str,
|
|
63
57
|
param: click.Parameter | None,
|
|
64
58
|
ctx: click.Context | None,
|
|
65
59
|
) -> tuple[str, str] | None:
|
|
66
|
-
value = super().convert(value, param, ctx)
|
|
67
|
-
if value is None:
|
|
68
|
-
return None
|
|
69
60
|
if ":" not in value:
|
|
70
61
|
self.fail("invalid header param", param=param, ctx=ctx)
|
|
71
62
|
left, right = value.split(":", 1)
|
|
@@ -172,7 +163,7 @@ def _get_url(service_name: str) -> str:
|
|
|
172
163
|
"search": "https://search.api.globus.org/",
|
|
173
164
|
"transfer": "https://transfer.api.globus.org/v0.10/",
|
|
174
165
|
"timers": "https://timer.automate.globus.org/",
|
|
175
|
-
"gcs": "https
|
|
166
|
+
"gcs": "https://GCS_MANAGER/",
|
|
176
167
|
}[service_name]
|
|
177
168
|
|
|
178
169
|
|
|
@@ -324,7 +315,9 @@ def _execute_service_command(
|
|
|
324
315
|
if path.startswith("/"):
|
|
325
316
|
path = path[1:]
|
|
326
317
|
path = f"/v2/{path}"
|
|
327
|
-
if isinstance(client, globus_sdk.TransferClient) and not
|
|
318
|
+
if isinstance(client, globus_sdk.TransferClient) and not (
|
|
319
|
+
path.startswith(("/v0.10/", "/v2/"))
|
|
320
|
+
):
|
|
328
321
|
if path.startswith("/"):
|
|
329
322
|
path = path[1:]
|
|
330
323
|
path = f"/v0.10/{path}"
|
|
@@ -379,16 +372,26 @@ def build_command(
|
|
|
379
372
|
)
|
|
380
373
|
hidden: bool = command_name == "timer"
|
|
381
374
|
|
|
375
|
+
example_command_name: str = command_name
|
|
376
|
+
helptext_epilog: str = ""
|
|
377
|
+
service_title: str = service_name.title()
|
|
378
|
+
|
|
379
|
+
if command_name == "gcs":
|
|
380
|
+
service_title = "GCS"
|
|
381
|
+
example_command_name = "gcs ENDPOINT_ID"
|
|
382
|
+
helptext_epilog = "\nWhere GCS_MANAGER is looked up from ENDPOINT_ID."
|
|
383
|
+
|
|
382
384
|
helptext = f"""\
|
|
383
|
-
Make API calls to Globus {
|
|
385
|
+
Make API calls to Globus {service_title}
|
|
384
386
|
|
|
385
387
|
The arguments are an HTTP method name and a path within the service to which the request
|
|
386
388
|
should be made. The path will be joined with the known service URL.
|
|
387
389
|
For example, a call of
|
|
388
390
|
|
|
389
|
-
globus api {
|
|
391
|
+
globus api {example_command_name} GET /foo/bar
|
|
390
392
|
|
|
391
393
|
sends a 'GET' request to `{_get_url(service_name)}foo/bar`
|
|
394
|
+
{helptext_epilog}
|
|
392
395
|
"""
|
|
393
396
|
|
|
394
397
|
if service_name != "gcs":
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import sys
|
|
4
3
|
import typing as t
|
|
5
4
|
import uuid
|
|
6
5
|
|
|
@@ -12,22 +11,8 @@ from globus_cli.parsing import command, endpoint_id_arg
|
|
|
12
11
|
from globus_cli.termio import Field, display, formatters
|
|
13
12
|
from globus_cli.utils import PagingWrapper
|
|
14
13
|
|
|
15
|
-
if sys.version_info >= (3, 10):
|
|
16
|
-
from typing import TypeAlias
|
|
17
|
-
else:
|
|
18
|
-
from typing_extensions import TypeAlias
|
|
19
14
|
|
|
20
|
-
|
|
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):
|
|
15
|
+
class ChoiceSlugified(click.Choice[str]):
|
|
31
16
|
"""
|
|
32
17
|
Allow either hyphens or underscores, e.g. both 'mapped-collections' or
|
|
33
18
|
'mapped_collections'
|
|
@@ -37,10 +22,8 @@ class ChoiceSlugified(ChoiceType):
|
|
|
37
22
|
return t.cast(type, t.Literal[tuple(self._slugify(c) for c in self.choices)])
|
|
38
23
|
|
|
39
24
|
def convert(
|
|
40
|
-
self, value:
|
|
25
|
+
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
41
26
|
) -> t.Any:
|
|
42
|
-
if value is None:
|
|
43
|
-
return None
|
|
44
27
|
return self._slugify(super().convert(value.replace("_", "-"), param, ctx))
|
|
45
28
|
|
|
46
29
|
def _slugify(self, value: str) -> str:
|
{globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/endpoint/set_subscription_id.py
RENAMED
|
@@ -9,7 +9,7 @@ from globus_cli.parsing import command, endpoint_id_arg
|
|
|
9
9
|
from globus_cli.termio import display
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class SubscriptionIdType(click.ParamType):
|
|
12
|
+
class SubscriptionIdType(click.ParamType[str]):
|
|
13
13
|
def convert(
|
|
14
14
|
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
15
15
|
) -> str:
|
|
@@ -5,12 +5,14 @@ import click
|
|
|
5
5
|
from globus_cli.endpointish import Endpointish
|
|
6
6
|
from globus_cli.login_manager import LoginManager
|
|
7
7
|
from globus_cli.parsing import command, endpoint_id_arg
|
|
8
|
+
from globus_cli.services.transfer import DOMAIN_FIELD
|
|
8
9
|
from globus_cli.termio import Field, display, formatters
|
|
9
10
|
|
|
10
11
|
STANDARD_FIELDS = [
|
|
11
12
|
Field("Display Name", "display_name"),
|
|
12
13
|
Field("ID", "id"),
|
|
13
14
|
Field("Owner", "owner_string"),
|
|
15
|
+
DOMAIN_FIELD,
|
|
14
16
|
Field("Description", "description", wrap_enabled=True),
|
|
15
17
|
Field("Shareable", "shareable"),
|
|
16
18
|
Field("Keywords", "keywords"),
|
|
@@ -13,6 +13,8 @@ from globus_cli.parsing import group
|
|
|
13
13
|
"start": (".start", "start_command"),
|
|
14
14
|
# "run" is a subgroup of commands.
|
|
15
15
|
"run": (".run", "run_command"),
|
|
16
|
+
# "registered-api" is a subgroup of commands.
|
|
17
|
+
"registered-api": (".registered_api", "registered_api_command"),
|
|
16
18
|
},
|
|
17
19
|
)
|
|
18
20
|
def flows_command() -> None:
|
|
@@ -125,7 +125,9 @@ keywords_option = click.option(
|
|
|
125
125
|
)
|
|
126
126
|
|
|
127
127
|
|
|
128
|
-
class SubscriptionIdType(
|
|
128
|
+
class SubscriptionIdType(
|
|
129
|
+
click.ParamType[uuid.UUID | t.Literal["DEFAULT"] | globus_sdk.MissingType]
|
|
130
|
+
):
|
|
129
131
|
name = "SUBSCRIPTION_ID"
|
|
130
132
|
|
|
131
133
|
def __init__(self, *, omittable: bool = False) -> None:
|
|
@@ -111,3 +111,57 @@ def flow_run_format_fields(
|
|
|
111
111
|
Field("Run Managers", "run_managers", formatter=csv_principal_list),
|
|
112
112
|
Field("Run Monitors", "run_monitors", formatter=csv_principal_list),
|
|
113
113
|
]
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
class RegisteredAPIPrincipalFormatter(PrincipalURNFormatter):
|
|
117
|
+
"""A principal formatter which pre-registers all principals for a registered API."""
|
|
118
|
+
|
|
119
|
+
def __init__(
|
|
120
|
+
self, auth_client: globus_sdk.AuthClient, registered_api: dict[str, t.Any]
|
|
121
|
+
) -> None:
|
|
122
|
+
super().__init__(auth_client)
|
|
123
|
+
roles = registered_api.get("roles", {})
|
|
124
|
+
self.add_items(*roles.get("owners", ()))
|
|
125
|
+
self.add_items(*roles.get("administrators", ()))
|
|
126
|
+
self.add_items(*roles.get("viewers", ()))
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def registered_api_format_fields(
|
|
130
|
+
auth_client: globus_sdk.AuthClient,
|
|
131
|
+
registered_api: dict[str, t.Any],
|
|
132
|
+
) -> list[Field]:
|
|
133
|
+
"""
|
|
134
|
+
The standard list of fields to render for a registered API resource.
|
|
135
|
+
|
|
136
|
+
:param auth_client: An AuthClient, used to resolve principal URNs.
|
|
137
|
+
:param registered_api: The registered API resource, used to pre-register
|
|
138
|
+
principals.
|
|
139
|
+
"""
|
|
140
|
+
principal = RegisteredAPIPrincipalFormatter(auth_client, registered_api)
|
|
141
|
+
csv_principal_list = formatters.ArrayFormatter(
|
|
142
|
+
element_formatter=principal,
|
|
143
|
+
delimiter=", ",
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
return [
|
|
147
|
+
Field("Registered API ID", "id"),
|
|
148
|
+
Field("Name", "name"),
|
|
149
|
+
Field("Description", "description"),
|
|
150
|
+
Field("Status", "status"),
|
|
151
|
+
Field("Subscription ID", "subscription_id"),
|
|
152
|
+
Field("Created At", "created_timestamp", formatter=formatters.Date),
|
|
153
|
+
Field("Updated At", "updated_timestamp", formatter=formatters.Date),
|
|
154
|
+
Field("Edited At", "edited_timestamp", formatter=formatters.Date),
|
|
155
|
+
Field(
|
|
156
|
+
"Scheduled Deletion",
|
|
157
|
+
"scheduled_deletion_timestamp",
|
|
158
|
+
formatter=formatters.Date,
|
|
159
|
+
),
|
|
160
|
+
Field("Owners", "roles.owners", formatter=csv_principal_list),
|
|
161
|
+
Field("Administrators", "roles.administrators", formatter=csv_principal_list),
|
|
162
|
+
Field("Viewers", "roles.viewers", formatter=csv_principal_list),
|
|
163
|
+
Field("Target Type", "target.type"),
|
|
164
|
+
Field("OpenAPI Version", "target.openapi_version"),
|
|
165
|
+
Field("Destination Method", "target.destination.method"),
|
|
166
|
+
Field("Destination URL", "target.destination.url"),
|
|
167
|
+
]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from globus_cli.parsing import group
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@group(
|
|
5
|
+
"registered-api",
|
|
6
|
+
lazy_subcommands={
|
|
7
|
+
"show": (".show", "show_command"),
|
|
8
|
+
"list": (".list", "list_command"),
|
|
9
|
+
},
|
|
10
|
+
)
|
|
11
|
+
def registered_api_command() -> None:
|
|
12
|
+
"""Interact with registered APIs in the Globus Flows service."""
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing as t
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
import globus_sdk
|
|
7
|
+
from globus_sdk.paging import Paginator
|
|
8
|
+
|
|
9
|
+
from globus_cli.login_manager import LoginManager
|
|
10
|
+
from globus_cli.parsing import ColonDelimitedChoiceTuple, command
|
|
11
|
+
from globus_cli.termio import Field, display, formatters
|
|
12
|
+
from globus_cli.utils import PagingWrapper
|
|
13
|
+
|
|
14
|
+
ROLE_TYPES = ("owner", "administrator", "viewer")
|
|
15
|
+
ORDER_BY_FIELDS = ("id", "name", "created_timestamp", "updated_timestamp")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@command("list")
|
|
19
|
+
@click.option(
|
|
20
|
+
"--filter-role",
|
|
21
|
+
"filter_roles",
|
|
22
|
+
type=click.Choice(ROLE_TYPES),
|
|
23
|
+
help="Filter results by the registered API's role type associated with the caller",
|
|
24
|
+
multiple=True,
|
|
25
|
+
)
|
|
26
|
+
@click.option(
|
|
27
|
+
"--orderby",
|
|
28
|
+
default=("created_timestamp:DESC",),
|
|
29
|
+
show_default=True,
|
|
30
|
+
type=ColonDelimitedChoiceTuple(
|
|
31
|
+
choices=tuple(
|
|
32
|
+
f"{field}:{order}" for field in ORDER_BY_FIELDS for order in ("ASC", "DESC")
|
|
33
|
+
),
|
|
34
|
+
case_sensitive=False,
|
|
35
|
+
),
|
|
36
|
+
multiple=True,
|
|
37
|
+
metavar=f"[{'|'.join(ORDER_BY_FIELDS)}]:[ASC|DESC]",
|
|
38
|
+
help="""
|
|
39
|
+
Sort results by the given field and ordering.
|
|
40
|
+
ASC for ascending, DESC for descending.
|
|
41
|
+
|
|
42
|
+
This option can be specified multiple times to sort by multiple fields.
|
|
43
|
+
""",
|
|
44
|
+
)
|
|
45
|
+
@click.option(
|
|
46
|
+
"--limit",
|
|
47
|
+
default=25,
|
|
48
|
+
show_default=True,
|
|
49
|
+
metavar="N",
|
|
50
|
+
type=click.IntRange(1),
|
|
51
|
+
help="The maximum number of results to return.",
|
|
52
|
+
)
|
|
53
|
+
@LoginManager.requires_login("flows")
|
|
54
|
+
def list_command(
|
|
55
|
+
login_manager: LoginManager,
|
|
56
|
+
*,
|
|
57
|
+
filter_roles: tuple[t.Literal["owner", "administrator", "viewer"], ...],
|
|
58
|
+
orderby: tuple[
|
|
59
|
+
tuple[
|
|
60
|
+
t.Literal["id", "name", "created_timestamp", "updated_timestamp"],
|
|
61
|
+
t.Literal["ASC", "DESC"],
|
|
62
|
+
],
|
|
63
|
+
...,
|
|
64
|
+
],
|
|
65
|
+
limit: int,
|
|
66
|
+
) -> None:
|
|
67
|
+
"""
|
|
68
|
+
List registered APIs.
|
|
69
|
+
"""
|
|
70
|
+
flows_client = login_manager.get_flows_client()
|
|
71
|
+
paginator = Paginator.wrap(flows_client.list_registered_apis)
|
|
72
|
+
api_iterator = PagingWrapper(
|
|
73
|
+
paginator(
|
|
74
|
+
filter_roles=filter_roles or globus_sdk.MISSING,
|
|
75
|
+
orderby=",".join(f"{field} {order}" for field, order in orderby),
|
|
76
|
+
).items(),
|
|
77
|
+
json_conversion_key="registered_apis",
|
|
78
|
+
limit=limit,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
fields = [
|
|
82
|
+
Field("Registered API ID", "id"),
|
|
83
|
+
Field("Name", "name"),
|
|
84
|
+
Field("Created At", "created_timestamp", formatter=formatters.Date),
|
|
85
|
+
Field("Updated At", "updated_timestamp", formatter=formatters.Date),
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
display(
|
|
89
|
+
api_iterator,
|
|
90
|
+
fields=fields,
|
|
91
|
+
json_converter=api_iterator.json_converter,
|
|
92
|
+
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import uuid
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
7
|
+
from globus_cli.commands.flows._fields import registered_api_format_fields
|
|
8
|
+
from globus_cli.login_manager import LoginManager
|
|
9
|
+
from globus_cli.parsing import command
|
|
10
|
+
from globus_cli.termio import display
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@command("show")
|
|
14
|
+
@click.argument("registered_api_id", type=click.UUID)
|
|
15
|
+
@LoginManager.requires_login("auth", "flows")
|
|
16
|
+
def show_command(login_manager: LoginManager, *, registered_api_id: uuid.UUID) -> None:
|
|
17
|
+
"""
|
|
18
|
+
Show a registered API.
|
|
19
|
+
"""
|
|
20
|
+
flows_client = login_manager.get_flows_client()
|
|
21
|
+
|
|
22
|
+
res = flows_client.get_registered_api(registered_api_id)
|
|
23
|
+
|
|
24
|
+
auth_client = login_manager.get_auth_client()
|
|
25
|
+
fields = registered_api_format_fields(auth_client, res.data)
|
|
26
|
+
|
|
27
|
+
display(res, fields=fields, text_mode=display.RECORD)
|
|
@@ -94,13 +94,11 @@ def check_inactive_reason(
|
|
|
94
94
|
"This run has additional authentication requirements that must be met "
|
|
95
95
|
"in order to resume.",
|
|
96
96
|
gare=gare,
|
|
97
|
-
epilog=textwrap.dedent(
|
|
98
|
-
f"""\
|
|
97
|
+
epilog=textwrap.dedent(f"""\
|
|
99
98
|
After updating your session, resume the run with
|
|
100
99
|
|
|
101
100
|
globus flows run resume --skip-inactive-reason-check {run_id}
|
|
102
|
-
"""
|
|
103
|
-
),
|
|
101
|
+
"""),
|
|
104
102
|
)
|
|
105
103
|
|
|
106
104
|
|
|
@@ -8,7 +8,6 @@ import uuid
|
|
|
8
8
|
import click
|
|
9
9
|
import globus_sdk
|
|
10
10
|
|
|
11
|
-
from globus_cli._click_compat import shim_get_metavar
|
|
12
11
|
from globus_cli.commands.flows._common import FlowScopeInjector
|
|
13
12
|
from globus_cli.commands.flows._fields import flow_run_format_fields
|
|
14
13
|
from globus_cli.login_manager import LoginManager
|
|
@@ -43,7 +42,6 @@ class ActivityNotificationPolicyType(JSONStringOrFile):
|
|
|
43
42
|
|
|
44
43
|
choices = ("INACTIVE", "FAILED", "SUCCEEDED")
|
|
45
44
|
|
|
46
|
-
@shim_get_metavar
|
|
47
45
|
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
48
46
|
return f"[{{{','.join(self.choices)}}}|JSON_FILE|JSON]"
|
|
49
47
|
|
|
@@ -35,10 +35,8 @@ def _deprecated_verify_warning_callback(
|
|
|
35
35
|
ctx: click.Context, param: click.Parameter, value: bool | None
|
|
36
36
|
) -> bool | None:
|
|
37
37
|
if value is not None:
|
|
38
|
-
print_command_hint(
|
|
39
|
-
"""\
|
|
38
|
+
print_command_hint("""\
|
|
40
39
|
'--disable-verify/--no-disable-verify' is deprecated
|
|
41
40
|
|
|
42
|
-
Use the '--verify' option instead."""
|
|
43
|
-
)
|
|
41
|
+
Use the '--verify' option instead.""")
|
|
44
42
|
return value
|
|
@@ -11,7 +11,7 @@ from globus_cli.parsing import command, endpoint_id_arg
|
|
|
11
11
|
from globus_cli.termio import display
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
class GCPSubscriptionIdType(click.ParamType):
|
|
14
|
+
class GCPSubscriptionIdType(click.ParamType[uuid.UUID | ExplicitNullType]):
|
|
15
15
|
def convert(
|
|
16
16
|
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
17
17
|
) -> uuid.UUID | ExplicitNullType:
|
{globus_cli-3.41.0 → globus_cli-3.42.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py
RENAMED
|
@@ -11,7 +11,9 @@ from globus_cli.parsing import command, endpoint_id_arg
|
|
|
11
11
|
from globus_cli.termio import display
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
class GCSSubscriptionIdType(
|
|
14
|
+
class GCSSubscriptionIdType(
|
|
15
|
+
click.ParamType[uuid.UUID | t.Literal["DEFAULT"] | ExplicitNullType]
|
|
16
|
+
):
|
|
15
17
|
def convert(
|
|
16
18
|
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
17
19
|
) -> uuid.UUID | t.Literal["DEFAULT"] | ExplicitNullType:
|
|
@@ -7,7 +7,6 @@ import uuid
|
|
|
7
7
|
import click
|
|
8
8
|
import globus_sdk
|
|
9
9
|
|
|
10
|
-
from globus_cli._click_compat import shim_get_metavar
|
|
11
10
|
from globus_cli.commands.gcs.endpoint._common import GCS_ENDPOINT_FIELDS
|
|
12
11
|
from globus_cli.constants import EXPLICIT_NULL, ExplicitNullType
|
|
13
12
|
from globus_cli.login_manager import LoginManager
|
|
@@ -19,8 +18,7 @@ from globus_cli.types import AnyCallable
|
|
|
19
18
|
F = t.TypeVar("F", bound=AnyCallable)
|
|
20
19
|
|
|
21
20
|
|
|
22
|
-
class SubscriptionIdType(click.ParamType):
|
|
23
|
-
@shim_get_metavar
|
|
21
|
+
class SubscriptionIdType(click.ParamType[str | ExplicitNullType]):
|
|
24
22
|
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
25
23
|
return "[<uuid>|DEFAULT|null]"
|
|
26
24
|
|
|
@@ -78,7 +78,7 @@ def group_id_arg(f: C) -> C:
|
|
|
78
78
|
return click.argument("GROUP_ID", type=click.UUID)(f)
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
class GroupSubscriptionVerifiedIdType(click.ParamType):
|
|
81
|
+
class GroupSubscriptionVerifiedIdType(click.ParamType[uuid.UUID | ExplicitNullType]):
|
|
82
82
|
name = "TEXT"
|
|
83
83
|
|
|
84
84
|
def convert(
|
|
@@ -13,7 +13,6 @@ from globus_sdk.scopes import (
|
|
|
13
13
|
)
|
|
14
14
|
from globus_sdk.services.flows import SpecificFlowClient
|
|
15
15
|
|
|
16
|
-
from globus_cli._click_compat import shim_get_metavar
|
|
17
16
|
from globus_cli.login_manager import LoginManager, is_client_login
|
|
18
17
|
from globus_cli.parsing import command, no_local_server_option
|
|
19
18
|
from globus_cli.termio import verbosity
|
|
@@ -30,27 +29,17 @@ Logout of the Globus CLI with
|
|
|
30
29
|
globus logout
|
|
31
30
|
"""
|
|
32
31
|
|
|
33
|
-
_LOGIN_EPILOG = (
|
|
34
|
-
(
|
|
35
|
-
"""\
|
|
32
|
+
_LOGIN_EPILOG = ("""\
|
|
36
33
|
|
|
37
34
|
You have successfully logged in to the Globus CLI!
|
|
38
|
-
"""
|
|
39
|
-
)
|
|
40
|
-
+ _SHARED_EPILOG
|
|
41
|
-
)
|
|
35
|
+
""") + _SHARED_EPILOG
|
|
42
36
|
|
|
43
|
-
_LOGGED_IN_RESPONSE = (
|
|
44
|
-
(
|
|
45
|
-
"""\
|
|
37
|
+
_LOGGED_IN_RESPONSE = ("""\
|
|
46
38
|
You are already logged in!
|
|
47
39
|
|
|
48
40
|
You may force a new login with
|
|
49
41
|
globus login --force
|
|
50
|
-
"""
|
|
51
|
-
)
|
|
52
|
-
+ _SHARED_EPILOG
|
|
53
|
-
)
|
|
42
|
+
""") + _SHARED_EPILOG
|
|
54
43
|
|
|
55
44
|
_IS_CLIENT_ID_RESPONSE = """\
|
|
56
45
|
GLOBUS_CLI_CLIENT_ID and GLOBUS_CLI_CLIENT_SECRET are both set.
|
|
@@ -60,10 +49,9 @@ Clients are always "logged in"
|
|
|
60
49
|
"""
|
|
61
50
|
|
|
62
51
|
|
|
63
|
-
class GCSEndpointType(click.ParamType):
|
|
52
|
+
class GCSEndpointType(click.ParamType[uuid.UUID | tuple[uuid.UUID, uuid.UUID]]):
|
|
64
53
|
name = "GCS Server"
|
|
65
54
|
|
|
66
|
-
@shim_get_metavar
|
|
67
55
|
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
68
56
|
return "<endpoint_id>[:<collection_id>]"
|
|
69
57
|
|
|
@@ -98,10 +86,9 @@ class GCSEndpointType(click.ParamType):
|
|
|
98
86
|
return endpoint_id if not collection_id else (endpoint_id, collection_id)
|
|
99
87
|
|
|
100
88
|
|
|
101
|
-
class TimerResourceType(click.ParamType):
|
|
89
|
+
class TimerResourceType(click.ParamType[tuple[t.Literal["flow"], uuid.UUID]]):
|
|
102
90
|
name = "TIMER_RESOURCE"
|
|
103
91
|
|
|
104
|
-
@shim_get_metavar
|
|
105
92
|
def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
|
|
106
93
|
return "flow:<flow_id>"
|
|
107
94
|
|