globus-cli 3.31.0__tar.gz → 3.33.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.31.0/src/globus_cli.egg-info → globus_cli-3.33.0}/PKG-INFO +5 -13
- {globus_cli-3.31.0 → globus_cli-3.33.0}/pyproject.toml +37 -14
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/_warnings.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/api.py +10 -4
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/cli_profile_list.py +7 -4
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/_common.py +3 -4
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/create/guest.py +5 -2
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/create/mapped.py +1 -1
- globus_cli-3.33.0/src/globus_cli/commands/collection/delete.py +30 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/_common.py +14 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/create.py +5 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/show.py +1 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/update.py +10 -3
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/search.py +26 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +1 -7
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/resume.py +7 -15
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/validate.py +2 -4
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/set_subscription_id.py +1 -8
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +7 -7
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/update.py +1 -6
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/_common.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/login.py +1 -4
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/logout.py +6 -14
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/show.py +3 -10
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/show.py +3 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/create/transfer.py +41 -19
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/resume.py +7 -15
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/transfer.py +34 -8
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/endpointish.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/exception_handling/hooks.py +124 -35
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/globus_cli_flake8.py +2 -2
- globus_cli-3.33.0/src/globus_cli/login_manager/__init__.py +14 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/auth_flows.py +11 -14
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/errors.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/manager.py +43 -30
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/scopes.py +3 -10
- globus_cli-3.33.0/src/globus_cli/login_manager/storage.py +256 -0
- globus_cli-3.33.0/src/globus_cli/login_manager/utils.py +5 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_classes.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +5 -2
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/task_path.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shell_completion.py +2 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/client.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/data.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/__init__.py +1 -1
- globus_cli-3.33.0/src/globus_cli/termio/_display.py +202 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/field.py +2 -2
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/auth.py +3 -1
- globus_cli-3.33.0/src/globus_cli/termio/printers/__init__.py +16 -0
- globus_cli-3.33.0/src/globus_cli/termio/printers/base.py +34 -0
- globus_cli-3.33.0/src/globus_cli/termio/printers/custom_printer.py +17 -0
- globus_cli-3.33.0/src/globus_cli/termio/printers/json_printer.py +38 -0
- globus_cli-3.33.0/src/globus_cli/termio/printers/record_printer.py +137 -0
- globus_cli-3.33.0/src/globus_cli/termio/printers/table_printer.py +135 -0
- globus_cli-3.33.0/src/globus_cli/termio/printers/unix_printer/__init__.py +3 -0
- {globus_cli-3.31.0/src/globus_cli/termio → globus_cli-3.33.0/src/globus_cli/termio/printers/unix_printer}/awscli_text.py +2 -2
- globus_cli-3.33.0/src/globus_cli/termio/printers/unix_printer/unix_printer.py +43 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/version.py +1 -1
- {globus_cli-3.31.0 → globus_cli-3.33.0/src/globus_cli.egg-info}/PKG-INFO +5 -13
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli.egg-info/SOURCES.txt +12 -4
- globus_cli-3.33.0/src/globus_cli.egg-info/requires.txt +8 -0
- globus_cli-3.31.0/src/globus_cli/commands/collection/delete.py +0 -18
- globus_cli-3.31.0/src/globus_cli/login_manager/__init__.py +0 -30
- globus_cli-3.31.0/src/globus_cli/login_manager/tokenstore.py +0 -265
- globus_cli-3.31.0/src/globus_cli/login_manager/utils.py +0 -22
- globus_cli-3.31.0/src/globus_cli/termio/printer.py +0 -347
- globus_cli-3.31.0/src/globus_cli.egg-info/requires.txt +0 -22
- {globus_cli-3.31.0 → globus_cli-3.33.0}/LICENSE +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/README.rst +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/setup.cfg +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/setup.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/activate.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/deactivate.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/is_activated.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/start.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/list_commands.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/consent.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/delete.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/list.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/pause.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/show.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/local_server.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/commands.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/delimited.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/identity_type.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/json_strorfile.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/location.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/notify_param.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/nullable.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/reflect.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/activation.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/context.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/types.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/utils.py +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
- {globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: globus-cli
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.33.0
|
|
4
4
|
Summary: Globus CLI
|
|
5
5
|
Author-email: Stephen Rosen <sirosen@globus.org>
|
|
6
6
|
Project-URL: homepage, https://github.com/globus/globus-cli
|
|
@@ -15,24 +15,16 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
19
|
Requires-Python: >=3.8
|
|
19
20
|
Description-Content-Type: text/x-rst
|
|
20
21
|
License-File: LICENSE
|
|
21
|
-
Requires-Dist: globus-sdk==3.
|
|
22
|
+
Requires-Dist: globus-sdk==3.51.0
|
|
22
23
|
Requires-Dist: click<9,>=8.1.4
|
|
23
24
|
Requires-Dist: jmespath==1.0.1
|
|
24
25
|
Requires-Dist: packaging>=17.0
|
|
25
26
|
Requires-Dist: typing_extensions>=4.0; python_version < "3.11"
|
|
26
|
-
Requires-Dist: requests<3.0.0,>=2.
|
|
27
|
-
Provides-Extra: test
|
|
28
|
-
Requires-Dist: coverage>=7; extra == "test"
|
|
29
|
-
Requires-Dist: pytest>=7; extra == "test"
|
|
30
|
-
Requires-Dist: pytest-xdist<4; extra == "test"
|
|
31
|
-
Requires-Dist: pytest-timeout<3; extra == "test"
|
|
32
|
-
Requires-Dist: click-type-test==0.0.7; python_version >= "3.10" and extra == "test"
|
|
33
|
-
Requires-Dist: responses==0.25.3; extra == "test"
|
|
34
|
-
Requires-Dist: ruamel.yaml==0.18.6; extra == "test"
|
|
35
|
-
Requires-Dist: setuptools; python_version >= "3.12" and extra == "test"
|
|
27
|
+
Requires-Dist: requests<3.0.0,>=2.32.3
|
|
36
28
|
|
|
37
29
|
.. image:: https://github.com/globus/globus-cli/workflows/build/badge.svg?event=push
|
|
38
30
|
:alt: build status
|
|
@@ -25,39 +25,61 @@ classifiers = [
|
|
|
25
25
|
"Programming Language :: Python :: 3.10",
|
|
26
26
|
"Programming Language :: Python :: 3.11",
|
|
27
27
|
"Programming Language :: Python :: 3.12",
|
|
28
|
+
"Programming Language :: Python :: 3.13",
|
|
28
29
|
]
|
|
29
30
|
requires-python = ">=3.8"
|
|
30
31
|
dependencies = [
|
|
31
|
-
"globus-sdk==3.
|
|
32
|
+
"globus-sdk==3.51.0",
|
|
32
33
|
"click>=8.1.4,<9",
|
|
33
34
|
"jmespath==1.0.1",
|
|
34
35
|
"packaging>=17.0",
|
|
35
36
|
"typing_extensions>=4.0;python_version<'3.11'",
|
|
36
37
|
# these are dependencies of the SDK, but they are used directly in the CLI
|
|
37
38
|
# declare them here in case the underlying lib ever changes
|
|
38
|
-
"requests>=2.
|
|
39
|
+
"requests>=2.32.3,<3.0.0",
|
|
39
40
|
]
|
|
40
41
|
dynamic = ["version"]
|
|
41
42
|
|
|
42
43
|
[project.urls]
|
|
43
44
|
homepage = "https://github.com/globus/globus-cli"
|
|
44
45
|
|
|
45
|
-
[project.
|
|
46
|
+
[project.scripts]
|
|
47
|
+
globus = "globus_cli:main"
|
|
48
|
+
|
|
49
|
+
[dependency-groups]
|
|
50
|
+
coverage = [
|
|
51
|
+
"coverage[toml]>=7"
|
|
52
|
+
]
|
|
46
53
|
test = [
|
|
47
|
-
"coverage
|
|
54
|
+
{include-group = "coverage"},
|
|
48
55
|
"pytest>=7",
|
|
49
56
|
"pytest-xdist<4",
|
|
50
57
|
"pytest-timeout<3",
|
|
51
|
-
"click-type-test==
|
|
52
|
-
"responses==0.25.
|
|
58
|
+
"click-type-test==1.1.0;python_version>='3.10'",
|
|
59
|
+
"responses==0.25.6",
|
|
53
60
|
# loading test fixture data
|
|
54
|
-
"ruamel.yaml==0.18.
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
"ruamel.yaml==0.18.10",
|
|
62
|
+
]
|
|
63
|
+
test-mindeps = [
|
|
64
|
+
{include-group = "test"},
|
|
65
|
+
"click==8.1.4",
|
|
66
|
+
"requests==2.32.3",
|
|
67
|
+
"pyjwt==2.0.0",
|
|
68
|
+
"cryptography==3.3.1",
|
|
69
|
+
"packaging==17.0",
|
|
70
|
+
"typing_extensions==4.0",
|
|
71
|
+
]
|
|
72
|
+
typing = [
|
|
73
|
+
"mypy==1.15.0",
|
|
74
|
+
"types-jwt",
|
|
75
|
+
"types-requests",
|
|
76
|
+
"types-jmespath",
|
|
77
|
+
]
|
|
78
|
+
# `dev` is what's installed if you `make install`
|
|
79
|
+
dev = [
|
|
80
|
+
{include-group = "test"},
|
|
81
|
+
{include-group = "typing"},
|
|
57
82
|
]
|
|
58
|
-
|
|
59
|
-
[project.scripts]
|
|
60
|
-
globus = "globus_cli:main"
|
|
61
83
|
|
|
62
84
|
[tool.setuptools.dynamic.version]
|
|
63
85
|
attr = "globus_cli.version.__version__"
|
|
@@ -66,7 +88,7 @@ attr = "globus_cli.version.__version__"
|
|
|
66
88
|
profile = "black"
|
|
67
89
|
|
|
68
90
|
[tool.pytest.ini_options]
|
|
69
|
-
addopts = "--timeout 3"
|
|
91
|
+
addopts = "--timeout 3 --color=yes"
|
|
70
92
|
filterwarnings = ["error"]
|
|
71
93
|
|
|
72
94
|
[tool.scriv]
|
|
@@ -79,6 +101,7 @@ entry_title_template = '{{ version }} ({{ date.strftime("%Y-%m-%d") }})'
|
|
|
79
101
|
|
|
80
102
|
[tool.mypy]
|
|
81
103
|
strict = true
|
|
104
|
+
sqlite_cache = true
|
|
82
105
|
|
|
83
106
|
# additional settings (not part of strict=true)
|
|
84
107
|
warn_unreachable = true
|
|
@@ -89,5 +112,5 @@ disallow_untyped_defs = false
|
|
|
89
112
|
disallow_incomplete_defs = false
|
|
90
113
|
module = [
|
|
91
114
|
"globus_cli.services.transfer.recursive_ls",
|
|
92
|
-
"globus_cli.termio.awscli_text",
|
|
115
|
+
"globus_cli.termio.printers.unix_printer.awscli_text",
|
|
93
116
|
]
|
|
@@ -8,7 +8,7 @@ _TEST_WARNING_CONTROL: bool = False
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def simplefilter(
|
|
11
|
-
filterstr: t.Literal["default", "error", "ignore", "always", "module", "once"]
|
|
11
|
+
filterstr: t.Literal["default", "error", "ignore", "always", "module", "once"],
|
|
12
12
|
) -> None:
|
|
13
13
|
"""
|
|
14
14
|
Wrap `warnings.simplefilter` with a check on `_TEST_WARNING_CONTROL`.
|
|
@@ -23,14 +23,17 @@ class QueryParamType(click.ParamType):
|
|
|
23
23
|
return "Key=Value"
|
|
24
24
|
|
|
25
25
|
def get_type_annotation(self, param: click.Parameter) -> type:
|
|
26
|
-
|
|
26
|
+
# this is a "<typing special form>" vs "type" issue, so type ignore for now
|
|
27
|
+
# click-type-test has an issue for improving this, with details, see:
|
|
28
|
+
# https://github.com/sirosen/click-type-test/issues/14
|
|
29
|
+
return t.Tuple[str, str] # type: ignore[return-value]
|
|
27
30
|
|
|
28
31
|
def convert(
|
|
29
32
|
self,
|
|
30
33
|
value: str | None,
|
|
31
34
|
param: click.Parameter | None,
|
|
32
35
|
ctx: click.Context | None,
|
|
33
|
-
) ->
|
|
36
|
+
) -> tuple[str, str] | None:
|
|
34
37
|
value = super().convert(value, param, ctx)
|
|
35
38
|
if value is None:
|
|
36
39
|
return None
|
|
@@ -45,14 +48,17 @@ class HeaderParamType(click.ParamType):
|
|
|
45
48
|
return "Key:Value"
|
|
46
49
|
|
|
47
50
|
def get_type_annotation(self, param: click.Parameter) -> type:
|
|
48
|
-
|
|
51
|
+
# this is a "<typing special form>" vs "type" issue, so type ignore for now
|
|
52
|
+
# click-type-test has an issue for improving this, with details, see:
|
|
53
|
+
# https://github.com/sirosen/click-type-test/issues/14
|
|
54
|
+
return t.Tuple[str, str] # type: ignore[return-value]
|
|
49
55
|
|
|
50
56
|
def convert(
|
|
51
57
|
self,
|
|
52
58
|
value: str | None,
|
|
53
59
|
param: click.Parameter | None,
|
|
54
60
|
ctx: click.Context | None,
|
|
55
|
-
) ->
|
|
61
|
+
) -> tuple[str, str] | None:
|
|
56
62
|
value = super().convert(value, param, ctx)
|
|
57
63
|
if value is None:
|
|
58
64
|
return None
|
|
@@ -5,7 +5,7 @@ import typing as t
|
|
|
5
5
|
|
|
6
6
|
import click
|
|
7
7
|
|
|
8
|
-
from globus_cli.login_manager import
|
|
8
|
+
from globus_cli.login_manager import LoginManager, is_client_login
|
|
9
9
|
from globus_cli.parsing import command
|
|
10
10
|
from globus_cli.termio import Field, display, formatters
|
|
11
11
|
|
|
@@ -29,13 +29,16 @@ def _profilestr_to_datadict(s: str) -> dict[str, t.Any] | None:
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def _parse_and_filter_profiles(
|
|
32
|
+
login_manager: LoginManager,
|
|
32
33
|
all: bool,
|
|
33
34
|
) -> tuple[list[dict[str, t.Any]], list[dict[str, t.Any]]]:
|
|
34
35
|
globus_env = os.getenv("GLOBUS_SDK_ENVIRONMENT", "production")
|
|
35
36
|
|
|
36
37
|
client_profiles = []
|
|
37
38
|
user_profiles = []
|
|
38
|
-
for n in
|
|
39
|
+
for n in login_manager.storage.adapter.iter_namespaces(
|
|
40
|
+
include_config_namespaces=True
|
|
41
|
+
):
|
|
39
42
|
data = _profilestr_to_datadict(n)
|
|
40
43
|
if not data: # skip any parse failures
|
|
41
44
|
continue
|
|
@@ -86,8 +89,8 @@ def cli_profile_list(*, all: bool) -> None:
|
|
|
86
89
|
These are the values for GLOBUS_PROFILE which have been recorded, as well as
|
|
87
90
|
GLOBUS_CLI_CLIENT_ID values which have been used.
|
|
88
91
|
"""
|
|
89
|
-
|
|
90
|
-
client_profiles, user_profiles = _parse_and_filter_profiles(all)
|
|
92
|
+
login_manager = LoginManager()
|
|
93
|
+
client_profiles, user_profiles = _parse_and_filter_profiles(login_manager, all)
|
|
91
94
|
|
|
92
95
|
if user_profiles:
|
|
93
96
|
fields = [
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import click
|
|
4
4
|
import globus_sdk
|
|
5
5
|
|
|
6
|
-
from globus_cli.login_manager
|
|
6
|
+
from globus_cli.login_manager import LoginManager
|
|
7
7
|
from globus_cli.termio import Field, formatters
|
|
8
8
|
from globus_cli.types import DATA_CONTAINER_T
|
|
9
9
|
|
|
@@ -12,10 +12,9 @@ class LazyCurrentIdentity:
|
|
|
12
12
|
def __init__(self, value: str | None) -> None:
|
|
13
13
|
self._value = value
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
def value(self) -> str:
|
|
15
|
+
def resolve(self, login_manager: LoginManager) -> str:
|
|
17
16
|
if self._value is None:
|
|
18
|
-
self._value = get_current_identity_id()
|
|
17
|
+
self._value = login_manager.get_current_identity_id()
|
|
19
18
|
return str(self._value)
|
|
20
19
|
|
|
21
20
|
|
|
@@ -91,7 +91,10 @@ def collection_create_guest(
|
|
|
91
91
|
|
|
92
92
|
if not user_credential_id:
|
|
93
93
|
user_credential_id = _select_user_credential_id(
|
|
94
|
-
gcs_client,
|
|
94
|
+
gcs_client,
|
|
95
|
+
mapped_collection_id,
|
|
96
|
+
local_username,
|
|
97
|
+
identity_id.resolve(login_manager),
|
|
95
98
|
)
|
|
96
99
|
|
|
97
100
|
converted_kwargs: dict[str, t.Any] = ExplicitNullType.nullify_dict(
|
|
@@ -105,7 +108,7 @@ def collection_create_guest(
|
|
|
105
108
|
"display_name": display_name,
|
|
106
109
|
"enable_https": enable_https,
|
|
107
110
|
"force_encryption": force_encryption,
|
|
108
|
-
"identity_id": identity_id.
|
|
111
|
+
"identity_id": identity_id.resolve(login_manager),
|
|
109
112
|
"info_link": info_link,
|
|
110
113
|
"keywords": keywords,
|
|
111
114
|
"mapped_collection_id": mapped_collection_id,
|
|
@@ -284,7 +284,7 @@ def collection_create_mapped(
|
|
|
284
284
|
"domain_name": domain_name,
|
|
285
285
|
"enable_https": enable_https,
|
|
286
286
|
"force_encryption": force_encryption,
|
|
287
|
-
"identity_id": identity_id.
|
|
287
|
+
"identity_id": identity_id.resolve(login_manager),
|
|
288
288
|
"info_link": info_link,
|
|
289
289
|
"keywords": keywords,
|
|
290
290
|
"organization": organization,
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import uuid
|
|
2
|
+
|
|
3
|
+
from globus_cli.login_manager import LoginManager
|
|
4
|
+
from globus_cli.parsing import collection_id_arg, command
|
|
5
|
+
from globus_cli.termio import display
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@command("delete", short_help="Delete an existing Collection.")
|
|
9
|
+
@collection_id_arg
|
|
10
|
+
@LoginManager.requires_login("transfer")
|
|
11
|
+
def collection_delete(login_manager: LoginManager, *, collection_id: uuid.UUID) -> None:
|
|
12
|
+
"""
|
|
13
|
+
Delete an existing Collection.
|
|
14
|
+
|
|
15
|
+
This requires that you are an owner or administrator on the Collection.
|
|
16
|
+
|
|
17
|
+
Endpoint owners and administrators may delete Collections on the Endpoint.
|
|
18
|
+
For Guest Collections, administrators of the Mapped Collection may also delete.
|
|
19
|
+
|
|
20
|
+
If the collection has the 'delete_protection' property set to true, the Collection
|
|
21
|
+
can not be deleted.
|
|
22
|
+
|
|
23
|
+
All Collection-specific roles and 'sharing_policies' are also deleted.
|
|
24
|
+
|
|
25
|
+
If a Mapped Collection is deleted, then all Guest Collections and roles associated
|
|
26
|
+
with it are also deleted.
|
|
27
|
+
"""
|
|
28
|
+
gcs_client = login_manager.get_gcs_client(collection_id=collection_id)
|
|
29
|
+
res = gcs_client.delete_collection(collection_id)
|
|
30
|
+
display(res, text_mode=display.RAW, response_key="code")
|
{globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/_common.py
RENAMED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import typing as t
|
|
4
|
+
|
|
5
|
+
import click
|
|
6
|
+
|
|
3
7
|
from globus_cli.termio import formatters
|
|
8
|
+
from globus_cli.types import AnyCommand
|
|
9
|
+
|
|
10
|
+
C = t.TypeVar("C", bound=AnyCommand)
|
|
4
11
|
|
|
5
12
|
|
|
6
13
|
class AclPrincipalFormatter(formatters.auth.PrincipalDictFormatter):
|
|
@@ -18,3 +25,10 @@ class AclPrincipalFormatter(formatters.auth.PrincipalDictFormatter):
|
|
|
18
25
|
# it could be made multi-environment using `globus_sdk.config.get_webapp_url()`
|
|
19
26
|
def render_group_id(self, group_id: str) -> str:
|
|
20
27
|
return f"https://app.globus.org/groups/{group_id}"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def expiration_date_option(f: C) -> C:
|
|
31
|
+
return click.option(
|
|
32
|
+
"--expiration-date",
|
|
33
|
+
help="Expiration date for the permission in ISO 8601 format",
|
|
34
|
+
)(f)
|
{globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/create.py
RENAMED
|
@@ -9,6 +9,8 @@ from globus_cli.login_manager import LoginManager
|
|
|
9
9
|
from globus_cli.parsing import ENDPOINT_PLUS_REQPATH, command, security_principal_opts
|
|
10
10
|
from globus_cli.termio import Field, display
|
|
11
11
|
|
|
12
|
+
from ._common import expiration_date_option
|
|
13
|
+
|
|
12
14
|
|
|
13
15
|
@command(
|
|
14
16
|
"create",
|
|
@@ -50,6 +52,7 @@ $ globus endpoint permission create $ep_id:/ --permissions rw --identity go@glob
|
|
|
50
52
|
help="A custom message to add to email notifications",
|
|
51
53
|
)
|
|
52
54
|
@click.argument("endpoint_plus_path", type=ENDPOINT_PLUS_REQPATH)
|
|
55
|
+
@expiration_date_option
|
|
53
56
|
@LoginManager.requires_login("auth", "transfer")
|
|
54
57
|
def create_command(
|
|
55
58
|
login_manager: LoginManager,
|
|
@@ -59,6 +62,7 @@ def create_command(
|
|
|
59
62
|
endpoint_plus_path: tuple[uuid.UUID, str | None],
|
|
60
63
|
notify_email: str | None,
|
|
61
64
|
notify_message: str | None,
|
|
65
|
+
expiration_date: str | None,
|
|
62
66
|
) -> None:
|
|
63
67
|
"""
|
|
64
68
|
Create a new access control rule on the target endpoint, granting users new
|
|
@@ -105,6 +109,7 @@ def create_command(
|
|
|
105
109
|
path=path,
|
|
106
110
|
notify_email=notify_email,
|
|
107
111
|
notify_message=notify_message,
|
|
112
|
+
expiration_date=expiration_date,
|
|
108
113
|
)
|
|
109
114
|
|
|
110
115
|
res = transfer_client.add_endpoint_acl_rule(endpoint_id, rule_data)
|
{globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/update.py
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import typing as t
|
|
2
4
|
import uuid
|
|
3
5
|
|
|
@@ -7,6 +9,8 @@ from globus_cli.login_manager import LoginManager
|
|
|
7
9
|
from globus_cli.parsing import command, endpoint_id_arg
|
|
8
10
|
from globus_cli.termio import display
|
|
9
11
|
|
|
12
|
+
from ._common import expiration_date_option
|
|
13
|
+
|
|
10
14
|
|
|
11
15
|
@command(
|
|
12
16
|
"update",
|
|
@@ -25,17 +29,18 @@ $ globus endpoint permission update $ep_id $rule_id --permissions r
|
|
|
25
29
|
@click.argument("rule_id")
|
|
26
30
|
@click.option(
|
|
27
31
|
"--permissions",
|
|
28
|
-
required=True,
|
|
29
32
|
type=click.Choice(("r", "rw"), case_sensitive=False),
|
|
30
33
|
help="Permissions to add. Read-Only or Read/Write",
|
|
31
34
|
)
|
|
35
|
+
@expiration_date_option
|
|
32
36
|
@LoginManager.requires_login("transfer")
|
|
33
37
|
def update_command(
|
|
34
38
|
login_manager: LoginManager,
|
|
35
39
|
*,
|
|
36
|
-
permissions: t.Literal["r", "rw"],
|
|
40
|
+
permissions: t.Literal["r", "rw"] | None,
|
|
37
41
|
rule_id: str,
|
|
38
42
|
endpoint_id: uuid.UUID,
|
|
43
|
+
expiration_date: str | None,
|
|
39
44
|
) -> None:
|
|
40
45
|
"""
|
|
41
46
|
Update an existing access control rule's permissions.
|
|
@@ -47,6 +52,8 @@ def update_command(
|
|
|
47
52
|
|
|
48
53
|
transfer_client = login_manager.get_transfer_client()
|
|
49
54
|
|
|
50
|
-
rule_data = assemble_generic_doc(
|
|
55
|
+
rule_data = assemble_generic_doc(
|
|
56
|
+
"access", permissions=permissions, expiration_date=expiration_date
|
|
57
|
+
)
|
|
51
58
|
res = transfer_client.update_endpoint_acl_rule(endpoint_id, rule_id, rule_data)
|
|
52
59
|
display(res, text_mode=display.RAW, response_key="message")
|
|
@@ -68,6 +68,21 @@ $ globus endpoint search --filter-scope my-endpoints
|
|
|
68
68
|
type=click.IntRange(1, 1000),
|
|
69
69
|
help="The maximum number of results to return.",
|
|
70
70
|
)
|
|
71
|
+
@click.option(
|
|
72
|
+
"--filter-entity-type",
|
|
73
|
+
default=None,
|
|
74
|
+
type=click.Choice(
|
|
75
|
+
(
|
|
76
|
+
"GCP_mapped_collection",
|
|
77
|
+
"GCP_guest_collection",
|
|
78
|
+
"GCSv5_endpoint",
|
|
79
|
+
"GCSv5_mapped_collection",
|
|
80
|
+
"GCSv5_guest_collection",
|
|
81
|
+
),
|
|
82
|
+
case_sensitive=False,
|
|
83
|
+
),
|
|
84
|
+
help="Filter search results to endpoints of a specific entity type.",
|
|
85
|
+
)
|
|
71
86
|
@click.argument("filter_fulltext", required=False)
|
|
72
87
|
@LoginManager.requires_login("auth", "transfer")
|
|
73
88
|
def endpoint_search(
|
|
@@ -86,6 +101,16 @@ def endpoint_search(
|
|
|
86
101
|
"shared-by-me",
|
|
87
102
|
"shared-with-me",
|
|
88
103
|
],
|
|
104
|
+
filter_entity_type: (
|
|
105
|
+
t.Literal[
|
|
106
|
+
"GCP_mapped_collection",
|
|
107
|
+
"GCP_guest_collection",
|
|
108
|
+
"GCSv5_endpoint",
|
|
109
|
+
"GCSv5_mapped_collection",
|
|
110
|
+
"GCSv5_guest_collection",
|
|
111
|
+
]
|
|
112
|
+
| None
|
|
113
|
+
),
|
|
89
114
|
) -> None:
|
|
90
115
|
"""
|
|
91
116
|
Search for Globus endpoints with search filters. If --filter-scope is set to the
|
|
@@ -121,6 +146,7 @@ def endpoint_search(
|
|
|
121
146
|
filter_fulltext=filter_fulltext,
|
|
122
147
|
filter_scope=filter_scope,
|
|
123
148
|
filter_owner_id=owner_id,
|
|
149
|
+
filter_entity_type=filter_entity_type,
|
|
124
150
|
).items(),
|
|
125
151
|
limit=limit,
|
|
126
152
|
)
|
{globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/set_subscription_id.py
RENAMED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import typing as t
|
|
4
3
|
import uuid
|
|
5
4
|
|
|
6
5
|
import click
|
|
@@ -11,14 +10,9 @@ from globus_cli.termio import display
|
|
|
11
10
|
|
|
12
11
|
|
|
13
12
|
class SubscriptionIdType(click.ParamType):
|
|
14
|
-
def get_type_annotation(self, param: click.Parameter) -> type:
|
|
15
|
-
return t.cast(type, str)
|
|
16
|
-
|
|
17
13
|
def convert(
|
|
18
14
|
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
19
|
-
) ->
|
|
20
|
-
if value is None or (ctx and ctx.resilient_parsing):
|
|
21
|
-
return None
|
|
15
|
+
) -> str:
|
|
22
16
|
if value.lower() == "null":
|
|
23
17
|
return "null"
|
|
24
18
|
try:
|
|
@@ -35,7 +35,7 @@ def s3(
|
|
|
35
35
|
gcs_client = login_manager.get_gcs_client(endpoint_id=endpoint_id)
|
|
36
36
|
auth_client = login_manager.get_auth_client()
|
|
37
37
|
|
|
38
|
-
# TODO: replace with SDK class
|
|
38
|
+
# TODO: replace with SDK class if one becomes available
|
|
39
39
|
policies = {
|
|
40
40
|
"DATA_TYPE": "s3_user_credential_policies#1.0.0",
|
|
41
41
|
"s3_key_id": s3_key_id,
|
|
@@ -8,7 +8,6 @@ import click
|
|
|
8
8
|
import globus_sdk
|
|
9
9
|
|
|
10
10
|
from globus_cli.login_manager import LoginManager
|
|
11
|
-
from globus_cli.login_manager.utils import get_current_identity_id
|
|
12
11
|
from globus_cli.parsing import command, run_id_arg
|
|
13
12
|
from globus_cli.termio import Field, display, formatters
|
|
14
13
|
from globus_cli.utils import CLIAuthRequirementsError
|
|
@@ -16,9 +15,7 @@ from globus_cli.utils import CLIAuthRequirementsError
|
|
|
16
15
|
# NB: GARE parsing requires other SDK components and therefore needs to be deferred to
|
|
17
16
|
# avoid the performance impact of non-lazy imports
|
|
18
17
|
if t.TYPE_CHECKING:
|
|
19
|
-
from globus_sdk.
|
|
20
|
-
GlobusAuthRequirementsError,
|
|
21
|
-
)
|
|
18
|
+
from globus_sdk.gare import GARE
|
|
22
19
|
|
|
23
20
|
|
|
24
21
|
@command("resume")
|
|
@@ -66,7 +63,7 @@ def resume_command(
|
|
|
66
63
|
def check_inactive_reason(
|
|
67
64
|
login_manager: LoginManager,
|
|
68
65
|
run_id: uuid.UUID,
|
|
69
|
-
gare:
|
|
66
|
+
gare: GARE | None,
|
|
70
67
|
) -> None:
|
|
71
68
|
if gare is None:
|
|
72
69
|
return
|
|
@@ -108,14 +105,9 @@ def check_inactive_reason(
|
|
|
108
105
|
|
|
109
106
|
|
|
110
107
|
def _get_inactive_reason(
|
|
111
|
-
run_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
|
|
112
|
-
) ->
|
|
113
|
-
|
|
114
|
-
from globus_sdk.gare import to_gare # type: ignore[import-not-found]
|
|
115
|
-
except ImportError:
|
|
116
|
-
from globus_sdk.experimental.auth_requirements_error import (
|
|
117
|
-
to_auth_requirements_error as to_gare,
|
|
118
|
-
)
|
|
108
|
+
run_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse,
|
|
109
|
+
) -> GARE | None:
|
|
110
|
+
from globus_sdk.gare import to_gare
|
|
119
111
|
|
|
120
112
|
if not run_doc.get("status") == "INACTIVE":
|
|
121
113
|
return None
|
|
@@ -124,13 +116,13 @@ def _get_inactive_reason(
|
|
|
124
116
|
if not isinstance(details, dict):
|
|
125
117
|
return None
|
|
126
118
|
|
|
127
|
-
return to_gare(details)
|
|
119
|
+
return to_gare(details)
|
|
128
120
|
|
|
129
121
|
|
|
130
122
|
def _has_required_consent(
|
|
131
123
|
login_manager: LoginManager, required_scopes: list[str]
|
|
132
124
|
) -> bool:
|
|
133
125
|
auth_client = login_manager.get_auth_client()
|
|
134
|
-
user_identity_id = get_current_identity_id()
|
|
126
|
+
user_identity_id = login_manager.get_current_identity_id()
|
|
135
127
|
consents = auth_client.get_consents(user_identity_id).to_forest()
|
|
136
128
|
return consents.meets_scope_requirements(required_scopes)
|
|
@@ -87,13 +87,11 @@ def _validate_flow_scope_output_handler(scopes_response: dict[str, str]) -> None
|
|
|
87
87
|
for k, scopes in scopes_response.items()
|
|
88
88
|
for scope in scopes
|
|
89
89
|
]
|
|
90
|
+
|
|
90
91
|
click.echo("Discovered Scopes")
|
|
91
92
|
click.echo("=================")
|
|
92
93
|
if scope_entries:
|
|
93
|
-
display.
|
|
94
|
-
scope_entries,
|
|
95
|
-
fields=scopes_fields,
|
|
96
|
-
)
|
|
94
|
+
display(scope_entries, text_mode=display.TABLE, fields=scopes_fields)
|
|
97
95
|
else:
|
|
98
96
|
click.echo("No scopes discovered")
|
|
99
97
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import typing as t
|
|
4
3
|
import uuid
|
|
5
4
|
|
|
6
5
|
import click
|
|
@@ -13,15 +12,9 @@ from globus_cli.termio import display
|
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class GCPSubscriptionIdType(click.ParamType):
|
|
16
|
-
def get_type_annotation(self, _: click.Parameter) -> type:
|
|
17
|
-
return t.cast(type, uuid.UUID | ExplicitNullType)
|
|
18
|
-
|
|
19
15
|
def convert(
|
|
20
16
|
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
21
|
-
) ->
|
|
22
|
-
if ctx and ctx.resilient_parsing:
|
|
23
|
-
return None
|
|
24
|
-
|
|
17
|
+
) -> uuid.UUID | ExplicitNullType:
|
|
25
18
|
if value.lower() == "null":
|
|
26
19
|
return EXPLICIT_NULL
|
|
27
20
|
|
{globus_cli-3.31.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import sys
|
|
3
4
|
import typing as t
|
|
4
5
|
import uuid
|
|
5
6
|
|
|
@@ -10,17 +11,16 @@ from globus_cli.login_manager import LoginManager
|
|
|
10
11
|
from globus_cli.parsing import command, endpoint_id_arg
|
|
11
12
|
from globus_cli.termio import display
|
|
12
13
|
|
|
14
|
+
if sys.version_info >= (3, 9):
|
|
15
|
+
from typing import Literal
|
|
16
|
+
else:
|
|
17
|
+
from typing_extensions import Literal
|
|
13
18
|
|
|
14
|
-
class GCSSubscriptionIdType(click.ParamType):
|
|
15
|
-
def get_type_annotation(self, _: click.Parameter) -> type:
|
|
16
|
-
return t.cast(type, uuid.UUID | t.Literal["DEFAULT"] | ExplicitNullType)
|
|
17
19
|
|
|
20
|
+
class GCSSubscriptionIdType(click.ParamType):
|
|
18
21
|
def convert(
|
|
19
22
|
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
20
|
-
) ->
|
|
21
|
-
if ctx and ctx.resilient_parsing:
|
|
22
|
-
return None
|
|
23
|
-
|
|
23
|
+
) -> uuid.UUID | Literal["DEFAULT"] | ExplicitNullType:
|
|
24
24
|
if value.lower() == "null":
|
|
25
25
|
return EXPLICIT_NULL
|
|
26
26
|
elif value.lower() == "default":
|
|
@@ -19,17 +19,12 @@ F = t.TypeVar("F", bound=AnyCallable)
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class SubscriptionIdType(click.ParamType):
|
|
22
|
-
def get_type_annotation(self, _: click.Parameter) -> type:
|
|
23
|
-
return t.cast(type, str | ExplicitNullType)
|
|
24
|
-
|
|
25
22
|
def get_metavar(self, _: click.Parameter) -> t.Optional[str]:
|
|
26
23
|
return "[<uuid>|DEFAULT|null]"
|
|
27
24
|
|
|
28
25
|
def convert(
|
|
29
26
|
self, value: str, param: click.Parameter | None, ctx: click.Context | None
|
|
30
|
-
) ->
|
|
31
|
-
if value is None or (ctx and ctx.resilient_parsing):
|
|
32
|
-
return None
|
|
27
|
+
) -> str | ExplicitNullType:
|
|
33
28
|
if value.lower() == "null":
|
|
34
29
|
return EXPLICIT_NULL
|
|
35
30
|
if value.lower() == "default":
|
|
@@ -14,7 +14,7 @@ if t.TYPE_CHECKING:
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def get_invite_formatter(
|
|
17
|
-
case: t.Literal["accept", "decline"]
|
|
17
|
+
case: t.Literal["accept", "decline"],
|
|
18
18
|
) -> t.Callable[[globus_sdk.GlobusHTTPResponse], None]:
|
|
19
19
|
action_word = "Accepted" if case == "accept" else "Declined"
|
|
20
20
|
|