gam7 7.7.13__tar.gz → 7.7.15__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.

Potentially problematic release.


This version of gam7 might be problematic. Click here for more details.

Files changed (318) hide show
  1. {gam7-7.7.13 → gam7-7.7.15}/.github/workflows/build.yml +1 -1
  2. {gam7-7.7.13 → gam7-7.7.15}/PKG-INFO +2 -2
  3. {gam7-7.7.13 → gam7-7.7.15}/pyproject.toml +1 -1
  4. {gam7-7.7.13 → gam7-7.7.15}/src/GamCommands.txt +4 -3
  5. {gam7-7.7.13 → gam7-7.7.15}/src/GamUpdate.txt +15 -0
  6. {gam7-7.7.13 → gam7-7.7.15}/src/gam/__init__.py +17 -9
  7. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glmsgs.py +4 -2
  8. {gam7-7.7.13 → gam7-7.7.15}/src/gam.spec +5 -1
  9. {gam7-7.7.13 → gam7-7.7.15}/src/requirements.txt +0 -1
  10. {gam7-7.7.13 → gam7-7.7.15}/src/setup.cfg +0 -1
  11. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chat-Bot.md +39 -15
  12. {gam7-7.7.13 → gam7-7.7.15}/wiki/GamUpdates.md +12 -0
  13. {gam7-7.7.13 → gam7-7.7.15}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  14. {gam7-7.7.13 → gam7-7.7.15}/wiki/Shared-Drives.md +57 -10
  15. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Chat.md +2 -4
  16. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Permissions.md +12 -1
  17. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Shared-Drives.md +30 -0
  18. {gam7-7.7.13 → gam7-7.7.15}/wiki/Version-and-Help.md +6 -6
  19. {gam7-7.7.13 → gam7-7.7.15}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  20. {gam7-7.7.13 → gam7-7.7.15}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  21. {gam7-7.7.13 → gam7-7.7.15}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  22. {gam7-7.7.13 → gam7-7.7.15}/.github/ISSUE_TEMPLATE.txt +0 -0
  23. {gam7-7.7.13 → gam7-7.7.15}/.github/actions/decrypt.sh +0 -0
  24. {gam7-7.7.13 → gam7-7.7.15}/.github/actions/entitlements.plist +0 -0
  25. {gam7-7.7.13 → gam7-7.7.15}/.github/actions/package_exclusions.txt +0 -0
  26. {gam7-7.7.13 → gam7-7.7.15}/.github/stale.yml +0 -0
  27. {gam7-7.7.13 → gam7-7.7.15}/.github/workflows/codeql-analysis.yml +0 -0
  28. {gam7-7.7.13 → gam7-7.7.15}/.github/workflows/get-cacerts.yml +0 -0
  29. {gam7-7.7.13 → gam7-7.7.15}/.github/workflows/pushwiki.yml +0 -0
  30. {gam7-7.7.13 → gam7-7.7.15}/.github/workflows/pypi.yml +0 -0
  31. {gam7-7.7.13 → gam7-7.7.15}/.pre-commit-config.yaml +0 -0
  32. {gam7-7.7.13 → gam7-7.7.15}/LICENSE +0 -0
  33. {gam7-7.7.13 → gam7-7.7.15}/README.md +0 -0
  34. {gam7-7.7.13 → gam7-7.7.15}/src/.gitignore +0 -0
  35. {gam7-7.7.13 → gam7-7.7.15}/src/LICENSE +0 -0
  36. {gam7-7.7.13 → gam7-7.7.15}/src/cacerts.pem +0 -0
  37. {gam7-7.7.13 → gam7-7.7.15}/src/callgam.py +0 -0
  38. {gam7-7.7.13 → gam7-7.7.15}/src/gam/__main__.py +0 -0
  39. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/__init__.py +0 -0
  40. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/auth.py +0 -0
  41. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/client.py +0 -0
  42. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/core.py +0 -0
  43. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/data.py +0 -0
  44. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/http.py +0 -0
  45. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/http_core.py +0 -0
  46. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/http_interface.py +0 -0
  47. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/mock_http.py +0 -0
  48. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/mock_http_core.py +0 -0
  49. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/mock_service.py +0 -0
  50. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/service.py +0 -0
  51. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/token_store.py +0 -0
  52. {gam7-7.7.13 → gam7-7.7.15}/src/gam/atom/url.py +0 -0
  53. {gam7-7.7.13 → gam7-7.7.15}/src/gam/cacerts.pem +0 -0
  54. {gam7-7.7.13 → gam7-7.7.15}/src/gam/cbcm-v1.1beta1.json +0 -0
  55. {gam7-7.7.13 → gam7-7.7.15}/src/gam/contactdelegation-v1.json +0 -0
  56. {gam7-7.7.13 → gam7-7.7.15}/src/gam/datastudio-v1.json +0 -0
  57. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/__init__.py +0 -0
  58. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glaction.py +0 -0
  59. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glapi.py +0 -0
  60. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glcfg.py +0 -0
  61. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glclargs.py +0 -0
  62. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glentity.py +0 -0
  63. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glgapi.py +0 -0
  64. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glgdata.py +0 -0
  65. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glglobals.py +0 -0
  66. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glindent.py +0 -0
  67. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glskus.py +0 -0
  68. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/gluprop.py +0 -0
  69. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/glverlibs.py +0 -0
  70. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gamlib/yubikey.py +0 -0
  71. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/__init__.py +0 -0
  72. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/alt/__init__.py +0 -0
  73. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/alt/app_engine.py +0 -0
  74. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/alt/appengine.py +0 -0
  75. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/apps/__init__.py +0 -0
  76. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/apps/audit/__init__.py +0 -0
  77. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/apps/audit/service.py +0 -0
  78. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  79. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/apps/contacts/service.py +0 -0
  80. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/apps/service.py +0 -0
  81. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/service.py +0 -0
  82. {gam7-7.7.13 → gam7-7.7.15}/src/gam/gdata/urlfetch.py +0 -0
  83. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/__init__.py +0 -0
  84. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/_auth.py +0 -0
  85. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/_helpers.py +0 -0
  86. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/channel.py +0 -0
  87. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/discovery.py +0 -0
  88. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  89. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  90. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  91. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  92. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/errors.py +0 -0
  93. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/http.py +0 -0
  94. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/mimeparse.py +0 -0
  95. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/model.py +0 -0
  96. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/schema.py +0 -0
  97. {gam7-7.7.13 → gam7-7.7.15}/src/gam/googleapiclient/version.py +0 -0
  98. {gam7-7.7.13 → gam7-7.7.15}/src/gam/iso8601/__init__.py +0 -0
  99. {gam7-7.7.13 → gam7-7.7.15}/src/gam/iso8601/iso8601.py +0 -0
  100. {gam7-7.7.13 → gam7-7.7.15}/src/gam/meet-v2beta.json +0 -0
  101. {gam7-7.7.13 → gam7-7.7.15}/src/gam/serviceaccountlookup-v1.json +0 -0
  102. {gam7-7.7.13 → gam7-7.7.15}/src/gam/six.py +0 -0
  103. {gam7-7.7.13 → gam7-7.7.15}/src/gam-install.sh +0 -0
  104. {gam7-7.7.13 → gam7-7.7.15}/src/gam-setup.bat +0 -0
  105. {gam7-7.7.13 → gam7-7.7.15}/src/gam.exe.manifest +0 -0
  106. {gam7-7.7.13 → gam7-7.7.15}/src/gam.py +0 -0
  107. {gam7-7.7.13 → gam7-7.7.15}/src/gam.wxs +0 -0
  108. {gam7-7.7.13 → gam7-7.7.15}/src/license.rtf +0 -0
  109. {gam7-7.7.13 → gam7-7.7.15}/src/requirements-dev.txt +0 -0
  110. {gam7-7.7.13 → gam7-7.7.15}/src/setup.py +0 -0
  111. {gam7-7.7.13 → gam7-7.7.15}/src/tools/a_atleast_b.py +0 -0
  112. {gam7-7.7.13 → gam7-7.7.15}/src/tools/gen-wix-xml-filelist.py +0 -0
  113. {gam7-7.7.13 → gam7-7.7.15}/src/tools/mkGamRef.py +0 -0
  114. {gam7-7.7.13 → gam7-7.7.15}/src/tools/openssl.props +0 -0
  115. {gam7-7.7.13 → gam7-7.7.15}/src/version_info.txt.in +0 -0
  116. {gam7-7.7.13 → gam7-7.7.15}/wiki/00scratch.md +0 -0
  117. {gam7-7.7.13 → gam7-7.7.15}/wiki/Addresses.md +0 -0
  118. {gam7-7.7.13 → gam7-7.7.15}/wiki/Administrators.md +0 -0
  119. {gam7-7.7.13 → gam7-7.7.15}/wiki/Alert-Center.md +0 -0
  120. {gam7-7.7.13 → gam7-7.7.15}/wiki/Aliases.md +0 -0
  121. {gam7-7.7.13 → gam7-7.7.15}/wiki/Authorization.md +0 -0
  122. {gam7-7.7.13 → gam7-7.7.15}/wiki/BNF-Syntax.md +0 -0
  123. {gam7-7.7.13 → gam7-7.7.15}/wiki/Basic-Items.md +0 -0
  124. {gam7-7.7.13 → gam7-7.7.15}/wiki/Bulk-Processing.md +0 -0
  125. {gam7-7.7.13 → gam7-7.7.15}/wiki/CSV-Input-Filtering.md +0 -0
  126. {gam7-7.7.13 → gam7-7.7.15}/wiki/CSV-Output-Filtering.md +0 -0
  127. {gam7-7.7.13 → gam7-7.7.15}/wiki/CSV-Special-Characters.md +0 -0
  128. {gam7-7.7.13 → gam7-7.7.15}/wiki/Calendars-Access.md +0 -0
  129. {gam7-7.7.13 → gam7-7.7.15}/wiki/Calendars-Events.md +0 -0
  130. {gam7-7.7.13 → gam7-7.7.15}/wiki/Calendars.md +0 -0
  131. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-AUE-Counts.md +0 -0
  132. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  133. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Installed-Apps.md +0 -0
  134. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  135. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Policies.md +0 -0
  136. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Printers.md +0 -0
  137. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Profile-Management.md +0 -0
  138. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Version-Counts.md +0 -0
  139. {gam7-7.7.13 → gam7-7.7.15}/wiki/Chrome-Version-History.md +0 -0
  140. {gam7-7.7.13 → gam7-7.7.15}/wiki/ChromeOS-Devices.md +0 -0
  141. {gam7-7.7.13 → gam7-7.7.15}/wiki/Classroom-Courses.md +0 -0
  142. {gam7-7.7.13 → gam7-7.7.15}/wiki/Classroom-Guardians.md +0 -0
  143. {gam7-7.7.13 → gam7-7.7.15}/wiki/Classroom-Invitations.md +0 -0
  144. {gam7-7.7.13 → gam7-7.7.15}/wiki/Classroom-Membership.md +0 -0
  145. {gam7-7.7.13 → gam7-7.7.15}/wiki/Cloud-Channel.md +0 -0
  146. {gam7-7.7.13 → gam7-7.7.15}/wiki/Cloud-Identity-Devices.md +0 -0
  147. {gam7-7.7.13 → gam7-7.7.15}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  148. {gam7-7.7.13 → gam7-7.7.15}/wiki/Cloud-Identity-Groups.md +0 -0
  149. {gam7-7.7.13 → gam7-7.7.15}/wiki/Cloud-Identity-Policies.md +0 -0
  150. {gam7-7.7.13 → gam7-7.7.15}/wiki/Cloud-Storage.md +0 -0
  151. {gam7-7.7.13 → gam7-7.7.15}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  152. {gam7-7.7.13 → gam7-7.7.15}/wiki/Collections-of-Items.md +0 -0
  153. {gam7-7.7.13 → gam7-7.7.15}/wiki/Collections-of-Users.md +0 -0
  154. {gam7-7.7.13 → gam7-7.7.15}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  155. {gam7-7.7.13 → gam7-7.7.15}/wiki/Command-Line-Parsing.md +0 -0
  156. {gam7-7.7.13 → gam7-7.7.15}/wiki/Command-Logging-Progress.md +0 -0
  157. {gam7-7.7.13 → gam7-7.7.15}/wiki/Context-Aware-Access-Levels.md +0 -0
  158. {gam7-7.7.13 → gam7-7.7.15}/wiki/Customer.md +0 -0
  159. {gam7-7.7.13 → gam7-7.7.15}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  160. {gam7-7.7.13 → gam7-7.7.15}/wiki/Domain-SharedContacts.md +0 -0
  161. {gam7-7.7.13 → gam7-7.7.15}/wiki/Domains-Verification.md +0 -0
  162. {gam7-7.7.13 → gam7-7.7.15}/wiki/Domains.md +0 -0
  163. {gam7-7.7.13 → gam7-7.7.15}/wiki/Downloads-Installs.md +0 -0
  164. {gam7-7.7.13 → gam7-7.7.15}/wiki/Drive-File-Selection.md +0 -0
  165. {gam7-7.7.13 → gam7-7.7.15}/wiki/Drive-Items.md +0 -0
  166. {gam7-7.7.13 → gam7-7.7.15}/wiki/Drive-REST-API-v3.md +0 -0
  167. {gam7-7.7.13 → gam7-7.7.15}/wiki/Email-Audit-Monitor.md +0 -0
  168. {gam7-7.7.13 → gam7-7.7.15}/wiki/Find-File-Owner.md +0 -0
  169. {gam7-7.7.13 → gam7-7.7.15}/wiki/GAM-Public-Chat-Room.md +0 -0
  170. {gam7-7.7.13 → gam7-7.7.15}/wiki/GAM-Return-Codes.md +0 -0
  171. {gam7-7.7.13 → gam7-7.7.15}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  172. {gam7-7.7.13 → gam7-7.7.15}/wiki/GAM7-on-Android-Devices.md +0 -0
  173. {gam7-7.7.13 → gam7-7.7.15}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  174. {gam7-7.7.13 → gam7-7.7.15}/wiki/Google-Data-Transfers.md +0 -0
  175. {gam7-7.7.13 → gam7-7.7.15}/wiki/Google-Network-Addresses.md +0 -0
  176. {gam7-7.7.13 → gam7-7.7.15}/wiki/Groups-Membership.md +0 -0
  177. {gam7-7.7.13 → gam7-7.7.15}/wiki/Groups.md +0 -0
  178. {gam7-7.7.13 → gam7-7.7.15}/wiki/HTTPS-Proxy.md +0 -0
  179. {gam7-7.7.13 → gam7-7.7.15}/wiki/Home.md +0 -0
  180. {gam7-7.7.13 → gam7-7.7.15}/wiki/How-to-Install-GAM7.md +0 -0
  181. {gam7-7.7.13 → gam7-7.7.15}/wiki/How-to-Uninstall-GAM7.md +0 -0
  182. {gam7-7.7.13 → gam7-7.7.15}/wiki/How-to-Update-GAM7.md +0 -0
  183. {gam7-7.7.13 → gam7-7.7.15}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  184. {gam7-7.7.13 → gam7-7.7.15}/wiki/Inbound-SSO.md +0 -0
  185. {gam7-7.7.13 → gam7-7.7.15}/wiki/Install-GAM-as-Python-Library.md +0 -0
  186. {gam7-7.7.13 → gam7-7.7.15}/wiki/Licenses.md +0 -0
  187. {gam7-7.7.13 → gam7-7.7.15}/wiki/List-Items.md +0 -0
  188. {gam7-7.7.13 → gam7-7.7.15}/wiki/List.md +0 -0
  189. {gam7-7.7.13 → gam7-7.7.15}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  190. {gam7-7.7.13 → gam7-7.7.15}/wiki/Mobile-Devices.md +0 -0
  191. {gam7-7.7.13 → gam7-7.7.15}/wiki/Organizational-Units.md +0 -0
  192. {gam7-7.7.13 → gam7-7.7.15}/wiki/Other-Resources.md +0 -0
  193. {gam7-7.7.13 → gam7-7.7.15}/wiki/Permission-Matches.md +0 -0
  194. {gam7-7.7.13 → gam7-7.7.15}/wiki/Python-Regular-Expressions.md +0 -0
  195. {gam7-7.7.13 → gam7-7.7.15}/wiki/README.md +0 -0
  196. {gam7-7.7.13 → gam7-7.7.15}/wiki/Rclone.md +0 -0
  197. {gam7-7.7.13 → gam7-7.7.15}/wiki/Reports.md +0 -0
  198. {gam7-7.7.13 → gam7-7.7.15}/wiki/Reseller.md +0 -0
  199. {gam7-7.7.13 → gam7-7.7.15}/wiki/Resources.md +0 -0
  200. {gam7-7.7.13 → gam7-7.7.15}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  201. {gam7-7.7.13 → gam7-7.7.15}/wiki/SSL-Root-CA-Certificates.md +0 -0
  202. {gam7-7.7.13 → gam7-7.7.15}/wiki/Schemas.md +0 -0
  203. {gam7-7.7.13 → gam7-7.7.15}/wiki/Scripts.md +0 -0
  204. {gam7-7.7.13 → gam7-7.7.15}/wiki/Send-Email.md +0 -0
  205. {gam7-7.7.13 → gam7-7.7.15}/wiki/Sites.md +0 -0
  206. {gam7-7.7.13 → gam7-7.7.15}/wiki/Tag-Replace.md +0 -0
  207. {gam7-7.7.13 → gam7-7.7.15}/wiki/Todrive.md +0 -0
  208. {gam7-7.7.13 → gam7-7.7.15}/wiki/Unmanaged-Accounts.md +0 -0
  209. {gam7-7.7.13 → gam7-7.7.15}/wiki/Upgrade-Benefits.md +0 -0
  210. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Analytics-Admin.md +0 -0
  211. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Application-Specific-Passwords.md +0 -0
  212. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Backup-Verification-Codes.md +0 -0
  213. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Calendars-Access.md +0 -0
  214. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Calendars-Events.md +0 -0
  215. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Calendars.md +0 -0
  216. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Classification-Labels.md +0 -0
  217. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Classroom-Profile.md +0 -0
  218. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Contacts-Delegates.md +0 -0
  219. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Contacts.md +0 -0
  220. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Deprovision.md +0 -0
  221. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Activity-Settings.md +0 -0
  222. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Cleanup.md +0 -0
  223. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Comments.md +0 -0
  224. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Copy-Move.md +0 -0
  225. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Files-Display.md +0 -0
  226. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Files-Manage.md +0 -0
  227. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Orphans.md +0 -0
  228. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Ownership.md +0 -0
  229. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Query.md +0 -0
  230. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Revisions.md +0 -0
  231. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Shortcuts.md +0 -0
  232. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Drive-Transfer.md +0 -0
  233. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Forms.md +0 -0
  234. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-CSE.md +0 -0
  235. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Delegates.md +0 -0
  236. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Filters.md +0 -0
  237. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Forwarding.md +0 -0
  238. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Labels.md +0 -0
  239. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  240. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Profile.md +0 -0
  241. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-S-MIME.md +0 -0
  242. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  243. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Gmail-Settings.md +0 -0
  244. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Group-Membership.md +0 -0
  245. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Keep-Notes.md +0 -0
  246. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Looker-Studio.md +0 -0
  247. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Meet.md +0 -0
  248. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-People-Contacts-Profiles.md +0 -0
  249. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Photo.md +0 -0
  250. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Profile-Photo.md +0 -0
  251. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Profile-Sharing.md +0 -0
  252. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  253. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Spreadsheets.md +0 -0
  254. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Tasks.md +0 -0
  255. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-Tokens.md +0 -0
  256. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users-YouTube.md +0 -0
  257. {gam7-7.7.13 → gam7-7.7.15}/wiki/Users.md +0 -0
  258. {gam7-7.7.13 → gam7-7.7.15}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  259. {gam7-7.7.13 → gam7-7.7.15}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  260. {gam7-7.7.13 → gam7-7.7.15}/wiki/Vault-Takeout.md +0 -0
  261. {gam7-7.7.13 → gam7-7.7.15}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  262. {gam7-7.7.13 → gam7-7.7.15}/wiki/_Sidebar.md +0 -0
  263. {gam7-7.7.13 → gam7-7.7.15}/wiki/gam.cfg.md +0 -0
  264. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-AdminSettingsExamples.md +0 -0
  265. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Android-Installation.md +0 -0
  266. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-BulkOperations.md +0 -0
  267. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-CalendarExamples.md +0 -0
  268. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Chat-Bot.md +0 -0
  269. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Chrome-Browser-Management.md +0 -0
  270. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Chrome-OS-Installation.md +0 -0
  271. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Chrome-Policy-Settings.md +0 -0
  272. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Cloud-Identity-Groups.md +0 -0
  273. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  274. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Calendars.md +0 -0
  275. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Definitions.md +0 -0
  276. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Drive.md +0 -0
  277. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Email.md +0 -0
  278. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  279. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Groups.md +0 -0
  280. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Command-Reference-Users.md +0 -0
  281. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  282. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  283. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-CreatingClientSecretsFile.md +0 -0
  284. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Custom-Schemas.md +0 -0
  285. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Data-Transfers.md +0 -0
  286. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-DomainVerification.md +0 -0
  287. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-ExamplesAccountAuditing.md +0 -0
  288. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-ExamplesCSV.md +0 -0
  289. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-ExamplesEmailSettings.md +0 -0
  290. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-ExamplesOrganizations.md +0 -0
  291. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM-Discussion-Group.md +0 -0
  292. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  293. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM-options-files.md +0 -0
  294. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  295. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM3CSVListings.md +0 -0
  296. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM3DirectoryCommands.md +0 -0
  297. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM3GroupSettings.md +0 -0
  298. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GAM7-FAQ.md +0 -0
  299. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  300. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-GoogleDriveManagement.md +0 -0
  301. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  302. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Home.md +0 -0
  303. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  304. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Inbound-SSO-Settings.md +0 -0
  305. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-LicenseExamples.md +0 -0
  306. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Managing-Admins.md +0 -0
  307. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  308. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Managing-Devices.md +0 -0
  309. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Managing-Google-Classroom.md +0 -0
  310. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-OAuthKeyManagement.md +0 -0
  311. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Printers.md +0 -0
  312. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-ResellerCommands.md +0 -0
  313. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  314. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-SecurityExamples.md +0 -0
  315. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-UnmanagedUsersExamples.md +0 -0
  316. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Use-a-Yubikey.md +0 -0
  317. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  318. {gam7-7.7.13 → gam7-7.7.15}/wiki/l-_Footer.md +0 -0
