globus-cli 3.32.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.32.0/src/globus_cli.egg-info → globus_cli-3.33.0}/PKG-INFO +5 -13
- {globus_cli-3.32.0 → globus_cli-3.33.0}/pyproject.toml +35 -13
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/_warnings.py +1 -1
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/api.py +10 -4
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/cli_profile_list.py +7 -4
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/_common.py +3 -4
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/create/guest.py +5 -2
- {globus_cli-3.32.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.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/_common.py +14 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/create.py +5 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/show.py +1 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/update.py +10 -3
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/search.py +26 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +1 -7
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/resume.py +2 -3
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/validate.py +2 -4
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/set_subscription_id.py +1 -8
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +7 -7
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/update.py +1 -6
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/_common.py +1 -1
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/login.py +1 -4
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/logout.py +6 -14
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/show.py +3 -10
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/create/transfer.py +5 -3
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/resume.py +2 -3
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/exception_handling/hooks.py +122 -31
- globus_cli-3.33.0/src/globus_cli/login_manager/__init__.py +14 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/auth_flows.py +11 -14
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/manager.py +40 -18
- 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.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_classes.py +1 -1
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +5 -2
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shell_completion.py +2 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/data.py +1 -1
- {globus_cli-3.32.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.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/field.py +1 -1
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/auth.py +2 -0
- 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.32.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.32.0 → globus_cli-3.33.0}/src/globus_cli/version.py +1 -1
- {globus_cli-3.32.0 → globus_cli-3.33.0/src/globus_cli.egg-info}/PKG-INFO +5 -13
- {globus_cli-3.32.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.32.0/src/globus_cli/commands/collection/delete.py +0 -18
- globus_cli-3.32.0/src/globus_cli/login_manager/__init__.py +0 -30
- globus_cli-3.32.0/src/globus_cli/login_manager/tokenstore.py +0 -265
- globus_cli-3.32.0/src/globus_cli/login_manager/utils.py +0 -22
- globus_cli-3.32.0/src/globus_cli/termio/printer.py +0 -347
- globus_cli-3.32.0/src/globus_cli.egg-info/requires.txt +0 -22
- {globus_cli-3.32.0 → globus_cli-3.33.0}/LICENSE +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/README.rst +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/setup.cfg +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/setup.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/__main__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/bookmark/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/collection/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/activate.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/deactivate.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/is_activated.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/run/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/start.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/flows/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/get_identities.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/join.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/leave.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/add.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/approve.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/invite.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/reject.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/member/remove.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/set_policies.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/group/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/list_commands.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/ls.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/mkdir.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/rename.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/rm.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/index/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/ingest.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/query.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/subject/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/task/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/search/task/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/consent.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/session/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/stat.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/cancel.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/event_list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/pause_info.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/task/wait.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/_common.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/delete.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/list.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/pause.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/timer/show.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/transfer.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/update.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/version.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/commands/whoami.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/constants.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/endpointish.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/entity_type.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/endpointish/errors.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/exception_handling/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/exception_handling/registry.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/globus_cli_flake8.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/_old_config.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/client_login.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/context.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/errors.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/local_server.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/login_manager/scopes.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/command_state.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/commands.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/mutex_group.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/delimited.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/identity_type.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/json_strorfile.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/location.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/notify_param.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/nullable.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/task_path.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/reflect.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/auth.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/gcs.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/activation.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/client.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/context.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/errors.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/base.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/compound.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/termio/server_timing.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/types.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli/utils.py +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
- {globus_cli-3.32.0 → globus_cli-3.33.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
- {globus_cli-3.32.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==1.0.0; 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==1.
|
|
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__"
|
|
@@ -90,5 +112,5 @@ disallow_untyped_defs = false
|
|
|
90
112
|
disallow_incomplete_defs = false
|
|
91
113
|
module = [
|
|
92
114
|
"globus_cli.services.transfer.recursive_ls",
|
|
93
|
-
"globus_cli.termio.awscli_text",
|
|
115
|
+
"globus_cli.termio.printers.unix_printer.awscli_text",
|
|
94
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.32.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.32.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.32.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.32.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:
|
|
@@ -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
|
|
@@ -106,7 +105,7 @@ def check_inactive_reason(
|
|
|
106
105
|
|
|
107
106
|
|
|
108
107
|
def _get_inactive_reason(
|
|
109
|
-
run_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
|
|
108
|
+
run_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse,
|
|
110
109
|
) -> GARE | None:
|
|
111
110
|
from globus_sdk.gare import to_gare
|
|
112
111
|
|
|
@@ -124,6 +123,6 @@ def _has_required_consent(
|
|
|
124
123
|
login_manager: LoginManager, required_scopes: list[str]
|
|
125
124
|
) -> bool:
|
|
126
125
|
auth_client = login_manager.get_auth_client()
|
|
127
|
-
user_identity_id = get_current_identity_id()
|
|
126
|
+
user_identity_id = login_manager.get_current_identity_id()
|
|
128
127
|
consents = auth_client.get_consents(user_identity_id).to_forest()
|
|
129
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.32.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
|
|
|
@@ -57,15 +57,12 @@ Clients are always "logged in"
|
|
|
57
57
|
class GCSEndpointType(click.ParamType):
|
|
58
58
|
name = "GCS Server"
|
|
59
59
|
|
|
60
|
-
def get_type_annotation(self, _: click.Parameter) -> type:
|
|
61
|
-
return t.cast(type, t.Union[uuid.UUID, tuple[uuid.UUID, uuid.UUID]])
|
|
62
|
-
|
|
63
60
|
def get_metavar(self, _: t.Optional[click.Parameter]) -> str:
|
|
64
61
|
return "<endpoint_id>[:<collection_id>]"
|
|
65
62
|
|
|
66
63
|
def convert(
|
|
67
64
|
self, value: t.Any, param: Parameter | None, ctx: Context | None
|
|
68
|
-
) ->
|
|
65
|
+
) -> uuid.UUID | tuple[uuid.UUID, uuid.UUID]:
|
|
69
66
|
if isinstance(value, uuid.UUID):
|
|
70
67
|
return value
|
|
71
68
|
elif isinstance(value, tuple) and len(value) == 2:
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import click
|
|
2
2
|
import globus_sdk
|
|
3
3
|
|
|
4
|
-
from globus_cli.login_manager import
|
|
5
|
-
LoginManager,
|
|
6
|
-
delete_templated_client,
|
|
7
|
-
internal_native_client,
|
|
8
|
-
is_client_login,
|
|
9
|
-
remove_well_known_config,
|
|
10
|
-
token_storage_adapter,
|
|
11
|
-
)
|
|
4
|
+
from globus_cli.login_manager import LoginManager, is_client_login
|
|
12
5
|
from globus_cli.parsing import command
|
|
13
6
|
|
|
14
7
|
|
|
@@ -105,7 +98,7 @@ def logout_command(
|
|
|
105
98
|
# Always skip for client logins, which don't use a templated client
|
|
106
99
|
if delete_client and not is_client_login():
|
|
107
100
|
try:
|
|
108
|
-
delete_templated_client()
|
|
101
|
+
login_manager.storage.delete_templated_client()
|
|
109
102
|
except globus_sdk.AuthAPIError:
|
|
110
103
|
if not ignore_errors:
|
|
111
104
|
warnecho(
|
|
@@ -121,10 +114,9 @@ def logout_command(
|
|
|
121
114
|
|
|
122
115
|
# Attempt to revoke all tokens in storage; use the internal native client to ensure
|
|
123
116
|
# we have a valid Auth client
|
|
124
|
-
native_client =
|
|
125
|
-
adapter = token_storage_adapter()
|
|
117
|
+
native_client = login_manager.storage.cli_native_client
|
|
126
118
|
|
|
127
|
-
for rs, tokendata in adapter.get_by_resource_server().items():
|
|
119
|
+
for rs, tokendata in login_manager.storage.adapter.get_by_resource_server().items():
|
|
128
120
|
for tok_key in ("access_token", "refresh_token"):
|
|
129
121
|
token = tokendata[tok_key]
|
|
130
122
|
|
|
@@ -145,9 +137,9 @@ def logout_command(
|
|
|
145
137
|
"Continuing... (--ignore-errors)",
|
|
146
138
|
)
|
|
147
139
|
|
|
148
|
-
adapter.remove_tokens_for_resource_server(rs)
|
|
140
|
+
login_manager.storage.adapter.remove_tokens_for_resource_server(rs)
|
|
149
141
|
|
|
150
|
-
remove_well_known_config("auth_user_data")
|
|
142
|
+
login_manager.storage.remove_well_known_config("auth_user_data")
|
|
151
143
|
|
|
152
144
|
if is_client_login():
|
|
153
145
|
click.echo(_CLIENT_LOGOUT_EPILOG)
|