gam7 7.10.5__py3-none-any.whl → 7.10.7__py3-none-any.whl

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.

gam/__init__.py CHANGED
@@ -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.10.05'
28
+ __version__ = '7.10.07'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -8864,6 +8864,7 @@ class CSVPrintFile():
8864
8864
  GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
8865
8865
  GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
8866
8866
  GAPI.fileOrganizerOnNonTeamDriveNotSupported,
8867
+ GAPI.cannotModifyInheritedPermission,
8867
8868
  GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility,
8868
8869
  GAPI.invalidSharingRequest, GAPI.fileNeverWritable, GAPI.abusiveContentRestriction) as e:
8869
8870
  entityActionFailedWarning([Ent.USER, user, Ent.SPREADSHEET, title,
@@ -29508,6 +29509,7 @@ def getCIDeviceEntity():
29508
29509
  return ([], ci, customer, False)
29509
29510
 
29510
29511
  DEVICE_USERNAME_PATTERN = re.compile(r'^(devices/.+)/(deviceUsers/.+)$')
29512
+ DEVICE_USERNAME_CLIENT_STATE_PATTERN = re.compile(r'^(devices/.+/deviceUsers/.+)/clientStates/(.+)$')
29511
29513
  DEVICE_USERNAME_FORMAT_REQUIRED = 'devices/<String>/deviceUsers/<String>'
29512
29514
  def getCIDeviceUserEntity():
29513
29515
  ci = buildGAPICIDeviceServiceObject()
@@ -29956,6 +29958,7 @@ DEVICE_ORDERBY_CHOICE_MAP = {
29956
29958
  # [orderby <DeviceOrderByFieldName> [ascending|descending]]
29957
29959
  # [all|company|personal|nocompanydevices|nopersonaldevices]
29958
29960
  # [nodeviceusers|oneuserperrow]
29961
+ # [clientstates]
29959
29962
  # [formatjson [quotechar <Character>]]
29960
29963
  # [showitemcountonly]
29961
29964
  def doPrintCIDevices():
@@ -29971,6 +29974,7 @@ def doPrintCIDevices():
29971
29974
  queries = [None]
29972
29975
  view, entityType = DEVICE_VIEW_CHOICE_MAP['all']
29973
29976
  getDeviceUsers = True
29977
+ getClientStates = False
29974
29978
  oneUserPerRow = showItemCountOnly = False
29975
29979
  while Cmd.ArgumentsRemaining():
29976
29980
  myarg = getArgument()
@@ -29986,6 +29990,8 @@ def doPrintCIDevices():
29986
29990
  view, entityType = DEVICE_VIEW_CHOICE_MAP[myarg]
29987
29991
  elif myarg == 'nodeviceusers':
29988
29992
  getDeviceUsers = False
29993
+ elif myarg == 'clientstates':
29994
+ getClientStates = True
29989
29995
  elif myarg in {'oneuserperrow', 'oneitemperrow'}:
29990
29996
  getDeviceUsers = oneUserPerRow = True
29991
29997
  elif getFieldsList(myarg, DEVICE_FIELDS_CHOICE_MAP, fieldsList, initialField='name'):
@@ -30004,14 +30010,16 @@ def doPrintCIDevices():
30004
30010
  if FJQC.formatJSON and oneUserPerRow:
30005
30011
  csvPF.SetJSONTitles(['name', 'user.name', 'JSON'])
30006
30012
  itemCount = 0
30013
+ throwReasons = [GAPI.INVALID, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED]
30014
+ retryReasons = GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS
30007
30015
  for query in queries:
30008
30016
  printGettingAllAccountEntities(entityType, query)
30009
30017
  pageMessage = getPageMessage()
30010
30018
  try:
30011
30019
  devices = callGAPIpages(ci.devices(), 'list', 'devices',
30012
30020
  pageMessage=pageMessage,
30013
- throwReasons=[GAPI.INVALID, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
30014
- retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
30021
+ throwReasons=throwReasons,
30022
+ retryReasons=retryReasons,
30015
30023
  customer=customer, filter=query,
30016
30024
  orderBy=OBY.orderBy, view=view, fields=fields, pageSize=100)
30017
30025
  if showItemCountOnly:
@@ -30030,10 +30038,27 @@ def doPrintCIDevices():
30030
30038
  try:
30031
30039
  deviceUsers = callGAPIpages(ci.devices().deviceUsers(), 'list', 'deviceUsers',
30032
30040
  pageMessage=pageMessage,
30033
- throwReasons=[GAPI.INVALID, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
30034
- retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
30041
+ throwReasons=throwReasons,
30042
+ retryReasons=retryReasons,
30035
30043
  customer=customer, filter=query, parent=parent,
30036
30044
  orderBy=OBY.orderBy, fields=userFields, pageSize=20)
30045
+ if getClientStates:
30046
+ printGettingAllAccountEntities(Ent.DEVICE_USER_CLIENT_STATE, None)
30047
+ states = callGAPIpages(ci.devices().deviceUsers().clientStates(), 'list', 'clientStates',
30048
+ pageMessage=pageMessage,
30049
+ throwReasons=throwReasons,
30050
+ retryReasons=retryReasons,
30051
+ customer=customer, filter=query, parent='devices/-/deviceUsers/-')
30052
+ for state in states:
30053
+ mg = DEVICE_USERNAME_CLIENT_STATE_PATTERN.match(state['name'])
30054
+ if mg:
30055
+ du = mg.group(1)
30056
+ state_name = mg.group(2)
30057
+ for i in range(len(deviceUsers)):
30058
+ if deviceUsers[i]['name'] == du:
30059
+ deviceUsers[i].setdefault('clientstates', {})
30060
+ deviceUsers[i]['clientstates'][state_name] = state
30061
+ break
30037
30062
  for deviceUser in deviceUsers:
30038
30063
  mg = DEVICE_USERNAME_PATTERN.match(deviceUser['name'])
30039
30064
  if mg:
@@ -59498,6 +59523,7 @@ def _copyPermissions(drive, user, i, count, j, jcount,
59498
59523
  GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
59499
59524
  GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
59500
59525
  GAPI.fileOrganizerOnNonTeamDriveNotSupported,
59526
+ GAPI.cannotModifyInheritedPermission,
59501
59527
  GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility, GAPI.abusiveContentRestriction) as e:
59502
59528
  entityActionFailedWarning(kvList, str(e), k, kcount)
59503
59529
  break
@@ -60605,6 +60631,7 @@ def _updateMoveFilePermissions(drive, user, i, count,
60605
60631
  GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
60606
60632
  GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
60607
60633
  GAPI.fileOrganizerOnNonTeamDriveNotSupported,
60634
+ GAPI.cannotModifyInheritedPermission,
60608
60635
  GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility, GAPI.abusiveContentRestriction) as e:
60609
60636
  entityActionFailedWarning(kvList, str(e), k, kcount)
60610
60637
  break
@@ -63859,6 +63886,7 @@ def createDriveFileACL(users, useDomainAdminAccess=False):
63859
63886
  GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
63860
63887
  GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
63861
63888
  GAPI.fileOrganizerOnNonTeamDriveNotSupported,
63889
+ GAPI.cannotModifyInheritedPermission,
63862
63890
  GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility,
63863
63891
  GAPI.invalidSharingRequest, GAPI.fileNeverWritable, GAPI.abusiveContentRestriction) as e:
63864
63892
  entityActionFailedWarning([Ent.USER, user, entityType, fileName, Ent.PERMISSION_ID, permissionId], str(e), j, jcount)
@@ -64094,6 +64122,7 @@ def createDriveFilePermissions(users, useDomainAdminAccess=False):
64094
64122
  GAPI.fileOrganizerNotYetEnabledForThisTeamDrive,
64095
64123
  GAPI.fileOrganizerOnFoldersInSharedDriveOnly,
64096
64124
  GAPI.fileOrganizerOnNonTeamDriveNotSupported,
64125
+ GAPI.cannotModifyInheritedPermission,
64097
64126
  GAPI.teamDrivesFolderSharingNotSupported, GAPI.invalidLinkVisibility,
64098
64127
  GAPI.invalidSharingRequest, GAPI.fileNeverWritable, GAPI.abusiveContentRestriction,
64099
64128
  GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy) as e:
gam/gamlib/glgapi.py CHANGED
@@ -229,6 +229,7 @@ DRIVE3_CREATE_ACL_THROW_REASONS = [BAD_REQUEST, INVALID, INVALID_SHARING_REQUEST
229
229
  FILE_ORGANIZER_NOT_YET_ENABLED_FOR_THIS_TEAMDRIVE,
230
230
  FILE_ORGANIZER_ON_FOLDERS_IN_SHARED_DRIVE_ONLY,
231
231
  FILE_ORGANIZER_ON_NON_TEAMDRIVE_NOT_SUPPORTED,
232
+ CANNOT_MODIFY_INHERITED_PERMISSION,
232
233
  TEAMDRIVES_FOLDER_SHARING_NOT_SUPPORTED, INVALID_LINK_VISIBILITY, ABUSIVE_CONTENT_RESTRICTION]
233
234
  DRIVE3_GET_ACL_REASONS = DRIVE_USER_THROW_REASONS+[FILE_NOT_FOUND, FORBIDDEN, INTERNAL_ERROR,
234
235
  INSUFFICIENT_ADMINISTRATOR_PRIVILEGES, INSUFFICIENT_FILE_PERMISSIONS,
gam/gamlib/glskus.py CHANGED
@@ -107,6 +107,8 @@ _SKUS = {
107
107
  'product': '101047', 'aliases': ['aisecurity'], 'displayName': 'AI Security'},
108
108
  '1010470007': {
109
109
  'product': '101047', 'aliases': ['aimeetingsandmessaging'], 'displayName': 'AI Meetings and Messaging'},
110
+ '1010470008': {
111
+ 'product': '101047', 'aliases': ['geminiultra'], 'displayName': 'Google AI Ultra for Business'},
110
112
  '1010490001': {
111
113
  'product': '101049', 'aliases': ['eeu'], 'displayName': 'Endpoint Education Upgrade'},
112
114
  '1010500001': {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.10.5
3
+ Version: 7.10.7
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
@@ -1,4 +1,4 @@
1
- gam/__init__.py,sha256=43na6-5DeFjv9thgakgqlObqcafYJAq6uSq9nsszDNw,3532710
1
+ gam/__init__.py,sha256=gqwRxpsHisE3vG2X2AHWvt6mgfwCTjW1rGYI2q0z9ao,3534107
2
2
  gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
3
3
  gam/cacerts.pem,sha256=82Ak7btW_2XvocLUvAwPmpx8Chi0oqtZUG1gseLK_t4,50235
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -27,12 +27,12 @@ gam/gamlib/glapi.py,sha256=A6kdyCacc9tvTaxMUNvWj8jWbOrss8e8XdkqF1xbN70,34572
27
27
  gam/gamlib/glcfg.py,sha256=bNTckxzIM_HruxO2DfYsDbEgqOIz1RX6CbU6XOQQQyg,28296
28
28
  gam/gamlib/glclargs.py,sha256=Ohe746FOQqMlXlutH-XJ6E1unYNzf_EJhdubnPp3new,42472
29
29
  gam/gamlib/glentity.py,sha256=c9-7MAp0HruXEUVq8Nwkllxc4KypFeZRUFkvVzPwrwk,33760
30
- gam/gamlib/glgapi.py,sha256=648jvjKK5rT9Qdyz5Ybh6wAO6sxUwQu1L_ogRqj0zZ0,39762
30
+ gam/gamlib/glgapi.py,sha256=2mu7DQGGYmF7ZGXeBQu_mT1FNZgXbEQqcddJjHzbvE4,39833
31
31
  gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
32
32
  gam/gamlib/glglobals.py,sha256=J0xcHggVrUBzHJ5GruenKV-qV1zPKcK2qWgAgN3i5Jw,9608
33
33
  gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
34
34
  gam/gamlib/glmsgs.py,sha256=uSshtTyemMcJGCnYMy3hIilYHIh-IHFbCLlY2aAyTGM,33798
35
- gam/gamlib/glskus.py,sha256=Q4UfVnZZxKXpyBc-iQy_uBgbNyIL519jMXHBotrMPio,15241
35
+ gam/gamlib/glskus.py,sha256=e1u3zw1MGQjBgAFXqjrGWQl2d7eYpVlMYGpIKNwjskQ,15360
36
36
  gam/gamlib/gluprop.py,sha256=IyPLCyvn7-NHTUenM71YPQPXRZXx6CB5q-GtJ-FYd1c,11461
37
37
  gam/gamlib/glverlibs.py,sha256=xoQXiwcE_-HVYKv-VYA8O0mazRsc9mN-_ysj1dAlMyc,992
38
38
  gam/gamlib/yubikey.py,sha256=-UC-3oue9qarYK3LT7YL6Gmqs7TMK8oz9_AoxdaG2FA,7925
@@ -65,8 +65,8 @@ gam/googleapiclient/discovery_cache/base.py,sha256=yCDPtxnbNN-p5_9fzBacC6P3wcUPl
65
65
  gam/googleapiclient/discovery_cache/file_cache.py,sha256=sim3Mg4HgRYo3vX75jvcKy_aV568EvIrtBfvfbw-044,4774
66
66
  gam/iso8601/__init__.py,sha256=Z2PsYbXgAH5a5xzUvgczCboPzqWpm65kRcIngCnhViU,1218
67
67
  gam/iso8601/iso8601.py,sha256=Li2FHZ4sBTWuthuQhyCvmvj0j6At8JbGzkSv2fc2RHU,4384
68
- gam7-7.10.5.dist-info/METADATA,sha256=TVwY4E3CKAMx-REeGF3s_z9ofAcu-Kq52mHDD32Pf5E,2978
69
- gam7-7.10.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.10.5.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.10.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.10.5.dist-info/RECORD,,
68
+ gam7-7.10.7.dist-info/METADATA,sha256=magKLnQvWiUc1Exm6w0uq8CAPWXSSw8VeANe4O4yWqs,2978
69
+ gam7-7.10.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.10.7.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.10.7.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.10.7.dist-info/RECORD,,
File without changes