@@ -449,7 +449,7 @@ jobs:
449
449
  "$PYTHON" get-pip.py
450
450
  "$PYTHON" -m pip install --upgrade pip
451
451
  "$PYTHON" -m pip install --upgrade wheel
452
- "$PYTHON" -m pip install --upgrade setuptools
452
+ "$PYTHON" -m pip install setuptools
453
453
  "$PYTHON" -m pip install --upgrade importlib-metadata
454
454
  "$PYTHON" -m pip install --upgrade setuptools-scm
455
455
  "$PYTHON" -m pip list
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.7.13
3
+ Version: 7.7.15
4
4
  Summary: CLI tool to manage Google Workspace
5
5
  Project-URL: Homepage, https://github.com/GAM-team/GAM
6
6
  Project-URL: Issues, https://github.com/GAM-team/GAM/issues
@@ -30,8 +30,8 @@ Requires-Dist: httplib2>=0.22.0
30
30
  Requires-Dist: lxml>=5.4.0
31
31
  Requires-Dist: passlib>=1.7.4
32
32
  Requires-Dist: pathvalidate>=3.2.3
33
- Requires-Dist: pyscard==2.2.1
34
33
  Requires-Dist: python-dateutil
34
+ Requires-Dist: yubikey-manager>=5.6.1
35
35
  Provides-Extra: yubikey
