gam7 7.15.1__py3-none-any.whl → 7.16.0__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.15.01'
28
+ __version__ = '7.16.00'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -7862,7 +7862,6 @@ class CSVPrintFile():
7862
7862
  GM.Globals[GM.CSV_OUTPUT_TIMESTAMP_COLUMN] = GC.Values.get(GC.CSV_OUTPUT_TIMESTAMP_COLUMN, '')
7863
7863
  self.SetTimestampColumn(GM.Globals[GM.CSV_OUTPUT_TIMESTAMP_COLUMN])
7864
7864
  self.SetFormatJSON(False)
7865
- self.SetMapDrive3Titles(False)
7866
7865
  self.SetNodataFields(False, None, None, None, False)
7867
7866
  self.SetFixPaths(False)
7868
7867
  self.SetShowPermissionsLast(False)
@@ -7932,13 +7931,6 @@ class CSVPrintFile():
7932
7931
  self.sortTitlesList = self.titlesList[:]
7933
7932
  self.sortTitlesSet = set(self.sortTitlesList)
7934
7933
 
7935
- def SetMapDrive3Titles(self, mapDrive3Titles):
7936
- self.mapDrive3Titles = mapDrive3Titles
7937
-
7938
- def MapDrive3TitlesToDrive2(self):
7939
- _mapDrive3TitlesToDrive2(self.titlesList, API.DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP)
7940
- self.titlesSet = set(self.titlesList)
7941
-
7942
7934
  def AddJSONTitle(self, title):
7943
7935
  self.JSONtitlesSet.add(title)
7944
7936
  self.JSONtitlesList.append(title)
@@ -8974,7 +8966,6 @@ class CSVPrintFile():
8974
8966
  self.formatJSON, self.JSONtitlesList,
8975
8967
  self.columnDelimiter, self.noEscapeChar, self.quoteChar,
8976
8968
  self.sortHeaders, self.timestampColumn,
8977
- self.mapDrive3Titles,
8978
8969
  self.fixPaths,
8979
8970
  self.mapNodataFields,
8980
8971
  self.nodataFields,
@@ -9009,8 +9000,6 @@ class CSVPrintFile():
9009
9000
  self.MovePermsToEnd()
9010
9001
  if not self.rows and self.nodataFields is not None:
9011
9002
  self.FixNodataTitles()
9012
- if self.mapDrive3Titles:
9013
- self. MapDrive3TitlesToDrive2()
9014
9003
  else:
9015
9004
  self.titlesList = self.headerForce
9016
9005
  if self.timestampColumn:
@@ -9646,11 +9635,10 @@ def CSVFileQueueHandler(mpQueue, mpQueueStdout, mpQueueStderr, csvPF, datetimeNo
9646
9635
  csvPF.SetQuoteChar(dataItem[7])
9647
9636
  csvPF.SetSortHeaders(dataItem[8])
9648
9637
  csvPF.SetTimestampColumn(dataItem[9])
9649
- csvPF.SetMapDrive3Titles(dataItem[10])
9650
- csvPF.SetFixPaths(dataItem[11])
9651
- csvPF.SetNodataFields(dataItem[12], dataItem[13], dataItem[14], dataItem[15], dataItem[16])
9652
- csvPF.SetShowPermissionsLast(dataItem[17])
9653
- csvPF.SetZeroBlankMimeTypeCounts(dataItem[18])
9638
+ csvPF.SetFixPaths(dataItem[10])
9639
+ csvPF.SetNodataFields(dataItem[11], dataItem[12], dataItem[13], dataItem[14], dataItem[15])
9640
+ csvPF.SetShowPermissionsLast(dataItem[16])
9641
+ csvPF.SetZeroBlankMimeTypeCounts(dataItem[17])
9654
9642
  elif dataType == GM.REDIRECT_QUEUE_DATA:
9655
9643
  csvPF.rows.extend(dataItem)
9656
9644
  elif dataType == GM.REDIRECT_QUEUE_ARGS:
@@ -54605,11 +54593,6 @@ DRIVEFILE_ORDERBY_CHOICE_MAP = {
54605
54593
  'viewedbymetime': 'viewedByMeTime',
54606
54594
  }
54607
54595
 
54608
- def _mapDrive3TitlesToDrive2(titles, drive3TitlesMap):
54609
- for i, title in enumerate(titles):
54610
- if title in drive3TitlesMap:
54611
- titles[i] = drive3TitlesMap[title]
54612
-
54613
54596
  def _mapDriveUser(field):
54614
54597
  if 'me' in field:
54615
54598
  field['isAuthenticatedUser'] = field.pop('me')
@@ -54617,32 +54600,25 @@ def _mapDriveUser(field):
54617
54600
  field['picture'] = {'url': field.pop('photoLink')}
54618
54601
 
54619
54602
  def _mapDrivePermissionNames(permission):
54620
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
54621
- if 'displayName' in permission:
54622
- permission['name'] = permission.pop('displayName')
54623
- if 'expirationTime' in permission:
54624
- permission['expirationDate'] = formatLocalTime(permission.pop('expirationTime'))
54625
- if 'allowFileDiscovery' in permission:
54626
- permission['withLink'] = not permission.pop('allowFileDiscovery')
54627
54603
  emailAddress = permission.get('emailAddress')
54628
54604
  if emailAddress:
54629
54605
  _, permission['domain'] = splitEmailAddress(emailAddress)
54630
54606
 
54631
- def _mapDriveParents(f_file, parentsSubFields):
54607
+ def _mapDriveInfo(f_file, parentsSubFields, showParentsIdsAsList):
54632
54608
  if 'parents' in f_file:
54633
54609
  parents = f_file.pop('parents')
54634
- if len(parents) == 1 and parents[0] == ORPHANS:
54635
- return
54636
- f_file['parents'] = []
54637
- for parentId in parents:
54638
- parent = {}
54639
- if parentsSubFields['id']:
54640
- parent['id'] = parentId
54641
- if parentsSubFields['isRoot']:
54642
- parent['isRoot'] = parentId == parentsSubFields['rootFolderId']
54643
- f_file['parents'].append(parent)
54644
-
54645
- def _mapDriveProperties(f_file):
54610
+ if showParentsIdsAsList:
54611
+ f_file['parentsIds'] = parents
54612
+ elif len(parents) != 1 or parents[0] != ORPHANS:
54613
+ f_file['parents'] = []
54614
+ for parentId in parents:
54615
+ parent = {}
54616
+ if parentsSubFields['id']:
54617
+ parent['id'] = parentId
54618
+ if parentsSubFields['isRoot']:
54619
+ parent['isRoot'] = parentId == parentsSubFields['rootFolderId']
54620
+ f_file['parents'].append(parent)
54621
+
54646
54622
  appProperties = f_file.pop('appProperties', [])
54647
54623
  properties = f_file.pop('properties', [])
54648
54624
  if appProperties:
@@ -54654,51 +54630,10 @@ def _mapDriveProperties(f_file):
54654
54630
  for key, value in sorted(properties.items()):
54655
54631
  f_file['properties'].append({'key': key, 'value': value, 'visibility': 'PUBLIC'})
54656
54632
 
54657
- def _mapDriveFieldNames(f_file, user, parentsSubFields, mapToLabels):
54658
- if mapToLabels:
54659
- for attrib, v2attrib in API.DRIVE3_TO_DRIVE2_LABELS_MAP.items():
54660
- if attrib in f_file:
54661
- f_file.setdefault('labels', {})
54662
- f_file['labels'][v2attrib] = f_file.pop(attrib)
54663
- for attrib, v2attrib in API.DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP.items():
54664
- if attrib in f_file:
54665
- f_file[v2attrib] = f_file.pop(attrib)
54666
- capabilities = f_file.get('capabilities')
54667
- if capabilities:
54668
- for attrib, v2attrib in API.DRIVE3_TO_DRIVE2_CAPABILITIES_FIELDS_MAP.items():
54669
- if attrib in capabilities:
54670
- f_file[v2attrib] = capabilities[attrib]
54671
- for attrib, v2attrib in API.DRIVE3_TO_DRIVE2_CAPABILITIES_NAMES_MAP.items():
54672
- if attrib in capabilities:
54673
- capabilities[v2attrib] = capabilities.pop(attrib)
54674
- if 'spaces' in f_file:
54675
- f_file['appDataContents'] = 'appDataFolder' in f_file['spaces']
54676
- if 'lastModifyingUser' in f_file:
54677
- if 'displayName' in f_file['lastModifyingUser']:
54678
- f_file['lastModifyingUserName'] = f_file['lastModifyingUser']['displayName']
54679
- _mapDriveUser(f_file['lastModifyingUser'])
54680
- if 'owners' in f_file:
54681
- for owner in f_file['owners']:
54682
- _mapDriveUser(owner)
54683
- if 'displayName' in owner:
54684
- f_file.setdefault('ownerNames', [])
54685
- f_file['ownerNames'].append(owner['displayName'])
54686
- _mapDriveUser(f_file.get('sharingUser', {}))
54687
- _mapDriveParents(f_file, parentsSubFields)
54688
- _mapDriveProperties(f_file)
54689
54633
  for permission in f_file.get('permissions', []):
54690
- if (permission.get('type') == 'user') and (permission.get('emailAddress', '').lower() == user) and ('role' in permission):
54691
- f_file['userPermission'] = {'id': 'me', 'role': permission['role'], 'type': permission['type']}
54692
- _mapDrivePermissionNames(permission)
54693
-
54694
- def _mapDriveRevisionNames(revision):
54695
- for attrib, v2attrib in API.DRIVE3_TO_DRIVE2_REVISIONS_FIELDS_MAP.items():
54696
- if attrib in revision:
54697
- revision[v2attrib] = revision.pop(attrib)
54698
- if 'lastModifyingUser' in revision:
54699
- if 'displayName' in revision['lastModifyingUser']:
54700
- revision['lastModifyingUserName'] = revision['lastModifyingUser']['displayName']
54701
- _mapDriveUser(revision['lastModifyingUser'])
54634
+ emailAddress = permission.get('emailAddress')
54635
+ if emailAddress:
54636
+ _, permission['domain'] = splitEmailAddress(emailAddress)
54702
54637
 
54703
54638
  DRIVEFILE_BASIC_PERMISSION_FIELDS = [
54704
54639
  'displayName', 'id', 'emailAddress', 'domain', 'role', 'type',
@@ -54949,11 +54884,7 @@ FILEINFO_FIELDS_TITLES = ['name', 'mimeType']
54949
54884
  FILEPATH_FIELDS_TITLES = ['name', 'id', 'mimeType', 'ownedByMe', 'parents', 'sharedWithMeTime', 'driveId']
54950
54885
  FILEPATH_FIELDS = ','.join(FILEPATH_FIELDS_TITLES)
54951
54886
 
54952
- def _getDriveTimeObjects():
54953
- timeObjects = ['createdTime', 'viewedByMeTime', 'modifiedByMeTime', 'modifiedTime', 'restrictionTime', 'sharedWithMeTime', 'trashedTime']
54954
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
54955
- _mapDrive3TitlesToDrive2(timeObjects, API.DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP)
54956
- return set(timeObjects)
54887
+ DRIVE_TIME_OBJECTS = {'createdTime', 'viewedByMeTime', 'modifiedByMeTime', 'modifiedTime', 'restrictionTime', 'sharedWithMeTime', 'trashedTime'}
54957
54888
 
54958
54889
  def _getDriveFieldSubField(field, fieldsList, parentsSubFields):
54959
54890
  field, subField = field.split('.', 1)
@@ -55150,7 +55081,6 @@ def showFileInfo(users):
55150
55081
  showNoParents = True
55151
55082
  includeLabels = ','.join(DFF.includeLabels)
55152
55083
  pathFields = FILEPATH_FIELDS
55153
- timeObjects = _getDriveTimeObjects()
55154
55084
  i, count, users = getEntityArgument(users)
55155
55085
  for user in users:
55156
55086
  i += 1
@@ -55244,22 +55174,14 @@ def showFileInfo(users):
55244
55174
  if fullpath:
55245
55175
  # Save simple parents list as mappings turn it into a list of dicts
55246
55176
  fpparents = result['parents'][:]
55247
- if showParentsIdsAsList and 'parents' in result:
55248
- result['parentsIds'] = result.pop('parents')
55249
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
55250
- _mapDriveFieldNames(result, user, DFF.parentsSubFields, True)
55251
- else:
55252
- _mapDriveParents(result, DFF.parentsSubFields)
55253
- _mapDriveProperties(result)
55254
- for permission in result.get('permissions', []):
55255
- _mapDrivePermissionNames(permission)
55177
+ _mapDriveInfo(result, DFF.parentsSubFields, showParentsIdsAsList)
55256
55178
  if not FJQC.formatJSON:
55257
- showJSON(None, result, skipObjects=skipObjects, timeObjects=timeObjects, simpleLists=simpleLists,
55179
+ showJSON(None, result, skipObjects=skipObjects, timeObjects=DRIVE_TIME_OBJECTS, simpleLists=simpleLists,
55258
55180
  dictObjectsKey={'owners': 'displayName', 'fields': 'id', 'labels': 'id', 'user': 'emailAddress', 'parents': 'id',
55259
- 'permissions': ['name', 'displayName'][GC.Values[GC.DRIVE_V3_NATIVE_NAMES]]})
55181
+ 'permissions': 'displayName'})
55260
55182
  Ind.Decrement()
55261
55183
  else:
55262
- printLine(json.dumps(cleanJSON(result, skipObjects=skipObjects, timeObjects=timeObjects), ensure_ascii=False, sort_keys=True))
55184
+ printLine(json.dumps(cleanJSON(result, skipObjects=skipObjects, timeObjects=DRIVE_TIME_OBJECTS), ensure_ascii=False, sort_keys=True))
55263
55185
  if fullpath:
55264
55186
  # Restore simple parents list
55265
55187
  fileTree[fileId]['info']['parents'] = fpparents[:]
@@ -55651,18 +55573,12 @@ FILEREVISIONS_FIELDS_CHOICE_MAP = {
55651
55573
  'size': 'size',
55652
55574
  }
55653
55575
 
55654
- def _getFileRevisionsTimeObjects():
55655
- timeObjects = ['modifiedTime']
55656
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
55657
- _mapDrive3TitlesToDrive2(timeObjects, API.DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP)
55658
- return set(timeObjects)
55576
+ FILEREVISIONS_TIME_OBJECTS = {'modifiedTime'}
55659
55577
 
55660
- def _showRevision(revision, timeObjects, i=0, count=0):
55578
+ def _showRevision(revision, i=0, count=0):
55661
55579
  printEntity([Ent.DRIVE_FILE_REVISION, revision['id']], i, count)
55662
55580
  Ind.Increment()
55663
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
55664
- _mapDriveRevisionNames(revision)
55665
- showJSON(None, revision, ['id'], timeObjects)
55581
+ showJSON(None, revision, ['id'], timeObjects=FILEREVISIONS_TIME_OBJECTS)
55666
55582
  Ind.Decrement()
55667
55583
 
55668
55584
  DRIVE_REVISIONS_INDEXED_TITLES = ['revisions']
@@ -55686,7 +55602,6 @@ def printShowFileRevisions(users):
55686
55602
  revisionsEntity = None
55687
55603
  oneItemPerRow = previewDelete = showTitles = stripCRsFromName = False
55688
55604
  OBY = OrderBy(DRIVEFILE_ORDERBY_CHOICE_MAP)
55689
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
55690
55605
  while Cmd.ArgumentsRemaining():
55691
55606
  myarg = getArgument()
55692
55607
  if csvPF and myarg == 'todrive':
@@ -55704,7 +55619,7 @@ def printShowFileRevisions(users):
55704
55619
  elif myarg == 'showtitles':
55705
55620
  showTitles = True
55706
55621
  if csvPF:
55707
- csvPF.AddTitles(fileNameTitle)
55622
+ csvPF.AddTitles('name')
55708
55623
  elif myarg == 'stripcrsfromname':
55709
55624
  stripCRsFromName = True
55710
55625
  elif getFieldsList(myarg, FILEREVISIONS_FIELDS_CHOICE_MAP, fieldsList, initialField='id'):
@@ -55715,7 +55630,6 @@ def printShowFileRevisions(users):
55715
55630
  fields = getItemFieldsFromFieldsList('revisions', fieldsList)
55716
55631
  else:
55717
55632
  fields = '*'
55718
- timeObjects = _getFileRevisionsTimeObjects()
55719
55633
  i, count, users = getEntityArgument(users)
55720
55634
  for user in users:
55721
55635
  i += 1
@@ -55755,29 +55669,24 @@ def printShowFileRevisions(users):
55755
55669
  k = 0
55756
55670
  for revision in results:
55757
55671
  k += 1
55758
- _showRevision(revision, timeObjects, k, kcount)
55672
+ _showRevision(revision, k, kcount)
55759
55673
  Ind.Decrement()
55760
55674
  elif results:
55761
55675
  if oneItemPerRow:
55762
55676
  for revision in results:
55763
55677
  row = {'Owner': user, 'id': fileId}
55764
55678
  if showTitles:
55765
- row[fileNameTitle] = fileName
55766
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
55767
- _mapDriveRevisionNames(revision)
55768
- csvPF.WriteRowTitles(flattenJSON({'revision': revision}, flattened=row, timeObjects=timeObjects))
55679
+ row['name'] = fileName
55680
+ csvPF.WriteRowTitles(flattenJSON({'revision': revision}, flattened=row, timeObjects=FILEREVISIONS_TIME_OBJECTS))
55769
55681
  else:
55770
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
55771
- for revision in results:
55772
- _mapDriveRevisionNames(revision)
55773
55682
  if showTitles:
55774
- csvPF.WriteRowTitles(flattenJSON({'revisions': results}, flattened={'Owner': user, 'id': fileId, fileNameTitle: fileName}, timeObjects=timeObjects))
55683
+ csvPF.WriteRowTitles(flattenJSON({'revisions': results}, flattened={'Owner': user, 'id': fileId, 'name': fileName}, timeObjects=FILEREVISIONS_TIME_OBJECTS))
55775
55684
  else:
55776
- csvPF.WriteRowTitles(flattenJSON({'revisions': results}, flattened={'Owner': user, 'id': fileId}, timeObjects=timeObjects))
55685
+ csvPF.WriteRowTitles(flattenJSON({'revisions': results}, flattened={'Owner': user, 'id': fileId}, timeObjects=FILEREVISIONS_TIME_OBJECTS))
55777
55686
  Ind.Decrement()
55778
55687
  if csvPF:
55779
55688
  if oneItemPerRow:
55780
- csvPF.SetSortTitles(['Owner', 'id', fileNameTitle, 'revision.id'])
55689
+ csvPF.SetSortTitles(['Owner', 'id', 'name', 'revision.id'])
55781
55690
  else:
55782
55691
  csvPF.SetSortTitles(['Owner', 'id', 'revisions'])
55783
55692
  csvPF.SetIndexedTitles(DRIVE_REVISIONS_INDEXED_TITLES)
@@ -56587,10 +56496,10 @@ def printFileList(users):
56587
56496
  def _printFileInfoRow(baserow, fileInfo):
56588
56497
  row = baserow.copy()
56589
56498
  if not FJQC.formatJSON:
56590
- csvPF.WriteRowTitles(flattenJSON(fileInfo, flattened=row, skipObjects=skipObjects, timeObjects=timeObjects,
56499
+ csvPF.WriteRowTitles(flattenJSON(fileInfo, flattened=row, skipObjects=skipObjects, timeObjects=DRIVE_TIME_OBJECTS,
56591
56500
  simpleLists=simpleLists, delimiter=delimiter))
56592
56501
  else:
56593
- row['JSON'] = json.dumps(cleanJSON(fileInfo, skipObjects=skipObjects, timeObjects=timeObjects),
56502
+ row['JSON'] = json.dumps(cleanJSON(fileInfo, skipObjects=skipObjects, timeObjects=DRIVE_TIME_OBJECTS),
56594
56503
  ensure_ascii=False, sort_keys=True)
56595
56504
  csvPF.WriteRowTitlesJSONNoFilter(row)
56596
56505
 
@@ -56641,15 +56550,7 @@ def printFileList(users):
56641
56550
  fullpath=fullpath, showDepth=showDepth, folderPathOnly=folderPathOnly)
56642
56551
  else:
56643
56552
  addFilePathsToInfo(drive, fileTree, fileInfo, filePathInfo, folderPathOnly=folderPathOnly)
56644
- if showParentsIdsAsList and 'parents' in fileInfo:
56645
- fileInfo['parentsIds'] = fileInfo.pop('parents')
56646
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
56647
- _mapDriveFieldNames(fileInfo, user, DFF.parentsSubFields, False)
56648
- else:
56649
- _mapDriveParents(fileInfo, DFF.parentsSubFields)
56650
- _mapDriveProperties(fileInfo)
56651
- for permission in fileInfo.get('permissions', []):
56652
- _mapDrivePermissionNames(permission)
56553
+ _mapDriveInfo(fileInfo, DFF.parentsSubFields, showParentsIdsAsList)
56653
56554
  if showParentsIdsAsList and 'parentsIds' in fileInfo:
56654
56555
  fileInfo['parents'] = len(fileInfo['parentsIds'])
56655
56556
  if addCSVData:
@@ -56657,24 +56558,24 @@ def printFileList(users):
56657
56558
  if not countsOnly:
56658
56559
  if not oneItemPerRow or 'permissions' not in fileInfo:
56659
56560
  if not FJQC.formatJSON:
56660
- csvPF.WriteRowTitles(flattenJSON(fileInfo, flattened=row, skipObjects=skipObjects, timeObjects=timeObjects,
56561
+ csvPF.WriteRowTitles(flattenJSON(fileInfo, flattened=row, skipObjects=skipObjects, timeObjects=DRIVE_TIME_OBJECTS,
56661
56562
  simpleLists=simpleLists, delimiter=delimiter))
56662
56563
  else:
56663
56564
  if 'id' in fileInfo:
56664
56565
  row['id'] = fileInfo['id']
56665
- if fileNameTitle in fileInfo:
56666
- row[fileNameTitle] = fileInfo[fileNameTitle]
56566
+ if 'name' in fileInfo:
56567
+ row['name'] = fileInfo['name']
56667
56568
  if 'owners' in fileInfo:
56668
56569
  flattenJSON({'owners': fileInfo['owners']}, flattened=row, skipObjects=skipObjects)
56669
- row['JSON'] = json.dumps(cleanJSON(fileInfo, skipObjects=skipObjects, timeObjects=timeObjects),
56570
+ row['JSON'] = json.dumps(cleanJSON(fileInfo, skipObjects=skipObjects, timeObjects=DRIVE_TIME_OBJECTS),
56670
56571
  ensure_ascii=False, sort_keys=True)
56671
56572
  csvPF.WriteRowTitlesJSONNoFilter(row)
56672
56573
  else:
56673
56574
  baserow = row.copy()
56674
56575
  if 'id' in fileInfo:
56675
56576
  baserow['id'] = fileInfo['id']
56676
- if fileNameTitle in fileInfo:
56677
- baserow[fileNameTitle] = fileInfo[fileNameTitle]
56577
+ if 'name' in fileInfo:
56578
+ baserow['name'] = fileInfo['name']
56678
56579
  if 'owners' in fileInfo:
56679
56580
  flattenJSON({'owners': fileInfo['owners']}, flattened=baserow, skipObjects=skipObjects)
56680
56581
  for permission in fileInfo.pop('permissions'):
@@ -56688,7 +56589,7 @@ def printFileList(users):
56688
56589
  _printFileInfoRow(baserow, fileInfo)
56689
56590
  else:
56690
56591
  if not countsRowFilter:
56691
- csvPFco.UpdateMimeTypeCounts(flattenJSON(fileInfo, flattened=row, skipObjects=skipObjects, timeObjects=timeObjects,
56592
+ csvPFco.UpdateMimeTypeCounts(flattenJSON(fileInfo, flattened=row, skipObjects=skipObjects, timeObjects=DRIVE_TIME_OBJECTS,
56692
56593
  simpleLists=simpleLists, delimiter=delimiter), mimeTypeInfo, sizeField)
56693
56594
  else:
56694
56595
  mimeTypeInfo.setdefault(fileInfo['mimeType'], {'count': 0, 'size': 0})
@@ -56955,12 +56856,6 @@ def printFileList(users):
56955
56856
  csvPF.AddTitles('paths')
56956
56857
  csvPF.SetFixPaths(True)
56957
56858
  includeLabels = ','.join(DFF.includeLabels)
56958
- timeObjects = _getDriveTimeObjects()
56959
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
56960
- fileNameTitle = 'title'
56961
- csvPF.SetMapDrive3Titles(True)
56962
- else:
56963
- fileNameTitle = 'name'
56964
56859
  csvPF.RemoveTitles(['capabilities'])
56965
56860
  if DLP.queryTimes and selectSubQuery:
56966
56861
  for queryTimeName, queryTimeValue in DLP.queryTimes.items():
@@ -56980,9 +56875,9 @@ def printFileList(users):
56980
56875
  if not FJQC.formatJSON:
56981
56876
  nodataFields = ['Owner']+list(set(DFF.fieldsList)-skipObjects)
56982
56877
  else:
56983
- nodataFields = ['Owner', 'id', fileNameTitle, 'owners.emailAddress']
56878
+ nodataFields = ['Owner', 'id', 'name', 'owners.emailAddress']
56984
56879
  else:
56985
- nodataFields = ['Owner', 'id', fileNameTitle, 'owners.emailAddress']
56880
+ nodataFields = ['Owner', 'id', 'name', 'owners.emailAddress']
56986
56881
  if not FJQC.formatJSON:
56987
56882
  nodataFields.append('permissions')
56988
56883
  if filepath:
@@ -57162,7 +57057,7 @@ def printFileList(users):
57162
57057
  if not csvPF.rows:
57163
57058
  setSysExitRC(NO_ENTITIES_FOUND_RC)
57164
57059
  if not FJQC.formatJSON:
57165
- csvPF.SetSortTitles(['Owner', 'id', fileNameTitle])
57060
+ csvPF.SetSortTitles(['Owner', 'id', 'name'])
57166
57061
  else:
57167
57062
  if 'JSON' in csvPF.JSONtitlesList:
57168
57063
  csvPF.MoveJSONTitlesToEnd(['JSON'])
@@ -57430,8 +57325,7 @@ def printShowFileComments(users):
57430
57325
  # [fullpath] [folderpathonly [<Boolean>]] [pathdelimiter <Character>]
57431
57326
  # [followshortcuts [<Boolean>]]
57432
57327
  def printShowFilePaths(users):
57433
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
57434
- csvPF = CSVPrintFile(['Owner', 'id', fileNameTitle, 'paths'], 'sortall', ['paths']) if Act.csvFormat() else None
57328
+ csvPF = CSVPrintFile(['Owner', 'id', 'name', 'paths'], 'sortall', ['paths']) if Act.csvFormat() else None
57435
57329
  fileIdEntity = getDriveFileEntity()
57436
57330
  fullpath = folderPathOnly = followShortcuts = oneItemPerRow = returnPathOnly = stripCRsFromName = False
57437
57331
  pathDelimiter = '/'
@@ -57532,11 +57426,11 @@ def printShowFilePaths(users):
57532
57426
  if oneItemPerRow:
57533
57427
  if paths:
57534
57428
  for path in paths:
57535
- csvPF.WriteRow({'Owner': user, 'id': fileId, fileNameTitle: result['name'], 'path': path})
57429
+ csvPF.WriteRow({'Owner': user, 'id': fileId, 'name': result['name'], 'path': path})
57536
57430
  else:
57537
- csvPF.WriteRow({'Owner': user, 'id': fileId, fileNameTitle: result['name']})
57431
+ csvPF.WriteRow({'Owner': user, 'id': fileId, 'name': result['name']})
57538
57432
  else:
57539
- csvPF.WriteRowTitles(flattenJSON({'paths': paths}, flattened={'Owner': user, 'id': fileId, fileNameTitle: result['name']}))
57433
+ csvPF.WriteRowTitles(flattenJSON({'paths': paths}, flattened={'Owner': user, 'id': fileId, 'name': result['name']}))
57540
57434
  except GAPI.fileNotFound:
57541
57435
  entityActionFailedWarning([Ent.USER, user, Ent.DRIVE_FILE_OR_FOLDER_ID, fileId], Msg.DOES_NOT_EXIST, j, jcount)
57542
57436
  except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy) as e:
@@ -57549,8 +57443,7 @@ def printShowFilePaths(users):
57549
57443
  # gam <UserTypeEntity> print fileparenttree <DriveFileEntity> [todrive <ToDriveAttribute>*]
57550
57444
  # [stripcrsfromname]
57551
57445
  def printFileParentTree(users):
57552
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
57553
- csvPF = CSVPrintFile(['Owner', 'isBase', 'baseId', 'id', fileNameTitle, 'parentId', 'depth', 'isRoot'], 'sortall')
57446
+ csvPF = CSVPrintFile(['Owner', 'isBase', 'baseId', 'id', 'name', 'parentId', 'depth', 'isRoot'], 'sortall')
57554
57447
  fileIdEntity = getDriveFileEntity()
57555
57448
  stripCRsFromName = False
57556
57449
  while Cmd.ArgumentsRemaining():
@@ -57610,7 +57503,7 @@ def printFileParentTree(users):
57610
57503
  kcount = len(fileList)
57611
57504
  isBase = True
57612
57505
  for result in fileList:
57613
- csvPF.WriteRow({'Owner': user, 'isBase': isBase, 'baseId': baseId, 'id': result['id'], fileNameTitle: result['name'],
57506
+ csvPF.WriteRow({'Owner': user, 'isBase': isBase, 'baseId': baseId, 'id': result['id'], 'name': result['name'],
57614
57507
  'parentId': result['parents'][0], 'depth': kcount, 'isRoot': result['isRoot']})
57615
57508
  isBase = False
57616
57509
  kcount -= 1
@@ -58409,7 +58302,7 @@ def printShowFileTree(users):
58409
58302
  userInfo['index'] += 1
58410
58303
  row = userInfo.copy()
58411
58304
  row['depth'] = depth
58412
- row[fileNameTitle] = ('' if noindent else Ind.SpacesSub1())+fileEntry['name']
58305
+ row['name'] = ('' if noindent else Ind.SpacesSub1())+fileEntry['name']
58413
58306
  for field in FILETREE_FIELDS_PRINT_ORDER:
58414
58307
  if showFields[field]:
58415
58308
  if field == 'parents':
@@ -58417,7 +58310,7 @@ def printShowFileTree(users):
58417
58310
  elif field == 'owners':
58418
58311
  row[field] = delimiter.join([owner['emailAddress'] for owner in fileEntry.get(field, [])])
58419
58312
  elif field == 'size':
58420
- row[fileSize] = fileEntry.get(sizeField, 0)
58313
+ row['size'] = fileEntry.get(sizeField, 0)
58421
58314
  else:
58422
58315
  row[field] = fileEntry.get(field, '')
58423
58316
  csvPF.WriteRow(row)
@@ -58518,14 +58411,6 @@ def printShowFileTree(users):
58518
58411
  unknownArgumentExit()
58519
58412
  fieldsList = ['driveId', 'id', 'name', 'parents', 'mimeType', 'ownedByMe', 'owners(emailAddress)',
58520
58413
  'shared', sizeField, 'explicitlyTrashed', 'trashed', 'webViewLink']
58521
- if csvPF:
58522
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
58523
- fileNameTitle = 'title'
58524
- fileSize = 'fileSize'
58525
- csvPF.SetMapDrive3Titles(True)
58526
- else:
58527
- fileNameTitle = 'name'
58528
- fileSize = 'size'
58529
58414
  buildTree = (not fileIdEntity
58530
58415
  or (not fileIdEntity['dict']
58531
58416
  and not fileIdEntity['query']
@@ -58585,7 +58470,7 @@ def printShowFileTree(users):
58585
58470
  if jcount == 0:
58586
58471
  continue
58587
58472
  if csvPF:
58588
- userInfo = {'User': user, 'index': 0, 'depth': 0, fileNameTitle: ''}
58473
+ userInfo = {'User': user, 'index': 0, 'depth': 0, 'name': ''}
58589
58474
  j = 0
58590
58475
  Ind.Increment()
58591
58476
  for fileId in fileIdEntity['list']:
@@ -58745,8 +58630,7 @@ def createDriveFile(users):
58745
58630
  media_body = getMediaBody(parameters)
58746
58631
  body['mimeType'] = parameters[DFA_LOCALMIMETYPE]
58747
58632
  if csvPF:
58748
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
58749
- csvPF.SetTitles(['User', fileNameTitle, 'id'])
58633
+ csvPF.SetTitles(['User', 'name', 'id'])
58750
58634
  if showDetails:
58751
58635
  csvPF.AddTitles(['parentId', 'mimeType'])
58752
58636
  if addCSVData:
@@ -58806,7 +58690,7 @@ def createDriveFile(users):
58806
58690
  else:
58807
58691
  entityActionPerformed(kvList, i, count)
58808
58692
  else:
58809
- row = {'User': user, fileNameTitle: result['name'], 'id': result['id']}
58693
+ row = {'User': user, 'name': result['name'], 'id': result['id']}
58810
58694
  if showDetails:
58811
58695
  row.update({'parentId': parentId, 'mimeType': result['mimeType']})
58812
58696
  if addCSVData:
@@ -60362,8 +60246,8 @@ copyReturnItemMap = {
60362
60246
  # [enforceexpansiveaccess [<Boolean>]]
60363
60247
  def copyDriveFile(users):
60364
60248
  def _writeCSVData(user, oldName, oldId, newName, newId, mimeType):
60365
- row = {'User': user, fileNameTitle: oldName, 'id': oldId,
60366
- newFileNameTitle: newName, 'newId': newId, 'mimeType': mimeType}
60249
+ row = {'User': user, 'name': oldName, 'id': oldId,
60250
+ 'newName': newName, 'newId': newId, 'mimeType': mimeType}
60367
60251
  if addCSVData:
60368
60252
  row.update(addCSVData)
60369
60253
  csvPF.WriteRow(row)
@@ -60753,9 +60637,7 @@ def copyDriveFile(users):
60753
60637
  else:
60754
60638
  unknownArgumentExit()
60755
60639
  if csvPF:
60756
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
60757
- newFileNameTitle = f'new{fileNameTitle.capitalize()}'
60758
- csvPF.SetTitles(['User', fileNameTitle, 'id', newFileNameTitle, 'newId', 'mimeType'])
60640
+ csvPF.SetTitles(['User', 'name', 'id', 'newName', 'newId', 'mimeType'])
60759
60641
  if addCSVData:
60760
60642
  csvPF.AddTitles(sorted(addCSVData.keys()))
60761
60643
  i, count, users = getEntityArgument(users)
@@ -64155,11 +64037,8 @@ def _getDriveFileACLPrintKeysTimeObjects():
64155
64037
  printKeys = ['id', 'type', 'emailAddress', 'domain', 'role', 'permissionDetails',
64156
64038
  'expirationTime', 'photoLink', 'allowFileDiscovery', 'deleted',
64157
64039
  'pendingOwner', 'view']
64158
- timeObjects = ['expirationTime']
64159
- if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES]:
64160
- _mapDrive3TitlesToDrive2(printKeys, API.DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP)
64161
- _mapDrive3TitlesToDrive2(timeObjects, API.DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP)
64162
- return (printKeys, set(timeObjects))
64040
+ timeObjects = {'expirationTime'}
64041
+ return (printKeys, timeObjects)
64163
64042
 
64164
64043
  # DriveFileACL commands utilities
64165
64044
  def _showDriveFilePermissionJSON(user, fileId, fileName, createdTime, permission, timeObjects):
@@ -64251,7 +64130,6 @@ def createDriveFileACL(users, useDomainAdminAccess=False):
64251
64130
  showDetails = True
64252
64131
  csvPF = None
64253
64132
  FJQC = FormatJSONQuoteChar(csvPF)
64254
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
64255
64133
  fileIdEntity = getDriveFileEntity()
64256
64134
  body = {}
64257
64135
  body['type'] = permType = getChoice(DRIVEFILE_ACL_PERMISSION_TYPES)
@@ -64327,7 +64205,7 @@ def createDriveFileACL(users, useDomainAdminAccess=False):
64327
64205
  printKeys, timeObjects = _getDriveFileACLPrintKeysTimeObjects()
64328
64206
  if csvPF:
64329
64207
  if showTitles:
64330
- csvPF.AddTitles(fileNameTitle)
64208
+ csvPF.AddTitles('name')
64331
64209
  csvPF.SetSortAllTitles()
64332
64210
  if FJQC.formatJSON:
64333
64211
  csvPF.SetJSONTitles(csvPF.titlesList+['JSON'])
@@ -64366,7 +64244,7 @@ def createDriveFileACL(users, useDomainAdminAccess=False):
64366
64244
  if csvPF:
64367
64245
  baserow = {'Owner': user, 'id': fileId}
64368
64246
  if showTitles:
64369
- baserow[fileNameTitle] = fileName
64247
+ baserow['name'] = fileName
64370
64248
  row = baserow.copy()
64371
64249
  _mapDrivePermissionNames(permission)
64372
64250
  flattenJSON({'permission': permission}, flattened=row, timeObjects=timeObjects)
@@ -64422,7 +64300,6 @@ def updateDriveFileACLs(users, useDomainAdminAccess=False):
64422
64300
  showDetails = True
64423
64301
  csvPF = None
64424
64302
  FJQC = FormatJSONQuoteChar(csvPF)
64425
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
64426
64303
  body = {}
64427
64304
  while Cmd.ArgumentsRemaining():
64428
64305
  myarg = getArgument()
@@ -64457,7 +64334,7 @@ def updateDriveFileACLs(users, useDomainAdminAccess=False):
64457
64334
  missingArgumentExit(f'role {formatChoiceList(DRIVEFILE_ACL_ROLES_MAP)}')
64458
64335
  printKeys, timeObjects = _getDriveFileACLPrintKeysTimeObjects()
64459
64336
  if csvPF and showTitles:
64460
- csvPF.AddTitles(fileNameTitle)
64337
+ csvPF.AddTitles('name')
64461
64338
  csvPF.SetSortAllTitles()
64462
64339
  if FJQC.formatJSON:
64463
64340
  csvPF.SetJSONTitles(csvPF.titlesList+['JSON'])
@@ -64500,7 +64377,7 @@ def updateDriveFileACLs(users, useDomainAdminAccess=False):
64500
64377
  if csvPF:
64501
64378
  baserow = {'Owner': user, 'id': fileId}
64502
64379
  if showTitles:
64503
- baserow[fileNameTitle] = fileName
64380
+ baserow['name'] = fileName
64504
64381
  row = baserow.copy()
64505
64382
  _mapDrivePermissionNames(permission)
64506
64383
  flattenJSON({'permission': permission}, flattened=row, timeObjects=timeObjects)
@@ -65065,7 +64942,6 @@ def printShowDriveFileACLs(users, useDomainAdminAccess=False):
65065
64942
  fieldsList = []
65066
64943
  OBY = OrderBy(DRIVEFILE_ORDERBY_CHOICE_MAP)
65067
64944
  PM = PermissionMatch()
65068
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
65069
64945
  while Cmd.ArgumentsRemaining():
65070
64946
  myarg = getArgument()
65071
64947
  if csvPF and myarg == 'todrive':
@@ -65084,7 +64960,7 @@ def printShowDriveFileACLs(users, useDomainAdminAccess=False):
65084
64960
  addTitle = getString(Cmd.OB_STRING)
65085
64961
  showTitles = False
65086
64962
  if csvPF:
65087
- csvPF.AddTitles(fileNameTitle)
64963
+ csvPF.AddTitles('name')
65088
64964
  csvPF.SetSortAllTitles()
65089
64965
  elif getDriveFilePermissionsFields(myarg, fieldsList):
65090
64966
  pass
@@ -65169,7 +65045,7 @@ def printShowDriveFileACLs(users, useDomainAdminAccess=False):
65169
65045
  else:
65170
65046
  baserow = {'Owner': user, 'id': fileId}
65171
65047
  if showTitles or addTitle:
65172
- baserow[fileNameTitle] = fileName
65048
+ baserow['name'] = fileName
65173
65049
  if oneItemPerRow:
65174
65050
  for permission in permissions:
65175
65051
  _mapDrivePermissionNames(permission)
@@ -65736,7 +65612,6 @@ def doPrintShowOwnership():
65736
65612
  customerId = GC.Values[GC.CUSTOMER_ID]
65737
65613
  if customerId == GC.MY_CUSTOMER:
65738
65614
  customerId = None
65739
- fileNameTitle = 'title' if not GC.Values[GC.DRIVE_V3_NATIVE_NAMES] else 'name'
65740
65615
  csvPF = CSVPrintFile('Owner') if Act.csvFormat() else None
65741
65616
  FJQC = FormatJSONQuoteChar(csvPF)
65742
65617
  addCSVData = {}
@@ -65781,7 +65656,7 @@ def doPrintShowOwnership():
65781
65656
  else:
65782
65657
  FJQC.GetFormatJSONQuoteChar(myarg, True)
65783
65658
  if csvPF and not FJQC.formatJSON:
65784
- csvPF.AddTitles(['id', fileNameTitle, 'type', 'ownerIsSharedDrive', 'driveId', 'event'])
65659
+ csvPF.AddTitles(['id', 'name', 'type', 'ownerIsSharedDrive', 'driveId', 'event'])
65785
65660
  if addCSVData:
65786
65661
  csvPF.AddTitles(sorted(addCSVData.keys()))
65787
65662
  csvPF.SetSortAllTitles()
@@ -65814,7 +65689,7 @@ def doPrintShowOwnership():
65814
65689
  elif event['name'] != 'change_owner' and item['name'] == 'owner':
65815
65690
  fileInfo['Owner'] = item['value']
65816
65691
  elif item['name'] == 'doc_title':
65817
- fileInfo[fileNameTitle] = item['value']
65692
+ fileInfo['name'] = item['value']
65818
65693
  elif item['name'] == 'doc_type':
65819
65694
  fileInfo['type'] = item['value']
65820
65695
  elif item['name'] == 'owner_is_shared_drive':
@@ -65827,7 +65702,7 @@ def doPrintShowOwnership():
65827
65702
  if not csvPF:
65828
65703
  if not FJQC.formatJSON:
65829
65704
  printEntityKVList([Ent.OWNER, fileInfo['Owner']],
65830
- ['id', fileInfo['id'], fileNameTitle, fileInfo.get(fileNameTitle, ''),
65705
+ ['id', fileInfo['id'], 'name', fileInfo.get('name', ''),
65831
65706
  'type', fileInfo.get('type', ''),
65832
65707
  'ownerIsSharedDrive', fileInfo.get('ownerIsSharedDrive', False),
65833
65708
  'driveId', fileInfo.get('driveId', ''),
gam/gamlib/glapi.py CHANGED
@@ -750,56 +750,6 @@ _USER_SVCACCT_ONLY_SCOPES = [
750
750
  'scope': 'https://www.googleapis.com/auth/apps.groups.migration'},
751
751
  ]
752
752
 
753
- DRIVE3_TO_DRIVE2_ABOUT_FIELDS_MAP = {
754
- 'displayName': 'name',
755
- 'limit': 'quotaBytesTotal',
756
- 'usage': 'quotaBytesUsedAggregate',
757
- 'usageInDrive': 'quotaBytesUsed',
758
- 'usageInDriveTrash': 'quotaBytesUsedInTrash',
759
- }
760
-
761
- DRIVE3_TO_DRIVE2_CAPABILITIES_FIELDS_MAP = {
762
- 'canComment': 'canComment',
763
- 'canReadRevisions': 'canReadRevisions',
764
- 'canCopy': 'copyable',
765
- 'canEdit': 'editable',
766
- 'canShare': 'shareable',
767
- }
768
-
769
- DRIVE3_TO_DRIVE2_CAPABILITIES_NAMES_MAP = {
770
- 'canChangeViewersCanCopyContent': 'canChangeRestrictedDownload',
771
- }
772
-
773
- DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP = {
774
- 'allowFileDiscovery': 'withLink',
775
- 'createdTime': 'createdDate',
776
- 'expirationTime': 'expirationDate',
777
- 'modifiedByMe': 'modified',
778
- 'modifiedByMeTime': 'modifiedByMeDate',
779
- 'modifiedTime': 'modifiedDate',
780
- 'name': 'title',
781
- 'restrictionTime': 'restrictionDate',
782
- 'sharedWithMeTime': 'sharedWithMeDate',
783
- 'size': 'fileSize',
784
- 'trashedTime': 'trashedDate',
785
- 'viewedByMe': 'viewed',
786
- 'viewedByMeTime': 'lastViewedByMeDate',
787
- 'webViewLink': 'alternateLink',
788
- }
789
-
790
- DRIVE3_TO_DRIVE2_LABELS_MAP = {
791
- 'modifiedByMe': 'modified',
792
- 'starred': 'starred',
793
- 'trashed': 'trashed',
794
- 'viewedByMe': 'viewed',
795
- }
796
-
797
- DRIVE3_TO_DRIVE2_REVISIONS_FIELDS_MAP = {
798
- 'modifiedTime': 'modifiedDate',
799
- 'keepForever': 'pinned',
800
- 'size': 'fileSize',
801
- }
802
-
803
753
  def getAPIName(api):
804
754
  return _INFO[api]['name']
805
755
 
gam/gamlib/glcfg.py CHANGED
@@ -155,8 +155,6 @@ DRIVE_DIR = 'drive_dir'
155
155
  DRIVE_MAX_RESULTS = 'drive_max_results'
156
156
  # Use Drive V3 beta
157
157
  DRIVE_V3_BETA = 'drive_v3_beta'
158
- # Use Drive V3 ntive names
159
- DRIVE_V3_NATIVE_NAMES = 'drive_v3_native_names'
160
158
  # When processing email messages in batches, how many should be processed in each batch
161
159
  EMAIL_BATCH_SIZE = 'email_batch_size'
162
160
  # Enable Delegated Admin Service Account
@@ -382,7 +380,6 @@ Defaults = {
382
380
  ENFORCE_EXPANSIVE_ACCESS: TRUE,
383
381
  DRIVE_MAX_RESULTS: '1000',
384
382
  DRIVE_V3_BETA: FALSE,
385
- DRIVE_V3_NATIVE_NAMES: TRUE,
386
383
  EMAIL_BATCH_SIZE: '50',
387
384
  ENABLE_DASA: FALSE,
388
385
  ENABLE_GCLOUD_REAUTH: FALSE,
@@ -551,7 +548,6 @@ VAR_INFO = {
551
548
  ENFORCE_EXPANSIVE_ACCESS: {VAR_TYPE: TYPE_BOOLEAN},
552
549
  DRIVE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
553
550
  DRIVE_V3_BETA: {VAR_TYPE: TYPE_BOOLEAN},
554
- DRIVE_V3_NATIVE_NAMES: {VAR_TYPE: TYPE_BOOLEAN},
555
551
  EMAIL_BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 100)},
556
552
  ENABLE_DASA: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'enabledasa.txt', VAR_SFFT: (FALSE, TRUE)},
557
553
  ENABLE_GCLOUD_REAUTH: {VAR_TYPE: TYPE_BOOLEAN},
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.15.1
3
+ Version: 7.16.0
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=YUqLAFg0n395rV4CrtgHf_nLCDT8tlhg1Sffy8X70bg,3571368
1
+ gam/__init__.py,sha256=perhavDdZW3_hdf1AuU294vfvQh2pj13FeSsMzMalVc,3565240
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
@@ -23,8 +23,8 @@ gam/atom/token_store.py,sha256=7E6Ecvxa86WCvl1pJAhv78jg9OxQv8pMtIUcPhZCq04,3803
23
23
  gam/atom/url.py,sha256=pxO1TlORxyKQTQ1bkBE1unFzjnv9c8LjJkm-UEORShY,4276
24
24
  gam/gamlib/__init__.py,sha256=z5mF-y0j8pm-YNFBaiuxB4M_GAUPG-cXWwrhYwrVReM,679
25
25
  gam/gamlib/glaction.py,sha256=1Il_HrChVnPkzZwiZs5au4mFQVtq4K1Z42uIuR6qdnI,9419
26
- gam/gamlib/glapi.py,sha256=2syc4jmTV2cNLdSjvOKA5usatnnLOlOSNxqnj1iXhNs,36056
27
- gam/gamlib/glcfg.py,sha256=bNTckxzIM_HruxO2DfYsDbEgqOIz1RX6CbU6XOQQQyg,28296
26
+ gam/gamlib/glapi.py,sha256=l3iC1H2_slHFaJ8tIvx3n4JY-1_hqP5xF541YD06zEY,34738
27
+ gam/gamlib/glcfg.py,sha256=J4w16Nfk282S7iuSmk3601GHgt_MJ4qWeSzF5y7ZzX0,28139
28
28
  gam/gamlib/glclargs.py,sha256=zCfq3-XRiaEF58o5lmQVnxgV3AqMWMIs4Ra42iHExPQ,43538
29
29
  gam/gamlib/glentity.py,sha256=bFVeXqJ4VLIpFgc9y083oeBn8JzbwPYVJeuJF0yrnk8,34405
30
30
  gam/gamlib/glgapi.py,sha256=pdBbwNtnCwFWxJGaP-_3hdTjSNoOCJF2yo76WdQOi1k,40426
@@ -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.15.1.dist-info/METADATA,sha256=7aliHSGufhmcqPqi14F4FrSbpSX3k95C_As8GO76ncc,2940
69
- gam7-7.15.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.15.1.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.15.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.15.1.dist-info/RECORD,,
68
+ gam7-7.16.0.dist-info/METADATA,sha256=lIaqYcMVQWQlnGY40LjHvt_okQe9bZfWurvdMlCT_uM,2940
69
+ gam7-7.16.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.16.0.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.16.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.16.0.dist-info/RECORD,,
File without changes