radboy 0.0.753__py3-none-any.whl → 0.0.755__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 radboy might be problematic. Click here for more details.
- radboy/DB/lsToday.py +204 -0
- radboy/TasksMode/Tasks.py +7 -0
- radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc +0 -0
- radboy/__init__.py +1 -1
- radboy/__pycache__/__init__.cpython-313.pyc +0 -0
- {radboy-0.0.753.dist-info → radboy-0.0.755.dist-info}/METADATA +1 -1
- {radboy-0.0.753.dist-info → radboy-0.0.755.dist-info}/RECORD +9 -8
- {radboy-0.0.753.dist-info → radboy-0.0.755.dist-info}/WHEEL +0 -0
- {radboy-0.0.753.dist-info → radboy-0.0.755.dist-info}/top_level.txt +0 -0
radboy/DB/lsToday.py
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from dataclasses import dataclass
|
|
3
|
+
import platform
|
|
4
|
+
try:
|
|
5
|
+
raise Exception()
|
|
6
|
+
import grp,pwd
|
|
7
|
+
except Exception as e:
|
|
8
|
+
@dataclass
|
|
9
|
+
class grp:
|
|
10
|
+
gr_name=f'grp is incompatible w/ "{platform.system()}"'
|
|
11
|
+
def getgrgid(dummy):
|
|
12
|
+
return pwd
|
|
13
|
+
@dataclass
|
|
14
|
+
class pwd:
|
|
15
|
+
pw_name=f'pwd is incompatible w/ "{platform.system()}"'
|
|
16
|
+
def getpwuid(dummy):
|
|
17
|
+
return pwd
|
|
18
|
+
|
|
19
|
+
import os,sys
|
|
20
|
+
import argparse
|
|
21
|
+
from datetime import datetime,timedelta
|
|
22
|
+
from colored import Fore,Back,Style
|
|
23
|
+
import stat
|
|
24
|
+
from humanfriendly import format_size
|
|
25
|
+
from radboy.DB.db import *
|
|
26
|
+
from radboy.FB.FBMTXT import *
|
|
27
|
+
from radboy.FB.FormBuilder import *
|
|
28
|
+
from radboy.DB.Prompt import *
|
|
29
|
+
|
|
30
|
+
def systemls(path:Path=None,today:datetime=None,search=None,cmdline=False):
|
|
31
|
+
now=datetime.now()
|
|
32
|
+
if today is None:
|
|
33
|
+
today=datetime(now.year,now.month,now.day)-timedelta(days=1)
|
|
34
|
+
|
|
35
|
+
start=datetime.now()
|
|
36
|
+
def std_colorize(msg,count,total,post_msg="\n\t"):
|
|
37
|
+
return f"""{Fore.dark_olive_green_3b}{msg}{post_msg}{Fore.light_blue}{count}/{count+1} of {total}{Style.reset}"""
|
|
38
|
+
|
|
39
|
+
if path is None:
|
|
40
|
+
if cmdline == True:
|
|
41
|
+
if len(sys.argv) == 2:
|
|
42
|
+
path=Path(sys.argv[1])
|
|
43
|
+
else:
|
|
44
|
+
fields={
|
|
45
|
+
'path to examine':{
|
|
46
|
+
'default':str(Path.cwd()),
|
|
47
|
+
'type':'string'
|
|
48
|
+
},
|
|
49
|
+
'search':{
|
|
50
|
+
'default':None,
|
|
51
|
+
'type':'string',
|
|
52
|
+
},
|
|
53
|
+
'dtoe':{
|
|
54
|
+
'default':today-timedelta(days=1),
|
|
55
|
+
'type':'datetime'
|
|
56
|
+
},
|
|
57
|
+
}
|
|
58
|
+
fd=FormBuilder(data=fields,passThruText="What/Where for Everything Past a Date")
|
|
59
|
+
if fd is None:
|
|
60
|
+
return
|
|
61
|
+
path=Path(fd['path to examine'])
|
|
62
|
+
today=fd['dtoe']
|
|
63
|
+
search=fd['search']
|
|
64
|
+
|
|
65
|
+
if not path.exists():
|
|
66
|
+
raise FileNotFoundError(path)
|
|
67
|
+
ct_top=len([i for i in path.walk(top_down=True,follow_symlinks=False,on_error=print)])
|
|
68
|
+
break_page=False
|
|
69
|
+
for num,(root,dirs,names) in enumerate(path.walk(top_down=True,follow_symlinks=False,on_error=print)):
|
|
70
|
+
ct_dirs=len(dirs)
|
|
71
|
+
for numd,d in enumerate(dirs):
|
|
72
|
+
dirpath=root/d
|
|
73
|
+
try:
|
|
74
|
+
if isinstance(dirpath,Path):
|
|
75
|
+
l=[]
|
|
76
|
+
if datetime.fromtimestamp(dirpath.stat().st_mtime) > today:
|
|
77
|
+
if dirpath not in l:
|
|
78
|
+
if search is not None:
|
|
79
|
+
if search.lower() in str(dirpath).lower():
|
|
80
|
+
print(f"Matched '{search}' ~= {dirpath}")
|
|
81
|
+
l.append(dirpath)
|
|
82
|
+
else:
|
|
83
|
+
l.append(dirpath)
|
|
84
|
+
|
|
85
|
+
if datetime.fromtimestamp(dirpath.stat().st_ctime) > today:
|
|
86
|
+
if dirpath not in l:
|
|
87
|
+
if search is not None:
|
|
88
|
+
if search.lower() in str(dirpath).lower():
|
|
89
|
+
print(f"Matched '{search}' ~= {dirpath}")
|
|
90
|
+
l.append(dirpath)
|
|
91
|
+
else:
|
|
92
|
+
l.append(dirpath)
|
|
93
|
+
|
|
94
|
+
if datetime.fromtimestamp(dirpath.stat().st_atime) > today:
|
|
95
|
+
if dirpath not in l:
|
|
96
|
+
if search is not None:
|
|
97
|
+
if search.lower() in str(dirpath).lower():
|
|
98
|
+
print(f"Matched '{search}' ~= {dirpath}")
|
|
99
|
+
l.append(dirpath)
|
|
100
|
+
else:
|
|
101
|
+
l.append(dirpath)
|
|
102
|
+
for i in l:
|
|
103
|
+
try:
|
|
104
|
+
username=''
|
|
105
|
+
username=pwd.getpwuid(i.stat().st_uid).pw_name
|
|
106
|
+
except Exception as e:
|
|
107
|
+
print(e)
|
|
108
|
+
username='USERNM#ERROR:UnResolved'
|
|
109
|
+
try:
|
|
110
|
+
grpname=''
|
|
111
|
+
grpname=pwd.getpwuid(i.stat().st_gid).pw_name
|
|
112
|
+
except Exception as e:
|
|
113
|
+
print(e)
|
|
114
|
+
grpname='GRP#ERROR:UnResolved'
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
print(std_colorize(f"""{Fore.light_cyan}[Directory]{Fore.light_steel_blue}{i}
|
|
118
|
+
\t{Fore.orange_red_1}MTIME:{datetime.fromtimestamp(i.stat().st_mtime)} Age:{datetime.now()-datetime.fromtimestamp(i.stat().st_mtime)}
|
|
119
|
+
\t{Fore.light_yellow}CTIME:{datetime.fromtimestamp(i.stat().st_ctime)} Age:{datetime.now()-datetime.fromtimestamp(i.stat().st_ctime)}
|
|
120
|
+
\t{Fore.light_green}ATIME: {datetime.fromtimestamp(i.stat().st_atime)} Age:{datetime.now()-datetime.fromtimestamp(i.stat().st_atime)}
|
|
121
|
+
\t{Fore.light_red}MODE: {stat.filemode(i.stat().st_mode)}
|
|
122
|
+
\t{Fore.dark_green}GID:{i.stat().st_gid} ({grpname})
|
|
123
|
+
\t{Fore.medium_violet_red}UID:{i.stat().st_uid} ({username})
|
|
124
|
+
\t{Fore.magenta}Size:{format_size(i.stat().st_size)}{Style.reset}""",numd,ct_dirs))
|
|
125
|
+
print(std_colorize(f"Since Exe:{datetime.now()-start}",num,ct_top))
|
|
126
|
+
if not break_page:
|
|
127
|
+
NEXT=Control(func=FormBuilderMkText,ptext="Next?",helpText="yes==advances 1,no==stops paging",data="boolean")
|
|
128
|
+
if NEXT in ['NaN',None]:
|
|
129
|
+
return
|
|
130
|
+
elif NEXT in ['d',True]:
|
|
131
|
+
continue
|
|
132
|
+
elif NEXT == False:
|
|
133
|
+
break_page=True
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
except Exception as e:
|
|
137
|
+
print(e)
|
|
138
|
+
ctn=len(names)
|
|
139
|
+
for numn,name in enumerate(names):
|
|
140
|
+
try:
|
|
141
|
+
npath=root/name
|
|
142
|
+
if isinstance(npath,Path):
|
|
143
|
+
l=[]
|
|
144
|
+
if datetime.fromtimestamp(npath.stat().st_mtime) > today:
|
|
145
|
+
if npath not in l:
|
|
146
|
+
if search is not None:
|
|
147
|
+
if search.lower() in str(npath).lower():
|
|
148
|
+
print(f"Matched {search} ~= {npath}")
|
|
149
|
+
l.append(npath)
|
|
150
|
+
else:
|
|
151
|
+
l.append(npath)
|
|
152
|
+
if datetime.fromtimestamp(npath.stat().st_ctime) > today:
|
|
153
|
+
if npath not in l:
|
|
154
|
+
if search is not None:
|
|
155
|
+
if search.lower() in str(npath).lower():
|
|
156
|
+
print(f"Matched {search} ~= {npath}")
|
|
157
|
+
l.append(npath)
|
|
158
|
+
else:
|
|
159
|
+
l.append(npath)
|
|
160
|
+
|
|
161
|
+
if datetime.fromtimestamp(npath.stat().st_atime) > today:
|
|
162
|
+
if npath not in l:
|
|
163
|
+
if search is not None:
|
|
164
|
+
if search.lower() in str(npath).lower():
|
|
165
|
+
print(f"Matched {search} ~= {npath}")
|
|
166
|
+
l.append(npath)
|
|
167
|
+
else:
|
|
168
|
+
l.append(npath)
|
|
169
|
+
|
|
170
|
+
for i in l:
|
|
171
|
+
try:
|
|
172
|
+
username=''
|
|
173
|
+
username=pwd.getpwuid(i.stat().st_uid).pw_name
|
|
174
|
+
except Exception as e:
|
|
175
|
+
print(e)
|
|
176
|
+
username='USERNM#ERROR:UnResolved'
|
|
177
|
+
try:
|
|
178
|
+
grpname=''
|
|
179
|
+
grpname=pwd.getpwuid(i.stat().st_gid).pw_name
|
|
180
|
+
except Exception as e:
|
|
181
|
+
print(e)
|
|
182
|
+
grpname='GRP#ERROR:UnResolved'
|
|
183
|
+
|
|
184
|
+
print(std_colorize(f""" {Fore.dark_cyan}[File]{Fore.light_steel_blue}{i}
|
|
185
|
+
\t{Fore.orange_red_1}MTIME:{datetime.fromtimestamp(i.stat().st_mtime)} Age:{datetime.now()-datetime.fromtimestamp(i.stat().st_mtime)}
|
|
186
|
+
\t{Fore.light_yellow}CTIME:{datetime.fromtimestamp(i.stat().st_ctime)} Age:{datetime.now()-datetime.fromtimestamp(i.stat().st_ctime)}
|
|
187
|
+
\t{Fore.light_green}ATIME: {datetime.fromtimestamp(i.stat().st_atime)} Age:{datetime.now()-datetime.fromtimestamp(i.stat().st_atime)}
|
|
188
|
+
\t{Fore.light_red}MODE: {stat.filemode(i.stat().st_mode)}
|
|
189
|
+
\t{Fore.dark_green}GID:{i.stat().st_gid} ({grpname})
|
|
190
|
+
\t{Fore.medium_violet_red}UID:{i.stat().st_uid} ({username})
|
|
191
|
+
\t{Fore.magenta}Size:{format_size(i.stat().st_size)}{Style.reset}""",numn,ctn))
|
|
192
|
+
print(std_colorize(f" \tSince Exe:{datetime.now()-start}",num,ct_top))
|
|
193
|
+
if not break_page:
|
|
194
|
+
NEXT=Control(func=FormBuilderMkText,ptext="Next?",helpText="yes==advances 1,no==stops paging",data="boolean")
|
|
195
|
+
if NEXT in ['NaN',None]:
|
|
196
|
+
return
|
|
197
|
+
elif NEXT in ['d',True]:
|
|
198
|
+
continue
|
|
199
|
+
elif NEXT == False:
|
|
200
|
+
break_page=True
|
|
201
|
+
|
|
202
|
+
except Exception as e:
|
|
203
|
+
print(e)
|
|
204
|
+
|
radboy/TasksMode/Tasks.py
CHANGED
|
@@ -50,6 +50,7 @@ from scipy.io.wavfile import write
|
|
|
50
50
|
from radboy.DB.SimpleScanner import SimpleScanner
|
|
51
51
|
from radboy.DB.NW.NetWorth import *
|
|
52
52
|
from decimal import Decimal as DEC
|
|
53
|
+
from radboy.DB.lsToday import *
|
|
53
54
|
def today():
|
|
54
55
|
dt=datetime.now()
|
|
55
56
|
return date(dt.year,dt.month,dt.day)
|
|
@@ -5433,6 +5434,12 @@ where:
|
|
|
5433
5434
|
'exec':lambda self=self,entry=entry: self.getTotalwithBreakDownForScan(short=True,nonZero=True),
|
|
5434
5435
|
}
|
|
5435
5436
|
count+=1
|
|
5437
|
+
self.options[str(uuid1())]={
|
|
5438
|
+
'cmds':["#"+str(count),f"lookup_non0","system list","sysls","sys ls","sys-ls"],
|
|
5439
|
+
'desc':f'list system files',
|
|
5440
|
+
'exec':lambda self=self: systemls(),
|
|
5441
|
+
}
|
|
5442
|
+
count+=1
|
|
5436
5443
|
self.options["b1"]={
|
|
5437
5444
|
'cmds':["#"+str(count),f"barcode_first","b1"],
|
|
5438
5445
|
'desc':f'list mode where barcode is asked first',
|
|
Binary file
|
radboy/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
VERSION='0.0.
|
|
1
|
+
VERSION='0.0.755'
|
|
Binary file
|
|
@@ -5,7 +5,7 @@ radboy/Holidays.txt,sha256=y-JZPihh5iaWKxMIHNXD39yVuVmf1vMs4FdNDcg0f1Y,3114
|
|
|
5
5
|
radboy/InventoryGlossary.txt,sha256=018-Yqca6DFb10jPdkUY-5qhkRlQN1k3rxoTaERQ-LA,91008
|
|
6
6
|
radboy/RecordMyCodes.py,sha256=h30zoTqt-XLt_afDPlxMxBiKKwmKi3N-yAuldNCqXUo,41476
|
|
7
7
|
radboy/Run.py,sha256=JUoCTHnzQBv7n8PB2_i93ANdAC_iW__RkAge8esCnk4,76
|
|
8
|
-
radboy/__init__.py,sha256=
|
|
8
|
+
radboy/__init__.py,sha256=tQ-UaxTOBNZuj8AcX8MzN8OUWDvBtTkAqWftyM-LXPk,17
|
|
9
9
|
radboy/api_key,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
radboy/case-export-2024-05-14-13-10-00.672971.xlsx,sha256=Wd592d_VLFmfUI9KKKSVjNwjV91euc1T7ATyvwvUhlg,5431
|
|
11
11
|
radboy/case-export-2024-05-14-13-13-22.540614.xlsx,sha256=OnGrhmScHfGp_mVaWW-LNMsqrQgyZDpiU3wV-2s3U5Q,5556
|
|
@@ -97,6 +97,7 @@ radboy/DB/blankDataFile.py,sha256=YX_05Usi71UpDkZN9UTMYwUipbTndTAtEgqzBEga0kE,92
|
|
|
97
97
|
radboy/DB/config.py,sha256=bvu43dUl1_yO3Zq3gsLuenGUgJSiS3S9Cs6ppFEvZbg,239
|
|
98
98
|
radboy/DB/db.py,sha256=F2l9oQ4EqzTdiu7LBnmW6Fqv65ivsQ3CUUcjvjVMEv8,263344
|
|
99
99
|
radboy/DB/glossary_db.py,sha256=1_qxeEpjjEtpWB_eDjsgJisimLv7OBm75MuqM-Lt6zg,28218
|
|
100
|
+
radboy/DB/lsToday.py,sha256=Pevus6GBHLM2xudBEx8u36Q-jYvatOI-y5o72BmFnzA,9435
|
|
100
101
|
radboy/DB/masterLookup.py,sha256=DBaM2uscG3_X5dek49wjdnOzhrjWhKgvOEz_umdz0mY,4566
|
|
101
102
|
radboy/DB/msg.txt,sha256=YxWed6A6tuP1djJ5QPS2Rz3ING4TKKf8kUiCCPtzHXE,7937
|
|
102
103
|
radboy/DB/rad_types.py,sha256=W1JO0IC1Cs8SA6cmfmqOaGgyJFW0EojDFtz8gvxJcBc,4806
|
|
@@ -352,7 +353,7 @@ radboy/SystemSettings/__pycache__/__init__.cpython-312.pyc,sha256=aIzp4Po0t8EhSA
|
|
|
352
353
|
radboy/SystemSettings/__pycache__/__init__.cpython-313.pyc,sha256=QFDuoidxMWsGVLsy5lN-rDs6TP8nKJ4yyCyiamNOhwo,156
|
|
353
354
|
radboy/TasksMode/ReFormula.py,sha256=REDRJYub-OEOE6g14oRQOLOQwv8pHqVJy4NQk3CCM90,2255
|
|
354
355
|
radboy/TasksMode/SetEntryNEU.py,sha256=mkV9zAZe0lfpu_3coMuIILEzh6PgCNi7g9lJ4yDUpYM,20596
|
|
355
|
-
radboy/TasksMode/Tasks.py,sha256=
|
|
356
|
+
radboy/TasksMode/Tasks.py,sha256=cXMwh9ozenlLnew3TxOSO8ogdLMih44ATKdvgB2jv9E,362241
|
|
356
357
|
radboy/TasksMode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
357
358
|
radboy/TasksMode/__pycache__/ReFormula.cpython-311.pyc,sha256=QEG3PwVw-8HTd_Mf9XbVcxU56F1fC9yBqWXYPLC39DU,4865
|
|
358
359
|
radboy/TasksMode/__pycache__/ReFormula.cpython-312.pyc,sha256=aX7BWm2PPjCTnxsbGUitR-2h9hq4AjaBiHMrUXvIl0Y,3967
|
|
@@ -361,7 +362,7 @@ radboy/TasksMode/__pycache__/SetEntryNEU.cpython-312.pyc,sha256=pCdFj61aPKkHL6Sv
|
|
|
361
362
|
radboy/TasksMode/__pycache__/SetEntryNEU.cpython-313.pyc,sha256=jMSrUX9pvEhf67uVwrPE2ZlBCems8V7tHJ1LcC15ovU,24603
|
|
362
363
|
radboy/TasksMode/__pycache__/Tasks.cpython-311.pyc,sha256=6QOTJnLiXSKdF81hkhy3vyrz49PPhS20s5_0X52g3Hw,131120
|
|
363
364
|
radboy/TasksMode/__pycache__/Tasks.cpython-312.pyc,sha256=hyJwdaYaaRLdcrNxgg36diJ5iijX5_3I0UAORsj-6LU,310295
|
|
364
|
-
radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=
|
|
365
|
+
radboy/TasksMode/__pycache__/Tasks.cpython-313.pyc,sha256=ivLl31WL6Ca8aGjUraMUTuMHqbYOjGTbAO6-G4U0DFw,437836
|
|
365
366
|
radboy/TasksMode/__pycache__/__init__.cpython-311.pyc,sha256=PKV1JbihEacm639b53bZozRQvcllSkjGP3q8STVMxF4,234
|
|
366
367
|
radboy/TasksMode/__pycache__/__init__.cpython-312.pyc,sha256=ERgnEvRMiGSecWp1BpNzLdSq_SdKw7GvFWUvUM7bLVw,272
|
|
367
368
|
radboy/TasksMode/__pycache__/__init__.cpython-313.pyc,sha256=lvsTxukyvGKB3C0rdF9dQi_bvVh6ceDVINfwcuIsd0s,151
|
|
@@ -408,7 +409,7 @@ radboy/__pycache__/Run.cpython-311.pyc,sha256=G_UEfMtkLRjR6ZpGA_BJzGenuaCcP469Y9
|
|
|
408
409
|
radboy/__pycache__/Run.cpython-312.pyc,sha256=v4xolc3mHyla991XhpYBUbBHYT0bnJ1gE-lkFoQ4GFA,241
|
|
409
410
|
radboy/__pycache__/__init__.cpython-311.pyc,sha256=R-DVbUioMOW-Fnaq7FpT5F1a5p0q3b_RW-HpLRArCAY,242
|
|
410
411
|
radboy/__pycache__/__init__.cpython-312.pyc,sha256=FsFzLXOlTK8_7ixoPZzakkR8Wibt-DvXLFh-oG2QlPw,164
|
|
411
|
-
radboy/__pycache__/__init__.cpython-313.pyc,sha256=
|
|
412
|
+
radboy/__pycache__/__init__.cpython-313.pyc,sha256=ve2NyMk9TvBWej_JUfjlEy5-Igoe_y_9Z2Jg0PRCm5s,165
|
|
412
413
|
radboy/__pycache__/__init__.cpython-39.pyc,sha256=D48T6x6FUeKPfubo0sdS_ZUut3FmBvPMP7qT6rYBZzU,275
|
|
413
414
|
radboy/__pycache__/possibleCode.cpython-311.pyc,sha256=zFiHyzqD8gUnIWu4vtyMYIBposiRQqaRXfcT_fOl4rU,20882
|
|
414
415
|
radboy/__pycache__/possibleCode.cpython-312.pyc,sha256=tk_CO-AcsO3YZj5j6vEsw3g37UmEzWc5YgeWEoJEUg4,27922
|
|
@@ -436,7 +437,7 @@ radboy/tkGui/Images/__pycache__/__init__.cpython-311.pyc,sha256=tXBYpqbOlZ24B1BI
|
|
|
436
437
|
radboy/tkGui/__pycache__/BeginnersLuck.cpython-311.pyc,sha256=xLQOnV1wuqHGaub16mPX0dDMGU9ryCeLtNz5e517_GE,3004
|
|
437
438
|
radboy/tkGui/__pycache__/Review.cpython-311.pyc,sha256=wKq24iM6Xe2OampgZ7-8U6Nvmgs2y-qWOrGwtWhc75k,4047
|
|
438
439
|
radboy/tkGui/__pycache__/__init__.cpython-311.pyc,sha256=BX7DBn5qbvKTvlrKOP5gzTBPBTeTgSMjBW6EMl7N8e0,230
|
|
439
|
-
radboy-0.0.
|
|
440
|
-
radboy-0.0.
|
|
441
|
-
radboy-0.0.
|
|
442
|
-
radboy-0.0.
|
|
440
|
+
radboy-0.0.755.dist-info/METADATA,sha256=e1RiUtBITb3QdNWRnQ1cfdYy1gmSkB4DIvrXjtueTew,1920
|
|
441
|
+
radboy-0.0.755.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
442
|
+
radboy-0.0.755.dist-info/top_level.txt,sha256=mlM0RWMUxGo1YHnlLmYrHOgGdK4XNRpr7nMFD5lR56c,7
|
|
443
|
+
radboy-0.0.755.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|