globus-cli 3.41.0__tar.gz → 3.43.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.43.0}/PKG-INFO +9 -8
- {globus_cli-3.41.0 → globus_cli-3.43.0}/changelog.adoc +46 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/pyproject.toml +12 -10
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/api.py +20 -17
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/list.py +2 -19
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/show.py +2 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/__init__.py +4 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/_common.py +15 -5
- globus_cli-3.43.0/src/globus_cli/commands/flows/_fields.py +283 -0
- globus_cli-3.43.0/src/globus_cli/commands/flows/registered_api/__init__.py +12 -0
- globus_cli-3.43.0/src/globus_cli/commands/flows/registered_api/list.py +92 -0
- globus_cli-3.43.0/src/globus_cli/commands/flows/registered_api/show.py +27 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/resume.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/start.py +0 -2
- globus_cli-3.43.0/src/globus_cli/commands/flows/web_input/__init__.py +13 -0
- globus_cli-3.43.0/src/globus_cli/commands/flows/web_input/list.py +132 -0
- globus_cli-3.43.0/src/globus_cli/commands/flows/web_input/respond.py +36 -0
- globus_cli-3.43.0/src/globus_cli/commands/flows/web_input/show.py +24 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/create/_common.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/set_subscription_id.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +3 -1
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/update.py +1 -3
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/get_identities.py +16 -6
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/_common.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/list.py +1 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/login.py +6 -19
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/__init__.py +1 -0
- globus_cli-3.43.0/src/globus_cli/commands/streams/tunnel/events.py +37 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/create/_common.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/create/transfer.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/resume.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/local_server.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/__init__.py +2 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/commands.py +0 -18
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/delimited.py +14 -25
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +2 -5
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/guest_activity_notify_param.py +3 -3
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/identity_type.py +1 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/json_strorfile.py +1 -3
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/location.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/notify_param.py +1 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/nullable.py +2 -6
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/omittable.py +39 -28
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/task_path.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/timedelta.py +1 -1
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/shared_options/__init__.py +2 -4
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/shared_options/id_args.py +4 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +2 -4
- globus_cli-3.43.0/src/globus_cli/services/transfer/__init__.py +66 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/_display.py +11 -2
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/context.py +5 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/field.py +4 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/__init__.py +2 -0
- globus_cli-3.43.0/src/globus_cli/termio/printers/folded_table_printer.py +383 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/record_printer.py +21 -3
- {globus_cli-3.41.0 → globus_cli-3.43.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/commands/flows/_fields.py +0 -113
- globus_cli-3.41.0/src/globus_cli/services/transfer/__init__.py +0 -35
- {globus_cli-3.41.0 → globus_cli-3.43.0}/LICENSE +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/README.rst +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/_warnings.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/_removal_stub.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/create/guest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/role/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/collection/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/search.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/flows/validate.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/set_subscription_admin_verified.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/set_subscription_admin_verified.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/group/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/list_commands.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/logout.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/session/consent.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/session/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/access_point/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/access_point/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/create.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/stop.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/streams/tunnel/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/create/flow.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/delete.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/list.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/pause.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/timer/show.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/transfer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/endpointish/endpointish.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/auth_requirements.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/authapi_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/endpoint_types.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/flows_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/generic_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/search_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/hooks/transfer_hooks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/messages.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/globus_cli_flake8.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/auth_flows.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/errors.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/manager.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/scopes.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/storage.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/login_manager/utils.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_classes.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/shared_options/flow_options.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/parsing/shell_completion.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/reflect.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/services/transfer/client.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/services/transfer/data.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/formatters/auth.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/base.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/custom_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/json_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/table_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/unix_printer/__init__.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/unix_printer/_formatter.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/printers/unix_printer/unix_printer.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/types.py +0 -0
- {globus_cli-3.41.0 → globus_cli-3.43.0}/src/globus_cli/utils.py +0 -0
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: globus-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.43.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.9.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
|
-
Requires-Dist: requests>=2.
|
|
25
|
+
Requires-Dist: requests>=2.34.2,<3.0.0
|
|
26
26
|
Project-URL: homepage, https://github.com/globus/globus-cli
|
|
27
|
+
Import-Name: globus_cli
|
|
27
28
|
|
|
28
29
|
Globus CLI
|
|
29
30
|
==========
|
|
@@ -2,6 +2,52 @@
|
|
|
2
2
|
|
|
3
3
|
// scriv-insert-here
|
|
4
4
|
|
|
5
|
+
== 3.43.0 (2026-08-12)
|
|
6
|
+
|
|
7
|
+
Bugfixes:
|
|
8
|
+
|
|
9
|
+
* Fixed a bug in which terminal device (TTY) detection ran even when
|
|
10
|
+
`GLOBUS_CLI_FOLD_TABLES=1` is set.
|
|
11
|
+
Setting the variable to true now forces use of folded tables.
|
|
12
|
+
Non-TTY output devices will be detected as having a fixed width of 80
|
|
13
|
+
characters.
|
|
14
|
+
|
|
15
|
+
* Fixed `globus get-identities` to lowercase usernames and IDs before
|
|
16
|
+
comparisons for normal text output.
|
|
17
|
+
|
|
18
|
+
Enhancements:
|
|
19
|
+
|
|
20
|
+
* Folded table output will now have bolded headers in interactive terminals.
|
|
21
|
+
|
|
22
|
+
* Add `globus flows web-input` subcommands to interact with Web Inputs.
|
|
23
|
+
|
|
24
|
+
== 3.42.0 (2026-06-10)
|
|
25
|
+
|
|
26
|
+
Bugfixes:
|
|
27
|
+
|
|
28
|
+
* `globus api transfer` no longer prepends `/v0.10/` to `/v2/` paths
|
|
29
|
+
|
|
30
|
+
Enhancements:
|
|
31
|
+
|
|
32
|
+
* Added Domain field to default output of `globus endpoint search` and `globus endpoint show`
|
|
33
|
+
|
|
34
|
+
* Added `globus streams tunnel events` command to show tunnel events
|
|
35
|
+
|
|
36
|
+
* When using table output on narrow terminals, the Globus CLI will now stack
|
|
37
|
+
table elements in a new "folded table" layout. This behavior is only used
|
|
38
|
+
when the output device is a TTY. To disable the new output altogether, users
|
|
39
|
+
can set `GLOBUS_CLI_FOLD_TABLES=0`.
|
|
40
|
+
|
|
41
|
+
* Added Subscription ID to the text output of `globus group list`
|
|
42
|
+
|
|
43
|
+
* Added `globus flows registered-api show` command to display details of a registered API
|
|
44
|
+
|
|
45
|
+
* Added `globus flows registered-api list` command to list registered APIs
|
|
46
|
+
|
|
47
|
+
Other:
|
|
48
|
+
|
|
49
|
+
* Removed support for Python 3.9 .
|
|
50
|
+
|
|
5
51
|
== 3.41.0 (2026-01-14)
|
|
6
52
|
|
|
7
53
|
Bugfixes:
|
|
@@ -20,22 +20,24 @@ 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.9.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
|
|
37
39
|
# declare them here in case the underlying lib ever changes
|
|
38
|
-
"requests>=2.
|
|
40
|
+
"requests>=2.34.2,<3.0.0",
|
|
39
41
|
]
|
|
40
42
|
dynamic = ["version"]
|
|
41
43
|
|
|
@@ -61,21 +63,21 @@ test = [
|
|
|
61
63
|
]
|
|
62
64
|
test-mindeps = [
|
|
63
65
|
{include-group = "test"},
|
|
64
|
-
"click==8.
|
|
65
|
-
"requests==2.
|
|
66
|
+
"click==8.4.0",
|
|
67
|
+
"requests==2.34.2",
|
|
66
68
|
"pyjwt==2.0.0",
|
|
67
69
|
"cryptography==3.3.1",
|
|
68
70
|
"packaging==17.0",
|
|
69
71
|
"typing_extensions==4.0",
|
|
70
72
|
]
|
|
71
73
|
typing = [
|
|
72
|
-
"mypy==1.
|
|
74
|
+
"mypy==2.1.0",
|
|
73
75
|
"types-jwt",
|
|
74
76
|
"types-requests",
|
|
75
77
|
"types-jmespath",
|
|
76
78
|
]
|
|
77
79
|
check-project-metadata = [
|
|
78
|
-
"mddj==0.
|
|
80
|
+
"mddj==0.6.0",
|
|
79
81
|
{include-group = "yaml"},
|
|
80
82
|
"build",
|
|
81
83
|
"twine",
|
|
@@ -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.43.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,10 @@ 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"),
|
|
18
|
+
# "web-input" is a subgroup of commands.
|
|
19
|
+
"web-input": (".web_input", "web_input_command"),
|
|
16
20
|
},
|
|
17
21
|
)
|
|
18
22
|
def flows_command() -> None:
|
|
@@ -125,17 +125,27 @@ 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:
|
|
132
|
-
self._omittable = omittable
|
|
134
|
+
self._omittable: bool = omittable
|
|
133
135
|
|
|
134
136
|
def convert(
|
|
135
|
-
self,
|
|
137
|
+
self,
|
|
138
|
+
value: t.Any | globus_sdk.MissingType,
|
|
139
|
+
param: click.Parameter | None,
|
|
140
|
+
ctx: click.Context | None,
|
|
136
141
|
) -> uuid.UUID | t.Literal["DEFAULT"] | globus_sdk.MissingType:
|
|
137
|
-
if
|
|
138
|
-
|
|
142
|
+
if value is globus_sdk.MISSING:
|
|
143
|
+
if self._omittable:
|
|
144
|
+
return globus_sdk.MISSING
|
|
145
|
+
else:
|
|
146
|
+
raise NotImplementedError(
|
|
147
|
+
"Cannot pass MISSING to non-omittable SubscriptionidType."
|
|
148
|
+
)
|
|
139
149
|
|
|
140
150
|
if value.upper() == "DEFAULT":
|
|
141
151
|
return "DEFAULT"
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import typing as t
|
|
2
|
+
|
|
3
|
+
import globus_sdk
|
|
4
|
+
|
|
5
|
+
from globus_cli.termio import Field, formatters
|
|
6
|
+
from globus_cli.termio.formatters import (
|
|
7
|
+
ArrayFormatter,
|
|
8
|
+
FieldFormatter,
|
|
9
|
+
)
|
|
10
|
+
from globus_cli.termio.formatters.auth import PrincipalURNFormatter
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class FlowPrincipalFormatter(PrincipalURNFormatter):
|
|
14
|
+
"""A principal formatter which properly pre-registers all principals for a flow."""
|
|
15
|
+
|
|
16
|
+
def __init__(
|
|
17
|
+
self, auth_client: globus_sdk.AuthClient, flow: dict[str, t.Any]
|
|
18
|
+
) -> None:
|
|
19
|
+
super().__init__(auth_client)
|
|
20
|
+
self.add_items(flow.get("flow_owner"))
|
|
21
|
+
self.add_items(*flow.get("flow_administrators", ()))
|
|
22
|
+
self.add_items(*flow.get("flow_viewers", ()))
|
|
23
|
+
self.add_items(*flow.get("run_managers", ()))
|
|
24
|
+
self.add_items(*flow.get("run_monitors", ()))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def flow_format_fields(
|
|
28
|
+
auth_client: globus_sdk.AuthClient,
|
|
29
|
+
flow: dict[str, t.Any],
|
|
30
|
+
) -> list[Field]:
|
|
31
|
+
"""
|
|
32
|
+
The standard list of fields to render for a standard api flow-resource.
|
|
33
|
+
|
|
34
|
+
:param auth_client: An AuthClient, used to resolve principal URNs.
|
|
35
|
+
:param flow: The flow resource, used to pre-register formattable principals.
|
|
36
|
+
"""
|
|
37
|
+
principal = FlowPrincipalFormatter(auth_client, flow)
|
|
38
|
+
csv_principal_list = formatters.ArrayFormatter(
|
|
39
|
+
element_formatter=principal,
|
|
40
|
+
delimiter=", ",
|
|
41
|
+
)
|
|
42
|
+
csv_list = formatters.ArrayFormatter(delimiter=", ")
|
|
43
|
+
fuzzy_bool = formatters.FuzzyBool
|
|
44
|
+
|
|
45
|
+
return [
|
|
46
|
+
Field("Flow ID", "id"),
|
|
47
|
+
Field("Title", "title"),
|
|
48
|
+
Field("Subtitle", "subtitle"),
|
|
49
|
+
Field("Description", "description"),
|
|
50
|
+
Field("Keywords", "keywords", formatter=csv_list),
|
|
51
|
+
Field("Owner", "flow_owner", formatter=principal),
|
|
52
|
+
Field("High Assurance", "authentication_policy_id", formatter=fuzzy_bool),
|
|
53
|
+
Field("Authentication Policy ID", "authentication_policy_id"),
|
|
54
|
+
Field("Subscription ID", "subscription_id"),
|
|
55
|
+
Field("Created At", "created_at", formatter=formatters.Date),
|
|
56
|
+
Field("Updated At", "updated_at", formatter=formatters.Date),
|
|
57
|
+
Field("Administrators", "flow_administrators", formatter=csv_principal_list),
|
|
58
|
+
Field("Viewers", "flow_viewers", formatter=csv_principal_list),
|
|
59
|
+
Field("Starters", "flow_starters", formatter=csv_principal_list),
|
|
60
|
+
Field("Run Managers", "run_managers", formatter=csv_principal_list),
|
|
61
|
+
Field("Run Monitors", "run_monitors", formatter=csv_principal_list),
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class FlowRunPrincipalFormatter(PrincipalURNFormatter):
|
|
66
|
+
"""A principal formatter which pre-registers all principals for a flow run."""
|
|
67
|
+
|
|
68
|
+
def __init__(
|
|
69
|
+
self, auth_client: globus_sdk.AuthClient, flow_run: dict[str, t.Any]
|
|
70
|
+
) -> None:
|
|
71
|
+
super().__init__(auth_client)
|
|
72
|
+
self.add_items(flow_run.get("run_owner"))
|
|
73
|
+
self.add_items(*flow_run.get("run_managers", ()))
|
|
74
|
+
self.add_items(*flow_run.get("run_monitors", ()))
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def flow_run_format_fields(
|
|
78
|
+
auth_client: globus_sdk.AuthClient,
|
|
79
|
+
flow_run: dict[str, t.Any],
|
|
80
|
+
) -> list[Field]:
|
|
81
|
+
"""
|
|
82
|
+
The standard list of fields to render for a standard api flow-run resource.
|
|
83
|
+
|
|
84
|
+
:param auth_client: An AuthClient, used to resolve principal URNs.
|
|
85
|
+
:param flow_run: The flow run resource, used to pre-register formattable principals.
|
|
86
|
+
"""
|
|
87
|
+
principal = FlowRunPrincipalFormatter(auth_client, flow_run)
|
|
88
|
+
csv_principal_list = formatters.ArrayFormatter(
|
|
89
|
+
element_formatter=principal,
|
|
90
|
+
delimiter=", ",
|
|
91
|
+
)
|
|
92
|
+
csv_list = formatters.ArrayFormatter(delimiter=", ")
|
|
93
|
+
|
|
94
|
+
flow_description_fields = (
|
|
95
|
+
[
|
|
96
|
+
Field("Flow Subtitle", "flow_description.subtitle"),
|
|
97
|
+
Field("Flow Description", "flow_description.description"),
|
|
98
|
+
Field("Flow Keywords", "flow_description.keywords", formatter=csv_list),
|
|
99
|
+
]
|
|
100
|
+
if "flow_description" in flow_run
|
|
101
|
+
else []
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
return [
|
|
105
|
+
Field("Run ID", "run_id"),
|
|
106
|
+
Field("Run Label", "label"),
|
|
107
|
+
Field("Run Tags", "tags", formatter=csv_list),
|
|
108
|
+
Field("Status", "status"),
|
|
109
|
+
Field("Started At", "start_time", formatter=formatters.Date),
|
|
110
|
+
Field("Completed At", "completion_time", formatter=formatters.Date),
|
|
111
|
+
Field("Flow ID", "flow_id"),
|
|
112
|
+
Field("Flow Title", "flow_title"),
|
|
113
|
+
*flow_description_fields,
|
|
114
|
+
Field("Run Owner", "run_owner", formatter=principal),
|
|
115
|
+
Field("Run Managers", "run_managers", formatter=csv_principal_list),
|
|
116
|
+
Field("Run Monitors", "run_monitors", formatter=csv_principal_list),
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
class RegisteredAPIPrincipalFormatter(PrincipalURNFormatter):
|
|
121
|
+
"""A principal formatter which pre-registers all principals for a registered API."""
|
|
122
|
+
|
|
123
|
+
def __init__(
|
|
124
|
+
self, auth_client: globus_sdk.AuthClient, registered_api: dict[str, t.Any]
|
|
125
|
+
) -> None:
|
|
126
|
+
super().__init__(auth_client)
|
|
127
|
+
roles = registered_api.get("roles", {})
|
|
128
|
+
self.add_items(*roles.get("owners", ()))
|
|
129
|
+
self.add_items(*roles.get("administrators", ()))
|
|
130
|
+
self.add_items(*roles.get("viewers", ()))
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def registered_api_format_fields(
|
|
134
|
+
auth_client: globus_sdk.AuthClient,
|
|
135
|
+
registered_api: dict[str, t.Any],
|
|
136
|
+
) -> list[Field]:
|
|
137
|
+
"""
|
|
138
|
+
The standard list of fields to render for a registered API resource.
|
|
139
|
+
|
|
140
|
+
:param auth_client: An AuthClient, used to resolve principal URNs.
|
|
141
|
+
:param registered_api: The registered API resource, used to pre-register
|
|
142
|
+
principals.
|
|
143
|
+
"""
|
|
144
|
+
principal = RegisteredAPIPrincipalFormatter(auth_client, registered_api)
|
|
145
|
+
csv_principal_list = formatters.ArrayFormatter(
|
|
146
|
+
element_formatter=principal,
|
|
147
|
+
delimiter=", ",
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
return [
|
|
151
|
+
Field("Registered API ID", "id"),
|
|
152
|
+
Field("Name", "name"),
|
|
153
|
+
Field("Description", "description"),
|
|
154
|
+
Field("Status", "status"),
|
|
155
|
+
Field("Subscription ID", "subscription_id"),
|
|
156
|
+
Field("Created At", "created_timestamp", formatter=formatters.Date),
|
|
157
|
+
Field("Updated At", "updated_timestamp", formatter=formatters.Date),
|
|
158
|
+
Field("Edited At", "edited_timestamp", formatter=formatters.Date),
|
|
159
|
+
Field(
|
|
160
|
+
"Scheduled Deletion",
|
|
161
|
+
"scheduled_deletion_timestamp",
|
|
162
|
+
formatter=formatters.Date,
|
|
163
|
+
),
|
|
164
|
+
Field("Owners", "roles.owners", formatter=csv_principal_list),
|
|
165
|
+
Field("Administrators", "roles.administrators", formatter=csv_principal_list),
|
|
166
|
+
Field("Viewers", "roles.viewers", formatter=csv_principal_list),
|
|
167
|
+
Field("Target Type", "target.type"),
|
|
168
|
+
Field("OpenAPI Version", "target.openapi_version"),
|
|
169
|
+
Field("Destination Method", "target.destination.method"),
|
|
170
|
+
Field("Destination URL", "target.destination.url"),
|
|
171
|
+
]
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class WebInputPrincipalFormatter(PrincipalURNFormatter):
|
|
175
|
+
"""A principal formatter which pre-registers all principals for a web input."""
|
|
176
|
+
|
|
177
|
+
def __init__(
|
|
178
|
+
self, auth_client: globus_sdk.AuthClient, web_input: dict[str, t.Any]
|
|
179
|
+
) -> None:
|
|
180
|
+
super().__init__(auth_client)
|
|
181
|
+
self.add_items(web_input.get("creator_urn"))
|
|
182
|
+
roles = web_input.get("roles", {})
|
|
183
|
+
self.add_items(*roles.get("viewer_urns", ()))
|
|
184
|
+
self.add_items(*roles.get("respondent_urns", ()))
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class IdentifiedResourceFormatter(FieldFormatter[str]):
|
|
188
|
+
def parse(self, value: t.Any) -> str:
|
|
189
|
+
if not isinstance(value, list) or len(value) != 2:
|
|
190
|
+
raise ValueError("cannot format parenthetical from data of wrong shape")
|
|
191
|
+
name, resource_id = value[0], value[1]
|
|
192
|
+
if not isinstance(resource_id, str):
|
|
193
|
+
raise ValueError("cannot format parenthetical non-str id")
|
|
194
|
+
if isinstance(name, str):
|
|
195
|
+
# If the name can be parsed, render it alongside the resource id
|
|
196
|
+
return f"{name} ({resource_id})"
|
|
197
|
+
# If the name can't be parsed, just render the resource id
|
|
198
|
+
return resource_id
|
|
199
|
+
|
|
200
|
+
def render(self, value: str) -> str:
|
|
201
|
+
return value
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class _OptionFormatter(FieldFormatter[tuple[t.Any, t.Any]]):
|
|
205
|
+
def parse(self, value: t.Any) -> tuple[t.Any, t.Any]:
|
|
206
|
+
if not isinstance(value, dict):
|
|
207
|
+
raise ValueError("non-dict field value")
|
|
208
|
+
elif "option_id" not in value or "label" not in value:
|
|
209
|
+
raise ValueError("missing key 'option_id' and/or 'label'")
|
|
210
|
+
return value["option_id"], value["label"]
|
|
211
|
+
|
|
212
|
+
def render(self, value: tuple[t.Any, t.Any]) -> str:
|
|
213
|
+
option_id, label = value
|
|
214
|
+
return f"* {option_id} {label}"
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
class _WebInputContextRowsFormatter(FieldFormatter[t.List[t.Tuple[str, str]]]):
|
|
218
|
+
"""Renders a list of {field, value} rows as an aligned 'field: value' block."""
|
|
219
|
+
|
|
220
|
+
def parse(self, value: t.Any) -> list[tuple[str, str]]:
|
|
221
|
+
if not isinstance(value, list):
|
|
222
|
+
raise ValueError("non list context rows value")
|
|
223
|
+
rows = []
|
|
224
|
+
for item in value:
|
|
225
|
+
if not isinstance(item, dict) or "field" not in item or "value" not in item:
|
|
226
|
+
raise ValueError("missing key 'field' and/or 'value'")
|
|
227
|
+
rows.append((item["field"], item["value"]))
|
|
228
|
+
return rows
|
|
229
|
+
|
|
230
|
+
def render(self, value: list[tuple[str, str]]) -> str:
|
|
231
|
+
width = max(len(field) for field, _ in value) + 2
|
|
232
|
+
return "\n".join(f"{field}:".ljust(width) + str(val) for field, val in value)
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
def web_input_format_fields(
|
|
236
|
+
auth_client: globus_sdk.AuthClient,
|
|
237
|
+
web_input: dict[str, t.Any],
|
|
238
|
+
) -> list[Field]:
|
|
239
|
+
"""
|
|
240
|
+
The standard list of fields to render for a web input resource.
|
|
241
|
+
|
|
242
|
+
:param auth_client: An AuthClient, used to resolve principal URNs.
|
|
243
|
+
:param web_input: The web input resource, used to pre-register principals.
|
|
244
|
+
"""
|
|
245
|
+
principal = WebInputPrincipalFormatter(auth_client, web_input)
|
|
246
|
+
csv_principal_list = formatters.ArrayFormatter(
|
|
247
|
+
element_formatter=principal,
|
|
248
|
+
delimiter=", ",
|
|
249
|
+
)
|
|
250
|
+
csv_list = formatters.ArrayFormatter(delimiter=", ")
|
|
251
|
+
flow_run_formatter = IdentifiedResourceFormatter()
|
|
252
|
+
|
|
253
|
+
fields = [
|
|
254
|
+
Field("Web Input ID", "id"),
|
|
255
|
+
Field("Status", "status"),
|
|
256
|
+
Field("Title", "context.title"),
|
|
257
|
+
Field("Your Roles", "user_roles", formatter=csv_list),
|
|
258
|
+
Field("Flow", "[flow.title, flow.id]", formatter=flow_run_formatter),
|
|
259
|
+
Field("Run", "[run.label, run.id]", formatter=flow_run_formatter),
|
|
260
|
+
Field("Creator", "creator_urn", formatter=principal),
|
|
261
|
+
Field("Viewers", "roles.viewer_urns", formatter=csv_principal_list),
|
|
262
|
+
Field("Respondents", "roles.respondent_urns", formatter=csv_principal_list),
|
|
263
|
+
Field("Created At", "created_timestamp", formatter=formatters.Date),
|
|
264
|
+
Field("Closed At", "closed_timestamp", formatter=formatters.Date),
|
|
265
|
+
]
|
|
266
|
+
|
|
267
|
+
if web_input.get("context", {}).get("presentation_style") == "table":
|
|
268
|
+
fields += [
|
|
269
|
+
Field(
|
|
270
|
+
"Context",
|
|
271
|
+
"context.rows",
|
|
272
|
+
section=True,
|
|
273
|
+
formatter=_WebInputContextRowsFormatter(),
|
|
274
|
+
)
|
|
275
|
+
]
|
|
276
|
+
else:
|
|
277
|
+
fields += [Field("Context", "context.text", section=True)]
|
|
278
|
+
|
|
279
|
+
if web_input.get("options"):
|
|
280
|
+
formatter = ArrayFormatter(delimiter="\n", element_formatter=_OptionFormatter())
|
|
281
|
+
fields += [Field("Options", "options", section=True, formatter=formatter)]
|
|
282
|
+
|
|
283
|
+
return fields
|
|
@@ -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."""
|