globus-cli 3.33.1__tar.gz → 3.35.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 (284) hide show
  1. {globus_cli-3.33.1/src/globus_cli.egg-info → globus_cli-3.35.0}/PKG-INFO +3 -3
  2. {globus_cli-3.33.1 → globus_cli-3.35.0}/pyproject.toml +37 -4
  3. globus_cli-3.35.0/src/globus_cli/_click_compat.py +55 -0
  4. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/api.py +20 -9
  5. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/create/guest.py +4 -0
  6. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/list.py +16 -1
  7. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/update.py +4 -6
  8. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/create.py +38 -0
  9. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/list.py +22 -6
  10. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/list.py +34 -2
  11. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/show.py +17 -1
  12. globus_cli-3.35.0/src/globus_cli/commands/flows/start.py +310 -0
  13. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/update.py +36 -0
  14. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/guest.py +4 -0
  15. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/update/guest.py +4 -0
  16. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/update.py +3 -1
  17. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/list_commands.py +2 -5
  18. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/login.py +3 -1
  19. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/list.py +2 -2
  20. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/create/transfer.py +1 -1
  21. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/delete.py +1 -1
  22. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/list.py +1 -1
  23. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/pause.py +1 -1
  24. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/resume.py +1 -1
  25. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/show.py +1 -1
  26. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/scopes.py +1 -1
  27. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/commands.py +18 -13
  28. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/__init__.py +6 -0
  29. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/delimited.py +59 -5
  30. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/endpoint_plus_path.py +4 -1
  31. globus_cli-3.35.0/src/globus_cli/parsing/param_types/guest_activity_notify_param.py +200 -0
  32. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/identity_type.py +4 -1
  33. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/json_strorfile.py +3 -1
  34. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/notify_param.py +4 -1
  35. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/nullable.py +7 -3
  36. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/__init__.py +42 -1
  37. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/reflect.py +4 -4
  38. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/types.py +1 -1
  39. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/version.py +1 -1
  40. {globus_cli-3.33.1 → globus_cli-3.35.0/src/globus_cli.egg-info}/PKG-INFO +3 -3
  41. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/SOURCES.txt +2 -0
  42. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/requires.txt +1 -1
  43. globus_cli-3.33.1/src/globus_cli/commands/flows/start.py +0 -154
  44. {globus_cli-3.33.1 → globus_cli-3.35.0}/LICENSE +0 -0
  45. {globus_cli-3.33.1 → globus_cli-3.35.0}/README.rst +0 -0
  46. {globus_cli-3.33.1 → globus_cli-3.35.0}/setup.cfg +0 -0
  47. {globus_cli-3.33.1 → globus_cli-3.35.0}/setup.py +0 -0
  48. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/__init__.py +0 -0
  49. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/__main__.py +0 -0
  50. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/_warnings.py +0 -0
  51. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/__init__.py +0 -0
  52. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/_common.py +0 -0
  53. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/__init__.py +0 -0
  54. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/_common.py +0 -0
  55. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/create.py +0 -0
  56. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/delete.py +0 -0
  57. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/list.py +0 -0
  58. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/rename.py +0 -0
  59. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/bookmark/show.py +0 -0
  60. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/cli_profile_list.py +0 -0
  61. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/__init__.py +0 -0
  62. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/_common.py +0 -0
  63. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/create/__init__.py +0 -0
  64. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/create/mapped.py +0 -0
  65. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/delete.py +0 -0
  66. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/collection/show.py +0 -0
  67. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/delete.py +0 -0
  68. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/__init__.py +0 -0
  69. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/_common.py +0 -0
  70. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/activate.py +0 -0
  71. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/create.py +0 -0
  72. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/deactivate.py +0 -0
  73. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/delete.py +0 -0
  74. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/is_activated.py +0 -0
  75. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/local_id.py +0 -0
  76. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/my_shared_endpoint_list.py +0 -0
  77. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/__init__.py +0 -0
  78. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/_common.py +0 -0
  79. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/create.py +0 -0
  80. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/delete.py +0 -0
  81. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/list.py +0 -0
  82. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/show.py +0 -0
  83. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/permission/update.py +0 -0
  84. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/__init__.py +0 -0
  85. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/_common.py +0 -0
  86. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/create.py +0 -0
  87. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/delete.py +0 -0
  88. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/list.py +0 -0
  89. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/role/show.py +0 -0
  90. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/search.py +0 -0
  91. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/__init__.py +0 -0
  92. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/_common.py +0 -0
  93. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/add.py +0 -0
  94. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/delete.py +0 -0
  95. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/list.py +0 -0
  96. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/show.py +0 -0
  97. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/server/update.py +0 -0
  98. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/set_subscription_id.py +0 -0
  99. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/show.py +0 -0
  100. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/storage_gateway/__init__.py +0 -0
  101. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/storage_gateway/list.py +0 -0
  102. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/update.py +0 -0
  103. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/__init__.py +0 -0
  104. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/_common.py +0 -0
  105. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/__init__.py +0 -0
  106. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/from_json.py +0 -0
  107. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/posix.py +0 -0
  108. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/create/s3.py +0 -0
  109. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/delete.py +0 -0
  110. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/list.py +0 -0
  111. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/show.py +0 -0
  112. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/update/__init__.py +0 -0
  113. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/endpoint/user_credential/update/from_json.py +0 -0
  114. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/__init__.py +0 -0
  115. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/_common.py +0 -0
  116. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/delete.py +0 -0
  117. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/__init__.py +0 -0
  118. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/cancel.py +0 -0
  119. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/delete.py +0 -0
  120. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/resume.py +0 -0
  121. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/show.py +0 -0
  122. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/show_definition.py +0 -0
  123. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/show_logs.py +0 -0
  124. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/run/update.py +0 -0
  125. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/flows/validate.py +0 -0
  126. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/__init__.py +0 -0
  127. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/__init__.py +0 -0
  128. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/_common.py +0 -0
  129. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/create/mapped.py +0 -0
  130. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/set_subscription_id.py +0 -0
  131. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/update/__init__.py +0 -0
  132. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcp/update/mapped.py +0 -0
  133. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/__init__.py +0 -0
  134. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/__init__.py +0 -0
  135. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/_common.py +0 -0
  136. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/__init__.py +0 -0
  137. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/_common.py +0 -0
  138. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/create.py +0 -0
  139. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/delete.py +0 -0
  140. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/list.py +0 -0
  141. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/role/show.py +0 -0
  142. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/set_subscription_id.py +0 -0
  143. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/gcs/endpoint/show.py +0 -0
  144. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/get_identities.py +0 -0
  145. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/__init__.py +0 -0
  146. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/_common.py +0 -0
  147. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/create.py +0 -0
  148. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/delete.py +0 -0
  149. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/get_by_subscription.py +0 -0
  150. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/get_subscription_info.py +0 -0
  151. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/__init__.py +0 -0
  152. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/_common.py +0 -0
  153. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/accept.py +0 -0
  154. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/invite/decline.py +0 -0
  155. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/join.py +0 -0
  156. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/leave.py +0 -0
  157. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/list.py +0 -0
  158. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/__init__.py +0 -0
  159. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/add.py +0 -0
  160. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/approve.py +0 -0
  161. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/invite.py +0 -0
  162. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/list.py +0 -0
  163. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/reject.py +0 -0
  164. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/member/remove.py +0 -0
  165. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/set_policies.py +0 -0
  166. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/show.py +0 -0
  167. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/group/update.py +0 -0
  168. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/logout.py +0 -0
  169. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/ls.py +0 -0
  170. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/mkdir.py +0 -0
  171. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/rename.py +0 -0
  172. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/rm.py +0 -0
  173. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/__init__.py +0 -0
  174. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/_common.py +0 -0
  175. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/delete_by_query.py +0 -0
  176. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/__init__.py +0 -0
  177. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/create.py +0 -0
  178. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/delete.py +0 -0
  179. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/list.py +0 -0
  180. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/__init__.py +0 -0
  181. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/create.py +0 -0
  182. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/delete.py +0 -0
  183. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/role/list.py +0 -0
  184. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/index/show.py +0 -0
  185. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/ingest.py +0 -0
  186. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/query.py +0 -0
  187. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/subject/__init__.py +0 -0
  188. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/subject/delete.py +0 -0
  189. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/subject/show.py +0 -0
  190. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/task/__init__.py +0 -0
  191. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/task/list.py +0 -0
  192. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/search/task/show.py +0 -0
  193. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/__init__.py +0 -0
  194. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/consent.py +0 -0
  195. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/show.py +0 -0
  196. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/session/update.py +0 -0
  197. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/stat.py +0 -0
  198. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/__init__.py +0 -0
  199. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/_common.py +0 -0
  200. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/cancel.py +0 -0
  201. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/event_list.py +0 -0
  202. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/generate_submission_id.py +0 -0
  203. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/pause_info.py +0 -0
  204. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/show.py +0 -0
  205. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/update.py +0 -0
  206. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/task/wait.py +0 -0
  207. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/__init__.py +0 -0
  208. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/_common.py +0 -0
  209. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/timer/create/__init__.py +0 -0
  210. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/transfer.py +0 -0
  211. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/update.py +0 -0
  212. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/version.py +0 -0
  213. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/commands/whoami.py +0 -0
  214. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/constants.py +0 -0
  215. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/__init__.py +0 -0
  216. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/endpointish.py +0 -0
  217. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/entity_type.py +0 -0
  218. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/endpointish/errors.py +0 -0
  219. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/__init__.py +0 -0
  220. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/__init__.py +0 -0
  221. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/auth_requirements.py +0 -0
  222. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/authapi_hooks.py +0 -0
  223. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/endpoint_types.py +0 -0
  224. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/flows_hooks.py +0 -0
  225. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/generic_hooks.py +0 -0
  226. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/search_hooks.py +0 -0
  227. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/hooks/transfer_hooks.py +0 -0
  228. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/messages.py +0 -0
  229. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/exception_handling/registry.py +0 -0
  230. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/globus_cli_flake8.py +0 -0
  231. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/__init__.py +0 -0
  232. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/_old_config.py +0 -0
  233. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/auth_flows.py +0 -0
  234. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/client_login.py +0 -0
  235. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/context.py +0 -0
  236. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/errors.py +0 -0
  237. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/local_server.py +0 -0
  238. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/manager.py +0 -0
  239. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/storage.py +0 -0
  240. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/login_manager/utils.py +0 -0
  241. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/__init__.py +0 -0
  242. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/command_state.py +0 -0
  243. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/mutex_group.py +0 -0
  244. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_classes.py +0 -0
  245. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/location.py +0 -0
  246. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/task_path.py +0 -0
  247. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/param_types/timedelta.py +0 -0
  248. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_callbacks.py +0 -0
  249. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/endpointish.py +0 -0
  250. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/id_args.py +0 -0
  251. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shared_options/transfer_task_options.py +0 -0
  252. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/parsing/shell_completion.py +0 -0
  253. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/__init__.py +0 -0
  254. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/auth.py +0 -0
  255. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/gcs.py +0 -0
  256. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/__init__.py +0 -0
  257. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/activation.py +0 -0
  258. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/client.py +0 -0
  259. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/data.py +0 -0
  260. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/services/transfer/recursive_ls.py +0 -0
  261. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/__init__.py +0 -0
  262. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/_display.py +0 -0
  263. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/context.py +0 -0
  264. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/errors.py +0 -0
  265. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/field.py +0 -0
  266. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/__init__.py +0 -0
  267. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/auth.py +0 -0
  268. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/base.py +0 -0
  269. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/compound.py +0 -0
  270. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/formatters/primitive.py +0 -0
  271. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/__init__.py +0 -0
  272. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/base.py +0 -0
  273. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/custom_printer.py +0 -0
  274. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/json_printer.py +0 -0
  275. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/record_printer.py +0 -0
  276. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/table_printer.py +0 -0
  277. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/unix_printer/__init__.py +0 -0
  278. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/unix_printer/awscli_text.py +0 -0
  279. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/printers/unix_printer/unix_printer.py +0 -0
  280. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/termio/server_timing.py +0 -0
  281. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli/utils.py +0 -0
  282. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/dependency_links.txt +0 -0
  283. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/entry_points.txt +0 -0
  284. {globus_cli-3.33.1 → globus_cli-3.35.0}/src/globus_cli.egg-info/top_level.txt +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: globus-cli