36
36
  Requires-Dist: yubikey-manager>=5.6.1; extra == 'yubikey'
37
37
  Description-Content-Type: text/markdown
@@ -21,8 +21,8 @@ dependencies = [
21
21
  "lxml>=5.4.0",
22
22
  "passlib>=1.7.4",
23
23
  "pathvalidate>=3.2.3",
24
- "pyscard==2.2.1",
25
24
  "python-dateutil",
25
+ "yubikey-manager>=5.6.1",
26
26
  ]
27
27
  description = "CLI tool to manage Google Workspace"
28
28
  readme = "README.md"
@@ -5260,7 +5260,8 @@ gam create vaultexport|export matter <MatterItem> [name <String>] corpus calenda
5260
5260
  [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
5261
5261
  [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
5262
5262
  [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
5263
- [includeshareddrives <Boolean>] [driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
5263
+ [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
5264
+ [driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
5264
5265
  [driveclientsideencryption any|encrypted|unencrypted]
5265
5266
  [includerooms <Boolean>]
5266
5267
  [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
@@ -5326,14 +5327,14 @@ gam create vaulthold|hold matter <MatterItem> [name <String>] corpus calendar|dr
5326
5327
  [query <QueryVaultCorpus>]
5327
5328
  [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
5328
5329
  [includerooms <Boolean>] [covereddata calllogs|textmessages|voicemails]
5329
- [includeshareddrives|includeteamdrives <Boolean>]
5330
+ [includeshareddrives <Boolean>]
5330
5331
  [showdetails|returnidonly]
5331
5332
  gam update vaulthold|hold <HoldItem> matter <MatterItem>
5332
5333
  [([addaccounts|addgroups|addusers <EmailItemList>] [removeaccounts|removegroups|removeusers <EmailItemList>]) | (orgunit|org|ou <OrgUnit>)]
5333
5334
  [query <QueryVaultCorpus>]
5334
5335
  [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
5335
5336
  [includerooms <Boolean>] [covereddata calllogs|textmessages|voicemails]
5336
- [includeshareddrives|includeteamdrives <Boolean>]
5337
+ [includeshareddrives <Boolean>]
5337
5338
  [showdetails]
5338
5339
  gam delete vaulthold|hold <HoldItem> matter <MatterItem>
5339
5340
  gam delete vaulthold|hold <MatterItem> <HoldItem>
@@ -1,3 +1,18 @@
1
+ 7.07.15
2
+
3
+ Added option `shareddrivesoption included|included_if_account_is_not_a_member|not_included` to `gam create vaultexport`.
4
+
5
+ The previous option 'includeshareddrives <Boolean>` is mapped as follows:
6
+ * `includeshareddrives false` - `shareddrivesoption included_if_account_is_not_a_member`
7
+ * `includeshareddrives true` - `shareddrivesoption included`
8
+
9
+ 7.07.14
10
+
11
+ Update `gam setup chat` output to include the following that shows the actual Cloud Pub/Sub Topic Name.
12
+ ```
13
+ You'll use projects/<ProjectID>/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
14
+ ```
15
+
1
16
  7.07.13
2
17
 
3
18
  Added option `showitemcountonly` to `gam [<UserTypeEntity>] print|show shareddrives` that causes GAM to display the
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
25
25
  """
26
26
 
27
27
  __author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
28
- __version__ = '7.07.13'
28
+ __version__ = '7.07.15'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -25949,7 +25949,7 @@ def _printChatItem(user, citem, parent, entityType, csvPF, FJQC, addCSVData=None
25949
25949
  def doSetupChat():
25950
25950
  checkForExtraneousArguments()
25951
25951
  _, chat , _ = buildChatServiceObject()
25952
- writeStdout(Msg.TO_SET_UP_GOOGLE_CHAT.format(setupChatURL(chat)))
25952
+ writeStdout(Msg.TO_SET_UP_GOOGLE_CHAT.format(setupChatURL(chat), GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['project_id']))
25953
25953
 
25954
25954
  def getSpaceName(myarg):
25955
25955
  if myarg == 'space':
@@ -40817,6 +40817,11 @@ VAULT_RESPONSE_STATUS_MAP = {
40817
40817
  'needsaction': 'ATTENDEE_RESPONSE_NEEDS_ACTION',
40818
40818
  'tentative': 'ATTENDEE_RESPONSE_TENTATIVE',
40819
40819
  }
40820
+ VAULT_SHARED_DRIVES_OPTION_MAP = {
40821
+ 'included': 'INCLUDED',
40822
+ 'includedifaccountisnotamember': 'INCLUDED_IF_ACCOUNT_IS_NOT_A_MEMBER',
40823
+ 'notincluded': 'NOT_INCLUDED',
40824
+ }
40820
40825
  VAULT_VOICE_COVERED_DATA_MAP = {
40821
40826
  'calllogs': 'CALL_LOGS',
40822
40827
  'textmessages': 'TEXT_MESSAGES',
@@ -40875,7 +40880,7 @@ VAULT_QUERY_ARGS = [
40875
40880
  # calendar
40876
40881
  'locationquery', 'peoplequery', 'minuswords', 'responsestatuses', 'caldendarversiondate',
40877
40882
  # drive
40878
- 'driveclientsideencryption', 'driveversiondate', 'includeshareddrives', 'includeteamdrives',
40883
+ 'driveclientsideencryption', 'driveversiondate', 'includeshareddrives', 'includeteamdrives', 'shareddrivesoption',
40879
40884
  # hangoutsChat
40880
40885
  'includerooms',
40881
40886
  # mail
@@ -40945,7 +40950,9 @@ def _buildVaultQuery(myarg, query, corpusArgumentMap):
40945
40950
  elif myarg == 'driveversiondate':
40946
40951
  query.setdefault('driveOptions', {})['versionDate'] = getTimeOrDeltaFromNow()
40947
40952
  elif myarg in {'includeshareddrives', 'includeteamdrives'}:
40948
- query.setdefault('driveOptions', {})['includeSharedDrives'] = getBoolean()
40953
+ query.setdefault('driveOptions', {})['sharedDrivesOption'] = 'INCLUDED' if getBoolean() else 'INCLUDED_IF_ACCOUNT_IS_NOT_A_MEMBER'
40954
+ elif myarg == 'shareddrivesoption':
40955
+ query.setdefault('driveOptions', {})['sharedDrivesOption'] = getChoice(VAULT_SHARED_DRIVES_OPTION_MAP, mapChoice=True)
40949
40956
  elif myarg == 'driveclientsideencryption':
40950
40957
  query.setdefault('driveOptions', {})['clientSideEncryptedOption'] = getChoice(VAULT_CSE_OPTION_MAP, mapChoice=True)
40951
40958
  # hangoutsChat
@@ -40979,7 +40986,8 @@ def _validateVaultQuery(body, corpusArgumentMap):
40979
40986
  # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>] [timezone <TimeZone>]
40980
40987
  # [locationquery <StringList>] [peoplequery <StringList>] [minuswords <StringList>]
40981
40988
  # [responsestatuses <AttendeeStatus>(,<AttendeeStatus>)*] [calendarversiondate <Date>|<Time>]
40982
- # [includeshareddrives <Boolean>] [driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
40989
+ # [(includeshareddrives <Boolean>)|(shareddrivesoption included|included_if_account_is_not_a_member|not_included)]
40990
+ # [driveversiondate <Date>|<Time>] [includeaccessinfo <Boolean>]
40983
40991
  # [driveclientsideencryption any|encrypted|unencrypted]
40984
40992
  # [includerooms <Boolean>]
40985
40993
  # [excludedrafts <Boolean>] [mailclientsideencryption any|encrypted|unencrypted]
@@ -41050,7 +41058,7 @@ def doCreateVaultExport():
41050
41058
  try:
41051
41059
  export = callGAPI(v.matters().exports(), 'create',
41052
41060
  throwReasons=[GAPI.ALREADY_EXISTS, GAPI.BAD_REQUEST, GAPI.BACKEND_ERROR, GAPI.INVALID_ARGUMENT,
41053
- GAPI.INVALID, GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.QUOTA_EXCEEDED],
41061
+ GAPI.INVALID, GAPI.FAILED_PRECONDITION, GAPI.FORBIDDEN, GAPI.QUOTA_EXCEEDED, GAPI.NOT_FOUND],
41054
41062
  matterId=matterId, body=body)
41055
41063
  if not returnIdOnly:
41056
41064
  entityActionPerformed([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, formatVaultNameId(export['name'], export['id'])])
@@ -41059,7 +41067,7 @@ def doCreateVaultExport():
41059
41067
  else:
41060
41068
  writeStdout(f'{export["id"]}\n')
41061
41069
  except (GAPI.alreadyExists, GAPI.badRequest, GAPI.backendError, GAPI.invalidArgument,
41062
- GAPI.invalid, GAPI.failedPrecondition, GAPI.forbidden, GAPI.quotaExceeded) as e:
41070
+ GAPI.invalid, GAPI.failedPrecondition, GAPI.forbidden, GAPI.quotaExceeded, GAPI.notFound) as e:
41063
41071
  entityActionFailedWarning([Ent.VAULT_MATTER, matterNameId, Ent.VAULT_EXPORT, body.get('name')], str(e))
41064
41072
 
41065
41073
  # gam delete vaultexport|export <ExportItem> matter <MatterItem>
@@ -41573,7 +41581,7 @@ def _setHoldQuery(body, queryParameters):
41573
41581
  # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
41574
41582
  # [includerooms <Boolean>]
41575
41583
  # [covereddata calllogs|textmessages|voicemails]
41576
- # [includeshareddrives|includeteamdrives <Boolean>]
41584
+ # [includeshareddrives <Boolean>]
41577
41585
  # [showdetails|returnidonly]
41578
41586
  def doCreateVaultHold():
41579
41587
  v = buildGAPIObject(API.VAULT)
@@ -41639,7 +41647,7 @@ def doCreateVaultHold():
41639
41647
  # [terms <String>] [start|starttime <Date>|<Time>] [end|endtime <Date>|<Time>]
41640
41648
  # [includerooms <Boolean>]
41641
41649
  # [covereddata calllogs|textmessages|voicemails]
41642
- # [includeshareddrives|includeteamdrives <Boolean>]
41650
+ # [includeshareddrives <Boolean>]
41643
41651
  # [showdetails]
41644
41652
  def doUpdateVaultHold():
41645
41653
  v = buildGAPIObject(API.VAULT)
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- # Copyright (C) 2024 Ross Scroggs All Rights Reserved.
3
+ # Copyright (C) 2025 Ross Scroggs All Rights Reserved.
4
4
  #
5
5
  # All Rights Reserved.
6
6
  #
@@ -504,13 +504,15 @@ TO = 'To'
504
504
  TO_LC = 'to'
505
505
  TO_MAXIMUM_OF = 'to maximum of'
506
506
  TO_SET_UP_GOOGLE_CHAT = """
507
- To set up Google Chat for your API project, please go to:
507
+ To set up Google Chat for your current project, please go to:
508
508
 
509
509
  {0}
510
510
 
511
511
  and follow the instructions at:
512
512
 
513
513
  https://github.com/GAM-team/GAM/wiki/Chat-Bot#set-up-a-chat-bot
514
+
515
+ You'll use projects/{1}/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
514
516
  """
515
517
  TOTAL_ITEMS_IN_ENTITY = 'Total {0} in {1}'
516
518
  TRIMMED_MESSAGE_FROM_LENGTH_TO_MAXIMUM = 'Trimmed message of length {0} to maximum length {1}'
@@ -38,6 +38,10 @@ hiddenimports = [
38
38
  'gam.gamlib.yubikey',
39
39
  ]
40
40
 
41
+ excludes = [
42
+ 'pkg_resources',
43
+ ]
44
+
41
45
  runtime_hooks = []
42
46
  a = Analysis(
43
47
  ['gam/__main__.py'],
@@ -48,7 +52,7 @@ a = Analysis(
48
52
  hookspath=[],
49
53
  hooksconfig={},
50
54
  runtime_hooks=runtime_hooks,
51
- excludes=[],
55
+ excludes=excludes,
52
56
  win_no_prefer_redirects=False,
53
57
  win_private_assemblies=False,
54
58
  cipher=None,
@@ -10,6 +10,5 @@ httplib2>=0.22.0
10
10
  lxml>=5.4.0
11
11
  passlib>=1.7.4
12
12
  pathvalidate>=3.2.3
13
- pyscard==2.2.1
14
13
  python-dateutil
15
14
  yubikey-manager>=5.6.1
@@ -37,7 +37,6 @@ install_requires =
37
37
  lxml >= 5.4.0
38
38
  passlib >= 1.7.4
39
39
  pathvalidate >= 3.2.3
40
- pyscard == 2.2.1
41
40
  python-dateutil
42
41
  yubikey-manager >= 5.6.1
43
42
 
@@ -1,8 +1,8 @@
1
1
  # Chat Bot
2
-
2
+ - [Introduction](#introduction)
3
+ - [Set up a Chat Bot](#set-up-a-chat-bot)
3
4
  - [API documentation](#api-documentation)
4
5
  - [Definitions](#definitions)
5
- - [Set up a Chat Bot](#set-up-a-chat-bot)
6
6
  - [Display Rooms and Chats to which your Bot belongs](#display-rooms-and-chats-to-which-your-bot-belongs)
7
7
  - [Display Members of a Room or Chat](#display-members-of-a-room-or-chat)
8
8
  - [Create a Chat Message](#create-a-chat-message)
@@ -10,6 +10,43 @@
10
10
  - [Delete a Chat Message](#delete-a-chat-message)
11
11
  - [Display a Chat Message](#display-a-chat-message)
12
12
 
13
+ ## Introduction
14
+ To use these commands you must update your service account authorization.
15
+ ```
16
+ gam user user@domain.com update serviceaccount
17
+
18
+ [*] 4) Chat API - Memberships (supports readonly)
19
+ [*] 5) Chat API - Memberships Admin (supports readonly)
20
+ [*] 6) Chat API - Messages (supports readonly)
21
+ [*] 7) Chat API - Spaces (supports readonly)
22
+ [*] 8) Chat API - Spaces Admin (supports readonly)
23
+ [*] 9) Chat API - Spaces Delete
24
+ [*] 10) Chat API - Spaces Delete Admin
25
+ ```
26
+
27
+ Added `use_chat_admin_access` Boolean variable to `gam.cfg`.
28
+ ```
29
+ * When False, GAM uses user access when making all Chat API calls. For calls that support admin access,
30
+ this can be overridden with the asadmin command line option.
31
+ * When True, GAM uses admin access for Chat API calls that support admin access; other calls will use user access.
32
+ * Default: False
33
+ ```
34
+
35
+ Google requires that you have a Chat Bot configured in order to use the Chat API; set up a Chat Bot as described in the next section.
36
+
37
+ ## Set up a Chat Bot
38
+ GAM is capable of acting as a Chat Bot and sending messages to Chat Rooms or direct messages to users.
39
+
40
+ Even if you're not going to use GAM as a Chat Bot, you have to configure a Chat Bot as it is required by the Chat API in [Users - Chat](Users-Chat).
41
+
42
+ * Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
43
+ * Enter an App name and Description of your choosing.
44
+ * For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
45
+ * In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
46
+ * In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the Topic Name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
47
+ * In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
48
+ * Click Save.
49
+
13
50
  ## API documentation
14
51
  * https://developers.google.com/chat/concepts
15
52
  * https://developers.google.com/chat/reference/rest
@@ -102,19 +139,6 @@
102
139
  <ChatMessageFieldNameList> ::= "<ChatMessageFieldName>(,<ChatMessageFieldName>)*"
103
140
  ```
104
141
 
105
- ## Set up a Chat Bot
106
- Since GAM 6.04.00, GAM is capable of acting as a Chat Bot and sending messages to Chat Rooms or direct messages to users. You first need to configure your Chat Bot.
107
-
108
- * Run the command `gam setup chat`; it will point you to a URL to configure your Chat Bot.
109
- * Enter an App name and Description of your choosing.
110
- * For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
111
- * In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
112
- * In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the topic name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
113
- * In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
114
- * Click Save.
115
-
116
- ----
117
-
118
142
  ## Display Rooms and Chats to which your Bot belongs
119
143
  Display the spaces to which your Chat Bot can send messages.
120
144
  A space can be a direct message to a user, a chat group or a chat room.
@@ -10,6 +10,18 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
10
10
 
11
11
  See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
12
12
 
13
+ ### 7.07.14
14
+
15
+ Update `gam setup chat` output to include the following that shows the actual Cloud Pub/Sub Topic Name.
16
+ ```
17
+ You'll use projects/<ProjectID>/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
18
+ ```
19
+
20
+ ### 7.07.13
21
+
22
+ Added option `showitemcountonly` to `gam [<UserTypeEntity>] print|show shareddrives` that causes GAM to display the
23
+ number of Shared Drives on stdout; no CSV file is written.
24
+
13
25
  ### 7.07.12
14
26
 
15
27
  Fixed bug in `gam print|show oushareddrives` that caused a trap.
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
251
251
  admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
252
252
  admin@server:/Users/admin$ gam version
253
253
  WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
254
- GAM 7.07.12 - https://github.com/GAM-team/GAM - pyinstaller
254
+ GAM 7.07.14 - https://github.com/GAM-team/GAM - pyinstaller
255
255
  GAM Team <google-apps-manager@googlegroups.com>
256
256
  Python 3.13.3 64-bit final
257
257
  MacOS Sequoia 15.5 x86_64
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
989
989
  C:\>del C:\GAMConfig\oauth2.txt
990
990
  C:\>gam version
991
991
  WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
992
- GAM 7.07.12 - https://github.com/GAM-team/GAM - pythonsource
992
+ GAM 7.07.14 - https://github.com/GAM-team/GAM - pythonsource
993
993
  GAM Team <google-apps-manager@googlegroups.com>
994
994
  Python 3.13.3 64-bit final
995
995
  Windows-10-10.0.17134 AMD64
@@ -12,8 +12,9 @@
12
12
  - [Delete a Shared Drive](#delete-a-shared-drive)
13
13
  - [Change Shared Drive visibility](#change-shared-drive-visibility)
14
14
  - [Display Shared Drives](#display-shared-drives)
15
- - [Display List of Shared Drives in an Organizational Unit other than /](#display-list-of-shared-drives-in-an-organizational-unit-other-than-)
15
+ - [Display Shared Drive Counts](#display-shared-drive-counts)
16
16
  - [Display List of Shared Drives in an Organizational Unit](#display-list-of-shared-drives-in-an-organizational-unit)
17
+ - [Display Count of Shared Drives in an Organizational Unit](#display-count-of-shared-drives-in-an-organizational-unit)
17
18
  - [Display all Shared Drives with no members](#display-all-shared-drives-with-no-members)
18
19
  - [Display all Shared Drives with no organizers](#display-all-shared-drives-with-no-organizers)
19
20
  - [Display all Shared Drives with a specific organizer](#display-all-shared-drives-with-a-specific-organizer)
@@ -416,6 +417,36 @@ gam print teamdrives query "memberCount = 0"
416
417
  gam print teamdrives query "organizerCount = 0"
417
418
  ```
418
419
 
420
+ ## Display Shared Drive Counts
421
+ Display the number of Shared Drives.
422
+ ```
423
+ gam [<UserTypeEntity>] show|print shareddrives
424
+ [adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
425
+ [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
426
+ showitemcountonly
427
+ ```
428
+ By default, all Shared Drives are counted; use the following options to select a subset of Shared Drives:
429
+ * `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
430
+ * `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
431
+ * `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
432
+
433
+ Example
434
+ ```
435
+ $ gam print shareddrives showitemcountonly
436
+ Getting all Shared Drives, may take some time on a large Google Workspace Account...
437
+ Got 12 Shared Drives...
438
+ 12
439
+ ```
440
+ The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
441
+
442
+ To retrieve the count with `showitemcountonly`:
443
+ ```
444
+ Linux/MacOS
445
+ count=$(gam print shareddrives showitemcountonly)
446
+ Windows PowerShell
447
+ count = & gam print shareddrives showitemcountonly
448
+ ```
449
+
419
450
  ## Display all Shared Drives with a specific organizer
420
451
  Substitute actual email address for `organizer@domain.com`.
421
452
  ```
@@ -428,18 +459,9 @@ Substitute actual email address for `organizer@domain.com`.
428
459
  gam config csv_output_header_filter "id,name" print teamdriveacls pm emailaddress organizer@domain.com role organizer em pma skip pmselect
429
460
  ```
430
461
 
431
- ## Display List of Shared Drives in an Organizational Unit other than /
432
- Get the orgUnitID of OU / and use it (without the id:) in the print|show command. Adjust fields as desired.
433
- ```
434
- gam info ou / nousers
435
- gam show teamdrives query "orgUnitId!='00gjdgxs2p9cxyz'" fields id,name,orgunit,createdtime
436
- gam print teamdrives query "orgUnitId!='00gjdgxs2p9cxyz'" fields id,name,orgunit,createdtime
437
- ```
438
-
439
462
  ## Display List of Shared Drives in an Organizational Unit
440
463
  Get the orgUnitID of the desired OU and use it (without the id:) in the print|show command. Adjust fields as desired.
441
464
  ```
442
- gam info ou <OrgUnitPath> nousers
443
465
  gam show teamdrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
444
466
  gam print teamdrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
445
467
  ```
@@ -453,6 +475,31 @@ gam print oushareddrives [todrive <ToDriveAttribute>*]
453
475
  [formatjson [quotechar <Character>]]
454
476
  ```
455
477
 
478
+ ## Display Count of Shared Drives in an Organizational Unit
479
+ ```
480
+ gam print|show oushareddrives
481
+ [ou|org|orgunit <OrgUnitPath>]
482
+ showitemcountonly
483
+ ```
484
+ `<OrgUnitPath>` defaults to `"/"`.
485
+
486
+ Example
487
+ ```
488
+ $ gam print oushareddrives showitemcountonly
489
+ Getting all Shared Drives for /, may take some time on a large Organizational Unit...
490
+ Got 9 Shared Drives for /...
491
+ 9
492
+ ```
493
+ The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
494
+
495
+ To retrieve the count with `showitemcountonly`:
496
+ ```
497
+ Linux/MacOS
498
+ count=$(gam print oushareddrives showitemcountonly)
499
+ Windows PowerShell
500
+ count = & gam print oushareddrives showitemcountonly
501
+ ```
502
+
456
503
  ## Manage Shared Drive access
457
504
  These commands are used to manage the ACLs on Shared Drives themselves, not the files/folders on the Shared Drives.
458
505
 
@@ -15,8 +15,6 @@
15
15
  - [Bulk Operations](#bulk-operations)
16
16
 
17
17
  ## Introduction
18
- These features were added in version 6.60.00.
19
-
20
18
  To use these commands you must update your service account authorization.
21
19
  ```
22
20
  gam user user@domain.com update serviceaccount
@@ -46,8 +44,8 @@ Google requires that you have a Chat Bot configured in order to use the Chat API
46
44
  * Enter an App name and Description of your choosing.
47
45
  * For the Avatar URL you can use `https://dummyimage.com/384x256/4d4d4d/0011ff.png&text=+GAM` or a public URL to an image of your own choosing.
48
46
  * In Functionality, uncheck both "Receive 1:1 messages" and "Join spaces and group conversations"
49
- * In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the topic name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
50
- * In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
47
+ * In Connection settings, choose "Cloud Pub/Sub" and enter `projects/<ProjectID>/topics/no-topic` for the Topic Name. Replace `<ProjectID>` with your GAM project ID. GAM doesn't yet listen to pub/sub so this option is not used.
48
+ * In Visibility, uncheck "Make this Chat app available to specific people and groups in Domain Workspace".
51
49
  * Click Save.
52
50
 
53
51
  ## API documentation
@@ -7,6 +7,7 @@
7
7
  - [Manage file permissions/sharing](#manage-file-permissionssharing)
8
8
  - [Display file permissions/sharing](#display-file-permissionssharing)
9
9
  - [Delete all ACLs except owner from a file](#delete-all-acls-except-owner-from-a-file)
10
+ - [Delete all ACLs except owner from a user's My Drive](#delete-all-acls-except-owner-from-a-users-my-drive)
10
11
  - [Change shares to User1 to shares to User2](#change-shares-to-user1-to-shares-to-user2)
11
12
  - [Map All ACLs from an old domain to a new domain](#map-all-acls-from-an-old-domain-to-a-new-domain)
12
13
 
@@ -318,13 +319,23 @@ gam redirect csv ./TeamDriveACLs.csv multiprocess csv ./TeamDrives.csv gam print
318
319
  ## Delete all ACLs except owner from a file
319
320
  Get the current ACLs.
320
321
  ```
321
- gam redirect csv ./Permissions.csv user <UserItem> print drivefileacls <DriveFileID> oneitemperrow
322
+ gam redirect csv ./Permissions.csv user user@domain.com print drivefileacls <DriveFileID> oneitemperrow
322
323
  ```
323
324
  Inspect Permissions.csv, verify that you want to proceed.
324
325
  ```
325
326
  gam config csv_input_row_drop_filter "permission.role:regex:(owner)|(organizer)" csv ./Permissions.csv gam user "~Owner" delete drivefileacl "~id" "id:~~permission.id~~"
326
327
  ```
327
328
 
329
+ ## Delete all ACLs except owner from a user's My Drive
330
+ Get the current ACLs.
331
+ ```
332
+ gam redirect csv ./Permissions.csv user user@domain.com print filelist fields id,name,mimetype,basicpermissions pm not role owner em pmfilter oneitemperrow
333
+ ```
334
+ Inspect Permissions.csv, verify that you want to proceed.
335
+ ```
336
+ gam redirect stdout ./DeletePermissions.txt multiprocess redirect stderr stdout csv Permissions.csv.csv gam user "~Owner" delete drivefileacls "~id" "id:~~permission.id~~"
337
+ ```
338
+
328
339
  ## Change shares to User1 to shares to User2
329
340
  ```
330
341
  # Get files shared to User1
@@ -11,6 +11,7 @@
11
11
  - [Delete a Shared Drive](#delete-a-shared-drive)
12
12
  - [Change Shared Drive visibility](#change-shared-drive-visibility)
13
13
  - [Display Shared Drives](#display-shared-drives)
14
+ - [Display Shared Drive Counts](#display-shared-drive-counts)
14
15
  - [Manage Shared Drive access](#manage-shared-drive-access)
15
16
  - [Display Shared Drive access](#display-shared-drive-access)
16
17
  - [Display Shared Drive access for specific Shared Drives](#display-shared-drive-access-for-specific-shared-drives)
@@ -356,6 +357,35 @@ When using the `formatjson` option, double quotes are used extensively in the da
356
357
  The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
357
358
  `quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
358
359
 
360
+ ## Display Shared Drive Counts
361
+ Display the number of Shared Drives.
362
+ ```
363
+ gam <UserTypeEntity> show|print shareddrives
364
+ [teamdriveadminquery|query <QueryTeamDrive>]
365
+ [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
366
+ showitemcountonly
367
+ ```
368
+ By default, all Shared Drives are counted; use the following options to select a subset of Shared Drives:
369
+ * `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
370
+ * `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
371
+ * `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
372
+
373
+ Example
374
+ ```
375
+ $ gam user user@domain.com print shareddrives showitemcountonly
376
+ Getting all Shared Drives for user@domain.com
377
+ Got 4 Shared Drives for user@domain.com ...
378
+ 4
379
+ ```
380
+ The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
381
+
382
+ To retrieve the count with `showitemcountonly`:
383
+ ```
384
+ Linux/MacOS
385
+ count=$(gam user user@domain.com print shareddrives showitemcountonly)
386
+ Windows PowerShell
387
+ count = & gam user user@domain.com print shareddrives showitemcountonly
388
+ ```
359
389
  ## Manage Shared Drive access
360
390
  These commands must be issued by a user with Shared Drive permission role organizer.
361
391
  ### Process single ACLs.
@@ -3,7 +3,7 @@
3
3
  Print the current version of Gam with details
4
4
  ```
5
5
  gam version
6
- GAM 7.07.12 - https://github.com/GAM-team/GAM - pyinstaller
6
+ GAM 7.07.14 - https://github.com/GAM-team/GAM - pyinstaller
7
7
  GAM Team <google-apps-manager@googlegroups.com>
8
8
  Python 3.13.3 64-bit final
9
9
  MacOS Sequoia 15.5 x86_64
@@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
15
15
  Print the current version of Gam with details and time offset information
16
16
  ```
17
17
  gam version timeoffset
18
- GAM 7.07.12 - https://github.com/GAM-team/GAM - pyinstaller
18
+ GAM 7.07.14 - https://github.com/GAM-team/GAM - pyinstaller
19
19
  GAM Team <google-apps-manager@googlegroups.com>
20
20
  Python 3.13.3 64-bit final
21
21
  MacOS Sequoia 15.5 x86_64
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
27
27
  Print the current version of Gam with extended details and SSL information
28
28
  ```
29
29
  gam version extended
30
- GAM 7.07.12 - https://github.com/GAM-team/GAM - pyinstaller
30
+ GAM 7.07.14 - https://github.com/GAM-team/GAM - pyinstaller
31
31
  GAM Team <google-apps-manager@googlegroups.com>
32
32
  Python 3.13.3 64-bit final
33
33
  MacOS Sequoia 15.5 x86_64
@@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
64
64
  Path: /Users/Admin/bin/gam7
65
65
  Version Check:
66
66
  Current: 5.35.08
67
- Latest: 7.07.12
67
+ Latest: 7.07.14
68
68
  echo $?
69
69
  1
70
70
  ```
@@ -72,7 +72,7 @@ echo $?
72
72
  Print the current version number without details
73
73
  ```
74
74
  gam version simple
75
- 7.07.12
75
+ 7.07.14
76
76
  ```
77
77
  In Linux/MacOS you can do:
78
78
  ```
@@ -82,7 +82,7 @@ echo $VER
82
82
  Print the current version of Gam and address of this Wiki
83
83
  ```
84
84
  gam help
85
- GAM 7.07.12 - https://github.com/GAM-team/GAM
85
+ GAM 7.07.14 - https://github.com/GAM-team/GAM
86
86
  GAM Team <google-apps-manager@googlegroups.com>
87
87
  Python 3.13.3 64-bit final
88
88
  MacOS Sequoia 15.5 x86_64
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes