gam7 7.6.10__py3-none-any.whl → 7.6.12__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.06.10'
28
+ __version__ = '7.06.12'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -95,6 +95,8 @@ import wsgiref.simple_server
95
95
  import wsgiref.util
96
96
  import zipfile
97
97
 
98
+ # disable legacy stuff we don't use and isn't secure
99
+ os.environ['CRYPTOGRAPHY_OPENSSL_NO_LEGACY'] = "1"
98
100
  from cryptography import x509
99
101
  from cryptography.hazmat.backends import default_backend
100
102
  from cryptography.hazmat.primitives import hashes, serialization
@@ -9358,32 +9360,9 @@ def getOSPlatform():
9358
9360
 
9359
9361
  # gam checkconnection
9360
9362
  def doCheckConnection():
9361
- hosts = ['api.github.com',
9362
- 'raw.githubusercontent.com',
9363
- 'accounts.google.com',
9364
- 'workspace.google.com',
9365
- 'oauth2.googleapis.com',
9366
- 'www.googleapis.com']
9367
- fix_hosts = {'calendar-json.googleapis.com': 'www.googleapis.com',
9368
- 'storage-api.googleapis.com': 'storage.googleapis.com'}
9369
- api_hosts = ['apps-apis.google.com',
9370
- 'sites.google.com',
9371
- 'versionhistory.googleapis.com',
9372
- 'www.google.com']
9373
- for host in API.PROJECT_APIS:
9374
- host = fix_hosts.get(host, host)
9375
- if host not in api_hosts and host not in hosts:
9376
- api_hosts.append(host)
9377
- hosts.extend(sorted(api_hosts))
9378
- host_count = len(hosts)
9379
- httpObj = getHttpObj(timeout=30)
9380
- httpObj.follow_redirects = False
9381
- headers = {'user-agent': GAM_USER_AGENT}
9382
- okay = createGreenText('OK')
9383
- not_okay = createRedText('ERROR')
9384
- try_count = 0
9385
- success_count = 0
9386
- for host in hosts:
9363
+
9364
+ def check_host(host):
9365
+ nonlocal try_count, okay, not_okay, success_count
9387
9366
  try_count += 1
9388
9367
  dns_err = None
9389
9368
  ip = 'unknown'
@@ -9393,12 +9372,12 @@ def doCheckConnection():
9393
9372
  dns_err = f'{not_okay}\n DNS failure: {str(e)}\n'
9394
9373
  except Exception as e:
9395
9374
  dns_err = f'{not_okay}\n Unknown DNS failure: {str(e)}\n'
9396
- check_line = f'Checking {host} ({ip}) ({try_count}/{host_count})...'
9375
+ check_line = f'Checking {host} ({ip}) ({try_count})...'
9397
9376
  writeStdout(f'{check_line:<100}')
9398
9377
  flushStdout()
9399
9378
  if dns_err:
9400
9379
  writeStdout(dns_err)
9401
- continue
9380
+ return
9402
9381
  gen_firewall = 'You probably have security software or a firewall on your machine or network that is preventing GAM from making Internet connections. Check your network configuration or try running GAM on a hotspot or home network to see if the problem exists only on your organization\'s network.'
9403
9382
  try:
9404
9383
  if host.startswith('http'):
@@ -9427,7 +9406,54 @@ def doCheckConnection():
9427
9406
  writeStdout(f'{not_okay}\n Timed out trying to connect to host\n')
9428
9407
  except Exception as e:
9429
9408
  writeStdout(f'{not_okay}\n {str(e)}\n')
