rda-python-metrics 1.0.18__py3-none-any.whl → 1.0.20__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 rda-python-metrics might be problematic. Click here for more details.
- rda_python_metrics/PgIPInfo.py +47 -20
- rda_python_metrics/fillcdgusage.py +7 -39
- rda_python_metrics/fillipinfo.py +4 -23
- rda_python_metrics/viewallusage.usg +1 -1
- rda_python_metrics/viewtdsusage.usg +1 -1
- {rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/METADATA +1 -1
- {rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/RECORD +11 -11
- {rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/WHEEL +0 -0
- {rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/entry_points.txt +0 -0
- {rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/licenses/LICENSE +0 -0
- {rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/top_level.txt +0 -0
rda_python_metrics/PgIPInfo.py
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#
|
|
14
14
|
###############################################################################
|
|
15
15
|
#
|
|
16
|
+
import re
|
|
16
17
|
import geoip2.database as geodb
|
|
17
18
|
import ipinfo
|
|
18
19
|
import socket
|
|
@@ -54,8 +55,6 @@ def dns_to_ip(dmname, type = 'A'):
|
|
|
54
55
|
|
|
55
56
|
ipdns = get_dns_resolver()
|
|
56
57
|
|
|
57
|
-
result = []
|
|
58
|
-
|
|
59
58
|
try:
|
|
60
59
|
answers = ipdns.resolve(dmname, type)
|
|
61
60
|
return [str(rdata) for rdata in answers]
|
|
@@ -113,14 +112,11 @@ def get_ipinfo_record(ip):
|
|
|
113
112
|
if not IPDB: set_ipinfo_database()
|
|
114
113
|
try:
|
|
115
114
|
iprec = IPDB.getDetails(ip).all
|
|
116
|
-
if 'hostname' not in iprec:
|
|
117
|
-
PgLOG.pglog("ipinfo: {} - ip address is not in the database".format(ip), PgLOG.LOGERR)
|
|
118
|
-
return None
|
|
119
115
|
except Exception as e:
|
|
120
116
|
PgLOG.pglog("ipinfo: {} - {}".format(ip, str(e)), PgLOG.LOGWRN)
|
|
121
117
|
return None
|
|
122
118
|
|
|
123
|
-
record = {'ip' : ip, 'stat_flag' : 'A', 'hostname' : ip}
|
|
119
|
+
record = {'ip' : ip, 'stat_flag' : 'A', 'hostname' : ip, 'org_type' : '-'}
|
|
124
120
|
if 'hostname' in iprec:
|
|
125
121
|
record['hostname'] = iprec['hostname']
|
|
126
122
|
record['org_type'] = PgDBI.get_org_type(None, record['hostname'])
|
|
@@ -128,7 +124,7 @@ def get_ipinfo_record(ip):
|
|
|
128
124
|
record['lon'] = float(iprec['longitude']) if iprec['longitude'] else 0
|
|
129
125
|
if 'org' in iprec: record['org_name'] = iprec['org']
|
|
130
126
|
record['country'] = get_country_record_code(iprec, 'country_name')
|
|
131
|
-
|
|
127
|
+
record['region'] = PgLOG.convert_chars(iprec['region']) if 'region' in iprec else None
|
|
132
128
|
if 'city' in iprec: record['city'] = PgLOG.convert_chars(iprec['city'])
|
|
133
129
|
if 'postal' in iprec: record['postal'] = iprec['postal']
|
|
134
130
|
record['timezone'] = iprec['timezone']
|
|
@@ -156,17 +152,16 @@ def get_geoip2_record(ip):
|
|
|
156
152
|
PgLOG.pglog("geoip2: {} - {}".format(ip, str(e)), PgLOG.LOGWRN)
|
|
157
153
|
return None
|
|
158
154
|
|
|
159
|
-
record = {'ip' : ip, 'stat_flag' : 'M'}
|
|
155
|
+
record = {'ip' : ip, 'stat_flag' : 'M', 'org_type' : '-'}
|
|
160
156
|
record['lat'] = float(city.location.latitude) if city.location.latitude else 0
|
|
161
157
|
record['lon'] = float(city.location.longitude) if city.location.longitude else 0
|
|
162
158
|
record['country'] = get_country_name_code(city.country.name)
|
|
163
159
|
record['city'] = PgLOG.convert_chars(city.city.name)
|
|
164
|
-
|
|
160
|
+
record['region'] = PgLOG.convert_chars(city.subdivisions.most_specific.name) if city.subdivisions.most_specific.name else None
|
|
165
161
|
record['postal'] = city.postal.code
|
|
166
162
|
record['timezone'] = city.location.time_zone
|
|
167
163
|
record['hostname'] = ip
|
|
168
|
-
record['
|
|
169
|
-
record['ipinfo'] = json.dumps(city.__dict__)
|
|
164
|
+
record['ipinfo'] = json.dumps(object_to_dict(city))
|
|
170
165
|
|
|
171
166
|
try:
|
|
172
167
|
hostrec = socket.gethostbyaddr(ip)
|
|
@@ -178,6 +173,20 @@ def get_geoip2_record(ip):
|
|
|
178
173
|
|
|
179
174
|
return record
|
|
180
175
|
|
|
176
|
+
#
|
|
177
|
+
# change an object to dict recursively
|
|
178
|
+
#
|
|
179
|
+
def object_to_dict(obj):
|
|
180
|
+
if hasattr(obj, "__dict__"):
|
|
181
|
+
result = {}
|
|
182
|
+
for key, value in obj.__dict__.items():
|
|
183
|
+
result[key] = object_to_dict(value)
|
|
184
|
+
return result
|
|
185
|
+
elif isinstance(obj, list):
|
|
186
|
+
return [object_to_dict(item) for item in obj]
|
|
187
|
+
else:
|
|
188
|
+
return obj
|
|
189
|
+
|
|
181
190
|
#
|
|
182
191
|
# update wuser.email for hostname changed
|
|
183
192
|
#
|
|
@@ -237,17 +246,36 @@ def get_update_record(nrec, orec):
|
|
|
237
246
|
record[fld] = nrec[fld]
|
|
238
247
|
return record
|
|
239
248
|
|
|
240
|
-
#
|
|
241
|
-
|
|
249
|
+
#
|
|
250
|
+
# fill the missing info for given ip
|
|
251
|
+
#
|
|
252
|
+
def get_missing_ipinfo(ip, email = None):
|
|
253
|
+
|
|
254
|
+
if not ip:
|
|
255
|
+
if email and '@' in email: ip = dns_to_ip(email.split('@')[1])
|
|
256
|
+
if not ip: return None
|
|
242
257
|
|
|
243
258
|
ipinfo = set_ipinfo(ip)
|
|
244
|
-
if
|
|
259
|
+
if ipinfo:
|
|
260
|
+
record = {'org_type' : ipinfo['org_type'],
|
|
261
|
+
'country' : ipinfo['country'],
|
|
262
|
+
'region' : ipinfo['region']}
|
|
263
|
+
if not email or re.search(r'-$', email):
|
|
264
|
+
record['email'] = 'unknown@' + ipinfo['hostname']
|
|
265
|
+
else:
|
|
266
|
+
record['email'] = email
|
|
267
|
+
return record
|
|
268
|
+
else:
|
|
269
|
+
return None
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
# return wuser record upon success, None otherwise
|
|
273
|
+
def get_wuser_record(ip, date, email = None):
|
|
274
|
+
|
|
275
|
+
record = get_missing_ipinfo(ip, email)
|
|
276
|
+
if not record: return None
|
|
245
277
|
|
|
246
|
-
|
|
247
|
-
'country' : ipinfo['country'],
|
|
248
|
-
'region' : ipinfo['region']}
|
|
249
|
-
email = 'unknown@' + ipinfo['hostname']
|
|
250
|
-
emcond = "email = '{}'".format(email)
|
|
278
|
+
emcond = "email = '{}'".format(record['email'])
|
|
251
279
|
flds = 'wuid, email, org_type, country, region, start_date'
|
|
252
280
|
pgrec = PgDBI.pgget("wuser", flds, emcond, PgLOG.LOGERR)
|
|
253
281
|
if pgrec:
|
|
@@ -257,7 +285,6 @@ def get_wuser_record(ip, date):
|
|
|
257
285
|
return pgrec
|
|
258
286
|
|
|
259
287
|
# now add one in
|
|
260
|
-
record['email'] = email
|
|
261
288
|
record['stat_flag'] = 'A'
|
|
262
289
|
record['start_date'] = date
|
|
263
290
|
wuid = PgDBI.pgadd("wuser", record, PgLOG.LOGERR|PgLOG.AUTOID)
|
|
@@ -72,7 +72,6 @@ DSIDS = {
|
|
|
72
72
|
ALLIDS = list(DSIDS.keys())
|
|
73
73
|
|
|
74
74
|
WFILES = {}
|
|
75
|
-
WUSERS = {}
|
|
76
75
|
|
|
77
76
|
#
|
|
78
77
|
# main function to run this program
|
|
@@ -276,12 +275,12 @@ def fill_cdg_usages(dsids, dranges):
|
|
|
276
275
|
trecs[tkey]['size'] += dsize
|
|
277
276
|
trecs[tkey]['fcount'] += 1
|
|
278
277
|
else:
|
|
279
|
-
|
|
280
|
-
if not
|
|
278
|
+
iprec = PgIPInfo.get_missing_ipinfo(ip)
|
|
279
|
+
if not iprec: continue
|
|
281
280
|
trecs[tkey] = {'ip' : ip, 'dsid' : dsid, 'date' : cdate, 'time' : time, 'quarter' : quarter,
|
|
282
281
|
'size' : dsize, 'fcount' : 1, 'method' : method, 'etype' : etype,
|
|
283
|
-
'engine' : engine, 'org_type' :
|
|
284
|
-
'email' :
|
|
282
|
+
'engine' : engine, 'org_type' : iprec['org_type'], 'country' : iprec['country'],
|
|
283
|
+
'region' : iprec['region'], 'email' : iprec['email']}
|
|
285
284
|
else:
|
|
286
285
|
# web usage
|
|
287
286
|
fsize = pgrec['dataset_file_size']
|
|
@@ -347,6 +346,7 @@ def add_tds_allusage(year, logrec):
|
|
|
347
346
|
pgrec['email'] = logrec['email']
|
|
348
347
|
pgrec['org_type'] = logrec['org_type']
|
|
349
348
|
pgrec['country'] = logrec['country']
|
|
349
|
+
pgrec['region'] = logrec['region']
|
|
350
350
|
pgrec['dsid'] = logrec['dsid']
|
|
351
351
|
pgrec['date'] = logrec['date']
|
|
352
352
|
pgrec['quarter'] = logrec['quarter']
|
|
@@ -367,7 +367,7 @@ def add_webfile_usage(year, logrec):
|
|
|
367
367
|
cond = "wid = {} AND method = '{}' AND date_read = '{}' AND time_read = '{}'".format(logrec['wid'], logrec['method'], cdate, logrec['time'])
|
|
368
368
|
if PgDBI.pgget(table, "", cond, PgLOG.LOGWRN): return 0
|
|
369
369
|
|
|
370
|
-
wurec = get_wuser_record(ip, cdate)
|
|
370
|
+
wurec = PgIPInfo.get_wuser_record(ip, cdate)
|
|
371
371
|
if not wurec: return 0
|
|
372
372
|
|
|
373
373
|
record = {'wid' : logrec['wid'], 'dsid' : logrec['dsid']}
|
|
@@ -391,6 +391,7 @@ def add_web_allusage(year, logrec, wurec):
|
|
|
391
391
|
pgrec['email'] = wurec['email']
|
|
392
392
|
pgrec['org_type'] = wurec['org_type']
|
|
393
393
|
pgrec['country'] = wurec['country']
|
|
394
|
+
pgrec['region'] = wurec['region']
|
|
394
395
|
pgrec['dsid'] = logrec['dsid']
|
|
395
396
|
pgrec['date'] = logrec['date']
|
|
396
397
|
pgrec['quarter'] = logrec['quarter']
|
|
@@ -431,39 +432,6 @@ def get_wfile_record(dsids, wfile):
|
|
|
431
432
|
WFILES[wkey] = pgrec
|
|
432
433
|
return pgrec
|
|
433
434
|
|
|
434
|
-
# return wuser record upon success, None otherwise
|
|
435
|
-
def get_wuser_record(ip, date = None):
|
|
436
|
-
|
|
437
|
-
if ip in WUSERS: return WUSERS[ip]
|
|
438
|
-
|
|
439
|
-
ipinfo = PgIPInfo.set_ipinfo(ip)
|
|
440
|
-
if not ipinfo: return None
|
|
441
|
-
|
|
442
|
-
record = {'org_type' : ipinfo['org_type'], 'country' : ipinfo['country']}
|
|
443
|
-
email = 'unknown@' + ipinfo['hostname']
|
|
444
|
-
emcond = "email = '{}'".format(email)
|
|
445
|
-
flds = 'wuid, email, org_type, country, start_date'
|
|
446
|
-
pgrec = PgDBI.pgget("wuser", flds, emcond, PgLOG.LOGERR)
|
|
447
|
-
if pgrec:
|
|
448
|
-
if date and PgUtil.diffdate(pgrec['start_date'], date) > 0:
|
|
449
|
-
pgrec['start_date'] = record['start_date'] = date
|
|
450
|
-
PgDBI.pgupdt('wuser', record, emcond)
|
|
451
|
-
WUSERS[ip] = pgrec
|
|
452
|
-
return pgrec
|
|
453
|
-
|
|
454
|
-
# now add one in
|
|
455
|
-
record['email'] = email
|
|
456
|
-
record['stat_flag'] = 'A'
|
|
457
|
-
record['start_date'] = date
|
|
458
|
-
wuid = PgDBI.pgadd("wuser", record, PgLOG.LOGERR|PgLOG.AUTOID)
|
|
459
|
-
if wuid:
|
|
460
|
-
record['wuid'] = wuid
|
|
461
|
-
PgLOG.pglog("{} Added as wuid({})".format(email, wuid), PgLOG.LGWNEM)
|
|
462
|
-
WUSERS[ip] = record
|
|
463
|
-
return record
|
|
464
|
-
|
|
465
|
-
return None
|
|
466
|
-
|
|
467
435
|
#
|
|
468
436
|
# call main() to start program
|
|
469
437
|
#
|
rda_python_metrics/fillipinfo.py
CHANGED
|
@@ -126,7 +126,7 @@ def fix_allusage_records(date):
|
|
|
126
126
|
cnt = len(pgrecs['ip']) if pgrecs else 0
|
|
127
127
|
mcnt = 0
|
|
128
128
|
for i in range(cnt):
|
|
129
|
-
record =
|
|
129
|
+
record = PgIPInfo.get_missing_ipinfo(pgrecs['ip'][i], pgrecs['email'][i])
|
|
130
130
|
if record:
|
|
131
131
|
mcnt += PgDBI.pgupdt(table, record, "aidx = '{}'".format(pgrecs['aidx'][i]))
|
|
132
132
|
|
|
@@ -145,7 +145,7 @@ def fix_tdsusage_records(date):
|
|
|
145
145
|
mcnt = 0
|
|
146
146
|
for i in range(cnt):
|
|
147
147
|
ip = pgrecs['ip'][i]
|
|
148
|
-
record =
|
|
148
|
+
record = PgIPInfo.get_missing_ipinfo(ip, pgrecs['email'][i])
|
|
149
149
|
if record:
|
|
150
150
|
cond = "date = '{}' AND time = '{}' AND ip = '{}'".format(date, pgrecs['time'][i], ip)
|
|
151
151
|
mcnt += PgDBI.pgupdt(table, record, cond)
|
|
@@ -164,7 +164,7 @@ def fix_codusage_records(date):
|
|
|
164
164
|
cnt = len(pgrecs['ip']) if pgrecs else 0
|
|
165
165
|
mcnt = 0
|
|
166
166
|
for i in range(cnt):
|
|
167
|
-
record =
|
|
167
|
+
record = PgIPInfo.get_missing_ipinfo(pgrecs['ip'][i], pgrecs['email'][i])
|
|
168
168
|
if record:
|
|
169
169
|
mcnt += PgDBI.pgupdt(table, record, "codidx = '{}'".format(pgrecs['codidx'][i]))
|
|
170
170
|
|
|
@@ -184,10 +184,7 @@ def fix_wuser_records(date):
|
|
|
184
184
|
for i in range(cnt):
|
|
185
185
|
ip = pgrecs['ip'][i]
|
|
186
186
|
email = pgrecs['email'][i]
|
|
187
|
-
|
|
188
|
-
if email and '@' in email: ip = PgIPInfo.dns_to_ip(email.split('@')[1])
|
|
189
|
-
if not ip: continue
|
|
190
|
-
record = get_missing_info(ip, email)
|
|
187
|
+
record = PgIPInfo.get_missing_ipinfo(ip, email)
|
|
191
188
|
if record:
|
|
192
189
|
mcnt += PgDBI.pgupdt(table, record, "wuid = '{}'".format(pgrecs['wuid'][i]))
|
|
193
190
|
|
|
@@ -213,22 +210,6 @@ def fix_ipinfo_records(date):
|
|
|
213
210
|
|
|
214
211
|
return mcnt
|
|
215
212
|
|
|
216
|
-
#
|
|
217
|
-
# fill the missing info for given ip
|
|
218
|
-
#
|
|
219
|
-
def get_missing_info(ip, email):
|
|
220
|
-
|
|
221
|
-
ipinfo = PgIPInfo.set_ipinfo(ip)
|
|
222
|
-
if ipinfo:
|
|
223
|
-
record = {'org_type' : ipinfo['org_type'],
|
|
224
|
-
'country' : ipinfo['country'],
|
|
225
|
-
'region' : ipinfo['region']}
|
|
226
|
-
if not email or re.search(r'-$', email):
|
|
227
|
-
record['email'] = 'unknown@' + ipinfo['hostname']
|
|
228
|
-
return record
|
|
229
|
-
else:
|
|
230
|
-
return None
|
|
231
|
-
|
|
232
213
|
#
|
|
233
214
|
# call main() to start program
|
|
234
215
|
#
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[-A RowLimit] [-c CountryCodes] [-d DateList] \
|
|
7
7
|
[-D StartDate [EndDate]] [-e EMailList] -h \
|
|
8
8
|
[-E StartNoticeDate [EndNoticeDate]] [-f DataFormats] \
|
|
9
|
-
[-g SourceGroups] [-I EmailIDList] [-k
|
|
9
|
+
[-g SourceGroups] [-I EmailIDList] [-k RegionList] \
|
|
10
10
|
[-m MonthList] [-M MethodList] [-N MinNumberRead [MaxNumberRead]] \
|
|
11
11
|
[-o OrganizationTypes] [-q QuaterList] [-s MinSize [MaxSize]] \
|
|
12
12
|
[-S SpecialistLoginNames] [-t DatasetList] \
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[-D StartDate [EndDate]] [-e EMailList] -h \
|
|
8
8
|
[-E StartNoticeDate [EndNoticeDate]] \
|
|
9
9
|
[-f EndTypeFlags] [-i IPAddresses] [-I EmailIDList] \
|
|
10
|
-
[-
|
|
10
|
+
[-k RegionNames] [-m MonthList] [-M AccessMethods] \
|
|
11
11
|
[-N MinNumberRead [MaxNumberRead]] \
|
|
12
12
|
[-o OrganizationTypes] \
|
|
13
13
|
[-q QuaterList] [-s MinSize [MaxSize]] \
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
rda_python_metrics/PgIPInfo.py,sha256=
|
|
1
|
+
rda_python_metrics/PgIPInfo.py,sha256=HkGja5ctMfV4aJ3spcIsTmDljkU1Q6-RiUzXkwxyi8g,8644
|
|
2
2
|
rda_python_metrics/PgView.py,sha256=r6otb3DjfiaQJdg0z8bZQAOlhr4JnrXJzp9wgWh_8qQ,24369
|
|
3
3
|
rda_python_metrics/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
4
4
|
rda_python_metrics/fillawsusage.py,sha256=SZH9G4jruKvavqSr9DiVmHVW929E60tJGUkv8CK3GQI,8152
|
|
5
5
|
rda_python_metrics/fillawsusage.usg,sha256=pD_nYTfg1so9nvVEyPSWdgKvb9gWdtfHJAs3RsT2MMU,609
|
|
6
|
-
rda_python_metrics/fillcdgusage.py,sha256=
|
|
6
|
+
rda_python_metrics/fillcdgusage.py,sha256=1PDlXwwaHH9F5ngyZsd4XYoSj4pfSrET7FVUMc1mbhI,15366
|
|
7
7
|
rda_python_metrics/fillcdgusage.usg,sha256=5lkd4Zdi72nQcha-JtbaLnxl66V4wBDykKwQtUOtMrw,667
|
|
8
8
|
rda_python_metrics/fillcodusage.py,sha256=_RUcgY1Cf17dSjidhQCMOwVaPO1VL26s3bYGT8oSPWU,8322
|
|
9
9
|
rda_python_metrics/fillcodusage.usg,sha256=3B5IkQ4uwylqY8uEfUdnZ_MXqhYudeylMp5ulhUGXH8,678
|
|
@@ -11,7 +11,7 @@ rda_python_metrics/fillcountry.py,sha256=7i5LNi3scRoyRCT6t7aeNTGKOpxzJ2mA9tnvUqj
|
|
|
11
11
|
rda_python_metrics/fillendtime.py,sha256=skZttlpoY19g0dGwqGQI8t_1YPPTPEXwg3EfNlfL90I,2533
|
|
12
12
|
rda_python_metrics/fillglobususage.py,sha256=ahz8XnnJdD_AbSYqJ34lWmDuzws_-SNmCR8QE20aovA,8539
|
|
13
13
|
rda_python_metrics/fillglobususage.usg,sha256=1GgmCP22IQZdADwL5Mmkz3v8Ws-G7U3teQ1AxRJfV_4,637
|
|
14
|
-
rda_python_metrics/fillipinfo.py,sha256=
|
|
14
|
+
rda_python_metrics/fillipinfo.py,sha256=Ja1BbyiCA7IueM6o9KxfD-BstA4EVSnjzrwj6hkFgoY,6641
|
|
15
15
|
rda_python_metrics/fillipinfo.usg,sha256=6NoOTStxsVXwycN8u8znnwC6AemKftR2ZGrW_RL41og,647
|
|
16
16
|
rda_python_metrics/filloneorder.py,sha256=ADHbcKCDh9bJunnxYbkbjwU2QpC43hvGlLWaURHNxkg,5433
|
|
17
17
|
rda_python_metrics/filloneorder.usg,sha256=mtOySKx6-D4k2bbTcmi6cSYtINiycRyHQkHozi0CQu0,1466
|
|
@@ -29,7 +29,7 @@ rda_python_metrics/pgperson.py,sha256=q_0jSlTyqEQh2J8yq5Nrf9TLg1awvREdp3E8XyN7Po
|
|
|
29
29
|
rda_python_metrics/pgsyspath.py,sha256=DZhFp-r-LzN0qrHtfdCYfnGDnmD_R4ufuEduk0_vRIw,1039
|
|
30
30
|
rda_python_metrics/pgusername.py,sha256=sNtPNKdubZYNPWR89pAXHGTuP6q8kuf71ig7-XJLXrQ,1245
|
|
31
31
|
rda_python_metrics/viewallusage.py,sha256=DlAvY2bieJWrrrYMPhCkKWgqdfSN492_LZCS95BhY0A,15753
|
|
32
|
-
rda_python_metrics/viewallusage.usg,sha256=
|
|
32
|
+
rda_python_metrics/viewallusage.usg,sha256=Ftqdn7YoqaqX8Vblfo28yC0xf6ccyCLWcLTgOxP6MGg,10141
|
|
33
33
|
rda_python_metrics/viewcheckusage.py,sha256=HougqjDAOVG6pYglFjyHQ-UdLBcYe7v_jzU1-80RqFA,12996
|
|
34
34
|
rda_python_metrics/viewcheckusage.usg,sha256=KuJFycggGiUcSezQ9vywDbituvu63SZ-ZnNTaMpbc-A,8930
|
|
35
35
|
rda_python_metrics/viewcodusage.py,sha256=6Shmbzq_DNh0uvT9lPxpB8ic2JnrmQzmR7Bc-9U4gl0,14243
|
|
@@ -39,14 +39,14 @@ rda_python_metrics/viewordusage.usg,sha256=19tHhPZB9y247BddfwtXA3_K50BnzEJcWUbBN
|
|
|
39
39
|
rda_python_metrics/viewrqstusage.py,sha256=wNH5DTEBYrUQKAms10weBH939r-m3tLXXg5PwS6bzlk,16690
|
|
40
40
|
rda_python_metrics/viewrqstusage.usg,sha256=Ii5-7h_RO2rkoE9VLxuLhc9klgkEJSqHoDrsOlQOTKo,10481
|
|
41
41
|
rda_python_metrics/viewtdsusage.py,sha256=nmtH4d7pPqSwLoAlocb5UTk0W38TT57gWmCyuKL4bF8,14505
|
|
42
|
-
rda_python_metrics/viewtdsusage.usg,sha256=
|
|
42
|
+
rda_python_metrics/viewtdsusage.usg,sha256=Gmk0Y4Cs8WDtA3zYJt6gfVH5q5U5rlQZcJI40W5EiCE,9034
|
|
43
43
|
rda_python_metrics/viewwebfile.py,sha256=HSMNkQQawonu6W3blV7g9UbJuNy9VAOn9COqgmjv5dI,13646
|
|
44
44
|
rda_python_metrics/viewwebfile.usg,sha256=lTNi8Yu8BUJuExEDJX-vsJyWUSUIQTS-DiiBEVFo33s,10054
|
|
45
45
|
rda_python_metrics/viewwebusage.py,sha256=ES2lI8NaCeCpTGi94HU-cDRBxHMiUBbplyYsZf2KqF0,16650
|
|
46
46
|
rda_python_metrics/viewwebusage.usg,sha256=OVDZ78p87E3HLW34ZhasNJ7Zmw8XXjmZPPWZfRhPLXo,9936
|
|
47
|
-
rda_python_metrics-1.0.
|
|
48
|
-
rda_python_metrics-1.0.
|
|
49
|
-
rda_python_metrics-1.0.
|
|
50
|
-
rda_python_metrics-1.0.
|
|
51
|
-
rda_python_metrics-1.0.
|
|
52
|
-
rda_python_metrics-1.0.
|
|
47
|
+
rda_python_metrics-1.0.20.dist-info/licenses/LICENSE,sha256=1dck4EAQwv8QweDWCXDx-4Or0S8YwiCstaso_H57Pno,1097
|
|
48
|
+
rda_python_metrics-1.0.20.dist-info/METADATA,sha256=zbFFqGetH5z8euwjan-oU--BVDuBsbJnMbggMNdSpDw,761
|
|
49
|
+
rda_python_metrics-1.0.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
50
|
+
rda_python_metrics-1.0.20.dist-info/entry_points.txt,sha256=YfFLzlE3rdufSV471VsDnfYptnt1lR08aSrxPXlKqlY,1185
|
|
51
|
+
rda_python_metrics-1.0.20.dist-info/top_level.txt,sha256=aoBgbR_o70TP0QmMW0U6inRHYtfKld47OBmnWnLnDOs,19
|
|
52
|
+
rda_python_metrics-1.0.20.dist-info/RECORD,,
|
|
File without changes
|
{rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{rda_python_metrics-1.0.18.dist-info → rda_python_metrics-1.0.20.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|