globus-cli 3.31.0__tar.gz → 3.32.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.
Files changed (265) hide show
  1. {globus_cli-3.31.0/src/globus_cli.egg-info → globus_cli-3.32.0}/PKG-INFO +3 -3
  2. {globus_cli-3.31.0 → globus_cli-3.32.0}/pyproject.toml +4 -3
  3. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +1 -1
  4. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/resume.py +5 -12
  5. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/show.py +3 -0
  6. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/create/transfer.py +36 -16
  7. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/resume.py +5 -12
  8. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/transfer.py +34 -8
  9. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/endpointish/endpointish.py +1 -1
  10. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/exception_handling/hooks.py +2 -4
  11. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/globus_cli_flake8.py +2 -2
  12. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/errors.py +1 -1
  13. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/manager.py +3 -12
  14. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/scopes.py +3 -10
  15. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/task_path.py +1 -1
  16. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/transfer/client.py +1 -1
  17. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/field.py +1 -1
  18. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/auth.py +1 -1
  19. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/version.py +1 -1
  20. {globus_cli-3.31.0 → globus_cli-3.32.0/src/globus_cli.egg-info}/PKG-INFO +3 -3
  21. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli.egg-info/requires.txt +2 -2
  22. {globus_cli-3.31.0 → globus_cli-3.32.0}/LICENSE +0 -0
  23. {globus_cli-3.31.0 → globus_cli-3.32.0}/README.rst +0 -0
  24. {globus_cli-3.31.0 → globus_cli-3.32.0}/setup.cfg +0 -0
  25. {globus_cli-3.31.0 → globus_cli-3.32.0}/setup.py +0 -0
  26. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/__init__.py +0 -0
  27. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/__main__.py +0 -0
  28. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/_warnings.py +0 -0
  29. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/__init__.py +0 -0
  30. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/_common.py +0 -0
  31. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/api.py +0 -0
  32. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
  33. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
  34. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/create.py +0 -0
  35. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
  36. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/list.py +0 -0
  37. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
  38. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/bookmark/show.py +0 -0
  39. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
  40. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/__init__.py +0 -0
  41. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/_common.py +0 -0
  42. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
  43. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/create/guest.py +0 -0
  44. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
  45. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/delete.py +0 -0
  46. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/list.py +0 -0
  47. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/show.py +0 -0
  48. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/collection/update.py +0 -0
  49. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/delete.py +0 -0
  50. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
  51. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
  52. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/activate.py +0 -0
  53. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/create.py +0 -0
  54. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/deactivate.py +0 -0
  55. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
  56. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/is_activated.py +0 -0
  57. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
  58. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
  59. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
  60. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
  61. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
  62. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
  63. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
  64. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
  65. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
  66. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
  67. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
  68. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
  69. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
  70. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
  71. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
  72. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/search.py +0 -0
  73. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
  74. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
  75. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
  76. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
  77. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
  78. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
  79. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
  80. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +0 -0
  81. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/show.py +0 -0
  82. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
  83. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
  84. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/update.py +0 -0
  85. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
  86. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
  87. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
  88. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
  89. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
  90. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
  91. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
  92. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
  93. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
  94. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
  95. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/__init__.py +0 -0
  96. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/_common.py +0 -0
  97. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/create.py +0 -0
  98. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/delete.py +0 -0
  99. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/list.py +0 -0
  100. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
  101. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
  102. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
  103. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/list.py +0 -0
  104. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/show.py +0 -0
  105. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
  106. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
  107. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/run/update.py +0 -0
  108. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/show.py +0 -0
  109. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/start.py +0 -0
  110. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/update.py +0 -0
  111. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/flows/validate.py +0 -0
  112. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
  113. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
  114. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
  115. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/guest.py +0 -0
  116. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
  117. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/set_subscription_id.py +0 -0
  118. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
  119. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/update/guest.py +0 -0
  120. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
  121. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
  122. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
  123. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
  124. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
  125. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
  126. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
  127. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
  128. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
  129. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
  130. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +0 -0
  131. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
  132. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/gcs/endpoint/update.py +0 -0
  133. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/get_identities.py +0 -0
  134. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/__init__.py +0 -0
  135. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/_common.py +0 -0
  136. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/create.py +0 -0
  137. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/delete.py +0 -0
  138. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
  139. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
  140. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
  141. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
  142. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
  143. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
  144. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/join.py +0 -0
  145. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/leave.py +0 -0
  146. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/list.py +0 -0
  147. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
  148. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/add.py +0 -0
  149. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/approve.py +0 -0
  150. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/invite.py +0 -0
  151. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/list.py +0 -0
  152. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/reject.py +0 -0
  153. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/member/remove.py +0 -0
  154. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/set_policies.py +0 -0
  155. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/show.py +0 -0
  156. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/group/update.py +0 -0
  157. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/list_commands.py +0 -0
  158. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/login.py +0 -0
  159. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/logout.py +0 -0
  160. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/ls.py +0 -0
  161. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/mkdir.py +0 -0
  162. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/rename.py +0 -0
  163. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/rm.py +0 -0
  164. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/__init__.py +0 -0
  165. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/_common.py +0 -0
  166. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
  167. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
  168. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/create.py +0 -0
  169. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/delete.py +0 -0
  170. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/list.py +0 -0
  171. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
  172. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
  173. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
  174. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
  175. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/index/show.py +0 -0
  176. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/ingest.py +0 -0
  177. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/query.py +0 -0
  178. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
  179. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
  180. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/subject/show.py +0 -0
  181. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
  182. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/task/list.py +0 -0
  183. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/search/task/show.py +0 -0
  184. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/session/__init__.py +0 -0
  185. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/session/consent.py +0 -0
  186. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/session/show.py +0 -0
  187. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/session/update.py +0 -0
  188. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/stat.py +0 -0
  189. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/__init__.py +0 -0
  190. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/_common.py +0 -0
  191. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/cancel.py +0 -0
  192. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/event_list.py +0 -0
  193. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
  194. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/list.py +0 -0
  195. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/pause_info.py +0 -0
  196. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/update.py +0 -0
  197. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/task/wait.py +0 -0
  198. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/__init__.py +0 -0
  199. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/_common.py +0 -0
  200. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
  201. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/delete.py +0 -0
  202. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/list.py +0 -0
  203. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/pause.py +0 -0
  204. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/timer/show.py +0 -0
  205. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/update.py +0 -0
  206. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/version.py +0 -0
  207. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/commands/whoami.py +0 -0
  208. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/constants.py +0 -0
  209. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/endpointish/__init__.py +0 -0
  210. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/endpointish/entity_type.py +0 -0
  211. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/endpointish/errors.py +0 -0
  212. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/exception_handling/__init__.py +0 -0
  213. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/exception_handling/registry.py +0 -0
  214. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/__init__.py +0 -0
  215. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/_old_config.py +0 -0
  216. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/auth_flows.py +0 -0
  217. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/client_login.py +0 -0
  218. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/context.py +0 -0
  219. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/local_server.py +0 -0
  220. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/tokenstore.py +0 -0
  221. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/login_manager/utils.py +0 -0
  222. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/__init__.py +0 -0
  223. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/command_state.py +0 -0
  224. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/commands.py +0 -0
  225. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/mutex_group.py +0 -0
  226. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_classes.py +0 -0
  227. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/__init__.py +0 -0
  228. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/delimited.py +0 -0
  229. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +0 -0
  230. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/identity_type.py +0 -0
  231. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/json_strorfile.py +0 -0
  232. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/location.py +0 -0
  233. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/notify_param.py +0 -0
  234. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/nullable.py +0 -0
  235. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
  236. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
  237. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/__init__.py +0 -0
  238. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
  239. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
  240. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
  241. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/parsing/shell_completion.py +0 -0
  242. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/reflect.py +0 -0
  243. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/__init__.py +0 -0
  244. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/auth.py +0 -0
  245. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/gcs.py +0 -0
  246. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/transfer/__init__.py +0 -0
  247. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/transfer/activation.py +0 -0
  248. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/transfer/data.py +0 -0
  249. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
  250. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/__init__.py +0 -0
  251. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/awscli_text.py +0 -0
  252. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/context.py +0 -0
  253. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/errors.py +0 -0
  254. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
  255. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/base.py +0 -0
  256. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/compound.py +0 -0
  257. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
  258. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/printer.py +0 -0
  259. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/termio/server_timing.py +0 -0
  260. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/types.py +0 -0
  261. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli/utils.py +0 -0
  262. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli.egg-info/SOURCES.txt +0 -0
  263. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
  264. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
  265. {globus_cli-3.31.0 → globus_cli-3.32.0}/src/globus_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: globus-cli