3
- Version: 3.33.1
3
+ Version: 3.35.0
4
4
  Summary: Globus CLI
5
5
  Author-email: Stephen Rosen <sirosen@globus.org>
6
+ License-Expression: Apache-2.0
6
7
  Project-URL: homepage, https://github.com/globus/globus-cli
7
8
  Keywords: globus,cli,command line
8
9
  Classifier: Development Status :: 5 - Production/Stable
9
10
  Classifier: Intended Audience :: Developers
10
- Classifier: License :: OSI Approved :: Apache Software License
11
11
  Classifier: Operating System :: POSIX
12
12
  Classifier: Programming Language :: Python
13
13
  Classifier: Programming Language :: Python :: 3.8
@@ -19,7 +19,7 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Requires-Python: >=3.8
20
20
  Description-Content-Type: text/x-rst
21
21
  License-File: LICENSE
22
- Requires-Dist: globus-sdk==3.53.0
22
+ Requires-Dist: globus-sdk==3.56.0
23
23
  Requires-Dist: click<9,>=8.1.4
24
24
  Requires-Dist: jmespath==1.0.1
25
25
  Requires-Dist: packaging>=17.0
@@ -9,6 +9,7 @@ readme = "README.rst"
9
9
  authors = [
10
10
  { name = "Stephen Rosen", email = "sirosen@globus.org" },
11
11
  ]
