globus-cli 3.22.0__tar.gz → 3.24.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.22.0 → globus-cli-3.24.0}/PKG-INFO +11 -24
- globus-cli-3.24.0/pyproject.toml +79 -0
- globus-cli-3.24.0/setup.cfg +4 -0
- globus-cli-3.24.0/setup.py +3 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/_warnings.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/api.py +8 -13
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/_common.py +31 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/create/__init__.py +1 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/create/guest.py +12 -20
- globus-cli-3.24.0/src/globus_cli/commands/collection/create/mapped.py +317 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/list.py +2 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/update.py +5 -17
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/delete.py +2 -3
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/create.py +3 -16
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/local_id.py +0 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/permission/create.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/permission/update.py +3 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/role/create.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/search.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -11
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/server/add.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/server/delete.py +2 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/server/update.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +10 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/show.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/update.py +5 -9
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/list.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/list.py +4 -9
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/__init__.py +1 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/create/_common.py +6 -4
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/create/guest.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -1
- globus-cli-3.24.0/src/globus_cli/commands/gcp/set_subscription_id.py +67 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/update/guest.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -6
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcs/__init__.py +4 -1
- globus-cli-3.24.0/src/globus_cli/commands/gcs/endpoint/__init__.py +11 -0
- globus-cli-3.24.0/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +72 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/invite/_common.py +2 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/member/add.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/member/invite.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/set_policies.py +3 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/login.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/ls.py +2 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/rm.py +1 -2
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/role/create.py +2 -7
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/list.py +3 -17
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/timer/__init__.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/timer/_common.py +12 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/timer/create/__init__.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/timer/create/transfer.py +13 -19
- globus-cli-3.24.0/src/globus_cli/commands/timer/delete.py +27 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/timer/list.py +4 -4
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/timer/pause.py +3 -3
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/timer/resume.py +5 -5
- globus-cli-3.24.0/src/globus_cli/commands/timer/show.py +21 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/transfer.py +3 -10
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/manager.py +6 -5
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/scopes.py +2 -8
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/tokenstore.py +6 -11
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/__init__.py +4 -5
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/command_state.py +13 -11
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/commands.py +29 -37
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_classes.py +14 -17
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/__init__.py +1 -2
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/delimited.py +1 -10
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +12 -4
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/identity_type.py +0 -3
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/location.py +1 -6
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/notify_param.py +2 -4
- globus-cli-3.24.0/src/globus_cli/parsing/param_types/nullable.py +50 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/task_path.py +1 -6
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/timedelta.py +1 -1
- globus-cli-3.24.0/src/globus_cli/parsing/shared_callbacks.py +19 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/shared_options/__init__.py +86 -91
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/shared_options/endpointish.py +40 -47
- globus-cli-3.24.0/src/globus_cli/parsing/shared_options/id_args.py +30 -0
- globus-cli-3.24.0/src/globus_cli/parsing/shared_options/transfer_task_options.py +122 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/shell_completion.py +8 -3
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/auth.py +3 -9
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/types.py +1 -16
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/version.py +1 -1
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli.egg-info/PKG-INFO +11 -24
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli.egg-info/SOURCES.txt +6 -1
- globus-cli-3.24.0/src/globus_cli.egg-info/requires.txt +23 -0
- globus-cli-3.22.0/setup.cfg +0 -29
- globus-cli-3.22.0/setup.py +0 -86
- globus-cli-3.22.0/src/globus_cli/commands/timer/delete.py +0 -27
- globus-cli-3.22.0/src/globus_cli/commands/timer/show.py +0 -21
- globus-cli-3.22.0/src/globus_cli/parsing/param_types/nullable.py +0 -83
- globus-cli-3.22.0/src/globus_cli/parsing/shared_options/id_args.py +0 -45
- globus-cli-3.22.0/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -164
- globus-cli-3.22.0/src/globus_cli.egg-info/requires.txt +0 -39
- {globus-cli-3.22.0 → globus-cli-3.24.0}/LICENSE +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/README.rst +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/__main__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/activate.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/deactivate.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/is_activated.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/resume.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/start.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/group/update.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/list_commands.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/logout.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/rename.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/session/consent.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/session/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/show.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/update.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/version.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/constants.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/endpointish/endpointish.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/exception_handling/hooks.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/globus_cli_flake8.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/auth_flows.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/errors.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/local_server.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/login_manager/utils.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/parsing/param_types/json_strorfile.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/reflect.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/gcs.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/transfer/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/transfer/activation.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/transfer/client.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/transfer/data.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/transfer/delegate_proxy.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/awscli_text.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/context.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/errors.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/field.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/formatters/auth.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/printer.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli/utils.py +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
- {globus-cli-3.22.0 → globus-cli-3.24.0}/src/globus_cli.egg-info/top_level.txt +0 -0
|
@@ -1,52 +1,39 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: globus-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.24.0
|
|
4
4
|
Summary: Globus CLI
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Author-email: sirosen@globus.org
|
|
5
|
+
Author-email: Stephen Rosen <sirosen@globus.org>
|
|
6
|
+
Project-URL: homepage, https://github.com/globus/globus-cli
|
|
8
7
|
Keywords: globus,cli,command line
|
|
9
8
|
Classifier: Development Status :: 5 - Production/Stable
|
|
10
9
|
Classifier: Intended Audience :: Developers
|
|
11
10
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
11
|
Classifier: Operating System :: POSIX
|
|
13
12
|
Classifier: Programming Language :: Python
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
15
13
|
Classifier: Programming Language :: Python :: 3.8
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.9
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
-
Requires-Python: >=3.
|
|
18
|
+
Requires-Python: >=3.8
|
|
21
19
|
Description-Content-Type: text/x-rst
|
|
22
20
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: globus-sdk==3.
|
|
21
|
+
Requires-Dist: globus-sdk==3.34.0
|
|
24
22
|
Requires-Dist: click<9,>=8.1.4
|
|
25
23
|
Requires-Dist: jmespath==1.0.1
|
|
26
24
|
Requires-Dist: packaging>=17.0
|
|
25
|
+
Requires-Dist: typing_extensions>=4.0; python_version < "3.11"
|
|
27
26
|
Requires-Dist: requests<3.0.0,>=2.19.1
|
|
28
27
|
Requires-Dist: cryptography>=3.3.1
|
|
29
|
-
Requires-Dist: typing_extensions>=4.0; python_version < "3.11"
|
|
30
28
|
Provides-Extra: test
|
|
31
29
|
Requires-Dist: coverage>=7; extra == "test"
|
|
32
30
|
Requires-Dist: pytest>=7; extra == "test"
|
|
33
|
-
Requires-Dist: pytest-xdist<
|
|
34
|
-
Requires-Dist: pytest-timeout<
|
|
35
|
-
Requires-Dist: click-type-test==0.0.
|
|
36
|
-
Requires-Dist: responses==0.
|
|
37
|
-
Requires-Dist: ruamel.yaml==0.
|
|
31
|
+
Requires-Dist: pytest-xdist<4; extra == "test"
|
|
32
|
+
Requires-Dist: pytest-timeout<3; extra == "test"
|
|
33
|
+
Requires-Dist: click-type-test==0.0.7; python_version >= "3.10" and extra == "test"
|
|
34
|
+
Requires-Dist: responses==0.24.1; extra == "test"
|
|
35
|
+
Requires-Dist: ruamel.yaml==0.18.5; extra == "test"
|
|
38
36
|
Requires-Dist: setuptools; python_version >= "3.12" and extra == "test"
|
|
39
|
-
Provides-Extra: development
|
|
40
|
-
Requires-Dist: coverage>=7; extra == "development"
|
|
41
|
-
Requires-Dist: pytest>=7; extra == "development"
|
|
42
|
-
Requires-Dist: pytest-xdist<3; extra == "development"
|
|
43
|
-
Requires-Dist: pytest-timeout<2; extra == "development"
|
|
44
|
-
Requires-Dist: click-type-test==0.0.5; python_version >= "3.10" and extra == "development"
|
|
45
|
-
Requires-Dist: responses==0.23.3; extra == "development"
|
|
46
|
-
Requires-Dist: ruamel.yaml==0.17.32; extra == "development"
|
|
47
|
-
Requires-Dist: setuptools; python_version >= "3.12" and extra == "development"
|
|
48
|
-
Requires-Dist: tox>=4; extra == "development"
|
|
49
|
-
Requires-Dist: scriv==1.3.1; extra == "development"
|
|
50
37
|
|
|
51
38
|
.. image:: https://github.com/globus/globus-cli/workflows/build/badge.svg?event=push
|
|
52
39
|
:alt: build status
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.2"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "globus-cli"
|
|
7
|
+
description = "Globus CLI"
|
|
8
|
+
readme = "README.rst"
|
|
9
|
+
authors = [
|
|
10
|
+
{ name = "Stephen Rosen", email = "sirosen@globus.org" },
|
|
11
|
+
]
|
|
12
|
+
keywords = [
|
|
13
|
+
"globus",
|
|
14
|
+
"cli",
|
|
15
|
+
"command line",
|
|
16
|
+
]
|
|
17
|
+
classifiers = [
|
|
18
|
+
"Development Status :: 5 - Production/Stable",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"License :: OSI Approved :: Apache Software License",
|
|
21
|
+
"Operating System :: POSIX",
|
|
22
|
+
"Programming Language :: Python",
|
|
23
|
+
"Programming Language :: Python :: 3.8",
|
|
24
|
+
"Programming Language :: Python :: 3.9",
|
|
25
|
+
"Programming Language :: Python :: 3.10",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Programming Language :: Python :: 3.12",
|
|
28
|
+
]
|
|
29
|
+
requires-python = ">=3.8"
|
|
30
|
+
dependencies = [
|
|
31
|
+
"globus-sdk==3.34.0",
|
|
32
|
+
"click>=8.1.4,<9",
|
|
33
|
+
"jmespath==1.0.1",
|
|
34
|
+
"packaging>=17.0",
|
|
35
|
+
"typing_extensions>=4.0;python_version<'3.11'",
|
|
36
|
+
# these are dependencies of the SDK, but they are used directly in the CLI
|
|
37
|
+
# declare them here in case the underlying lib ever changes
|
|
38
|
+
"requests>=2.19.1,<3.0.0",
|
|
39
|
+
"cryptography>=3.3.1",
|
|
40
|
+
]
|
|
41
|
+
dynamic = ["version"]
|
|
42
|
+
|
|
43
|
+
[project.urls]
|
|
44
|
+
homepage = "https://github.com/globus/globus-cli"
|
|
45
|
+
|
|
46
|
+
[project.optional-dependencies]
|
|
47
|
+
test = [
|
|
48
|
+
"coverage>=7",
|
|
49
|
+
"pytest>=7",
|
|
50
|
+
"pytest-xdist<4",
|
|
51
|
+
"pytest-timeout<3",
|
|
52
|
+
"click-type-test==0.0.7;python_version>='3.10'",
|
|
53
|
+
"responses==0.24.1",
|
|
54
|
+
# loading test fixture data
|
|
55
|
+
"ruamel.yaml==0.18.5",
|
|
56
|
+
# Python 3.12 needs setuptools.
|
|
57
|
+
"setuptools;python_version>='3.12'",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[project.scripts]
|
|
61
|
+
globus = "globus_cli:main"
|
|
62
|
+
|
|
63
|
+
[tool.setuptools.dynamic.version]
|
|
64
|
+
attr = "globus_cli.version.__version__"
|
|
65
|
+
|
|
66
|
+
[tool.isort]
|
|
67
|
+
profile = "black"
|
|
68
|
+
|
|
69
|
+
[tool.pytest.ini_options]
|
|
70
|
+
addopts = "--timeout 3"
|
|
71
|
+
filterwarnings = ["error"]
|
|
72
|
+
|
|
73
|
+
[tool.scriv]
|
|
74
|
+
version = "literal: src/globus_cli/version.py: __version__"
|
|
75
|
+
categories = "Bugfixes, Enhancements, Other"
|
|
76
|
+
# we're using adoc, we'll produce fragments as 'md' and "fix" later
|
|
77
|
+
format = "md"
|
|
78
|
+
output_file = "changelog.adoc"
|
|
79
|
+
entry_title_template = '{{ version }} ({{ date.strftime("%Y-%m-%d") }})'
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import typing as t
|
|
2
2
|
import warnings
|
|
3
3
|
|
|
4
|
-
if sys.version_info >= (3, 8):
|
|
5
|
-
from typing import Literal
|
|
6
|
-
else:
|
|
7
|
-
from typing_extensions import Literal
|
|
8
|
-
|
|
9
4
|
# this bool turns off all warning controls, handing control of python
|
|
10
5
|
# warnings to the testsuite
|
|
11
6
|
# this ensures that `pytest --filterwarnings error` works
|
|
@@ -13,7 +8,7 @@ _TEST_WARNING_CONTROL: bool = False
|
|
|
13
8
|
|
|
14
9
|
|
|
15
10
|
def simplefilter(
|
|
16
|
-
filterstr: Literal["default", "error", "ignore", "always", "module", "once"]
|
|
11
|
+
filterstr: t.Literal["default", "error", "ignore", "always", "module", "once"]
|
|
17
12
|
) -> None:
|
|
18
13
|
"""
|
|
19
14
|
wrap `warnings.simplefilter` with a check on `_TEST_WARNING_CONTROL`
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
-
import sys
|
|
5
4
|
import typing as t
|
|
6
5
|
import uuid
|
|
7
6
|
from collections import defaultdict
|
|
@@ -16,11 +15,6 @@ from globus_cli.parsing import command, endpoint_id_arg, group, mutex_option_gro
|
|
|
16
15
|
from globus_cli.termio import display
|
|
17
16
|
from globus_cli.types import ServiceNameLiteral
|
|
18
17
|
|
|
19
|
-
if sys.version_info >= (3, 8):
|
|
20
|
-
from typing import Literal
|
|
21
|
-
else:
|
|
22
|
-
from typing_extensions import Literal
|
|
23
|
-
|
|
24
18
|
C = t.TypeVar("C", bound=t.Union[t.Callable, click.Command])
|
|
25
19
|
|
|
26
20
|
|
|
@@ -255,13 +249,13 @@ def _service_command_params(cmd: C) -> C:
|
|
|
255
249
|
def _execute_service_command(
|
|
256
250
|
client: globus_sdk.BaseClient,
|
|
257
251
|
*,
|
|
258
|
-
method: Literal["HEAD", "GET", "PUT", "POST", "PATCH", "DELETE"],
|
|
252
|
+
method: t.Literal["HEAD", "GET", "PUT", "POST", "PATCH", "DELETE"],
|
|
259
253
|
path: str,
|
|
260
254
|
query_param: tuple[tuple[str, str], ...],
|
|
261
255
|
header: tuple[tuple[str, str], ...],
|
|
262
256
|
body: str | None,
|
|
263
257
|
body_file: t.TextIO | None,
|
|
264
|
-
content_type: Literal["json", "form", "text", "none", "auto"],
|
|
258
|
+
content_type: t.Literal["json", "form", "text", "none", "auto"],
|
|
265
259
|
allow_errors: bool,
|
|
266
260
|
allow_redirects: bool,
|
|
267
261
|
no_retry: bool,
|
|
@@ -356,7 +350,7 @@ def api_command() -> None:
|
|
|
356
350
|
|
|
357
351
|
# note: this must be written as a separate call and not inlined into the loop body
|
|
358
352
|
# this ensures that it acts as a closure over 'service_name'
|
|
359
|
-
def build_command(service_name: ServiceNameLiteral | Literal["gcs"]) -> click.Command:
|
|
353
|
+
def build_command(service_name: ServiceNameLiteral | t.Literal["gcs"]) -> click.Command:
|
|
360
354
|
helptext = f"""\
|
|
361
355
|
Make API calls to Globus {service_name.title()}
|
|
362
356
|
|
|
@@ -377,13 +371,13 @@ sends a 'GET' request to '{_get_url(service_name)}foo/bar'
|
|
|
377
371
|
def service_command(
|
|
378
372
|
login_manager: LoginManager,
|
|
379
373
|
*,
|
|
380
|
-
method: Literal["HEAD", "GET", "PUT", "POST", "PATCH", "DELETE"],
|
|
374
|
+
method: t.Literal["HEAD", "GET", "PUT", "POST", "PATCH", "DELETE"],
|
|
381
375
|
path: str,
|
|
382
376
|
query_param: tuple[tuple[str, str], ...],
|
|
383
377
|
header: tuple[tuple[str, str], ...],
|
|
384
378
|
body: str | None,
|
|
385
379
|
body_file: t.TextIO | None,
|
|
386
|
-
content_type: Literal["json", "form", "text", "none", "auto"],
|
|
380
|
+
content_type: t.Literal["json", "form", "text", "none", "auto"],
|
|
387
381
|
allow_errors: bool,
|
|
388
382
|
allow_redirects: bool,
|
|
389
383
|
no_retry: bool,
|
|
@@ -419,13 +413,13 @@ sends a 'GET' request to '{_get_url(service_name)}foo/bar'
|
|
|
419
413
|
login_manager: LoginManager,
|
|
420
414
|
*,
|
|
421
415
|
endpoint_id: uuid.UUID,
|
|
422
|
-
method: Literal["HEAD", "GET", "PUT", "POST", "PATCH", "DELETE"],
|
|
416
|
+
method: t.Literal["HEAD", "GET", "PUT", "POST", "PATCH", "DELETE"],
|
|
423
417
|
path: str,
|
|
424
418
|
query_param: tuple[tuple[str, str], ...],
|
|
425
419
|
header: tuple[tuple[str, str], ...],
|
|
426
420
|
body: str | None,
|
|
427
421
|
body_file: t.TextIO | None,
|
|
428
|
-
content_type: Literal["json", "form", "text", "none", "auto"],
|
|
422
|
+
content_type: t.Literal["json", "form", "text", "none", "auto"],
|
|
429
423
|
allow_errors: bool,
|
|
430
424
|
allow_redirects: bool,
|
|
431
425
|
no_retry: bool,
|
|
@@ -454,5 +448,6 @@ sends a 'GET' request to '{_get_url(service_name)}foo/bar'
|
|
|
454
448
|
|
|
455
449
|
for service_name_ in CLI_SCOPE_REQUIREMENTS:
|
|
456
450
|
api_command.add_command(build_command(service_name_))
|
|
451
|
+
del service_name_
|
|
457
452
|
|
|
458
453
|
api_command.add_command(build_command("gcs"))
|
|
@@ -1,11 +1,42 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import click
|
|
3
4
|
import globus_sdk
|
|
4
5
|
|
|
6
|
+
from globus_cli.login_manager.utils import get_current_identity_id
|
|
5
7
|
from globus_cli.termio import Field, formatters
|
|
6
8
|
from globus_cli.types import DATA_CONTAINER_T
|
|
7
9
|
|
|
8
10
|
|
|
11
|
+
class LazyCurrentIdentity:
|
|
12
|
+
def __init__(self, value: str | None) -> None:
|
|
13
|
+
self._value = value
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def value(self) -> str:
|
|
17
|
+
if self._value is None:
|
|
18
|
+
self._value = get_current_identity_id()
|
|
19
|
+
return str(self._value)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _identity_id_callback(
|
|
23
|
+
ctx: click.Context | None,
|
|
24
|
+
param: click.Parameter | None,
|
|
25
|
+
value: str | None,
|
|
26
|
+
) -> LazyCurrentIdentity:
|
|
27
|
+
return LazyCurrentIdentity(value)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
# NB: this is implemented using a callback rather than a custom type because this lets
|
|
31
|
+
# us ensure that we convert the default of `None` to `LazyCurrentIdentity(None)`
|
|
32
|
+
# a custom type would still pass a default of `None` unless a callback were specified
|
|
33
|
+
identity_id_option = click.option(
|
|
34
|
+
"--identity-id",
|
|
35
|
+
help="User who should own the collection (defaults to the current user)",
|
|
36
|
+
callback=_identity_id_callback,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
|
|
9
40
|
def filter_fields(check_fields: list[Field], data: DATA_CONTAINER_T) -> list[Field]:
|
|
10
41
|
return [f for f in check_fields if f.get_value(data) is not None]
|
|
11
42
|
|
|
@@ -8,14 +8,15 @@ import globus_sdk
|
|
|
8
8
|
import globus_sdk.experimental.auth_requirements_error
|
|
9
9
|
|
|
10
10
|
from globus_cli.commands.collection._common import (
|
|
11
|
+
LazyCurrentIdentity,
|
|
11
12
|
filter_fields,
|
|
13
|
+
identity_id_option,
|
|
12
14
|
standard_collection_fields,
|
|
13
15
|
)
|
|
14
16
|
from globus_cli.constants import ExplicitNullType
|
|
15
17
|
from globus_cli.endpointish import EntityType
|
|
16
18
|
from globus_cli.login_manager import LoginManager, MissingLoginError
|
|
17
19
|
from globus_cli.login_manager.context import LoginContext
|
|
18
|
-
from globus_cli.login_manager.utils import get_current_identity_id
|
|
19
20
|
from globus_cli.parsing import command, endpointish_params, mutex_option_group
|
|
20
21
|
from globus_cli.services.gcs import CustomGCSClient
|
|
21
22
|
from globus_cli.termio import TextMode, display
|
|
@@ -41,17 +42,7 @@ from globus_cli.termio import TextMode, display
|
|
|
41
42
|
)
|
|
42
43
|
@mutex_option_group("--user-credential-id", "--local-username")
|
|
43
44
|
@endpointish_params.create(name="collection")
|
|
44
|
-
@
|
|
45
|
-
"--identity-id",
|
|
46
|
-
default=None,
|
|
47
|
-
help="User who should own the collection (defaults to the current user)",
|
|
48
|
-
)
|
|
49
|
-
@click.option(
|
|
50
|
-
"--public/--private",
|
|
51
|
-
"public",
|
|
52
|
-
default=True,
|
|
53
|
-
help="Set the collection to be public or private",
|
|
54
|
-
)
|
|
45
|
+
@identity_id_option
|
|
55
46
|
@click.option(
|
|
56
47
|
"--enable-https/--disable-https",
|
|
57
48
|
"enable_https",
|
|
@@ -77,7 +68,7 @@ def collection_create_guest(
|
|
|
77
68
|
display_name: str,
|
|
78
69
|
enable_https: bool | None,
|
|
79
70
|
force_encryption: bool | None,
|
|
80
|
-
identity_id:
|
|
71
|
+
identity_id: LazyCurrentIdentity,
|
|
81
72
|
info_link: str | None | ExplicitNullType,
|
|
82
73
|
keywords: list[str] | None,
|
|
83
74
|
public: bool,
|
|
@@ -101,7 +92,7 @@ def collection_create_guest(
|
|
|
101
92
|
|
|
102
93
|
if not user_credential_id:
|
|
103
94
|
user_credential_id = _select_user_credential_id(
|
|
104
|
-
gcs_client, mapped_collection_id, local_username, identity_id
|
|
95
|
+
gcs_client, mapped_collection_id, local_username, identity_id.value
|
|
105
96
|
)
|
|
106
97
|
|
|
107
98
|
converted_kwargs: dict[str, t.Any] = ExplicitNullType.nullify_dict(
|
|
@@ -115,7 +106,7 @@ def collection_create_guest(
|
|
|
115
106
|
"display_name": display_name,
|
|
116
107
|
"enable_https": enable_https,
|
|
117
108
|
"force_encryption": force_encryption,
|
|
118
|
-
"identity_id": identity_id,
|
|
109
|
+
"identity_id": identity_id.value,
|
|
119
110
|
"info_link": info_link,
|
|
120
111
|
"keywords": keywords,
|
|
121
112
|
"mapped_collection_id": mapped_collection_id,
|
|
@@ -155,7 +146,7 @@ def _select_user_credential_id(
|
|
|
155
146
|
gcs_client: CustomGCSClient,
|
|
156
147
|
mapped_collection_id: uuid.UUID,
|
|
157
148
|
local_username: str | None,
|
|
158
|
-
identity_id: str
|
|
149
|
+
identity_id: str,
|
|
159
150
|
) -> uuid.UUID:
|
|
160
151
|
"""
|
|
161
152
|
In the case that the user didn't specify a user credential id, see if we can select
|
|
@@ -167,9 +158,6 @@ def _select_user_credential_id(
|
|
|
167
158
|
mapped_collection = gcs_client.get_collection(mapped_collection_id)
|
|
168
159
|
storage_gateway_id = mapped_collection["storage_gateway_id"]
|
|
169
160
|
|
|
170
|
-
if not identity_id:
|
|
171
|
-
identity_id = get_current_identity_id()
|
|
172
|
-
|
|
173
161
|
# Grab the list of user credentials which match the endpoint, storage gateway,
|
|
174
162
|
# identity id, and local username (if specified)
|
|
175
163
|
user_creds = [
|
|
@@ -209,7 +197,11 @@ def _is_session_timeout_error(e: globus_sdk.GCSAPIError) -> bool:
|
|
|
209
197
|
Detect session timeouts related to HA collections.
|
|
210
198
|
This is a hacky workaround until we have better GARE support across the CLI.
|
|
211
199
|
"""
|
|
212
|
-
|
|
200
|
+
detail = getattr(e, "detail", {})
|
|
201
|
+
if not isinstance(detail, dict):
|
|
202
|
+
return False
|
|
203
|
+
|
|
204
|
+
detail_type = detail.get("DATA_TYPE")
|
|
213
205
|
return (
|
|
214
206
|
e.http_status == 403
|
|
215
207
|
and isinstance(detail_type, str)
|