3
- Version: 3.31.0
3
+ Version: 3.32.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
@@ -18,7 +18,7 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Requires-Python: >=3.8
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
- Requires-Dist: globus-sdk==3.45.0
21
+ Requires-Dist: globus-sdk==3.46.0
22
22
  Requires-Dist: click<9,>=8.1.4
23
23
  Requires-Dist: jmespath==1.0.1
24
24
  Requires-Dist: packaging>=17.0
@@ -29,7 +29,7 @@ Requires-Dist: coverage>=7; extra == "test"
29
29
  Requires-Dist: pytest>=7; extra == "test"
30
30
  Requires-Dist: pytest-xdist<4; extra == "test"
31
31
  Requires-Dist: pytest-timeout<3; extra == "test"
32
- Requires-Dist: click-type-test==0.0.7; python_version >= "3.10" and extra == "test"
32
+ Requires-Dist: click-type-test==1.0.0; python_version >= "3.10" and extra == "test"
33
33
  Requires-Dist: responses==0.25.3; extra == "test"
34
34
  Requires-Dist: ruamel.yaml==0.18.6; extra == "test"
35
35
  Requires-Dist: setuptools; python_version >= "3.12" and extra == "test"
@@ -28,7 +28,7 @@ classifiers = [
28
28
  ]
