gam7 7.5.18__py3-none-any.whl → 7.5.19__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 +79 -31
- gam/gamlib/glmsgs.py +1 -0
- {gam7-7.5.18.dist-info → gam7-7.5.19.dist-info}/METADATA +1 -1
- {gam7-7.5.18.dist-info → gam7-7.5.19.dist-info}/RECORD +7 -7
- {gam7-7.5.18.dist-info → gam7-7.5.19.dist-info}/WHEEL +0 -0
- {gam7-7.5.18.dist-info → gam7-7.5.19.dist-info}/entry_points.txt +0 -0
- {gam7-7.5.18.dist-info → gam7-7.5.19.dist-info}/licenses/LICENSE +0 -0
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.05.
|
|
28
|
+
__version__ = '7.05.19'
|
|
29
29
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
|
30
30
|
|
|
31
31
|
#pylint: disable=wrong-import-position
|
|
@@ -14517,7 +14517,13 @@ def _initTagReplacements():
|
|
|
14517
14517
|
'fieldsSet': set(), 'fields': '',
|
|
14518
14518
|
'schemasSet': set(), 'customFieldMask': None}
|
|
14519
14519
|
|
|
14520
|
-
def _getTagReplacement(tagReplacements, allowSubs):
|
|
14520
|
+
def _getTagReplacement(myarg, tagReplacements, allowSubs):
|
|
14521
|
+
if myarg == 'replace':
|
|
14522
|
+
trregex = None
|
|
14523
|
+
elif myarg == 'replaceregex':
|
|
14524
|
+
trregex = (getREPattern(re.IGNORECASE), getString(Cmd.OB_STRING, minLen=0))
|
|
14525
|
+
else:
|
|
14526
|
+
return False
|
|
14521
14527
|
matchTag = getString(Cmd.OB_TAG)
|
|
14522
14528
|
matchReplacement = getString(Cmd.OB_STRING, minLen=0)
|
|
14523
14529
|
if matchReplacement.startswith('field:'):
|
|
@@ -14562,7 +14568,8 @@ def _getTagReplacement(tagReplacements, allowSubs):
|
|
|
14562
14568
|
tagReplacements['fieldsSet'].add(field)
|
|
14563
14569
|
tagReplacements['fields'] = ','.join(tagReplacements['fieldsSet'])
|
|
14564
14570
|
tagReplacements['tags'][matchTag] = {'field': field, 'subfield': subfield,
|
|
14565
|
-
'matchfield': matchfield, 'matchvalue': matchvalue, 'value': ''
|
|
14571
|
+
'matchfield': matchfield, 'matchvalue': matchvalue, 'value': '',
|
|
14572
|
+
'trregex': trregex}
|
|
14566
14573
|
if field == 'locations' and subfield == 'buildingName':
|
|
14567
14574
|
_makeBuildingIdNameMap()
|
|
14568
14575
|
elif matchReplacement.startswith('schema:'):
|
|
@@ -14580,15 +14587,24 @@ def _getTagReplacement(tagReplacements, allowSubs):
|
|
|
14580
14587
|
tagReplacements['fields'] = ','.join(tagReplacements['fieldsSet'])
|
|
14581
14588
|
tagReplacements['schemasSet'].add(schemaName)
|
|
14582
14589
|
tagReplacements['customFieldMask'] = ','.join(tagReplacements['schemasSet'])
|
|
14583
|
-
tagReplacements['tags'][matchTag] = {'schema': schemaName, 'schemafield': schemaField, 'value': ''
|
|
14590
|
+
tagReplacements['tags'][matchTag] = {'schema': schemaName, 'schemafield': schemaField, 'value': '',
|
|
14591
|
+
'trregex': trregex}
|
|
14584
14592
|
elif ((matchReplacement.find('#') >= 0) and
|
|
14585
14593
|
(matchReplacement.find('#user#') >= 0) or (matchReplacement.find('#email#') >= 0) or (matchReplacement.find('#username#') >= 0)):
|
|
14586
14594
|
if not allowSubs:
|
|
14587
14595
|
usageErrorExit(Msg.USER_SUBS_NOT_ALLOWED_TAG_REPLACEMENT)
|
|
14588
14596
|
tagReplacements['subs'] = True
|
|
14589
|
-
tagReplacements['tags'][matchTag] = {'template': matchReplacement, 'value': ''
|
|
14597
|
+
tagReplacements['tags'][matchTag] = {'template': matchReplacement, 'value': '',
|
|
14598
|
+
'trregex': trregex}
|
|
14590
14599
|
else:
|
|
14591
|
-
|
|
14600
|
+
if trregex is None:
|
|
14601
|
+
tagReplacements['tags'][matchTag] = {'value': matchReplacement}
|
|
14602
|
+
else:
|
|
14603
|
+
try:
|
|
14604
|
+
tagReplacements['tags'][matchTag] = {'value': re.sub(trregex[0], trregex[1], matchReplacement)}
|
|
14605
|
+
except re.error as e:
|
|
14606
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(trregex[1], str(e)))
|
|
14607
|
+
return True
|
|
14592
14608
|
|
|
14593
14609
|
def _getTagReplacementFieldValues(user, i, count, tagReplacements, results=None):
|
|
14594
14610
|
if results is None:
|
|
@@ -14670,6 +14686,12 @@ def _getTagReplacementFieldValues(user, i, count, tagReplacements, results=None)
|
|
|
14670
14686
|
tag['value'] = str(results.get('customSchemas', {}).get(tag['schema'], {}).get(tag['schemafield'], ''))
|
|
14671
14687
|
elif tag.get('template'):
|
|
14672
14688
|
tag['value'] = _substituteForUser(tag['template'], user, userName)
|
|
14689
|
+
trregex = tag.get('trregex', None)
|
|
14690
|
+
if trregex is not None:
|
|
14691
|
+
try:
|
|
14692
|
+
tag['value'] = re.sub(trregex[0], trregex[1], tag['value'])
|
|
14693
|
+
except re.error as e:
|
|
14694
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(trregex[1], str(e)))
|
|
14673
14695
|
|
|
14674
14696
|
RTL_PATTERN = re.compile(r'(?s){RTL}.*?{/RTL}')
|
|
14675
14697
|
RT_PATTERN = re.compile(r'(?s){RT}.*?{/RT}')
|
|
@@ -14922,7 +14944,9 @@ def getRecipients():
|
|
|
14922
14944
|
# gam sendemail [recipient|to] <RecipientEntity> [from <EmailAddress>] [mailbox <EmailAddress>] [replyto <EmailAddress>]
|
|
14923
14945
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14924
14946
|
# [subject <String>]
|
|
14925
|
-
# [<MessageContent>]
|
|
14947
|
+
# [<MessageContent>]
|
|
14948
|
+
# (replace <Tag> <String>)*
|
|
14949
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14926
14950
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14927
14951
|
# (embedimage <FileName> <String>)*
|
|
14928
14952
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -14930,7 +14954,9 @@ def getRecipients():
|
|
|
14930
14954
|
# gam <UserTypeEntity> sendemail recipient <RecipientEntity> [replyto <EmailAddress>]
|
|
14931
14955
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14932
14956
|
# [subject <String>]
|
|
14933
|
-
# [<MessageContent>]
|
|
14957
|
+
# [<MessageContent>]
|
|
14958
|
+
# (replace <Tag> <String>)*
|
|
14959
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14934
14960
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14935
14961
|
# (embedimage <FileName> <String>)*
|
|
14936
14962
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -14938,7 +14964,9 @@ def getRecipients():
|
|
|
14938
14964
|
# gam <UserTypeEntity> sendemail from <EmailAddress> [replyto <EmailAddress>]
|
|
14939
14965
|
# [cc <RecipientEntity>] [bcc <RecipientEntity>] [singlemessage]
|
|
14940
14966
|
# [subject <String>]
|
|
14941
|
-
# [<MessageContent>]
|
|
14967
|
+
# [<MessageContent>]
|
|
14968
|
+
# (replace <Tag> <String>)*
|
|
14969
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
14942
14970
|
# [html [<Boolean>]] (attach <FileName> [charset <CharSet>])*
|
|
14943
14971
|
# (embedimage <FileName> <String>)*
|
|
14944
14972
|
# [newuser <EmailAddress> firstname|givenname <String> lastname|familyname <string> password <Password>]
|
|
@@ -15001,8 +15029,8 @@ def doSendEmail(users=None):
|
|
|
15001
15029
|
body['name']['familyName'] = getString(Cmd.OB_STRING, minLen=0, maxLen=60)
|
|
15002
15030
|
elif myarg in {'password', 'notifypassword'}:
|
|
15003
15031
|
body['password'] = notify['password'] = getString(Cmd.OB_PASSWORD, maxLen=100)
|
|
15004
|
-
elif myarg
|
|
15005
|
-
|
|
15032
|
+
elif _getTagReplacement(myarg, tagReplacements, False):
|
|
15033
|
+
pass
|
|
15006
15034
|
elif myarg == 'attach':
|
|
15007
15035
|
attachments.append((getFilename(), getCharSet()))
|
|
15008
15036
|
elif myarg == 'embedimage':
|
|
@@ -39081,7 +39109,10 @@ def _updateCalendarEvents(origUser, user, origCal, calIds, count, calendarEventE
|
|
|
39081
39109
|
if 'description' in updateFieldList and 'description' in event:
|
|
39082
39110
|
body['description'] = event['description']
|
|
39083
39111
|
for replacement in parameters['replaceDescription']:
|
|
39084
|
-
|
|
39112
|
+
try:
|
|
39113
|
+
body['description'] = re.sub(replacement[0], replacement[1], body['description'])
|
|
39114
|
+
except re.error as e:
|
|
39115
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(replacement[1], str(e)))
|
|
39085
39116
|
if 'attendees' in updateFieldList:
|
|
39086
39117
|
if not parameters['clearAttendees']:
|
|
39087
39118
|
if 'attendees' in event:
|
|
@@ -42835,8 +42866,8 @@ def getUserAttributes(cd, updateCmd, noUid=False):
|
|
|
42835
42866
|
notify['mailbox'] = getString(Cmd.OB_EMAIL_ADDRESS)
|
|
42836
42867
|
elif PwdOpts.ProcessArgument(myarg, notify, notFoundBody):
|
|
42837
42868
|
pass
|
|
42838
|
-
elif myarg
|
|
42839
|
-
|
|
42869
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
42870
|
+
pass
|
|
42840
42871
|
elif myarg == 'admin':
|
|
42841
42872
|
value = getBoolean()
|
|
42842
42873
|
if updateCmd or value:
|
|
@@ -43253,9 +43284,9 @@ def createUserAddAliases(cd, user, aliasList, i, count):
|
|
|
43253
43284
|
# [from <EmailAaddress>]
|
|
43254
43285
|
# [replyto <EmailAaddress>]
|
|
43255
43286
|
# [<NotifyMessageContent>]
|
|
43256
|
-
# (replace <Tag> <UserReplacement>)*
|
|
43287
|
+
# (replace <Tag> <UserReplacement>)*
|
|
43288
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
43257
43289
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
43258
|
-
# [verifynotinvitable]
|
|
43259
43290
|
# [addnumericsuffixonduplicate <Number>]
|
|
43260
43291
|
def doCreateUser():
|
|
43261
43292
|
cd = buildGAPIObject(API.DIRECTORY)
|
|
@@ -43354,8 +43385,9 @@ def verifyUserPrimaryEmail(cd, user, createIfNotFound, i, count):
|
|
|
43354
43385
|
# [notifypassword <String>]
|
|
43355
43386
|
# [from <EmailAaddress>]
|
|
43356
43387
|
# [replyto <EmailAaddress>]
|
|
43357
|
-
# [<NotifyMessageContent>
|
|
43358
|
-
#
|
|
43388
|
+
# [<NotifyMessageContent>
|
|
43389
|
+
# (replace <Tag> <UserReplacement>)*
|
|
43390
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
43359
43391
|
# [notifyonupdate [<Boolean>]]
|
|
43360
43392
|
# [logpassword <FileName>] [ignorenullpassword]
|
|
43361
43393
|
def updateUsers(entityList):
|
|
@@ -57348,7 +57380,10 @@ def writeReturnIdLink(returnIdLink, mimeType, result):
|
|
|
57348
57380
|
|
|
57349
57381
|
def processFilenameReplacements(name, replacements):
|
|
57350
57382
|
for replacement in replacements:
|
|
57351
|
-
|
|
57383
|
+
try:
|
|
57384
|
+
name = re.sub(replacement[0], replacement[1], name)
|
|
57385
|
+
except re.error as e:
|
|
57386
|
+
systemErrorExit(ACTION_FAILED_RC, Msg.REGEX_REPLACEMENT_ERROR.format(replacement[1], str(e)))
|
|
57352
57387
|
return name
|
|
57353
57388
|
|
|
57354
57389
|
def addTimestampToFilename(parameters, body):
|
|
@@ -69991,8 +70026,8 @@ def _draftImportInsertMessage(users, operation):
|
|
|
69991
70026
|
internalDateSource = 'dateHeader'
|
|
69992
70027
|
if checkArgumentPresent('emlutf8'):
|
|
69993
70028
|
emlEncoding = UTF8
|
|
69994
|
-
elif myarg
|
|
69995
|
-
|
|
70029
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
70030
|
+
pass
|
|
69996
70031
|
elif operation in IMPORT_INSERT and myarg == 'addlabel':
|
|
69997
70032
|
addLabelNames.append(getString(Cmd.OB_LABEL_NAME, minLen=1))
|
|
69998
70033
|
elif operation in IMPORT_INSERT and myarg == 'labels':
|
|
@@ -70127,7 +70162,9 @@ def _draftImportInsertMessage(users, operation):
|
|
|
70127
70162
|
userGmailServiceNotEnabledWarning(user, i, count)
|
|
70128
70163
|
|
|
70129
70164
|
# gam <UserTypeEntity> draft message
|
|
70130
|
-
# <MessageContent>
|
|
70165
|
+
# <MessageContent>
|
|
70166
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70167
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70131
70168
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70132
70169
|
# (attach <FileName> [charset <CharSet>])*
|
|
70133
70170
|
# (embedimage <FileName> <String>)*
|
|
@@ -70135,7 +70172,9 @@ def draftMessage(users):
|
|
|
70135
70172
|
_draftImportInsertMessage(users, 'draft')
|
|
70136
70173
|
|
|
70137
70174
|
# gam <UserTypeEntity> import message
|
|
70138
|
-
# <MessageContent>
|
|
70175
|
+
# <MessageContent>
|
|
70176
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70177
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70139
70178
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70140
70179
|
# (addlabel <LabelName>)* [labels <LabelNameList>]
|
|
70141
70180
|
# (attach <FileName> [charset <CharSet>])*
|
|
@@ -70145,7 +70184,9 @@ def importMessage(users):
|
|
|
70145
70184
|
_draftImportInsertMessage(users, 'import')
|
|
70146
70185
|
|
|
70147
70186
|
# gam <UserTypeEntity> insert message
|
|
70148
|
-
# <MessageContent>
|
|
70187
|
+
# <MessageContent>
|
|
70188
|
+
# (replace <Tag> <UserReplacement>)*
|
|
70189
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*
|
|
70149
70190
|
# (<SMTPDateHeader> <Time>)* (<SMTPHeader> <String>)* (header <String> <String>)*
|
|
70150
70191
|
# (addlabel <LabelName>)* [labels <LabelNameList>]
|
|
70151
70192
|
# (attach <FileName> [charset <CharSet>])*
|
|
@@ -72432,8 +72473,8 @@ def _processSendAs(user, i, count, entityType, emailAddress, j, jcount, gmail, f
|
|
|
72432
72473
|
return userDefined
|
|
72433
72474
|
|
|
72434
72475
|
def getSendAsAttributes(myarg, body, tagReplacements):
|
|
72435
|
-
if myarg
|
|
72436
|
-
|
|
72476
|
+
if _getTagReplacement(myarg, tagReplacements, True):
|
|
72477
|
+
pass
|
|
72437
72478
|
elif myarg == 'name':
|
|
72438
72479
|
body['displayName'] = getString(Cmd.OB_NAME, minLen=0)
|
|
72439
72480
|
elif myarg == 'replyto':
|
|
@@ -72452,13 +72493,17 @@ SMTPMSA_SECURITY_MODES = ['none', 'ssl', 'starttls']
|
|
|
72452
72493
|
SMTPMSA_REQUIRED_FIELDS = ['host', 'port', 'username', 'password']
|
|
72453
72494
|
|
|
72454
72495
|
# gam <UserTypeEntity> [create] sendas <EmailAddress> [name] <String>
|
|
72455
|
-
# [<SendAsContent>
|
|
72496
|
+
# [<SendAsContent>
|
|
72497
|
+
# (replace <Tag> <UserReplacement>)*
|
|
72498
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
72456
72499
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
72457
72500
|
# [smtpmsa.host <SMTPHostName> smtpmsa.port 25|465|587
|
|
72458
72501
|
# smtpmsa.username <UserName> smtpmsa.password <Password>
|
|
72459
72502
|
# [smtpmsa.securitymode none|ssl|starttls]]
|
|
72460
72503
|
# gam <UserTypeEntity> update sendas <EmailAddress> [name <String>]
|
|
72461
|
-
# [<SendAsContent>
|
|
72504
|
+
# [<SendAsContent>
|
|
72505
|
+
# (replace <Tag> <UserReplacement>)*
|
|
72506
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
72462
72507
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
72463
72508
|
def createUpdateSendAs(users):
|
|
72464
72509
|
updateCmd = Act.Get() == Act.UPDATE
|
|
@@ -73295,6 +73340,7 @@ def printShowCSEKeyPairs(users):
|
|
|
73295
73340
|
# gam <UserTypeEntity> signature|sig
|
|
73296
73341
|
# <SignatureContent>
|
|
73297
73342
|
# (replace <Tag> <String>)*
|
|
73343
|
+
# (replaceregex <RegularExpression> <String> <Tag> <String>)*
|
|
73298
73344
|
# [html [<Boolean>]] [replyto <EmailAddress>] [default] [treatasalias <Boolean>]
|
|
73299
73345
|
# [name <String>]
|
|
73300
73346
|
# [primary]
|
|
@@ -73388,7 +73434,9 @@ def _showVacation(user, i, count, result, showDisabled, sigReplyFormat):
|
|
|
73388
73434
|
Ind.Decrement()
|
|
73389
73435
|
|
|
73390
73436
|
# gam <UserTypeEntity> vacation [<Boolean>] [subject <String>]
|
|
73391
|
-
# [<VacationMessageContent>
|
|
73437
|
+
# [<VacationMessageContent>
|
|
73438
|
+
# (replace <Tag> <UserReplacement>)*
|
|
73439
|
+
# (replaceregex <RegularExpression> <String> <Tag> <UserReplacement>)*]
|
|
73392
73440
|
# [html [<Boolean>]] [contactsonly [<Boolean>]] [domainonly [<Boolean>]]
|
|
73393
73441
|
# [start|startdate <Date>|Started] [end|enddate <Date>|NotSpecified]
|
|
73394
73442
|
def setVacation(users):
|
|
@@ -73406,8 +73454,8 @@ def setVacation(users):
|
|
|
73406
73454
|
message, _, html = getStringOrFile(myarg)
|
|
73407
73455
|
if html:
|
|
73408
73456
|
responseBodyType = 'responseBodyHtml'
|
|
73409
|
-
elif myarg
|
|
73410
|
-
|
|
73457
|
+
elif _getTagReplacement(myarg, tagReplacements, True):
|
|
73458
|
+
pass
|
|
73411
73459
|
elif myarg == 'html':
|
|
73412
73460
|
if getBoolean():
|
|
73413
73461
|
responseBodyType = 'responseBodyHtml'
|
gam/gamlib/glmsgs.py
CHANGED
|
@@ -465,6 +465,7 @@ REASON_ONLY_VALID_WITH_CONTENTRESTRICTIONS_READONLY_TRUE = 'reason only valid wi
|
|
|
465
465
|
REAUTHENTICATION_IS_NEEDED = 'Reauthentication is needed, please run\n\ngam oauth create'
|
|
466
466
|
RECOMMEND_RUNNING_GAM_ROTATE_SAKEY = 'Recommend running "gam rotate sakey" to get a new key\n'
|
|
467
467
|
REFUSING_TO_DEPROVISION_DEVICES = 'Refusing to deprovision {0} devices because acknowledge_device_touch_requirement not specified.\nDeprovisioning a device means the device will have to be physically wiped and re-enrolled to be managed by your domain again.\nThis requires physical access to the device and is very time consuming to perform for each device.\nPlease add "acknowledge_device_touch_requirement" to the GAM command if you understand this and wish to proceed with the deprovision.\nPlease also be aware that deprovisioning can have an effect on your device license count.\nSee https://support.google.com/chrome/a/answer/3523633 for full details.'
|
|
468
|
+
REGEX_REPLACEMENT_ERROR = 'Regular expression replacement string "{0}" error: {1}'
|
|
468
469
|
REPLY_TO_CUSTOM_REQUIRES_EMAIL_ADDRESS = 'replyto REPLY_TO_CUSTOM requires customReplyTo <EmailAddress>'
|
|
469
470
|
REQUEST_COMPLETED_NO_FILES = 'Request completed but no results/files were returned, try requesting again'
|
|
470
471
|
REQUEST_NOT_COMPLETE = 'Request needs to be completed before downloading, current status is: {0}'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
gam/__init__.py,sha256=
|
|
1
|
+
gam/__init__.py,sha256=XuZ_5ceIxgqn-VYNSrK4KU2p5hIo4P7Mog_krW4HT2k,3485098
|
|
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
|
|
@@ -31,7 +31,7 @@ gam/gamlib/glgapi.py,sha256=49PPbxiW6EpPE4E8fAlLMx1mSMcQra1zwi-CSXPa7rk,38473
|
|
|
31
31
|
gam/gamlib/glgdata.py,sha256=weRppttWm6uRyqtBoGPKoHiNZ2h28nhfUV4J_mbCszY,2707
|
|
32
32
|
gam/gamlib/glglobals.py,sha256=Y73xM1RNhIbtcqnMv1gcZF3wDWOeLWW-7SvoQyWw6tA,9659
|
|
33
33
|
gam/gamlib/glindent.py,sha256=RfBa2LDfLIqPLL5vMfC689TCVmqn8xf-qulSzkiatrc,1228
|
|
34
|
-
gam/gamlib/glmsgs.py,sha256=
|
|
34
|
+
gam/gamlib/glmsgs.py,sha256=PSXjYGbGni2UyL7tK1e9U721UC-KKoK1lL1TNqIH8YY,33343
|
|
35
35
|
gam/gamlib/glskus.py,sha256=Gi0jjrSGwhCD4SvtqQfuAXwtEiL2zU4c8qXdxO1yY9k,15058
|
|
36
36
|
gam/gamlib/gluprop.py,sha256=IyPLCyvn7-NHTUenM71YPQPXRZXx6CB5q-GtJ-FYd1c,11461
|
|
37
37
|
gam/gamlib/glverlibs.py,sha256=XXYhmjOVti78JTy7NNr4ShIwiOX7LrfrmFSlqSWixrE,1077
|
|
@@ -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.5.
|
|
69
|
-
gam7-7.5.
|
|
70
|
-
gam7-7.5.
|
|
71
|
-
gam7-7.5.
|
|
72
|
-
gam7-7.5.
|
|
68
|
+
gam7-7.5.19.dist-info/METADATA,sha256=H_FrSYW592jWsjzAy0w16hDLsT8WWc6ttJJF0Vz6NX4,2889
|
|
69
|
+
gam7-7.5.19.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
70
|
+
gam7-7.5.19.dist-info/entry_points.txt,sha256=HVUM5J7dA8YwvJfG30jiLefR19ExMs387TWugWd9sf4,42
|
|
71
|
+
gam7-7.5.19.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
72
|
+
gam7-7.5.19.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|