9430
- if success_count == host_count:
9409
+
9410
+ try_count = 0
9411
+ httpObj = getHttpObj(timeout=30)
9412
+ httpObj.follow_redirects = False
9413
+ headers = {'user-agent': GAM_USER_AGENT}
9414
+ okay = createGreenText('OK')
9415
+ not_okay = createRedText('ERROR')
9416
+ success_count = 0
9417
+ initial_hosts = ['api.github.com',
9418
+ 'raw.githubusercontent.com',
9419
+ 'accounts.google.com',
9420
+ 'oauth2.googleapis.com',
9421
+ 'www.googleapis.com']
9422
+ for host in initial_hosts:
9423
+ check_host(host)
9424
+ api_hosts = ['apps-apis.google.com',
9425
+ 'www.google.com']
9426
+ for host in api_hosts:
9427
+ check_host(host)
9428
+ # For v2 discovery APIs, GAM gets discovery file from <api>.googleapis.com so
9429
+ # add those domains.
9430
+ disc_hosts = []
9431
+ for api, config in API._INFO.items():
9432
+ if config.get('v2discovery') and not config.get('localdiscovery'):
9433
+ if mapped_api := config.get('mappedAPI'):
9434
+ api = mapped_api
9435
+ host = f'{api}.googleapis.com'
9436
+ if host not in disc_hosts:
9437
+ disc_hosts.append(host)
9438
+ for host in disc_hosts:
9439
+ check_host(host)
9440
+ checked_hosts = initial_hosts + api_hosts + disc_hosts
9441
+ # now we need to "build" each API and check it's base URL host
9442
+ # if we haven't already. This may not be any hosts at all but
9443
+ # to ensure we are checking all hosts GAM may use we should
9444
+ # keep this.
9445
+ for api in API._INFO:
9446
+ if api in [API.CONTACTS, API.EMAIL_AUDIT]:
9447
+ continue
9448
+ svc = getService(api, httpObj)
9449
+ base_url = svc._rootDesc.get('baseUrl')
9450
+ parsed_base_url = urlparse(base_url)
9451
+ base_host = parsed_base_url.netloc
9452
+ if base_host not in checked_hosts:
9453
+ writeStdout(f'Checking {base_host} for {api}\n')
9454
+ check_host(base_host)
9455
+ checked_hosts.append(base_host)
9456
+ if success_count == try_count:
9431
9457
  writeStdout(createGreenText('All hosts passed!\n'))
9432
9458
  else:
9433
9459
  systemErrorExit(3, createYellowText('Some hosts failed to connect! Please follow the recommendations for those hosts to correct any issues and try again.'))
@@ -15778,27 +15804,13 @@ ANALYTIC_ENTITY_MAP = {
15778
15804
  'pageSize': 50,
15779
15805
  'maxPageSize': 200,
15780
15806
  },
15781
- Ent.ANALYTIC_UA_PROPERTY:
15782
- {'titles': ['User', 'accountId', 'name', 'id', 'created', 'updated'],
15783
- 'JSONtitles': ['User', 'accountId', 'name', 'id', 'JSON'],
15784
- 'timeObjects': ['created', 'updated'],
15785
- 'items': 'items',
15786
- 'pageSize': 50,
15787
- 'maxPageSize': 200,
15788
- },
15789
15807
  }
15790
15808
 
15791
15809
  def printShowAnalyticItems(users, entityType):
15792
15810
  analyticEntityMap = ANALYTIC_ENTITY_MAP[entityType]
15793
15811
  csvPF = CSVPrintFile(analyticEntityMap['titles'], 'sortall') if Act.csvFormat() else None
15794
15812
  FJQC = FormatJSONQuoteChar(csvPF)
15795
- if entityType != Ent.ANALYTIC_UA_PROPERTY:
15796
- kwargs = {'pageSize': analyticEntityMap['pageSize']}
15797
- api = API.ANALYTICS_ADMIN
15798
- else:
15799
- # kwargs = {'webPropertyId': '~all'}
15800
- kwargs = {}
15801
- api = API.ANALYTICS
15813
+ kwargs = {'pageSize': analyticEntityMap['pageSize']}
15802
15814
  if entityType in {Ent.ANALYTIC_ACCOUNT, Ent.ANALYTIC_PROPERTY}:
15803
15815
  kwargs['showDeleted'] = False
15804
15816
  while Cmd.ArgumentsRemaining():
@@ -15811,16 +15823,12 @@ def printShowAnalyticItems(users, entityType):
15811
15823
  kwargs['showDeleted'] = getBoolean()
15812
15824
  elif entityType == Ent.ANALYTIC_PROPERTY and myarg == 'filter':
15813
15825
  kwargs['filter'] = getString(Cmd.OB_STRING)
15814
- elif entityType == Ent.ANALYTIC_UA_PROPERTY and myarg == 'accountid':
15815
- kwargs['accountId'] = getString(Cmd.OB_STRING).replace('accounts/', '')
15816
15826
  elif entityType == Ent.ANALYTIC_DATASTREAM and myarg == 'parent':
15817
15827
  kwargs['parent'] = getString(Cmd.OB_STRING)
15818
15828
  else:
15819
15829
  FJQC.GetFormatJSONQuoteChar(myarg, True)
15820
15830
  if entityType == Ent.ANALYTIC_PROPERTY and 'filter' not in kwargs:
15821
15831
  missingArgumentExit('filter')