12
+ license = "Apache-2.0"
12
13
  keywords = [
13
14
  "globus",
14
15
  "cli",
@@ -17,7 +18,6 @@ keywords = [
17
18
  classifiers = [
18
19
  "Development Status :: 5 - Production/Stable",
19
20
  "Intended Audience :: Developers",
20
- "License :: OSI Approved :: Apache Software License",
21
21
  "Operating System :: POSIX",
22
22
  "Programming Language :: Python",
23
23
  "Programming Language :: Python :: 3.8",
@@ -29,7 +29,7 @@ classifiers = [
29
29
  ]
30
30
  requires-python = ">=3.8"
31
31
  dependencies = [
32
- "globus-sdk==3.53.0",
32
+ "globus-sdk==3.56.0",
33
33
  "click>=8.1.4,<9",
34
34
  "jmespath==1.0.1",
35
35
  "packaging>=17.0",
@@ -88,8 +88,41 @@ attr = "globus_cli.version.__version__"
88
88
  profile = "black"
89
89
 
90
90
  [tool.pytest.ini_options]
91
- addopts = "--timeout 3 --color=yes"
92
- filterwarnings = ["error"]
91
+ addopts = "-n auto --maxprocesses 4 --dist loadscope --timeout 3 --color=yes"
92
+ filterwarnings = [
93
+ "error",
94
+ # ignore SDK warnings for 'filter_role' until
95
+ # 'filter_roles' update is applied
96
+ "ignore:The `filter_role` parameter is deprecated.:globus_sdk.exc.RemovedInV4Warning:",
97
+ ]
98
+
99
+ [tool.coverage.run]
100
+ parallel = true
101
+ source = ["globus_cli"]
102
+ [tool.coverage.paths]
103
+ source = [
104
+ "src/",
105
+ "*/site-packages/",
106
+ ]
107
+ [tool.coverage.report]
108
+ show_missing = true
109
+ skip_covered = true
110
+ fail_under = 87
111
+ exclude_lines =[
112
+ # the pragma to disable coverage
113
+ "pragma: no cover",
114
+ # don't complain if tests don't hit unimplemented methods/modes
115
+ "raise NotImplementedError",
116
+ "assert_never()",
117
+ # don't check on executable components of importable modules
118
+ "if __name__ == .__main__.:",
119
+ # don't check coverage on type checking conditionals
120
+ "if t.TYPE_CHECKING:",
121
+ # skip overloads
122
+ "@t.overload",
123
+ # skip abstract methods
124
+ "@abc.abstractmethod",
125
+ ]
93
126
 
94
127
  [tool.scriv]
95
128
  version = "literal: src/globus_cli/version.py: __version__"
@@ -0,0 +1,55 @@
1
+ """
2
+ A compatibility module for handling click v8.2.0+ and 8.1.x API differences.
3
+ """
4
+
5
+ import functools
6
+ import importlib.metadata
7
+ import typing as t
8
+
9
+ import click
10
+
11
+ C = t.TypeVar("C", bound=t.Callable[..., t.Any])
12
+
13
+ CLICK_VERSION = importlib.metadata.version("click")
14
+
15
+ OLDER_CLICK_API = CLICK_VERSION.startswith("8.1.")
16
+ NEWER_CLICK_API = not OLDER_CLICK_API
17
+
18
+
19
+ def shim_get_metavar(f: C) -> C:
20
+ """
21
+ Make a ParamType.get_metavar function compatible with both the 8.1.x and
22
+ the 8.2.0+ APIs.
23
+
24
+ Under 8.2.0, `ctx: click.Context` is passed, while older versions do not.
25
+ Therefore, do nothing on 8.2.0+ and pass `ctx=None' if the older click
26
+ version is in use.
27
+
28
+ NOTE: we pass `ctx=None` which violates the declared types (but works at
29
+ runtime) because when running under older click versions, there may not be
30
+ a current click context.
31
+ """
32
+ if OLDER_CLICK_API:
33
+
34
+ @functools.wraps(f)
35
+ def wrapper(*args: t.Any, **kwargs: t.Any) -> t.Any:
36
+ return f(*args, **kwargs, ctx=None)
37
+
38
+ return wrapper # type: ignore[return-value]
39
+
40
+ return f
41
+
42
+
43
+ def shim_get_missing_message(f: C) -> C:
44
+ """
45
+ Shim `get_missing_message` in a similar way to `get_metavar` above.
46
+ """
47
+ if OLDER_CLICK_API:
48
+
49
+ @functools.wraps(f)
50
+ def wrapper(*args: t.Any, **kwargs: t.Any) -> t.Any:
51
+ return f(*args, **kwargs, ctx=click.get_current_context())
52
+
53
+ return wrapper # type: ignore[return-value]
54
+
55
+ return f
@@ -9,6 +9,7 @@ import click
9
9
  import globus_sdk
10
10
 
11
11
  from globus_cli import termio, version
12
+ from globus_cli._click_compat import shim_get_metavar
12
13
  from globus_cli.login_manager import LoginManager, is_client_login
13
14
  from globus_cli.login_manager.scopes import CLI_SCOPE_REQUIREMENTS
14
15
  from globus_cli.parsing import command, endpoint_id_arg, group, mutex_option_group
@@ -19,7 +20,8 @@ C = t.TypeVar("C", bound=AnyCommand)
19
20
 
20
21
 
21
22
  class QueryParamType(click.ParamType):
22
- def get_metavar(self, param: click.Parameter) -> str:
23
+ @shim_get_metavar
24
+ def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
23
25
  return "Key=Value"
24
26
 
25
27
  def get_type_annotation(self, param: click.Parameter) -> type:
@@ -44,7 +46,8 @@ class QueryParamType(click.ParamType):
44
46
 
45
47
 
46
48
  class HeaderParamType(click.ParamType):
47
- def get_metavar(self, param: click.Parameter) -> str:
49
+ @shim_get_metavar
50
+ def get_metavar(self, param: click.Parameter, ctx: click.Context) -> str:
48
51
  return "Key:Value"
49
52
 
50
53
  def get_type_annotation(self, param: click.Parameter) -> type:
@@ -134,7 +137,7 @@ def _get_resource_server(service_name: str) -> str:
134
137
  "groups": globus_sdk.GroupsClient.resource_server,
135
138
  "search": globus_sdk.SearchClient.resource_server,
136
139
  "transfer": globus_sdk.TransferClient.resource_server,
137
- "timer": globus_sdk.TimerClient.resource_server,
140
+ "timers": globus_sdk.TimerClient.resource_server,
138
141
  }.get(service_name)
139
142
  if _resource_server is None:
140
143
  raise NotImplementedError(f"unrecognized service: {service_name}")
@@ -154,7 +157,7 @@ def _get_client(
154
157
  return login_manager.get_search_client()
155
158
  elif service_name == "transfer":
156
159
  return login_manager.get_transfer_client()
157
- elif service_name == "timer":
160
+ elif service_name == "timers":
158
161
  return login_manager.get_timer_client()
159
162
  else:
160
163
  raise NotImplementedError(f"unrecognized service: {service_name}")
@@ -167,7 +170,7 @@ def _get_url(service_name: str) -> str:
167
170
  "groups": "https://groups.api.globus.org/v2/",
168
171
  "search": "https://search.api.globus.org/",
169
172
  "transfer": "https://transfer.api.globus.org/v0.10/",
170
- "timer": "https://timer.automate.globus.org/",
173
+ "timers": "https://timer.automate.globus.org/",
171
174
  "gcs": "https://$GCS_MANAGER/",
172
175
  }[service_name]
173
176
 
@@ -356,7 +359,14 @@ def api_command() -> None:
356
359
 
357
360
  # note: this must be written as a separate call and not inlined into the loop body
358
361
  # this ensures that it acts as a closure over 'service_name'
359
- def build_command(service_name: ServiceNameLiteral | t.Literal["gcs"]) -> click.Command:
362
+ def build_command(
363
+ command_name: ServiceNameLiteral | t.Literal["gcs", "timer"],
364
+ ) -> click.Command:
365
+ service_name: ServiceNameLiteral | t.Literal["gcs"] = (
366
+ "timers" if command_name == "timer" else command_name
367
+ )
368
+ hidden: bool = command_name == "timer"
369
+
360
370
  helptext = f"""\
361
371
  Make API calls to Globus {service_name.title()}
362
372
 
@@ -364,14 +374,14 @@ The arguments are an HTTP method name and a path within the service to which the
364
374
  should be made. The path will be joined with the known service URL.
365
375
  For example, a call of
366
376
 
367
- globus api {service_name} GET /foo/bar
377
+ globus api {command_name} GET /foo/bar
368
378
 
369
- sends a 'GET' request to '{_get_url(service_name)}foo/bar'
379
+ sends a 'GET' request to `{_get_url(service_name)}foo/bar`
370
380
  """
371
381
 
372
382
  if service_name != "gcs":
373
383
 
374
- @command(service_name, help=helptext)
384
+ @command(command_name, help=helptext, hidden=hidden)
375
385
  @LoginManager.requires_login(service_name)
376
386
  @_service_command_params
377
387
  def service_command(
@@ -457,3 +467,4 @@ for service_name_ in CLI_SCOPE_REQUIREMENTS:
457
467
  del service_name_
458
468
 
459
469
  api_command.add_command(build_command("gcs"))
470
+ api_command.add_command(build_command("timer"))
@@ -17,6 +17,7 @@ from globus_cli.endpointish import EntityType
17
17
  from globus_cli.login_manager import LoginManager, MissingLoginError
18
18
  from globus_cli.login_manager.context import LoginContext
19
19
  from globus_cli.parsing import command, endpointish_params, mutex_option_group
20
+ from globus_cli.parsing.shared_options import activity_notifications_option
20
21
  from globus_cli.services.gcs import CustomGCSClient
21
22
  from globus_cli.termio import display
22
23
 
@@ -42,6 +43,7 @@ from globus_cli.termio import display
42
43
  @mutex_option_group("--user-credential-id", "--local-username")
43
44
  @endpointish_params.create(name="collection")
44
45
  @identity_id_option
46
+ @activity_notifications_option("GCS")
45
47
  @click.option(
46
48
  "--enable-https/--disable-https",
47
49
  "enable_https",
@@ -74,6 +76,7 @@ def collection_create_guest(
74
76
  organization: str | None | ExplicitNullType,
75
77
  user_message: str | None | ExplicitNullType,
76
78
  user_message_link: str | None | ExplicitNullType,
79
+ activity_notifications: dict[str, list[str]] | None | ExplicitNullType,
77
80
  verify: dict[str, bool],
78
81
  ) -> None:
79
82
  """
@@ -99,6 +102,7 @@ def collection_create_guest(
99
102
 
100
103
  converted_kwargs: dict[str, t.Any] = ExplicitNullType.nullify_dict(
101
104
  {
105
+ "activity_notification_policy": activity_notifications,
102
106
  "collection_base_path": collection_base_path,
103
107
  "contact_info": contact_info,
104
108
  "contact_email": contact_email,
@@ -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
 
@@ -11,8 +12,22 @@ from globus_cli.parsing import command, endpoint_id_arg
11
12
  from globus_cli.termio import Field, display, formatters
12
13
  from globus_cli.utils import PagingWrapper
13
14
 
15
+ if sys.version_info >= (3, 10):
16
+ from typing import TypeAlias
17
+ else:
18
+ from typing_extensions import TypeAlias
14
19
 
15
- class ChoiceSlugified(click.Choice):
20
+ # until our minimum click version is 8.2.0+ , we need to handle the fact that
21
+ # click.Choice became a generic in 8.2.0
22
+ # we cannot leave it without a defined type parameter, as we have
23
+ # "no-any-generics" set for mypy
24
+ if t.TYPE_CHECKING:
25
+ ChoiceType: TypeAlias = click.Choice[str]
26
+ else:
27
+ ChoiceType = click.Choice
28
+
29
+
30
+ class ChoiceSlugified(ChoiceType):
16
31
  """
17
32
  Allow either hyphens or underscores, e.g. both 'mapped-collections' or
18
33
  'mapped_collections'
@@ -18,6 +18,7 @@ from globus_cli.parsing import (
18
18
  emptyable_opt_list_callback,
19
19
  endpointish_params,
20
20
  )
21
+ from globus_cli.parsing.shared_options import activity_notifications_option
21
22
  from globus_cli.termio import Field, display
22
23
 
23
24
  _MULTI_USE_OPTION_STR = "Give this option multiple times in a single command"
@@ -33,12 +34,6 @@ class _FullDataField(Field):
33
34
  @command("update", short_help="Update a Collection definition.")
34
35
  @collection_id_arg
35
36
  @endpointish_params.update(name="collection")
36
- @click.option(
37
- "--force-encryption/--no-force-encryption",
38
- "force_encryption",
39
- default=None,
40
- help="When set, all transfers to and from this collection are always encrypted.",
41
- )
42
37
  @click.option(
43
38
  "--sharing-restrict-paths",
44
39
  type=JSONStringOrFile(null="null"),
@@ -110,10 +105,12 @@ class _FullDataField(Field):
110
105
  'Set a value of "" to clear this.'
111
106
  ),
112
107
  )
108
+ @activity_notifications_option("GCS")
113
109
  @LoginManager.requires_login("auth", "transfer")
114
110
  def collection_update(
115
111
  login_manager: LoginManager,
116
112
  *,
113
+ activity_notifications: dict[str, list[str]] | None | ExplicitNullType,
117
114
  collection_id: uuid.UUID,
118
115
  display_name: str | None,
119
116
  description: str | None | ExplicitNullType,
@@ -181,6 +178,7 @@ def collection_update(
181
178
  "user_message_link": user_message_link,
182
179
  "sharing_users_allow": sharing_users_allow,
183
180
  "sharing_users_deny": sharing_users_deny,
181
+ "activity_notification_policy": activity_notifications,
184
182
  }
185
183
  )
186
184
  converted_kwargs.update(verify)
@@ -38,6 +38,30 @@ ROLE_TYPES = ("flow_viewer", "flow_starter", "flow_administrator", "flow_owner")
38
38
  @starters_option
39
39
  @viewers_option
40
40
  @keywords_option
41
+ @click.option(
42
+ "--run-manager",
43
+ "run_managers",
44
+ type=str,
45
+ multiple=True,
46
+ help="""
47
+ A principal that may manage the flow's runs.
48
+
49
+ This option can be specified multiple times
50
+ to create a list of run managers.
51
+ """,
52
+ )
53
+ @click.option(
54
+ "--run-monitor",
55
+ "run_monitors",
56
+ type=str,
57
+ multiple=True,
58
+ help="""
59
+ A principal that may monitor the flow's runs.
60
+
61
+ This option can be specified multiple times
62
+ to create a list of run monitors.
63
+ """,
64
+ )
41
65
  @click.option(
42
66
  "--subscription-id",
43
67
  help="Set a subscription_id for the flow, marking it as subscription tier.",
@@ -56,6 +80,8 @@ def create_command(
56
80
  starters: tuple[str, ...],
57
81
  viewers: tuple[str, ...],
58
82
  keywords: tuple[str, ...],
83
+ run_managers: tuple[str, ...],
84
+ run_monitors: tuple[str, ...],
59
85
  subscription_id: uuid.UUID | None,
60
86
  ) -> None:
61
87
  """
@@ -106,6 +132,8 @@ def create_command(
106
132
  flow_starters=list(starters),
107
133
  flow_administrators=list(administrators),
108
134
  keywords=list(keywords),
135
+ run_managers=list(run_managers),
136
+ run_monitors=list(run_monitors),
109
137
  subscription_id=subscription_id,
110
138
  )
111
139
 
@@ -141,6 +169,16 @@ def create_command(
141
169
  "flow_starters",
142
170
  formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
143
171
  ),
172
+ Field(
173
+ "Run Managers",
174
+ "run_managers",
175
+ formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
176
+ ),
177
+ Field(
178
+ "Run Monitors",
179
+ "run_monitors",
180
+ formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
181
+ ),
144
182
  ]
145
183
 
146
184
  display(res, fields=fields, text_mode=display.RECORD)
@@ -10,7 +10,14 @@ from globus_cli.parsing import ColonDelimitedChoiceTuple, command
10
10
  from globus_cli.termio import Field, display, formatters
11
11
  from globus_cli.utils import PagingWrapper
12
12
 
13
- ROLE_TYPES = ("flow_viewer", "flow_starter", "flow_administrator", "flow_owner")
13
+ ROLE_TYPES = (
14
+ "flow_viewer",
15
+ "flow_starter",
16
+ "flow_administrator",
17
+ "flow_owner",
18
+ "run_manager",
19
+ "run_monitor",
20
+ )
14
21
  ORDER_BY_FIELDS = (
15
22
  "id",
16
23
  "scope_string",
@@ -29,8 +36,10 @@ ORDER_BY_FIELDS = (
29
36
  @command("list")
30
37
  @click.option(
31
38
  "--filter-role",
39
+ "filter_roles",
32
40
  type=click.Choice(ROLE_TYPES),
33
41
  help="Filter results by the flow's role type associated with the caller",
42
+ multiple=True,
34
43
  )
35
44
  @click.option(
36
45
  "--filter-fulltext",
@@ -71,10 +80,17 @@ ORDER_BY_FIELDS = (
71
80
  def list_command(
72
81
  login_manager: LoginManager,
73
82
  *,
74
- filter_role: (
75
- t.Literal["flow_viewer", "flow_starter", "flow_administrator", "flow_owner"]
76
- | None
77
- ),
83
+ filter_roles: tuple[
84
+ t.Literal[
85
+ "flow_viewer",
86
+ "flow_starter",
87
+ "flow_administrator",
88
+ "flow_owner",
89
+ "run_manager",
90
+ "run_monitor",
91
+ ],
92
+ ...,
93
+ ],
78
94
  orderby: tuple[
79
95
  tuple[
80
96
  t.Literal[
@@ -98,7 +114,7 @@ def list_command(
98
114
  paginator = Paginator.wrap(flows_client.list_flows)
99
115
  flow_iterator = PagingWrapper(
100
116
  paginator(
101
- filter_role=filter_role,
117
+ filter_roles=filter_roles, # type: ignore[arg-type]
102
118
  filter_fulltext=filter_fulltext,
103
119
  orderby=",".join(f"{field} {order}" for field, order in orderby),
104
120
  ).items(),
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import typing as t
3
4
  import uuid
4
5
 
5
6
  import click
@@ -10,6 +11,14 @@ from globus_cli.parsing import command
10
11
  from globus_cli.termio import Field, display
11
12
  from globus_cli.utils import PagingWrapper
12
13
 
14
+ ROLE_TYPES = (
15
+ "run_owner",
16
+ "run_manager",
17
+ "run_monitor",
18
+ "flow_run_manager",
19
+ "flow_run_monitor",
20
+ )
21
+
13
22
 
14
23
  @command("list")
15
24
  @click.option(
@@ -22,6 +31,13 @@ from globus_cli.utils import PagingWrapper
22
31
  multiple=True,
23
32
  type=click.UUID,
24
33
  )
34
+ @click.option(
35
+ "--filter-role",
36
+ "filter_roles",
37
+ type=click.Choice(ROLE_TYPES),
38
+ help="Filter results by the run's role type associated with the caller",
39
+ multiple=True,
40
+ )
25
41
  @click.option(
26
42
  "--limit",
27
43
  default=25,
@@ -32,7 +48,20 @@ from globus_cli.utils import PagingWrapper
32
48
  )
33
49
  @LoginManager.requires_login("flows")
34
50
  def list_command(
35
- login_manager: LoginManager, *, limit: int, filter_flow_id: tuple[uuid.UUID, ...]
51
+ login_manager: LoginManager,
52
+ *,
53
+ limit: int,
54
+ filter_flow_id: tuple[uuid.UUID, ...],
55
+ filter_roles: tuple[
56
+ t.Literal[
57
+ "run_owner",
58
+ "run_manager",
59
+ "run_monitor",
60
+ "flow_run_manager",
61
+ "flow_run_monitor",
62
+ ],
63
+ ...,
64
+ ],
36
65
  ) -> None:
37
66
  """
38
67
  List runs.
@@ -45,7 +74,10 @@ def list_command(
45
74
 
46
75
  paginator = Paginator.wrap(flows_client.list_runs)
47
76
  run_iterator = PagingWrapper(
48
- paginator(filter_flow_id=filter_flow_id).items(),
77
+ paginator(
78
+ filter_flow_id=filter_flow_id,
79
+ filter_roles=filter_roles, # type: ignore[arg-type]
80
+ ).items(),
49
81
  json_conversion_key="runs",
50
82
  limit=limit,
51
83
  )
@@ -20,7 +20,13 @@ def show_command(login_manager: LoginManager, *, flow_id: uuid.UUID) -> None:
20
20
  res = flows_client.get_flow(flow_id)
21
21
 
22
22
  principal_formatter = formatters.auth.PrincipalURNFormatter(auth_client)
23
- for principal_set_name in ("flow_administrators", "flow_viewers", "flow_starters"):
23
+ for principal_set_name in (
24
+ "flow_administrators",
25
+ "flow_viewers",
26
+ "flow_starters",
27
+ "run_managers",
28
+ "run_monitors",
29
+ ):
24
30
  for value in res.get(principal_set_name, ()):
25
31
  principal_formatter.add_item(value)
26
32
  principal_formatter.add_item(res.get("flow_owner"))
@@ -48,6 +54,16 @@ def show_command(login_manager: LoginManager, *, flow_id: uuid.UUID) -> None:
48
54
  "flow_starters",
49
55
  formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
50
56
  ),
57
+ Field(
58
+ "Run Managers",
59
+ "run_managers",
60
+ formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
61
+ ),
62
+ Field(
63
+ "Run Monitors",
64
+ "run_monitors",
65
+ formatter=formatters.ArrayFormatter(element_formatter=principal_formatter),
66
+ ),
51
67
  ]
52
68
 
53
69
  display(res, fields=fields, text_mode=display.RECORD)