-
Notifications
You must be signed in to change notification settings - Fork 1
/
config_settings.py
114 lines (76 loc) · 2.53 KB
/
config_settings.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import os
import sys
import re
stats = {}
filess = {}
debug = False
def parsePair(pair):
s = pair.strip()
q = s[0]
if q != "'":
print('cannot find the first quote, stop', pair)
sys.exit(1)
keyStop = s[1:].find(q)
if keyStop < 0:
print('cannot find second quote, stop', pair)
sys.exit(1)
setting = s[1:keyStop+1]
#print('setting: ', setting)
rest = s[keyStop+1+1:]
rest = rest.strip()
if rest:
if rest[0] != ',':
print('Cannot find coma:', rest)
sys.exit(1)
rest = rest[1:].strip()
#print('rest: ', rest)
return (setting, rest)
def fileStats(fname):
# if cfg('test1', nope) or cfg('hz', Nopetoo)
with open(fname, encoding="utf8") as f:
for l in f:
#m = re.findall('cfg\(\'(\w+)\')', l)
#m = re.findall(r"cfg\('\w'(,\s?.+)?\)", l)
if l.strip() == 'def cfg(param, default = None):':
#function definition, not usage
continue
m = re.findall(r'cfg\((.+?)\)', l)
if len(m):
if debug:
print('--', l.strip(), '--')
for i in m:
if debug:
print(f' ---> {i}')
v = parsePair(i)
if debug:
print(f'{v[0]} --> {v[1]}')
if v[1]:
kv = f'{v[0]}: {v[1]}'
else:
kv = f'{v[0]}'
if kv in stats:
stats[kv] += 1
else:
stats[kv] = 1
if kv in filess:
if fname not in filess[kv]:
filess[kv].append(fname)
else:
filess[kv] = [fname]
return None
def calcStats():
files = os.listdir('.')
files = [f for f in files if f[-3:] == '.py']
for f in files:
if f == 'config_settings.py':
continue
if debug:
print(f'check {f}')
s = fileStats(f)
st = sorted(stats)
maxLen = len(max(st, key=lambda x: len(x)))+1
for k in st:
flist = ', '.join(filess[k])
print(f'{k:{maxLen}} - {stats[k]:3}, {flist}')
if __name__ == '__main__':
calcStats()