29
29
  requires-python = ">=3.8"
30
30
  dependencies = [
31
- "globus-sdk==3.45.0",
31
+ "globus-sdk==3.46.0",
32
32
  "click>=8.1.4,<9",
33
33
  "jmespath==1.0.1",
34
34
  "packaging>=17.0",
@@ -48,7 +48,7 @@ test = [
48
48
  "pytest>=7",
49
49
  "pytest-xdist<4",
50
50
  "pytest-timeout<3",
51
- "click-type-test==0.0.7;python_version>='3.10'",
51
+ "click-type-test==1.0.0;python_version>='3.10'",
52
52
  "responses==0.25.3",
53
53
  # loading test fixture data
54
54
  "ruamel.yaml==0.18.6",
@@ -66,7 +66,7 @@ attr = "globus_cli.version.__version__"
66
66
  profile = "black"
67
67
 
68
68
  [tool.pytest.ini_options]
69
- addopts = "--timeout 3"
69
+ addopts = "--timeout 3 --color=yes"
70
70
  filterwarnings = ["error"]
71
71
 
72
72
  [tool.scriv]
@@ -79,6 +79,7 @@ entry_title_template = '{{ version }} ({{ date.strftime("%Y-%m-%d") }})'
79
79
 
80
80
  [tool.mypy]
81
81
  strict = true
82
+ sqlite_cache = true
82
83
 
83
84
  # additional settings (not part of strict=true)
84
85
  warn_unreachable = true
@@ -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 once available
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,
@@ -16,9 +16,7 @@ from globus_cli.utils import CLIAuthRequirementsError
16
16
  # NB: GARE parsing requires other SDK components and therefore needs to be deferred to
17
17
  # avoid the performance impact of non-lazy imports
18
18
  if t.TYPE_CHECKING:
19
- from globus_sdk.experimental.auth_requirements_error import (
20
- GlobusAuthRequirementsError,
21
- )
19
+ from globus_sdk.gare import GARE
22
20
 
23
21
 
24
22
  @command("resume")
@@ -66,7 +64,7 @@ def resume_command(
66
64
  def check_inactive_reason(
67
65
  login_manager: LoginManager,
68
66
  run_id: uuid.UUID,
69
- gare: GlobusAuthRequirementsError | None,
67
+ gare: GARE | None,
70
68
  ) -> None:
71
69
  if gare is None:
72
70
  return
@@ -109,13 +107,8 @@ def check_inactive_reason(
109
107
 
110
108
  def _get_inactive_reason(
111
109
  run_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
112
- ) -> GlobusAuthRequirementsError | None:
113
- try:
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
- )
110
+ ) -> GARE | None:
111
+ from globus_sdk.gare import to_gare
119
112
 
120
113
  if not run_doc.get("status") == "INACTIVE":
121
114
  return None
@@ -124,7 +117,7 @@ def _get_inactive_reason(
124
117
  if not isinstance(details, dict):
125
118
  return None
126
119
 
127
- return to_gare(details) # type: ignore[no-any-return]
120
+ return to_gare(details)
128
121
 
129
122
 
130
123
  def _has_required_consent(
@@ -53,6 +53,9 @@ TRANSFER_FIELDS = [
53
53
  SUCCESSFULL_TRANSFER_FIELDS = [
54
54
  Field("Source Path", "source_path"),
55
55
  Field("Destination Path", "destination_path"),
56
+ Field("Size", "size"),
57
+ Field("Checksum Algorithm", "checksum_algorithm"),
58
+ Field("Checksum", "checksum"),
56
59
  ]
57
60
 
58
61
  SKIPPED_PATHS_FIELDS = [
@@ -102,11 +102,22 @@ e.g. '1h30m', '500s', '10d'
102
102
  "--delete",
103
103
  is_flag=True,
104
104
  default=False,
105
+ hidden=True,
105
106
  help=(
106
107
  "Delete any files in the destination directory not contained in the source. "
107
108
  'This results in "directory mirroring." Only valid on recursive transfers.'
108
109
  ),
109
110
  )
111
+ @click.option(
112
+ "--delete-destination-extra",
113
+ is_flag=True,
114
+ default=False,
115
+ help=(
116
+ "Delete any files in the destination directory not contained in the source. "
117
+ 'This results in "directory mirroring." Only valid on recursive transfers.'
118
+ ),
119
+ )
120
+ @mutex_option_group("--delete", "--delete-destination-extra")
110
121
  @LoginManager.requires_login("auth", "timer", "transfer")
111
122
  def transfer_command(
112
123
  login_manager: LoginManager,
@@ -122,6 +133,7 @@ def transfer_command(
122
133
  stop_after_date: datetime.datetime | None,
123
134
  stop_after_runs: int | None,
124
135
  delete: bool,
136
+ delete_destination_extra: bool,
125
137
  sync_level: t.Literal["exists", "size", "mtime", "checksum"] | None,
126
138
  encrypt_data: bool,
127
139
  verify_checksum: bool,
@@ -174,21 +186,30 @@ def transfer_command(
174
186
  source_endpoint, cmd_source_path = source
175
187
  dest_endpoint, cmd_dest_path = destination
176
188
 
177
- if recursive is not None:
178
- if batch:
179
- # avoid 'mutex_option_group', emit a custom error message
180
- option_name = "--recursive" if recursive else "--no-recursive"
181
- raise click.UsageError(
182
- f"You cannot use {option_name} in addition to --batch. "
183
- f"Instead, use {option_name} on lines of --batch input which need it."
184
- )
189
+ if delete:
190
+ msg = (
191
+ "`--delete` has been deprecated and will be removed in a future release. "
192
+ "Use `--delete-destination-extra` instead."
193
+ )
194
+ click.echo(click.style(msg, fg="yellow"), err=True)
185
195
 
186
- if delete and not recursive:
187
- msg = "The --delete option cannot be specified with --no-recursion."
188
- raise click.UsageError(msg)
196
+ # avoid 'mutex_option_group', emit a custom error message
197
+ if recursive is not None and batch:
198
+ option_name = "--recursive" if recursive else "--no-recursive"
199
+ raise click.UsageError(
200
+ f"You cannot use `{option_name}` in addition to `--batch`. "
201
+ f"Instead, use `{option_name}` on lines of `--batch` input which need it."
202
+ )
203
+ if recursive is False and (delete_destination_extra or delete):
204
+ option_name = (
205
+ "--delete-destination-extra" if delete_destination_extra else "--delete"
206
+ )
207
+ raise click.UsageError(
208
+ f"The `{option_name}` option cannot be specified with `--no-recursive`."
209
+ )
189
210
  if (cmd_source_path is None or cmd_dest_path is None) and (not batch):
190
211
  raise click.UsageError(
191
- "transfer requires either SOURCE_PATH and DEST_PATH or --batch"
212
+ "Transfer requires either `SOURCE_PATH` and `DEST_PATH` or `--batch`"
192
213
  )
193
214
 
194
215
  # Interval must be null iff the timer is 'once', i.e. stop-after-runs == 1.
@@ -197,12 +218,12 @@ def transfer_command(
197
218
  start_ = resolve_optional_local_time(start)
198
219
  if stop_after_runs == 1:
199
220
  if interval is not None:
200
- raise click.UsageError("'--interval' is invalid with `--stop-after-runs=1`")
221
+ raise click.UsageError("`--interval` is invalid with `--stop-after-runs=1`")
201
222
  schedule = globus_sdk.OnceTimerSchedule(datetime=start_)
202
223
  else:
203
224
  if interval is None:
204
225
  raise click.UsageError(
205
- "'--interval' is required unless `--stop-after-runs=1`"
226
+ "`--interval` is required unless `--stop-after-runs=1`"
206
227
  )
207
228
 
208
229
  end: dict[str, t.Any] | globus_sdk.MissingType = globus_sdk.MISSING
@@ -278,7 +299,7 @@ def transfer_command(
278
299
  encrypt_data=encrypt_data,
279
300
  skip_source_errors=skip_source_errors,
280
301
  fail_on_quota_errors=fail_on_quota_errors,
281
- delete_destination_extra=delete,
302
+ delete_destination_extra=(delete or delete_destination_extra),
282
303
  # mypy can't understand kwargs expansion very well
283
304
  **notify, # type: ignore[arg-type]
284
305
  )
@@ -321,7 +342,6 @@ def _derive_needed_scopes(
321
342
  target_scope = GCSCollectionScopeBuilder(target).data_access
322
343
  scopes_needed[target] = _ez_make_nested_scope(
323
344
  globus_sdk.TimerClient.scopes.timer,
324
- "https://auth.globus.org/scopes/actions.globus.org/transfer/transfer",
325
345
  globus_sdk.TransferClient.scopes.all,
326
346
  target_scope,
327
347
  )
@@ -16,9 +16,7 @@ from globus_cli.utils import CLIAuthRequirementsError
16
16
  # NB: GARE parsing requires other SDK components and therefore needs to be deferred to
17
17
  # avoid the performance impact of non-lazy imports
18
18
  if t.TYPE_CHECKING:
19
- from globus_sdk.experimental.auth_requirements_error import (
20
- GlobusAuthRequirementsError,
21
- )
19
+ from globus_sdk.gare import GARE
22
20
 
23
21
 
24
22
  @command("resume", short_help="Resume a timer.")
@@ -59,7 +57,7 @@ def resume_command(
59
57
  def check_inactive_reason(
60
58
  login_manager: LoginManager,
61
59
  timer_id: uuid.UUID,
62
- gare: GlobusAuthRequirementsError | None,
60
+ gare: GARE | None,
63
61
  ) -> None:
64
62
  if gare is None:
65
63
  return
@@ -102,13 +100,8 @@ def check_inactive_reason(
102
100
 
103
101
  def _get_inactive_reason(
104
102
  timer_doc: dict[str, t.Any] | globus_sdk.GlobusHTTPResponse
105
- ) -> GlobusAuthRequirementsError | None:
106
- try:
107
- from globus_sdk.gare import to_gare # type: ignore[import-not-found]
108
- except ImportError:
109
- from globus_sdk.experimental.auth_requirements_error import (
110
- to_auth_requirements_error as to_gare,
111
- )
103
+ ) -> GARE | None:
104
+ from globus_sdk.gare import to_gare
112
105
 
113
106
  if timer_doc.get("status") != "inactive":
114
107
  return None
@@ -117,7 +110,7 @@ def _get_inactive_reason(
117
110
  if reason.get("cause") != "globus_auth_requirements":
118
111
  return None
119
112
 
120
- return to_gare(reason.get("detail", {})) # type: ignore[no-any-return]
113
+ return to_gare(reason.get("detail", {}))
121
114
 
122
115
 
123
116
  def _has_required_consent(
@@ -140,11 +140,22 @@ fi
140
140
  "--delete",
141
141
  is_flag=True,
142
142
  default=False,
143
+ hidden=True,
143
144
  help=(
144
145
  "Delete any files in the destination directory not contained in the source. "
145
146
  'This results in "directory mirroring." Only valid on recursive transfers.'
146
147
  ),
147
148
  )
149
+ @click.option(
150
+ "--delete-destination-extra",
151
+ is_flag=True,
152
+ default=False,
153
+ help=(
154
+ "Delete any files in the destination directory not contained in the source. "
155
+ 'This results in "directory mirroring." Only valid on recursive transfers.'
156
+ ),
157
+ )
158
+ @mutex_option_group("--delete", "--delete-destination-extra")
148
159
  @click.option(
149
160
  "--external-checksum",
150
161
  help=(
@@ -227,6 +238,7 @@ def transfer_command(
227
238
  submission_id: str | None,
228
239
  dry_run: bool,
229
240
  delete: bool,
241
+ delete_destination_extra: bool,
230
242
  deadline: str | None,
231
243
  skip_activation_check: bool,
232
244
  notify: dict[str, bool],
@@ -326,18 +338,32 @@ def transfer_command(
326
338
  source_endpoint, cmd_source_path = source
327
339
  dest_endpoint, cmd_dest_path = destination
328
340
 
341
+ if delete:
342
+ msg = (
343
+ "`--delete` has been deprecated and will be removed in a future release. "
344
+ "Use `--delete-destination-extra` instead."
345
+ )
346
+ click.echo(click.style(msg, fg="yellow"), err=True)
347
+
329
348
  # avoid 'mutex_option_group', emit a custom error message
330
349
  if recursive is not None and batch:
331
350
  option_name = "--recursive" if recursive else "--no-recursive"
332
351
  raise click.UsageError(
333
- f"You cannot use {option_name} in addition to --batch. "
334
- f"Instead, use {option_name} on lines of --batch input which need it."
352
+ f"You cannot use `{option_name}` in addition to `--batch`. "
353
+ f"Instead, use `{option_name}` on lines of `--batch` input which need it."
354
+ )
355
+ if recursive is False and (delete_destination_extra or delete):
356
+ option_name = (
357
+ "--delete-destination-extra" if delete_destination_extra else "--delete"
358
+ )
359
+ raise click.UsageError(
360
+ f"The `{option_name}` option cannot be specified with `--no-recursive`."
335
361
  )
336
-
337
362
  if external_checksum and batch:
338
363
  raise click.UsageError(
339
- "You cannot use --external-checksum in addition to --batch. "
340
- "Instead, use --external-checksum on lines of --batch input which need it."
364
+ "You cannot use `--external-checksum` in addition to `--batch`. "
365
+ "Instead, use `--external-checksum` on lines of `--batch` input which "
366
+ "need it."
341
367
  )
342
368
 
343
369
  # the performance options (of which there are a few), have elements which should be
@@ -367,7 +393,7 @@ def transfer_command(
367
393
  skip_source_errors=skip_source_errors,
368
394
  fail_on_quota_errors=fail_on_quota_errors,
369
395
  skip_activation_check=skip_activation_check,
370
- delete_destination_extra=delete,
396
+ delete_destination_extra=(delete or delete_destination_extra),
371
397
  source_local_user=source_local_user,
372
398
  destination_local_user=destination_local_user,
373
399
  additional_fields={**perf_opts, **notify},
@@ -384,7 +410,7 @@ def transfer_command(
384
410
  else:
385
411
  if cmd_source_path is None or cmd_dest_path is None:
386
412
  raise click.UsageError(
387
- "transfer requires either SOURCE_PATH and DEST_PATH or --batch"
413
+ "Transfer requires either `SOURCE_PATH` and `DEST_PATH` or `--batch`"
388
414
  )
389
415
  transfer_data.add_item(
390
416
  cmd_source_path,
@@ -403,7 +429,7 @@ def transfer_command(
403
429
 
404
430
  if filter_rules and not has_recursive_items:
405
431
  raise click.UsageError(
406
- "--include and --exclude can only be used with --recursive transfers"
432
+ "`--include` and `--exclude` can only be used with `--recursive` transfers"
407
433
  )
408
434
 
409
435
  if dry_run:
@@ -19,7 +19,7 @@ class Endpointish:
19
19
  endpoint_id: str | uuid.UUID,
20
20
  *,
21
21
  transfer_client: globus_sdk.TransferClient,
22
- ):
22
+ ) -> None:
23
23
  self._client = transfer_client
24
24
  self.endpoint_id = endpoint_id
25
25
 
@@ -272,8 +272,7 @@ def transferapi_hook(exception: globus_sdk.TransferAPIError) -> None:
272
272
  def searchapi_validationerror_hook(exception: globus_sdk.SearchAPIError) -> None:
273
273
  fields = [
274
274
  PrintableErrorField("HTTP status", exception.http_status),
275
- # FIXME: raw_json because SDK is not exposing `request_id` as an attribute
276
- PrintableErrorField("request_id", (exception.raw_json or {}).get("request_id")),
275
+ PrintableErrorField("request_id", exception.request_id),
277
276
  PrintableErrorField("code", exception.code),
278
277
  PrintableErrorField("message", exception.message, multiline=True),
279
278
  ]
@@ -298,8 +297,7 @@ def searchapi_validationerror_hook(exception: globus_sdk.SearchAPIError) -> None
298
297
  def searchapi_hook(exception: globus_sdk.SearchAPIError) -> None:
299
298
  fields = [
300
299
  PrintableErrorField("HTTP status", exception.http_status),
301
- # FIXME: raw_json because SDK is not exposing `request_id` as an attribute
302
- PrintableErrorField("request_id", (exception.raw_json or {}).get("request_id")),
300
+ PrintableErrorField("request_id", exception.request_id),
303
301
  PrintableErrorField("code", exception.code),
304
302
  PrintableErrorField("message", exception.message, multiline=True),
305
303
  ]
@@ -27,7 +27,7 @@ class Plugin:
27
27
 
28
28
  # args to init determine plugin behavior. see:
29
29
  # https://flake8.pycqa.org/en/latest/internal/utils.html#flake8.utils.parameters_for
30
- def __init__(self, tree):
30
+ def __init__(self, tree) -> None:
31
31
  self.tree = tree
32
32
 
33
33
  # Plugin.run() is how checks will run. For detail, see implementation of:
@@ -40,7 +40,7 @@ class Plugin:
40
40
 
41
41
 
42
42
  class ErrorRecordingVisitor(ast.NodeVisitor):
43
- def __init__(self):
43
+ def __init__(self) -> None:
44
44
  super().__init__()
45
45
  self.collect = []
46
46
 
@@ -11,7 +11,7 @@ class MissingLoginError(ValueError):
11
11
  self,
12
12
  missing_servers: t.Sequence[str],
13
13
  context: LoginContext,
14
- ):
14
+ ) -> None:
15
15
  self.missing_servers = missing_servers
16
16
 
17
17
  error_message = context.error_message or self._default_error_message()
@@ -18,14 +18,7 @@ from globus_sdk.scopes import (
18
18
  TimersScopes,
19
19
  TransferScopes,
20
20
  )
21
-
22
- # TODO: remove this after an SDK release provides scopes.consents
23
- try:
24
- from globus_sdk.scopes.consents import ( # type: ignore[import-not-found]
25
- ConsentForest,
26
- )
27
- except ImportError:
28
- from globus_sdk.experimental.consents import ConsentForest
21
+ from globus_sdk.scopes.consents import ConsentForest
29
22
 
30
23
  from globus_cli.endpointish import Endpointish, EntityType
31
24
  from globus_cli.types import ServiceNameLiteral
@@ -183,9 +176,7 @@ class LoginManager:
183
176
  else:
184
177
  # If there are dependent scopes all required scope paths are present in the
185
178
  # user's cached consent forest.
186
- return ( # type: ignore[no-any-return]
187
- self._cached_consent_forest.meets_scope_requirements(required_scopes)
188
- )
179
+ return self._cached_consent_forest.meets_scope_requirements(required_scopes)
189
180
 
190
181
  @property
191
182
  @functools.lru_cache(maxsize=1) # noqa: B019
@@ -304,7 +295,7 @@ class LoginManager:
304
295
 
305
296
  def _get_client_authorizer(
306
297
  self, resource_server: str, *, no_tokens_msg: str | None = None
307
- ) -> globus_sdk.authorizers.RenewingAuthorizer:
298
+ ) -> globus_sdk.ClientCredentialsAuthorizer | globus_sdk.RefreshTokenAuthorizer:
308
299
  tokens = self._token_storage.get_token_data(resource_server)
309
300
 
310
301
  if is_client_login():
@@ -15,10 +15,6 @@ from globus_sdk.scopes import (
15
15
 
16
16
  from globus_cli.types import ServiceNameLiteral
17
17
 
18
- TRANSFER_AP_SCOPE_STR: str = (
19
- "https://auth.globus.org/scopes/actions.globus.org/transfer/transfer"
20
- )
21
-
22
18
 
23
19
  def compute_timer_scope(
24
20
  *, data_access_collection_ids: t.Sequence[str] | None = None
@@ -29,11 +25,8 @@ def compute_timer_scope(
29
25
  Scope(GCSCollectionScopeBuilder(cid).data_access, optional=True)
30
26
  )
31
27
 
32
- transfer_ap_scope = Scope(TRANSFER_AP_SCOPE_STR)
33
- transfer_ap_scope.add_dependency(transfer_scope)
34
-
35
28
  timer_scope = Scope(TimersScopes.timer)
36
- timer_scope.add_dependency(transfer_ap_scope)
29
+ timer_scope.add_dependency(transfer_scope)
37
30
  return timer_scope
38
31
 
39
32
 
@@ -87,7 +80,7 @@ class _CLIScopeRequirements(t.Dict[ServiceNameLiteral, _ServiceRequirement]):
87
80
  ],
88
81
  }
89
82
  self["timer"] = {
90
- "min_contract_version": 1,
83
+ "min_contract_version": 2,
91
84
  "resource_server": TimersScopes.resource_server,
92
85
  "nice_server_name": "Globus Timers",
93
86
  "scopes": [
@@ -125,4 +118,4 @@ CLI_SCOPE_REQUIREMENTS = _CLIScopeRequirements()
125
118
  # version we were at when we got a token
126
119
  # it should be the max of the version numbers required by the various different
127
120
  # services
128
- CURRENT_SCOPE_CONTRACT_VERSION: t.Final[int] = 1
121
+ CURRENT_SCOPE_CONTRACT_VERSION: t.Final[int] = 2
@@ -66,7 +66,7 @@ class TaskPath(click.ParamType):
66
66
  coerce_to_dir: bool = False,
67
67
  normalize: bool = True,
68
68
  require_absolute: bool = False,
69
- ):
69
+ ) -> None:
70
70
  """
71
71
  Task Paths are paths for passing into Transfer or Delete tasks.
72
72
  They're only slightly more than string types: they can join themselves
@@ -47,7 +47,7 @@ class CustomTransferClient(globus_sdk.TransferClient):
47
47
  def __init__(
48
48
  self,
49
49
  *,
50
- authorizer: globus_sdk.GlobusAuthorizer,
50
+ authorizer: globus_sdk.authorizers.GlobusAuthorizer,
51
51
  app_name: str,
52
52
  ) -> None:
53
53
  super().__init__(authorizer=authorizer, app_name=app_name)
@@ -22,7 +22,7 @@ class Field:
22
22
  *,
23
23
  wrap_enabled: bool = False,
24
24
  formatter: formatters.FieldFormatter[t.Any] = formatters.Str,
25
- ):
25
+ ) -> None:
26
26
  self.name = name
27
27
  self.key = key
28
28
  self.wrap_enabled = wrap_enabled
@@ -27,7 +27,7 @@ class PrincipalFormatter(FieldFormatter[t.Tuple[str, str]]):
27
27
  - fallback
28
28
  """
29
29
 
30
- def __init__(self, auth_client: globus_sdk.AuthClient):
30
+ def __init__(self, auth_client: globus_sdk.AuthClient) -> None:
31
31
  self.auth_client = auth_client
32
32
  self.resolved_ids = globus_sdk.IdentityMap(auth_client)
33
33
 
@@ -7,7 +7,7 @@ if t.TYPE_CHECKING:
7
7
 
8
8
  # single source of truth for package version,
9
9
  # see https://packaging.python.org/en/latest/single_source_version/
10
- __version__ = "3.31.0"
10
+ __version__ = "3.32.0"
11
11
 
12
12
  # app name to send as part of SDK requests
13
13
  app_name = f"Globus CLI v{__version__}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: globus-cli
3
- Version: 3.31.0
3
+ Version: 3.32.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
@@ -18,7 +18,7 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Requires-Python: >=3.8
19
19
  Description-Content-Type: text/x-rst
20
20
  License-File: LICENSE
21
- Requires-Dist: globus-sdk==3.45.0
21
+ Requires-Dist: globus-sdk==3.46.0
22
22
  Requires-Dist: click<9,>=8.1.4
23
23
  Requires-Dist: jmespath==1.0.1
24
24
  Requires-Dist: packaging>=17.0
@@ -29,7 +29,7 @@ Requires-Dist: coverage>=7; extra == "test"
29
29
  Requires-Dist: pytest>=7; extra == "test"
30
30
  Requires-Dist: pytest-xdist<4; extra == "test"
31
31
  Requires-Dist: pytest-timeout<3; extra == "test"
32
- Requires-Dist: click-type-test==0.0.7; python_version >= "3.10" and extra == "test"
32
+ Requires-Dist: click-type-test==1.0.0; python_version >= "3.10" and extra == "test"
33
33
  Requires-Dist: responses==0.25.3; extra == "test"
34
34
  Requires-Dist: ruamel.yaml==0.18.6; extra == "test"
35
35
  Requires-Dist: setuptools; python_version >= "3.12" and extra == "test"
@@ -1,4 +1,4 @@
1
- globus-sdk==3.45.0
1
+ globus-sdk==3.46.0
2
2
  click<9,>=8.1.4
3
3
  jmespath==1.0.1
4
4
  packaging>=17.0
@@ -16,7 +16,7 @@ responses==0.25.3
16
16
  ruamel.yaml==0.18.6
17
17
 
18
18
  [test:python_version >= "3.10"]
19
- click-type-test==0.0.7
19
+ click-type-test==1.0.0
20
20
 
21
21
  [test:python_version >= "3.12"]
22
22
  setuptools
File without changes
File without changes
File without changes
File without changes