15822
- if entityType == Ent.ANALYTIC_UA_PROPERTY and 'accountId' not in kwargs:
15823
- missingArgumentExit('accountid')
15824
15832
  if entityType == Ent.ANALYTIC_DATASTREAM and 'parent' not in kwargs:
15825
15833
  missingArgumentExit('parent')
15826
15834
  if csvPF and FJQC.formatJSON:
@@ -15828,7 +15836,7 @@ def printShowAnalyticItems(users, entityType):
15828
15836
  i, count, users = getEntityArgument(users)
15829
15837
  for user in users:
15830
15838
  i += 1
15831
- user, analytics = buildGAPIServiceObject(api, user, i, count)
15839
+ user, analytics = buildGAPIServiceObject(API.ANALYTICS_ADMIN, user, i, count)
15832
15840
  if not analytics:
15833
15841
  continue
15834
15842
  if entityType == Ent.ANALYTIC_ACCOUNT:
@@ -15837,11 +15845,8 @@ def printShowAnalyticItems(users, entityType):
15837
15845
  service = analytics.accountSummaries()
15838
15846
  elif entityType == Ent.ANALYTIC_DATASTREAM:
15839
15847
  service = analytics.properties().dataStreams()
15840
- elif entityType == Ent.ANALYTIC_PROPERTY:
15848
+ else: # entityType == Ent.ANALYTIC_PROPERTY:
15841
15849
  service = analytics.properties()
15842
- else: #Ent.ANALYTIC_UA_PROPERTY:
15843
- service = analytics.management().webproperties()
15844
- # service = analytics.management().profiles()
15845
15850
  if csvPF:
15846
15851
  printGettingAllEntityItemsForWhom(entityType, user, i, count)
15847
15852
  pageMessage = getPageMessageForWhom()
@@ -15882,10 +15887,7 @@ def printShowAnalyticItems(users, entityType):
15882
15887
  if not FJQC.formatJSON:
15883
15888
  csvPF.WriteRowTitles(row)
15884
15889
  elif csvPF.CheckRowTitles(row):
15885
- if entityType != Ent.ANALYTIC_UA_PROPERTY:
15886
- row = {'User': user, 'name': item['name'], 'displayName': item['displayName']}
15887
- else:
15888
- row = {'User': user, 'accountId': item['accountId'], 'id': item['id'], 'name': item['name']}
15890
+ row = {'User': user, 'name': item['name'], 'displayName': item['displayName']}
15889
15891
  for field in analyticEntityMap['JSONtitles'][2:-1]:
15890
15892
  row[field] = item[field]
15891
15893
  row['JSON'] = json.dumps(cleanJSON(item, timeObjects=analyticEntityMap['timeObjects']),
@@ -15923,17 +15925,6 @@ def printShowAnalyticAccountSummaries(users):
15923
15925
  def printShowAnalyticProperties(users):
15924
15926
  printShowAnalyticItems(users, Ent.ANALYTIC_PROPERTY)
15925
15927
 
15926
- # gam <UserTypeEntity> print analyticuaproperties [todrive <ToDriveAttribute>*]
15927
- # accountid [accounts/]<String>
15928
- # [maxresults <Integer>]
15929
- # [formatjson [quotechar <Character>]]
15930
- # gam <UserTypeEntity> show analyticuaproperties
15931
- # accountid [accounts/]<String>
15932
- # [maxresults <Integer>]
15933
- # [formatjson]
15934
- def printShowAnalyticUAProperties(users):
15935
- printShowAnalyticItems(users, Ent.ANALYTIC_UA_PROPERTY)
15936
-
15937
15928
  # gam <UserTypeEntity> print analyticdatastreams [todrive <ToDriveAttribute>*]
15938
15929
  # parent <String>
15939
15930
  # [maxresults <Integer>]
@@ -34179,7 +34170,8 @@ def getGroupMembers(cd, groupEmail, memberRoles, membersList, membersSet, i, cou
34179
34170
  elif memberOptions[MEMBEROPTION_NODUPLICATES]:
34180
34171
  groupMemberList = []
34181
34172
  for member in groupMembers:
34182
- if member['type'] != Ent.TYPE_GROUP:
34173
+ namespace = member['email'].find('@') == -1
34174
+ if member['type'] != Ent.TYPE_GROUP or namespace:
34183
34175
  if ((member['type'] in typesSet and
34184
34176
  checkMemberMatch(member, memberOptions) and
34185
34177
  _checkMemberRoleIsSuspendedIsArchived(member, validRoles, memberOptions[MEMBEROPTION_ISSUSPENDED], memberOptions[MEMBEROPTION_ISARCHIVED]) and
@@ -34208,7 +34200,8 @@ def getGroupMembers(cd, groupEmail, memberRoles, membersList, membersSet, i, cou
34208
34200
  memberOptions, memberDisplayOptions, level+1, typesSet)
34209
34201
  else:
34210
34202
  for member in groupMembers:
34211
- if member['type'] != Ent.TYPE_GROUP:
34203
+ namespace = member['email'].find('@') == -1
34204
+ if member['type'] != Ent.TYPE_GROUP or namespace:
34212
34205
  if ((member['type'] in typesSet) and
34213
34206
  checkMemberMatch(member, memberOptions) and
34214
34207
  _checkMemberRoleIsSuspendedIsArchived(member, validRoles,
@@ -36307,7 +36300,8 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36307
36300
  for member in groupMembers:
36308
36301
  getCIGroupMemberRoleFixType(member)
36309
36302
  memberName = member.get('preferredMemberKey', {}).get('id', '')
36310
- if member['type'] != Ent.TYPE_GROUP:
36303
+ namespace = member.get('preferredMemberKey', {}).get('namespace', '')
36304
+ if member['type'] != Ent.TYPE_GROUP or namespace:
36311
36305
  if (member['type'] in typesSet and
36312
36306
  checkCIMemberMatch(member, memberOptions) and
36313
36307
  _checkMemberRole(member, validRoles) and
@@ -36335,7 +36329,8 @@ def getCIGroupMembers(ci, groupName, memberRoles, membersList, membersSet, i, co
36335
36329
  for member in groupMembers:
36336
36330
  getCIGroupMemberRoleFixType(member)
36337
36331
  memberName = member.get('preferredMemberKey', {}).get('id', '')
36338
- if member['type'] != Ent.TYPE_GROUP:
36332
+ namespace = member.get('preferredMemberKey', {}).get('namespace', '')
36333
+ if member['type'] != Ent.TYPE_GROUP or namespace:
36339
36334
  if (member['type'] in typesSet and
36340
36335
  checkCIMemberMatch(member, memberOptions) and
36341
36336
  _checkMemberRole(member, validRoles) and
@@ -76686,7 +76681,6 @@ USER_COMMANDS_WITH_OBJECTS = {
76686
76681
  Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries,
76687
76682
  Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams,
76688
76683
  Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties,
76689
- Cmd.ARG_ANALYTICUAPROPERTY: printShowAnalyticUAProperties,
76690
76684
  Cmd.ARG_ASP: printShowASPs,
76691
76685
  Cmd.ARG_BACKUPCODE: printShowBackupCodes,
76692
76686
  Cmd.ARG_CALENDAR: printShowCalendars,
@@ -76793,7 +76787,6 @@ USER_COMMANDS_WITH_OBJECTS = {
76793
76787
  Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries,
76794
76788
  Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams,
76795
76789
  Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties,
76796
- Cmd.ARG_ANALYTICUAPROPERTY: printShowAnalyticUAProperties,
76797
76790
  Cmd.ARG_ASP: printShowASPs,
76798
76791
  Cmd.ARG_BACKUPCODE: printShowBackupCodes,
76799
76792
  Cmd.ARG_CALENDAR: printShowCalendars,
@@ -77006,7 +76999,6 @@ USER_COMMANDS_OBJ_ALIASES = {
77006
76999
  Cmd.ARG_ANALYTICACCOUNTSUMMARIES: Cmd.ARG_ANALYTICACCOUNTSUMMARY,
77007
77000
  Cmd.ARG_ANALYTICDATASTREAMS: Cmd.ARG_ANALYTICDATASTREAM,
77008
77001
  Cmd.ARG_ANALYTICPROPERTIES: Cmd.ARG_ANALYTICPROPERTY,
77009
- Cmd.ARG_ANALYTICUAPROPERTIES: Cmd.ARG_ANALYTICUAPROPERTY,
77010
77002
  Cmd.ARG_ASPS: Cmd.ARG_ASP,
77011
77003
  Cmd.ARG_BACKUPCODES: Cmd.ARG_BACKUPCODE,
77012
77004
  Cmd.ARG_CALENDARS: Cmd.ARG_CALENDAR,
gam/gamlib/glapi.py CHANGED
@@ -22,7 +22,6 @@
22
22
  # APIs
23
23
  ACCESSCONTEXTMANAGER = 'accesscontextmanager'
24
24
  ALERTCENTER = 'alertcenter'
25
- ANALYTICS = 'analytics'
26
25
  ANALYTICS_ADMIN = 'analyticsadmin'
27
26
  CALENDAR = 'calendar'
28
27
  CBCM = 'cbcm'
@@ -162,7 +161,6 @@ PROJECT_APIS = [
162
161
  'accesscontextmanager.googleapis.com',
163
162
  'admin.googleapis.com',
164
163
  'alertcenter.googleapis.com',
165
- 'analytics.googleapis.com',
166
164
  'analyticsadmin.googleapis.com',
167
165
  # 'audit.googleapis.com',
168
166
  'calendar-json.googleapis.com',
@@ -201,7 +199,6 @@ PROJECT_APIS = [
201
199
  _INFO = {
202
200
  ACCESSCONTEXTMANAGER: {'name': 'Access Context Manager API', 'version': 'v1', 'v2discovery': True},
203
201
  ALERTCENTER: {'name': 'AlertCenter API', 'version': 'v1beta1', 'v2discovery': True},
204
- ANALYTICS: {'name': 'Analytics API', 'version': 'v3', 'v2discovery': False},
205
202
  ANALYTICS_ADMIN: {'name': 'Analytics Admin API', 'version': 'v1beta', 'v2discovery': True},
206
203
  CALENDAR: {'name': 'Calendar API', 'version': 'v3', 'v2discovery': True, 'mappedAPI': 'calendar-json'},
207
204
  CBCM: {'name': 'Chrome Browser Cloud Management API', 'version': 'v1.1beta1', 'v2discovery': True, 'localjson': True},
@@ -244,7 +241,7 @@ _INFO = {
244
241
  EMAIL_AUDIT: {'name': 'Email Audit API', 'version': 'v1', 'v2discovery': False},
245
242
  FORMS: {'name': 'Forms API', 'version': 'v1', 'v2discovery': True},
246
243
  GMAIL: {'name': 'Gmail API', 'version': 'v1', 'v2discovery': True},
247
- GROUPSMIGRATION: {'name': 'Groups Migration API', 'version': 'v1', 'v2discovery': False},
244
+ GROUPSMIGRATION: {'name': 'Groups Migration API', 'version': 'v1', 'v2discovery': True},
248
245
  GROUPSSETTINGS: {'name': 'Groups Settings API', 'version': 'v1', 'v2discovery': True},
249
246
  IAM: {'name': 'Identity and Access Management API', 'version': 'v1', 'v2discovery': True},
250
247
  IAM_CREDENTIALS: {'name': 'Identity and Access Management Credentials API', 'version': 'v1', 'v2discovery': True},
@@ -532,10 +529,6 @@ _SVCACCT_SCOPES = [
532
529
  'api': ALERTCENTER,
533
530
  'subscopes': [],
534
531
  'scope': 'https://www.googleapis.com/auth/apps.alerts'},
535
- {'name': 'Analytics API - read only',
536
- 'api': ANALYTICS,
537
- 'subscopes': [],
538
- 'scope': 'https://www.googleapis.com/auth/analytics.readonly'},
539
532
  {'name': 'Analytics Admin API - read only',
540
533
  'api': ANALYTICS_ADMIN,
541
534
  'subscopes': [],
gam/gamlib/glclargs.py CHANGED
@@ -423,8 +423,6 @@ class GamCLArgs():
423
423
  ARG_ANALYTICDATASTREAMS = 'analyticdatastreams'
424
424
  ARG_ANALYTICPROPERTY = 'analyticproperty'
425
425
  ARG_ANALYTICPROPERTIES = 'analyticproperties'
426
- ARG_ANALYTICUAPROPERTY = 'analyticuaproperty'
427
- ARG_ANALYTICUAPROPERTIES = 'analyticuaproperties'
428
426
  ARG_API = 'api'
429
427
  ARG_APIS = 'apis'
430
428
  ARG_APIPROJECT = 'apiproject'
gam/gamlib/glentity.py CHANGED
@@ -61,7 +61,6 @@ class GamEntity():
61
61
  ANALYTIC_ACCOUNT_SUMMARY = 'anas'
62
62
  ANALYTIC_DATASTREAM = 'anad'
63
63
  ANALYTIC_PROPERTY = 'anap'
64
- ANALYTIC_UA_PROPERTY = 'anau'
65
64
  API = 'api '
66
65
  APP_ACCESS_SETTINGS = 'apps'
67
66
  APP_ID = 'appi'
@@ -412,7 +411,6 @@ class GamEntity():
412
411
  ANALYTIC_ACCOUNT_SUMMARY: ['Analytic Account Summaries', 'Analytic Account Summary'],
413
412
  ANALYTIC_DATASTREAM: ['Analytic Datastreams', 'Analytic Datastream'],
414
413
  ANALYTIC_PROPERTY: ['Analytic GA4 Properties', 'Analytic GA4 Property'],
415
- ANALYTIC_UA_PROPERTY: ['Analytic UA Properties', 'Analytic UA Property'],
416
414
  API: ['APIs', 'API'],
417
415
  APP_ACCESS_SETTINGS: ['Application Access Settings', 'Application Access Settings'],
418
416
  APP_ID: ['Application IDs', 'Application ID'],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.6.10
3
+ Version: 7.6.12
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
@@ -27,7 +27,7 @@ Requires-Dist: google-auth-httplib2>=0.2.0
27
27
  Requires-Dist: google-auth-oauthlib>=1.2.2
28
28
  Requires-Dist: google-auth>=2.39.0
29
29
  Requires-Dist: httplib2>=0.22.0
30
- Requires-Dist: lxml
30
+ Requires-Dist: lxml>=5.4.0
31
31
  Requires-Dist: passlib>=1.7.4
32
32
  Requires-Dist: pathvalidate>=3.2.3
33
33
  Requires-Dist: pyscard==2.2.1
@@ -1,4 +1,4 @@
1
- gam/__init__.py,sha256=dTeELNYfNzM8J38mUcGnEQhmzYSXtMoPuygMv44Zg6c,3493033
1
+ gam/__init__.py,sha256=s4okaQ_92Eml4EHKJJxlbpYggCz8UK750Ds-_gZxk38,3492639
2
2
  gam/__main__.py,sha256=amz0-959ph6zkZKqjaar4n60yho-T37w6qWI36qx0CA,1049
3
3
  gam/cacerts.pem,sha256=nJuWha0xm5dHw_5ptGphwRoO-r36Ccpqiww9pCEDbSc,67484
4
4
  gam/cbcm-v1.1beta1.json,sha256=xO5XloCQQULmPbFBx5bckdqmbLFQ7sJ2TImhE1ysDIY,19439
@@ -23,10 +23,10 @@ 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=EAQXkaM13t6jjh9vL4eHJqIZRI5kmzeneiFs5xcWXfg,34304
26
+ gam/gamlib/glapi.py,sha256=85YwZ5LhBoVd9kU3m-gwLRq8FwTWCaRIwARuQvH8Mjc,34022
27
27
  gam/gamlib/glcfg.py,sha256=cV011FpIWge4oi5_dJrdof66vUqX6UCvTGWWTNVmYEg,28055
28
- gam/gamlib/glclargs.py,sha256=9i8FVqQmidkgazG7sOKrY-JeyhK8JioxVZMyClgCafY,42306
29
- gam/gamlib/glentity.py,sha256=ZLbyMl9NhN-MBf9Rxmho2dBYeS4SNLMctpeaKFZSbQ4,33801
28
+ gam/gamlib/glclargs.py,sha256=6irl5ZEu-pd4cGimc0PHZtJS8Ui6QHHgNzFO93beEcc,42206
29
+ gam/gamlib/glentity.py,sha256=fqWUlxQqPKlfFrkuPjCK2lZhhFBIZboCuO0qCxuEwqA,33691
30
30
  gam/gamlib/glgapi.py,sha256=xk3pEaIE-zHrTNCn5rJYERqqpbN55E1wXlKoqvWP44E,39232
31
31
  gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
32
32
  gam/gamlib/glglobals.py,sha256=Y73xM1RNhIbtcqnMv1gcZF3wDWOeLWW-7SvoQyWw6tA,9659
@@ -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.6.10.dist-info/METADATA,sha256=AITd3cwIDQIkMkcnlrl1s1JP5wEQpsI09Om_xvupaDA,2963
69
- gam7-7.6.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- gam7-7.6.10.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
- gam7-7.6.10.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
- gam7-7.6.10.dist-info/RECORD,,
68
+ gam7-7.6.12.dist-info/METADATA,sha256=Gm8h23k_mO_J3Fk_Wxcxg6PwNgojPfcZSnBpniWVddg,2970
69
+ gam7-7.6.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
+ gam7-7.6.12.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
71
+ gam7-7.6.12.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
72
+ gam7-7.6.12.dist-info/RECORD,,
File without changes