/opt/imh-python/lib/python3.9/__pycache__
NameSizeModeActions
abc.cpython-39.opt-1.pyc57840644editdlrm
abc.cpython-39.opt-2.pyc32250644editdlrm
abc.cpython-39.pyc57840644editdlrm
aifc.cpython-39.opt-1.pyc252750644editdlrm
aifc.cpython-39.opt-2.pyc200680644editdlrm
aifc.cpython-39.pyc252750644editdlrm
antigravity.cpython-39.opt-1.pyc8280644editdlrm
antigravity.cpython-39.opt-2.pyc6840644editdlrm
antigravity.cpython-39.pyc8280644editdlrm
argparse.cpython-39.opt-1.pyc633120644editdlrm
argparse.cpython-39.opt-2.pyc539480644editdlrm
argparse.cpython-39.pyc634230644editdlrm
ast.cpython-39.opt-1.pyc522640644editdlrm
ast.cpython-39.opt-2.pyc437960644editdlrm
ast.cpython-39.pyc523150644editdlrm
asynchat.cpython-39.opt-1.pyc68310644editdlrm
asynchat.cpython-39.opt-2.pyc54560644editdlrm
asynchat.cpython-39.pyc68310644editdlrm
asyncore.cpython-39.opt-1.pyc160450644editdlrm
asyncore.cpython-39.opt-2.pyc148410644editdlrm
asyncore.cpython-39.pyc160450644editdlrm
base64.cpython-39.opt-1.pyc163320644editdlrm
base64.cpython-39.opt-2.pyc108120644editdlrm
base64.cpython-39.pyc164640644editdlrm
bdb.cpython-39.opt-1.pyc245490644editdlrm
bdb.cpython-39.opt-2.pyc155120644editdlrm
bdb.cpython-39.pyc245490644editdlrm
binhex.cpython-39.opt-1.pyc129740644editdlrm
binhex.cpython-39.opt-2.pyc124400644editdlrm
binhex.cpython-39.pyc129740644editdlrm
bisect.cpython-39.opt-1.pyc23590644editdlrm
bisect.cpython-39.opt-2.pyc10470644editdlrm
bisect.cpython-39.pyc23590644editdlrm
bz2.cpython-39.opt-1.pyc115540644editdlrm
bz2.cpython-39.opt-2.pyc65380644editdlrm
bz2.cpython-39.pyc115540644editdlrm
calendar.cpython-39.opt-1.pyc270400644editdlrm
calendar.cpython-39.opt-2.pyc224480644editdlrm
calendar.cpython-39.pyc270400644editdlrm
cgi.cpython-39.opt-1.pyc264910644editdlrm
cgi.cpython-39.opt-2.pyc180650644editdlrm
cgi.cpython-39.pyc264910644editdlrm
cgitb.cpython-39.opt-1.pyc101950644editdlrm
cgitb.cpython-39.opt-2.pyc85960644editdlrm
cgitb.cpython-39.pyc101950644editdlrm
chunk.cpython-39.opt-1.pyc48500644editdlrm
chunk.cpython-39.opt-2.pyc27060644editdlrm
chunk.cpython-39.pyc48500644editdlrm
cmd.cpython-39.opt-1.pyc126850644editdlrm
cmd.cpython-39.opt-2.pyc72600644editdlrm
cmd.cpython-39.pyc126850644editdlrm
code.cpython-39.opt-1.pyc99250644editdlrm
code.cpython-39.opt-2.pyc46540644editdlrm
code.cpython-39.pyc99250644editdlrm
codecs.cpython-39.opt-1.pyc338970644editdlrm
codecs.cpython-39.opt-2.pyc183250644editdlrm
codecs.cpython-39.pyc338970644editdlrm
codeop.cpython-39.opt-1.pyc64670644editdlrm
codeop.cpython-39.opt-2.pyc24070644editdlrm
codeop.cpython-39.pyc64670644editdlrm
colorsys.cpython-39.opt-1.pyc32690644editdlrm
colorsys.cpython-39.opt-2.pyc26630644editdlrm
colorsys.cpython-39.pyc32690644editdlrm
compileall.cpython-39.opt-1.pyc125970644editdlrm
compileall.cpython-39.opt-2.pyc93380644editdlrm
compileall.cpython-39.pyc125970644editdlrm
configparser.cpython-39.opt-1.pyc458780644editdlrm
configparser.cpython-39.opt-2.pyc307380644editdlrm
configparser.cpython-39.pyc458780644editdlrm
contextlib.cpython-39.opt-1.pyc195370644editdlrm
contextlib.cpython-39.opt-2.pyc139520644editdlrm
contextlib.cpython-39.pyc195470644editdlrm
contextvars.cpython-39.opt-1.pyc2540644editdlrm
contextvars.cpython-39.opt-2.pyc2540644editdlrm
contextvars.cpython-39.pyc2540644editdlrm
copy.cpython-39.opt-1.pyc69830644editdlrm
copy.cpython-39.opt-2.pyc46690644editdlrm
copy.cpython-39.pyc69830644editdlrm
copyreg.cpython-39.opt-1.pyc44200644editdlrm
copyreg.cpython-39.opt-2.pyc36180644editdlrm
copyreg.cpython-39.pyc44390644editdlrm
cProfile.cpython-39.opt-1.pyc51040644editdlrm
cProfile.cpython-39.opt-2.pyc46430644editdlrm
cProfile.cpython-39.pyc51040644editdlrm
crypt.cpython-39.opt-1.pyc35220644editdlrm
crypt.cpython-39.opt-2.pyc28600644editdlrm
crypt.cpython-39.pyc35220644editdlrm
csv.cpython-39.opt-1.pyc118580644editdlrm
csv.cpython-39.opt-2.pyc98170644editdlrm
csv.cpython-39.pyc118580644editdlrm
dataclasses.cpython-39.opt-1.pyc231940644editdlrm
dataclasses.cpython-39.opt-2.pyc197550644editdlrm
dataclasses.cpython-39.pyc231940644editdlrm
datetime.cpython-39.opt-1.pyc569650644editdlrm
datetime.cpython-39.opt-2.pyc485210644editdlrm
datetime.cpython-39.pyc581060644editdlrm
decimal.cpython-39.opt-1.pyc3680644editdlrm
decimal.cpython-39.opt-2.pyc3680644editdlrm
decimal.cpython-39.pyc3680644editdlrm
difflib.cpython-39.opt-1.pyc596080644editdlrm
difflib.cpython-39.opt-2.pyc250350644editdlrm
difflib.cpython-39.pyc596300644editdlrm
dis.cpython-39.opt-1.pyc158290644editdlrm
dis.cpython-39.opt-2.pyc120220644editdlrm
dis.cpython-39.pyc158290644editdlrm
doctest.cpython-39.opt-1.pyc758080644editdlrm
doctest.cpython-39.opt-2.pyc405020644editdlrm
doctest.cpython-39.pyc760150644editdlrm
enum.cpython-39.opt-1.pyc260290644editdlrm
enum.cpython-39.opt-2.pyc211070644editdlrm
enum.cpython-39.pyc260290644editdlrm
filecmp.cpython-39.opt-1.pyc86310644editdlrm
filecmp.cpython-39.opt-2.pyc60930644editdlrm
filecmp.cpython-39.pyc86310644editdlrm
fileinput.cpython-39.opt-1.pyc137990644editdlrm
fileinput.cpython-39.opt-2.pyc81910644editdlrm
fileinput.cpython-39.pyc137990644editdlrm
fnmatch.cpython-39.opt-1.pyc38790644editdlrm
fnmatch.cpython-39.opt-2.pyc26710644editdlrm
fnmatch.cpython-39.pyc39510644editdlrm
formatter.cpython-39.opt-1.pyc175480644editdlrm
formatter.cpython-39.opt-2.pyc151080644editdlrm
formatter.cpython-39.pyc175480644editdlrm
fractions.cpython-39.opt-1.pyc180580644editdlrm
fractions.cpython-39.opt-2.pyc108580644editdlrm
fractions.cpython-39.pyc180580644editdlrm
ftplib.cpython-39.opt-1.pyc287030644editdlrm
ftplib.cpython-39.opt-2.pyc185590644editdlrm
ftplib.cpython-39.pyc287030644editdlrm
functools.cpython-39.opt-1.pyc282850644editdlrm
functools.cpython-39.opt-2.pyc215640644editdlrm
functools.cpython-39.pyc282850644editdlrm
genericpath.cpython-39.opt-1.pyc40330644editdlrm
genericpath.cpython-39.opt-2.pyc28970644editdlrm
genericpath.cpython-39.pyc40330644editdlrm
getopt.cpython-39.opt-1.pyc62510644editdlrm
getopt.cpython-39.opt-2.pyc36970644editdlrm
getopt.cpython-39.pyc62690644editdlrm
getpass.cpython-39.opt-1.pyc42090644editdlrm
getpass.cpython-39.opt-2.pyc30230644editdlrm
getpass.cpython-39.pyc42090644editdlrm
gettext.cpython-39.opt-1.pyc180820644editdlrm
gettext.cpython-39.opt-2.pyc173910644editdlrm
gettext.cpython-39.pyc180820644editdlrm
glob.cpython-39.opt-1.pyc45140644editdlrm
glob.cpython-39.opt-2.pyc36540644editdlrm
glob.cpython-39.pyc45530644editdlrm
graphlib.cpython-39.opt-1.pyc75310644editdlrm
graphlib.cpython-39.opt-2.pyc40950644editdlrm
graphlib.cpython-39.pyc75770644editdlrm
gzip.cpython-39.opt-1.pyc185030644editdlrm
gzip.cpython-39.opt-2.pyc146360644editdlrm
gzip.cpython-39.pyc185030644editdlrm
hashlib.cpython-39.opt-1.pyc67000644editdlrm
hashlib.cpython-39.opt-2.pyc61320644editdlrm
hashlib.cpython-39.pyc67000644editdlrm
heapq.cpython-39.opt-1.pyc140490644editdlrm
heapq.cpython-39.opt-2.pyc110330644editdlrm
heapq.cpython-39.pyc140490644editdlrm
hmac.cpython-39.opt-1.pyc68090644editdlrm
hmac.cpython-39.opt-2.pyc42920644editdlrm
hmac.cpython-39.pyc68090644editdlrm
imaplib.cpython-39.opt-1.pyc402400644editdlrm
imaplib.cpython-39.opt-2.pyc275570644editdlrm
imaplib.cpython-39.pyc424210644editdlrm
imghdr.cpython-39.opt-1.pyc41490644editdlrm
imghdr.cpython-39.opt-2.pyc38340644editdlrm
imghdr.cpython-39.pyc41490644editdlrm
imp.cpython-39.opt-1.pyc98600644editdlrm
imp.cpython-39.opt-2.pyc74950644editdlrm
imp.cpython-39.pyc98600644editdlrm
inspect.cpython-39.opt-1.pyc811460644editdlrm
inspect.cpython-39.opt-2.pyc560400644editdlrm
inspect.cpython-39.pyc813880644editdlrm
io.cpython-39.opt-1.pyc34170644editdlrm
io.cpython-39.opt-2.pyc19280644editdlrm
io.cpython-39.pyc34170644editdlrm
ipaddress.cpython-39.opt-1.pyc625020644editdlrm
ipaddress.cpython-39.opt-2.pyc377390644editdlrm
ipaddress.cpython-39.pyc625020644editdlrm
keyword.cpython-39.opt-1.pyc9250644editdlrm
keyword.cpython-39.opt-2.pyc5210644editdlrm
keyword.cpython-39.pyc9250644editdlrm
linecache.cpython-39.opt-1.pyc40360644editdlrm
linecache.cpython-39.opt-2.pyc28040644editdlrm
linecache.cpython-39.pyc40360644editdlrm
locale.cpython-39.opt-1.pyc347050644editdlrm
locale.cpython-39.opt-2.pyc300870644editdlrm
locale.cpython-39.pyc347050644editdlrm
lzma.cpython-39.opt-1.pyc121030644editdlrm
lzma.cpython-39.opt-2.pyc59050644editdlrm
lzma.cpython-39.pyc121030644editdlrm
mailbox.cpython-39.opt-1.pyc605550644editdlrm
mailbox.cpython-39.opt-2.pyc539510644editdlrm
mailbox.cpython-39.pyc606090644editdlrm
mailcap.cpython-39.opt-1.pyc65180644editdlrm
mailcap.cpython-39.opt-2.pyc50010644editdlrm
mailcap.cpython-39.pyc65180644editdlrm
mimetypes.cpython-39.opt-1.pyc160520644editdlrm
mimetypes.cpython-39.opt-2.pyc100370644editdlrm
mimetypes.cpython-39.pyc160520644editdlrm
modulefinder.cpython-39.opt-1.pyc160910644editdlrm
modulefinder.cpython-39.opt-2.pyc151820644editdlrm
modulefinder.cpython-39.pyc161370644editdlrm
netrc.cpython-39.opt-1.pyc37920644editdlrm
netrc.cpython-39.opt-2.pyc35540644editdlrm
netrc.cpython-39.pyc37920644editdlrm
nntplib.cpython-39.opt-1.pyc317720644editdlrm
nntplib.cpython-39.opt-2.pyc201720644editdlrm
nntplib.cpython-39.pyc317720644editdlrm
ntpath.cpython-39.opt-1.pyc145510644editdlrm
ntpath.cpython-39.opt-2.pyc125000644editdlrm
ntpath.cpython-39.pyc145510644editdlrm
nturl2path.cpython-39.opt-1.pyc17550644editdlrm
nturl2path.cpython-39.opt-2.pyc13360644editdlrm
nturl2path.cpython-39.pyc17550644editdlrm
numbers.cpython-39.opt-1.pyc123280644editdlrm
numbers.cpython-39.opt-2.pyc83710644editdlrm
numbers.cpython-39.pyc123280644editdlrm
opcode.cpython-39.opt-1.pyc52320644editdlrm
opcode.cpython-39.opt-2.pyc50910644editdlrm
opcode.cpython-39.pyc52320644editdlrm
operator.cpython-39.opt-1.pyc137930644editdlrm
operator.cpython-39.opt-2.pyc114040644editdlrm
operator.cpython-39.pyc137930644editdlrm
optparse.cpython-39.opt-1.pyc478970644editdlrm
optparse.cpython-39.opt-2.pyc355820644editdlrm
optparse.cpython-39.pyc479520644editdlrm
os.cpython-39.opt-1.pyc316390644editdlrm
os.cpython-39.opt-2.pyc194490644editdlrm
os.cpython-39.pyc316550644editdlrm
pathlib.cpython-39.opt-1.pyc447340644editdlrm
pathlib.cpython-39.opt-2.pyc358740644editdlrm
pathlib.cpython-39.pyc447340644editdlrm
pdb.cpython-39.opt-1.pyc474820644editdlrm
pdb.cpython-39.opt-2.pyc334110644editdlrm
pdb.cpython-39.pyc475210644editdlrm
pickle.cpython-39.opt-1.pyc470220644editdlrm
pickle.cpython-39.opt-2.pyc411510644editdlrm
pickle.cpython-39.pyc471080644editdlrm
pickletools.cpython-39.opt-1.pyc663020644editdlrm
pickletools.cpython-39.opt-2.pyc572090644editdlrm
pickletools.cpython-39.pyc671160644editdlrm
pipes.cpython-39.opt-1.pyc78040644editdlrm
pipes.cpython-39.opt-2.pyc49370644editdlrm
pipes.cpython-39.pyc78040644editdlrm
pkgutil.cpython-39.opt-1.pyc185750644editdlrm
pkgutil.cpython-39.opt-2.pyc118760644editdlrm
pkgutil.cpython-39.pyc185750644editdlrm
platform.cpython-39.opt-1.pyc264250644editdlrm
platform.cpython-39.opt-2.pyc183570644editdlrm
platform.cpython-39.pyc264250644editdlrm
plistlib.cpython-39.opt-1.pyc235050644editdlrm
plistlib.cpython-39.opt-2.pyc211460644editdlrm
plistlib.cpython-39.pyc235560644editdlrm
poplib.cpython-39.opt-1.pyc136660644editdlrm
poplib.cpython-39.opt-2.pyc87360644editdlrm
poplib.cpython-39.pyc136660644editdlrm
posixpath.cpython-39.opt-1.pyc103380644editdlrm
posixpath.cpython-39.opt-2.pyc86230644editdlrm
posixpath.cpython-39.pyc103380644editdlrm
pprint.cpython-39.opt-1.pyc168060644editdlrm
pprint.cpython-39.opt-2.pyc146490644editdlrm
pprint.cpython-39.pyc168390644editdlrm
profile.cpython-39.opt-1.pyc142110644editdlrm
profile.cpython-39.opt-2.pyc112330644editdlrm
profile.cpython-39.pyc143990644editdlrm
pstats.cpython-39.opt-1.pyc237610644editdlrm
pstats.cpython-39.opt-2.pyc208520644editdlrm
pstats.cpython-39.pyc237610644editdlrm
pty.cpython-39.opt-1.pyc39650644editdlrm
pty.cpython-39.opt-2.pyc31200644editdlrm
pty.cpython-39.pyc39650644editdlrm
pyclbr.cpython-39.opt-1.pyc104580644editdlrm
pyclbr.cpython-39.opt-2.pyc68570644editdlrm
pyclbr.cpython-39.pyc104580644editdlrm
pydoc.cpython-39.opt-1.pyc852930644editdlrm
pydoc.cpython-39.opt-2.pyc754110644editdlrm
pydoc.cpython-39.pyc853250644editdlrm
py_compile.cpython-39.opt-1.pyc73730644editdlrm
py_compile.cpython-39.opt-2.pyc36350644editdlrm
py_compile.cpython-39.pyc73730644editdlrm
queue.cpython-39.opt-1.pyc108720644editdlrm
queue.cpython-39.opt-2.pyc65350644editdlrm
queue.cpython-39.pyc108720644editdlrm
quopri.cpython-39.opt-1.pyc56120644editdlrm
quopri.cpython-39.opt-2.pyc45760644editdlrm
quopri.cpython-39.pyc57560644editdlrm
random.cpython-39.opt-1.pyc220520644editdlrm
random.cpython-39.opt-2.pyc146050644editdlrm
random.cpython-39.pyc220520644editdlrm
re.cpython-39.opt-1.pyc143710644editdlrm
re.cpython-39.opt-2.pyc60330644editdlrm
re.cpython-39.pyc143710644editdlrm
reprlib.cpython-39.opt-1.pyc53160644editdlrm
reprlib.cpython-39.opt-2.pyc51600644editdlrm
reprlib.cpython-39.pyc53160644editdlrm
rlcompleter.cpython-39.opt-1.pyc58150644editdlrm
rlcompleter.cpython-39.opt-2.pyc31520644editdlrm
rlcompleter.cpython-39.pyc58150644editdlrm
runpy.cpython-39.opt-1.pyc85180644editdlrm
runpy.cpython-39.opt-2.pyc69520644editdlrm
runpy.cpython-39.pyc85180644editdlrm
sched.cpython-39.opt-1.pyc66420644editdlrm
sched.cpython-39.opt-2.pyc36140644editdlrm
sched.cpython-39.pyc66420644editdlrm
secrets.cpython-39.opt-1.pyc21890644editdlrm
secrets.cpython-39.opt-2.pyc11310644editdlrm
secrets.cpython-39.pyc21890644editdlrm
selectors.cpython-39.opt-1.pyc172540644editdlrm
selectors.cpython-39.opt-2.pyc131450644editdlrm
selectors.cpython-39.pyc172540644editdlrm
shelve.cpython-39.opt-1.pyc95530644editdlrm
shelve.cpython-39.opt-2.pyc54020644editdlrm
shelve.cpython-39.pyc95530644editdlrm
shlex.cpython-39.opt-1.pyc77430644editdlrm
shlex.cpython-39.opt-2.pyc71850644editdlrm
shlex.cpython-39.pyc77430644editdlrm
shutil.cpython-39.opt-1.pyc380230644editdlrm
shutil.cpython-39.opt-2.pyc262320644editdlrm
shutil.cpython-39.pyc380230644editdlrm
signal.cpython-39.opt-1.pyc28320644editdlrm
signal.cpython-39.opt-2.pyc26080644editdlrm
signal.cpython-39.pyc28320644editdlrm
site.cpython-39.opt-1.pyc167980644editdlrm
site.cpython-39.opt-2.pyc112620644editdlrm
site.cpython-39.pyc167980644editdlrm
smtpd.cpython-39.opt-1.pyc265330644editdlrm
smtpd.cpython-39.opt-2.pyc239130644editdlrm
smtpd.cpython-39.pyc265330644editdlrm
smtplib.cpython-39.opt-1.pyc358940644editdlrm
smtplib.cpython-39.opt-2.pyc195320644editdlrm
smtplib.cpython-39.pyc359390644editdlrm
sndhdr.cpython-39.opt-1.pyc70020644editdlrm
sndhdr.cpython-39.opt-2.pyc57270644editdlrm
sndhdr.cpython-39.pyc70020644editdlrm
socket.cpython-39.opt-1.pyc291580644editdlrm
socket.cpython-39.opt-2.pyc202630644editdlrm
socket.cpython-39.pyc291820644editdlrm
socketserver.cpython-39.opt-1.pyc255240644editdlrm
socketserver.cpython-39.opt-2.pyc148080644editdlrm
socketserver.cpython-39.pyc255240644editdlrm
sre_compile.cpython-39.opt-1.pyc148670644editdlrm
sre_compile.cpython-39.opt-2.pyc144530644editdlrm
sre_compile.cpython-39.pyc150620644editdlrm
sre_constants.cpython-39.opt-1.pyc63260644editdlrm
sre_constants.cpython-39.opt-2.pyc59010644editdlrm
sre_constants.cpython-39.pyc63260644editdlrm
sre_parse.cpython-39.opt-1.pyc215750644editdlrm
sre_parse.cpython-39.opt-2.pyc215270644editdlrm
sre_parse.cpython-39.pyc216120644editdlrm
ssl.cpython-39.opt-1.pyc446010644editdlrm
ssl.cpython-39.opt-2.pyc336230644editdlrm
ssl.cpython-39.pyc446010644editdlrm
stat.cpython-39.opt-1.pyc43810644editdlrm
stat.cpython-39.opt-2.pyc35980644editdlrm
stat.cpython-39.pyc43810644editdlrm
statistics.cpython-39.opt-1.pyc317940644editdlrm
statistics.cpython-39.opt-2.pyc159210644editdlrm
statistics.cpython-39.pyc319880644editdlrm
string.cpython-39.opt-1.pyc71740644editdlrm
string.cpython-39.opt-2.pyc60680644editdlrm
string.cpython-39.pyc71740644editdlrm
stringprep.cpython-39.opt-1.pyc99550644editdlrm
stringprep.cpython-39.opt-2.pyc97370644editdlrm
stringprep.cpython-39.pyc99950644editdlrm
struct.cpython-39.opt-1.pyc3150644editdlrm
struct.cpython-39.opt-2.pyc3150644editdlrm
struct.cpython-39.pyc3150644editdlrm
subprocess.cpython-39.opt-1.pyc440790644editdlrm
subprocess.cpython-39.opt-2.pyc320410644editdlrm
subprocess.cpython-39.pyc441550644editdlrm
sunau.cpython-39.opt-1.pyc168260644editdlrm
sunau.cpython-39.opt-2.pyc122360644editdlrm
sunau.cpython-39.pyc168260644editdlrm
symbol.cpython-39.opt-1.pyc25880644editdlrm
symbol.cpython-39.opt-2.pyc25120644editdlrm
symbol.cpython-39.pyc25880644editdlrm
symtable.cpython-39.opt-1.pyc110970644editdlrm
symtable.cpython-39.opt-2.pyc103680644editdlrm
symtable.cpython-39.pyc111750644editdlrm
sysconfig.cpython-39.opt-1.pyc160760644editdlrm
sysconfig.cpython-39.opt-2.pyc136980644editdlrm
sysconfig.cpython-39.pyc160760644editdlrm
tabnanny.cpython-39.opt-1.pyc70740644editdlrm
tabnanny.cpython-39.opt-2.pyc61410644editdlrm
tabnanny.cpython-39.pyc70740644editdlrm
tarfile.cpython-39.opt-1.pyc630680644editdlrm
tarfile.cpython-39.opt-2.pyc490170644editdlrm
tarfile.cpython-39.pyc630830644editdlrm
telnetlib.cpython-39.opt-1.pyc183400644editdlrm
telnetlib.cpython-39.opt-2.pyc108380644editdlrm
telnetlib.cpython-39.pyc183400644editdlrm
tempfile.cpython-39.opt-1.pyc233750644editdlrm
tempfile.cpython-39.opt-2.pyc168490644editdlrm
tempfile.cpython-39.pyc233750644editdlrm
textwrap.cpython-39.opt-1.pyc134720644editdlrm
textwrap.cpython-39.opt-2.pyc62630644editdlrm
textwrap.cpython-39.pyc135300644editdlrm
this.cpython-39.opt-1.pyc12680644editdlrm
this.cpython-39.opt-2.pyc12680644editdlrm
this.cpython-39.pyc12680644editdlrm
threading.cpython-39.opt-1.pyc416310644editdlrm
threading.cpython-39.opt-2.pyc244440644editdlrm
threading.cpython-39.pyc420940644editdlrm
timeit.cpython-39.opt-1.pyc117650644editdlrm
timeit.cpython-39.opt-2.pyc59110644editdlrm
timeit.cpython-39.pyc117650644editdlrm
token.cpython-39.opt-1.pyc25050644editdlrm
token.cpython-39.opt-2.pyc24720644editdlrm
token.cpython-39.pyc25050644editdlrm
tokenize.cpython-39.opt-1.pyc171460644editdlrm
tokenize.cpython-39.opt-2.pyc133820644editdlrm
tokenize.cpython-39.pyc171740644editdlrm
trace.cpython-39.opt-1.pyc197480644editdlrm
trace.cpython-39.opt-2.pyc167330644editdlrm
trace.cpython-39.pyc197480644editdlrm
traceback.cpython-39.opt-1.pyc204100644editdlrm
traceback.cpython-39.opt-2.pyc114570644editdlrm
traceback.cpython-39.pyc204100644editdlrm
tracemalloc.cpython-39.opt-1.pyc179440644editdlrm
tracemalloc.cpython-39.opt-2.pyc165310644editdlrm
tracemalloc.cpython-39.pyc179440644editdlrm
tty.cpython-39.opt-1.pyc10870644editdlrm
tty.cpython-39.opt-2.pyc9780644editdlrm
tty.cpython-39.pyc10870644editdlrm
turtle.cpython-39.opt-1.pyc1295450644editdlrm
turtle.cpython-39.opt-2.pyc679520644editdlrm
turtle.cpython-39.pyc1295450644editdlrm
types.cpython-39.opt-1.pyc92300644editdlrm
types.cpython-39.opt-2.pyc80080644editdlrm
types.cpython-39.pyc92300644editdlrm
typing.cpython-39.opt-1.pyc714510644editdlrm
typing.cpython-39.opt-2.pyc501970644editdlrm
typing.cpython-39.pyc715810644editdlrm
uu.cpython-39.opt-1.pyc36750644editdlrm
uu.cpython-39.opt-2.pyc34310644editdlrm
uu.cpython-39.pyc36750644editdlrm
uuid.cpython-39.opt-1.pyc224060644editdlrm
uuid.cpython-39.opt-2.pyc146930644editdlrm
uuid.cpython-39.pyc225190644editdlrm
warnings.cpython-39.opt-1.pyc131750644editdlrm
warnings.cpython-39.opt-2.pyc109000644editdlrm
warnings.cpython-39.pyc136140644editdlrm
wave.cpython-39.opt-1.pyc178530644editdlrm
wave.cpython-39.opt-2.pyc118610644editdlrm
wave.cpython-39.pyc178820644editdlrm
weakref.cpython-39.opt-1.pyc202800644editdlrm
weakref.cpython-39.opt-2.pyc169950644editdlrm
weakref.cpython-39.pyc202940644editdlrm
webbrowser.cpython-39.opt-1.pyc171260644editdlrm
webbrowser.cpython-39.opt-2.pyc147160644editdlrm
webbrowser.cpython-39.pyc171430644editdlrm
xdrlib.cpython-39.opt-1.pyc82520644editdlrm
xdrlib.cpython-39.opt-2.pyc77670644editdlrm
xdrlib.cpython-39.pyc82520644editdlrm
zipapp.cpython-39.opt-1.pyc59940644editdlrm
zipapp.cpython-39.opt-2.pyc48180644editdlrm
zipapp.cpython-39.pyc59940644editdlrm
zipfile.cpython-39.opt-1.pyc588820644editdlrm
zipfile.cpython-39.opt-2.pyc500240644editdlrm
zipfile.cpython-39.pyc589030644editdlrm
zipimport.cpython-39.opt-1.pyc171680644editdlrm
zipimport.cpython-39.opt-2.pyc136500644editdlrm
zipimport.cpython-39.pyc172460644editdlrm
_aix_support.cpython-39.opt-1.pyc30550644editdlrm
_aix_support.cpython-39.opt-2.pyc17000644editdlrm
_aix_support.cpython-39.pyc30550644editdlrm
_bootlocale.cpython-39.opt-1.pyc12260644editdlrm
_bootlocale.cpython-39.opt-2.pyc10010644editdlrm
_bootlocale.cpython-39.pyc12360644editdlrm
_bootsubprocess.cpython-39.opt-1.pyc22540644editdlrm
_bootsubprocess.cpython-39.opt-2.pyc20250644editdlrm
_bootsubprocess.cpython-39.pyc22540644editdlrm
_collections_abc.cpython-39.opt-1.pyc317470644editdlrm
_collections_abc.cpython-39.opt-2.pyc262570644editdlrm
_collections_abc.cpython-39.pyc317470644editdlrm
_compat_pickle.cpython-39.opt-1.pyc54440644editdlrm
_compat_pickle.cpython-39.opt-2.pyc54440644editdlrm
_compat_pickle.cpython-39.pyc54970644editdlrm
_compression.cpython-39.opt-1.pyc42070644editdlrm
_compression.cpython-39.opt-2.pyc39930644editdlrm
_compression.cpython-39.pyc42070644editdlrm
_markupbase.cpython-39.opt-1.pyc76290644editdlrm
_markupbase.cpython-39.opt-2.pyc72510644editdlrm
_markupbase.cpython-39.pyc77800644editdlrm
_osx_support.cpython-39.opt-1.pyc115920644editdlrm
_osx_support.cpython-39.opt-2.pyc89010644editdlrm
_osx_support.cpython-39.pyc115920644editdlrm
_pydecimal.cpython-39.opt-1.pyc1606220644editdlrm
_pydecimal.cpython-39.opt-2.pyc790050644editdlrm
_pydecimal.cpython-39.pyc1606220644editdlrm
_pyio.cpython-39.opt-1.pyc744720644editdlrm
_pyio.cpython-39.opt-2.pyc515790644editdlrm
_pyio.cpython-39.pyc744920644editdlrm
_py_abc.cpython-39.opt-1.pyc46430644editdlrm
_py_abc.cpython-39.opt-2.pyc34300644editdlrm
_py_abc.cpython-39.pyc46650644editdlrm
_sitebuiltins.cpython-39.opt-1.pyc35100644editdlrm
_sitebuiltins.cpython-39.opt-2.pyc29860644editdlrm
_sitebuiltins.cpython-39.pyc35100644editdlrm
_strptime.cpython-39.opt-1.pyc160240644editdlrm
_strptime.cpython-39.opt-2.pyc122960644editdlrm
_strptime.cpython-39.pyc160240644editdlrm
_sysconfigdata__linux_x86_64-linux-gnu.cpython-39.opt-1.pyc227680644editdlrm
_sysconfigdata__linux_x86_64-linux-gnu.cpython-39.opt-2.pyc227680644editdlrm
_sysconfigdata__linux_x86_64-linux-gnu.cpython-39.pyc227680644editdlrm
_threading_local.cpython-39.opt-1.pyc65150644editdlrm
_threading_local.cpython-39.opt-2.pyc31950644editdlrm
_threading_local.cpython-39.pyc65150644editdlrm
_weakrefset.cpython-39.opt-1.pyc77330644editdlrm
_weakrefset.cpython-39.opt-2.pyc77330644editdlrm
_weakrefset.cpython-39.pyc77330644editdlrm
__future__.cpython-39.opt-1.pyc41350644editdlrm
__future__.cpython-39.opt-2.pyc21630644editdlrm
__future__.cpython-39.pyc41350644editdlrm
__phello__.foo.cpython-39.opt-1.pyc1380644editdlrm
__phello__.foo.cpython-39.opt-2.pyc1380644editdlrm
__phello__.foo.cpython-39.pyc1380644editdlrm
Edit: /opt/imh-python/lib/python3.9/__pycache__/tarfile.cpython-39.pyc (63083B)
a _hq @sFdZdZdZdZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZz ddlZWneydZYn0z ddlZWneydZYn0eefZzeef7ZWneyYn0gdZdZd Zed Zd Zd Zd Zd ZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2e2Z3e!e"e#e$e'e(e)e%e&e*e+e,f Z4e!e"e)e,fZ5e*e+e,fZ6dZ7hd Z8e9e9e9e:e:e:d!Z;ejZ=d$d%Z?d&d'Z@d(d)ZAd*e3fd+d,ZBd-d.ZCdedfd/d0ZDd1d2ZEGd3d4d4eFZGGd5d6d6eGZHGd7d8d8eGZIGd9d:d:eGZJGd;d<dd>eGZLGd?d@d@eLZMGdAdBdBeLZNGdCdDdDeLZOGdEdFdFeLZPGdGdHdHeLZQGdIdJdJZRGdKdLdLZSGdMdNdNeTZUGdOdPdPeTZVGdQdRdRe jWZXGdSdTdTeTZYGdUdVdVeTZZdWdXZ[eZjZdYdZZ\e]d[krBe\dS)\z,Read from and write to tar format archives. z0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.)openN)TarFileTarInfo is_tarfileTarError ReadErrorCompressionError StreamError ExtractError HeaderErrorENCODING USTAR_FORMAT GNU_FORMAT PAX_FORMATDEFAULT_FORMATrisustar sustar00d01234567LKSxgX)pathlinkpathsizemtimeuidgidunamegname>r&r+r,r%)Zatimectimer(r)r*r'ntutf-8cCs(|||}|d||t|tS)z8Convert a string to a null-terminated bytes object. N)encodelenNUL)slengthencodingerrorsr7(/opt/imh-python/lib/python3.9/tarfile.pystns r9cCs*|d}|dkr|d|}|||S)z8Convert a null-terminated bytes object to a string. rN)finddecode)r3r5r6pr7r7r8ntss  r>cCs|ddvrbd}tt|dD]}|dK}|||d7}q |ddkrdt|d| }n>z"t|dd}t|p|d d}Wntytd Yn0|S) z/Convert a number field to a python number. r)r#r@asciistrict0invalid header)ranger1r>intstrip ValueErrorInvalidHeaderError)r3nir7r7r8ntis    rNrAcCst|}d|kr$d|dkrDnntd|d|fdt}n|tkrd|d |krrd|dkrnnV|dkrtdg}ntdg}d||}t|dD]}|d|d@|dL}qntd |S) z/Convert a python number to a number field. rrAr#z%0*orCrBr?r@zoverflow in number field)rHbytesr2r bytearrayrGinsertrJ)rLdigitsformatr3rMr7r7r8itns  2    rTcCs0dttd|}dttd|}||fS)aCalculate the checksum for a member's header by summing up all characters except for the chksum field which is treated as if it was filled with spaces. According to the GNU tar sources, some tars (Sun and NeXT) calculate chksum with signed char, which will be different if there are chars in the buffer with the high bit set. So we calculate two checksums, unsigned and signed. rBZ 148B8x356BZ 148b8x356b)sumstruct unpack_from)bufZunsigned_chksumZ signed_chksumr7r7r8 calc_chksumss rYc Cs|pd}|dkrdS|dur.t|||dSt||\}}t|D],}||}t||krf|d||qD|dkr||}t||kr|d||dS)zjCopy length bytes from fileobj src to fileobj dst. If length is None, copy the entire content. i@rNunexpected end of data)shutil copyfileobjdivmodrGreadr1write) srcdstr4 exceptionbufsizeblocks remainderbrXr7r7r8r\s$       r\cCs8ttjdd}|dur(||d|}t|dddS)Nr5backslashreplace )end)getattrsysstdoutr0r<print)r3r5r7r7r8 _safe_printsrnc@seZdZdZdS)rzBase exception.N__name__ __module__ __qualname____doc__r7r7r7r8r src@seZdZdZdS)r z%General exception for extract errors.Nror7r7r7r8r sr c@seZdZdZdS)rz&Exception for unreadable tar archives.Nror7r7r7r8rsrc@seZdZdZdS)rz.Exception for unavailable compression methods.Nror7r7r7r8rsrc@seZdZdZdS)r z=Exception for unsupported operations on stream-like TarFiles.Nror7r7r7r8r sr c@seZdZdZdS)r z!Base exception for header errors.Nror7r7r7r8r sr c@seZdZdZdS)EmptyHeaderErrorzException for empty headers.Nror7r7r7r8rtsrtc@seZdZdZdS)TruncatedHeaderErrorz Exception for truncated headers.Nror7r7r7r8rusruc@seZdZdZdS)EOFHeaderErrorz"Exception for end of file headers.Nror7r7r7r8rv"srvc@seZdZdZdS)rKzException for invalid headers.Nror7r7r7r8rK%srKc@seZdZdZdS)SubsequentHeaderErrorz3Exception for missing and invalid extended headers.Nror7r7r7r8rw(srwc@s0eZdZdZddZddZddZdd Zd S) _LowLevelFilezLow-level file object. Supports reading and writing. It is used instead of a regular file object for streaming access. cCsFtjtjtjBtjBd|}ttdr2|tjO}t||d|_dS)NrwO_BINARYi) osO_RDONLYO_WRONLYO_CREATO_TRUNChasattrr|rfd)selfnamemoder7r7r8__init__5s  z_LowLevelFile.__init__cCst|jdSN)r}closerrr7r7r8r>sz_LowLevelFile.closecCst|j|Sr)r}r^rrr'r7r7r8r^Asz_LowLevelFile.readcCst|j|dSr)r}r_rrr3r7r7r8r_Dsz_LowLevelFile.writeN)rprqrrrsrrr^r_r7r7r7r8rx/s  rxc@sreZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dddZ ddZ ddZddZdS)_StreamaClass that serves as an adapter between TarFile and a stream-like object. The stream-like object only needs to have a read() or write() method and is accessed blockwise. Use of gzip or bzip2 compression is possible. A stream-like object could be for example: sys.stdin, sys.stdout, a socket, a tape device etc. _Stream is intended to be used only internally. c Csd|_|durt||}d|_|dkr6t|}|}|psz_StreamProxy.__init__cCs|jj|_|jSr)rr^rXrr7r7r8r^Bs z_StreamProxy.readcCsP|jdrdS|jdddkr8|jdddkr8d S|jd rHd Sd SdS) NsrrsBZhr s1AY&SYr)s]s7zXZrr)rX startswithrr7r7r8rFs $ z_StreamProxy.getcomptypecCs|jdSr)rrrr7r7r8rPsz_StreamProxy.closeN)rprqrrrsrr^rrr7r7r7r8r9s  rc@sjeZdZdZdddZddZddZd d Zd d Zd dZ e j fddZ dddZ ddZddZdS) _FileInFilezA thin wrapper around an existing file object that provides a part of its data as an individual file object. NcCs||_||_||_d|_t|dd|_d|_|dur>d|fg}d|_g|_d}|j}|D]L\}}||kr||j d||df|j d||||f||7}||}qX||jkr|j d||jdfdS)NrrFT) roffsetr'positionrjrr map_indexmapr)rrrr'Z blockinfoZlastposZrealposr7r7r8r]s(    z_FileInFile.__init__cCsdSrr7rr7r7r8rvsz_FileInFile.flushcCsdSNTr7rr7r7r8readableysz_FileInFile.readablecCsdS)NFr7rr7r7r8writable|sz_FileInFile.writablecCs |jSr)rseekablerr7r7r8rsz_FileInFile.seekablecCs|jS)z*Return the current file position. )rrr7r7r8rsz_FileInFile.tellcCs|tjkr tt|d|j|_nj|tjkr\|dkrFt|j|d|_qt|j||j|_n.|tjkrtt|j||jd|_ntd|jS)z(Seek to a position in the file. rzInvalid argument) ioSEEK_SETminmaxr'rSEEK_CURSEEK_ENDrJ)rrwhencer7r7r8rs   z_FileInFile.seekc Cs |dur|j|j}nt||j|j}d}|dkr|j|j\}}}}||jkr`|krhqnqq6|jd7_|jt|jkr6d|_q6t|||j}|r|j||j||j|}t||krt d||7}n |t |7}||8}|j|7_q,|S)z!Read data from the file. Nrrr#rZ) r'rrrrr1rrr^rr2) rr'rXdatastartstoprr4rfr7r7r8r^s,     z_FileInFile.readcCs&|t|}||dt|<t|Sr)r^r1)rrfrXr7r7r8readintosz_FileInFile.readintocCs d|_dSr)rrr7r7r8rsz_FileInFile.close)N)N)rprqrrrsrrrrrrrrrr^rrr7r7r7r8rWs  rcseZdZfddZZS) ExFileObjectcs&t|j|j|j|j}t|dSr)rr offset_datar'sparsesuperr)rtarfiletarinfor __class__r7r8rs zExFileObject.__init__)rprqrrr __classcell__r7r7rr8rsrc@seZdZdZedddddddd d d d d dddddddddZdeddZeddZej ddZeddZ e j ddZ ddZ d d!Z e ed"fd#d$Zd%d&Zd'd(Zd)d*Zed+d,Zd-d.Zed/d0Zed1d2Zed3d4Zed5d6Zed7d8Zed9d:Zd;d<Zd=d>Zd?d@ZdAdBZ dCdDZ!dEdFZ"dGdHZ#dIdJZ$dKdLZ%dMdNZ&dOdPZ'dQdRZ(dSdTZ)dUdVZ*dWdXZ+dYdZZ,d[d\Z-d]d^Z.d_d`Z/dadbZ0dcddZ1dS)fraInformational class which holds the details about an archive member given by a tar header block. TarInfo objects are returned by TarFile.getmember(), TarFile.getmembers() and TarFile.gettarinfo() and are usually created internally. zName of the archive member.zPermission bits.z6User ID of the user who originally stored this member.z7Group ID of the user who originally stored this member.zSize in bytes.zTime of last modification.zHeader checksum.zFile type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.zcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.z User name.z Group name.zDevice major number.zDevice minor number.zThe tar header starts here.zThe file's data starts here.zMA dictionary containing key-value pairs of an associated pax extended header.zSparse member information.N)rrr)r*r'r(chksumtypelinknamer+r,devmajordevminorrr pax_headersrr_sparse_structs _link_targetrcCsj||_d|_d|_d|_d|_d|_d|_t|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_i|_dS)zXConstruct a TarInfo object. name is the optional name of the member. irrN)rrr)r*r'r(rREGTYPErrr+r,rrrrrrrrr7r7r8rs"zTarInfo.__init__cCs|jS)z(In pax headers, "name" is called "path".rrr7r7r8r%sz TarInfo.pathcCs ||_dSrrrr7r7r8r% scCs|jS)z0In pax headers, "linkname" is called "linkpath".rrr7r7r8r&szTarInfo.linkpathcCs ||_dSrr)rrr7r7r8r&scCsd|jj|jt|fS)Nz<%s %r at %#x>)rrpridrr7r7r8__repr__szTarInfo.__repr__cCsl|j|jd@|j|j|j|j|j|j|j|j |j |j |j d }|dt krh|ddsh|dd7<|S)z9Return the TarInfo's attributes as a dictionary. ) rrr)r*r'r(rrrr+r,rrrr/)rrr)r*r'r(rrrr+r,rrDIRTYPEr)rinfor7r7r8get_infos"zTarInfo.get_infosurrogateescapecCsT|}|tkr||||S|tkr4||||S|tkrH|||StddS)zq*z||dd Wn"tyt||||<Yq*Yn0t|||kr*||||<q*d D]`\}}||vrd ||<q||}d |krd |d krnn t|t rt |||<d ||<q|r| |t |} nd} | | |tddS)zReturn the object as a ustar header block. If it cannot be represented this way, prepend a pax extended header sequence with supplement information. r rr%rr&)r+r+ )r,r,rrCrD))r)rA)r*rA)r' )r(rrrAr#rr)r rcopyrrr0UnicodeEncodeErrorr1 isinstancefloatstr_create_pax_generic_headerXHDTYPErr ) rrr5rrZhnamer4rRvalrXr7r7r8r [s4     *  zTarInfo.create_pax_headercCs||tdS)zAReturn the object as a pax global header block sequence. r/)rXGLTYPE)clsrr7r7r8create_pax_global_headersz TarInfo.create_pax_global_headercCs~|d}tdt|D]T}d|d|}d||d}t|||tkrt|||tkrqvqtd||fS)zUSplit a name longer than 100 chars into a prefix and a name part. rr#Nzname is too long)splitrGr1rr0 LENGTH_PREFIXrrJ)rrr5r6 componentsrMr r7r7r8rs zTarInfo._posix_split_namec Cs|dttfv}|r@t|ddd|}t|ddd|}ntdd||}tdd||}t|ddd||t|d dd @d|t|d dd|t|d dd|t|d dd|t|ddd|d|dtt|ddd|||dtt|ddd||t|ddd||||t|ddd||g}tdt d |}t |t dd} |ddt d| d|dd}|S)zReturn a header block. info is a dictionary with file information, format must be one of the *_FORMAT constants. rrrrArrrrrrr)r*r'rr(s rr r+rr,r rz%dsrNiz%06orCi) getCHRTYPEBLKTYPErTr9rr rVrrrrYrO) rrSr5r6Zhas_device_fieldsrrpartsrXrr7r7r8rs4  &zTarInfo._create_headercCs.tt|t\}}|dkr*|t|t7}|S)zdReturn the string payload filled with zero bytes up to the next 512 byte border. r)r]r1rr2)payloadrdrer7r7r8_create_payloadszTarInfo._create_payloadcCsR|||t}i}d|d<||d<t||d<t|d<||t||||S)zTReturn a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence for name. z ././@LongLinkrrr'r )r0r2r1rrr r+)r!rrr5r6rr7r7r8rs zTarInfo._create_gnu_long_headerc Cs0d}|D]6\}}z|ddWq ty@d}YqDYq 0q d}|rT|d7}|D]\}}|d}|r||d}n |d}t|t|d}d } } |tt| } | | krq| } q|tt| d d |d |d 7}q\i} d| d<|| d<t|| d<t| d<|| td d| |S)zReturn a POSIX.1-2008 extended or global header sequence that contains a list of keyword, value pairs. The values must be strings. Fr/rDTrs21 hdrcharset=BINARY rrrrC = z././@PaxHeaderrrr'r r) itemsr0rr1rrOr rr r+) r!rrr5binarykeywordvaluerecordslrLr=rr7r7r8rs<   ( z"TarInfo._create_pax_generic_headerc Cstt|dkrtdt|tkr(td|ttkr>tdt|dd}|t|vrbt d|}t |dd|||_ t|dd |_ t|d d |_ t|d d |_t|d d |_t|d d|_||_|dd |_t |d d|||_t |dd|||_t |dd|||_t|dd|_t|dd|_t |dd||}|jtkr|j drt|_|jtkr6d}g}tdD]j} z0t|||d} t||d|d} WntyYqYn0|| | f|d7}qt|d} t|dd} || | f|_ |!rN|j "d|_ |rp|jt#vrp|d|j |_ |S)zAConstruct a TarInfo object from a 512 byte bytes object. rz empty headerztruncated headerzend of file headerz bad checksumrlt|ii i)iIiQiYirirriii)$r1rtrrucountr2rvrNrYrKr>rrr)r*r'r(rrrr+r,rrAREGTYPErrGNUTYPE_SPARSErGrJrboolrisdirrstrip GNU_TYPES)r!rXr5r6robjr rstructsrMrnumbytes isextendedorigsizer7r7r8frombufsZ         zTarInfo.frombufcCs8|jt}|||j|j}|jt|_||S)zOReturn the next TarInfo object from TarFile object tarfile. ) rr^rrIr5r6rr _proc_member)r!rrXrDr7r7r8 fromtarfileSs zTarInfo.fromtarfilecCsT|jttfvr||S|jtkr,||S|jtttfvrF| |S| |SdS)zYChoose the right processing method depending on the type and call it. N) rrr _proc_gnulongr? _proc_sparserr SOLARIS_XHDTYPE _proc_pax _proc_builtin)rrr7r7r8rJhs    zTarInfo._proc_membercCsR|j|_|j}|s$|jtvr4|||j7}||_| |j |j |j |S)zfProcess a builtin type or an unknown type which will be treated as a regular file. ) rrrisregrSUPPORTED_TYPES_blockr'r_apply_pax_inforr5r6)rrrr7r7r8rPus zTarInfo._proc_builtincCs|j||j}z||}Wnty<tdYn0|j|_|jt krdt ||j |j |_ n|jtkrt ||j |j |_|S)zSProcess the blocks that hold a GNU longname or longlink member. missing or bad subsequent header)rr^rSr'rKr rwrrrr>r5r6rrr)rrrXnextr7r7r8rLs   zTarInfo._proc_gnulongc Cs|j\}}}|`|r|jt}d}tdD]l}z0t|||d}t||d|d} WntyxYqYn0|r| r||| f|d7}q,t|d}q||_ |j |_ |j | |j |_||_ |S)z8Process a GNU sparse header plus extra headers. rrr<i)rrr^rrGrNrJrr@rrrrSr'r) rrrErGrHrXrrMrrFr7r7r8rMs(       zTarInfo._proc_sparsecCs,|j||j}|jtkr&|j}n |j}t d|}|durX| d d|d<| d}|dkrr|j }nd}td}d}|||}|sq6|\} } t| } | dkrtd ||d d|d| d} || dd|j} | tvr|| ||j |j} n|| dd|j} | || <|| 7}qz||} Wnty`td Yn0d |vrz|| |nHd |vr|| ||n.| ddkr| ddkr|| |||jttfvr(| ||j |j|j!| _!d|vr(| j"} | #s| jt$vr"| | | j7} | |_!| S)zVProcess an extended or global header as described in POSIX.1-2008. s\d+ hdrcharset=([^\n]+)\nNr#r/ hdrcharsetZBINARYs(\d+) ([^=]+)=rrFr$rUGNU.sparse.mapGNU.sparse.sizezGNU.sparse.major1zGNU.sparse.minorrEr')%rr^rSr'rr rrresearchgroupr<r&r5compilematchgroupsrHrKrir_decode_pax_fieldr6PAX_NAME_FIELDSrKr rw_proc_gnusparse_01_proc_gnusparse_00_proc_gnusparse_10rrNrTrrrQrR)rrrXrr`rXr5Zregexrr4r1r2rVrr7r7r8rOsh       $         zTarInfo._proc_paxcCshg}td|D]}|t|dqg}td|D]}|t|dq:tt|||_dS)z?Process a GNU tar extended sparse header, version 0.0. s\d+ GNU.sparse.offset=(\d+)\nr#s\d+ GNU.sparse.numbytes=(\d+)\nN)r\finditerrrHr^listzipr)rrVrrXZoffsetsr`rFr7r7r8re szTarInfo._proc_gnusparse_00cCs@dd|ddD}tt|ddd|ddd|_dS)z?Process a GNU tar extended sparse header, version 0.1. cSsg|] }t|qSr7)rH).0xr7r7r8 .rz.TarInfo._proc_gnusparse_01..rY,Nr$r#)r#rhrir)rrVrrr7r7r8rd+szTarInfo._proc_gnusparse_01cCsd}g}|jt}|dd\}}t|}t||dkrtd|vrT||jt7}|dd\}}|t|q,|j|_t t |ddd|ddd|_ dS)z?Process a GNU tar extended sparse header, version 1.0. Nr.r#r$) rr^rr#rHr1rrrrhrir)rrVrrfieldsrrXZnumberr7r7r8rf1s  zTarInfo._proc_gnusparse_10c Cs|D]\}}|dkr&t|d|q|dkr@t|dt|q|dkrZt|dt|q|tvr|tvrzt||}Wntyd}Yn0|dkr|d}t|||q||_dS) zoReplace fields with supplemental information from a previous pax extended or global header. zGNU.sparse.namer%rZr'zGNU.sparse.realsizerrN) r/setattrrH PAX_FIELDSPAX_NUMBER_FIELDSrJrBrr)rrr5r6r1r2r7r7r8rTAs"   zTarInfo._apply_pax_infocCs2z||dWSty,|||YS0dS)z1Decode a single field from a pax record. rDN)r<UnicodeDecodeError)rr2r5Zfallback_encodingZfallback_errorsr7r7r8rbXs zTarInfo._decode_pax_fieldcCs"t|t\}}|r|d7}|tS)z_Round up a byte count by BLOCKSIZE and return it, e.g. _block(834) => 1024. r#)r]r)rr=rdrer7r7r8rS`szTarInfo._blockcCs |jtvSz4Return True if the Tarinfo object is a regular file.)r REGULAR_TYPESrr7r7r8rQisz TarInfo.isregcCs|Srs)rQrr7r7r8isfilemszTarInfo.isfilecCs |jtkS)z!Return True if it is a directory.)rrrr7r7r8rAqsz TarInfo.isdircCs |jtkS)z%Return True if it is a symbolic link.)rSYMTYPErr7r7r8issymusz TarInfo.issymcCs |jtkS)z!Return True if it is a hard link.)rLNKTYPErr7r7r8islnkysz TarInfo.islnkcCs |jtkS)z(Return True if it is a character device.)rr'rr7r7r8ischr}sz TarInfo.ischrcCs |jtkS)z$Return True if it is a block device.)rr(rr7r7r8isblksz TarInfo.isblkcCs |jtkS)zReturn True if it is a FIFO.)rFIFOTYPErr7r7r8isfifoszTarInfo.isfifocCs |jduSr)rrr7r7r8issparseszTarInfo.issparsecCs|jtttfvS)zCReturn True if it is one of character device, block device or FIFO.)rr'r(r|rr7r7r8isdevsz TarInfo.isdev)r)2rprqrrrsdict __slots__rpropertyr%setterr&rrrr r rrr  classmethodr"r staticmethodrr+rrrIrKrJrPrLrMrOrerdrfrTrbrSrQrurArwryrzr{r}r~rr7r7r7r8rs      1  #   2 >  h  rc @seZdZdZdZdZdZdZeZ e Z dZ e ZeZd\dd Zedddefd d Zed]d d Zed^ddZed_ddZed`ddZdddddZddZddZddZd d!Zdad"d#Zdbdd%d&d'Zdcdd(d)d*Z ddd+d,Z!dedd.d/d0Z"dfdd.d2d3Z#d4d5Z$dgd6d7Z%d8d9Z&d:d;Z'dd?Z)d@dAZ*dBdCZ+dDdEZ,dFdGZ-dHdIZ.dJdKZ/dhdLdMZ0dNdOZ1didPdQZ2dRdSZ3dTdUZ4dVdWZ5dXdYZ6dZd[Z7dS)jrz=The TarFile Class provides an interface to tar archives. rFr#Nrzrc Csddddd}||vrtd||_|||_|sh|jdkrTtj|sTd|_d|_t||j}d |_n@|d urt|d rt |j t t fr|j }t|d r|j|_d |_|rtj |nd |_ ||_|d ur||_|d ur||_|d ur||_|d ur||_|d ur ||_| |_| d ur0|jtkr0| |_ni|_| d urF| |_| d urV| |_| |_d |_g|_d |_|j|_i|_z|jdkrd |_ |!|_ |jdkr2|j"|jz|j#|}|j$|WnXt%y|j"|jYq2Yn2t&y,}zt't |WYd }~n d }~00q|jdvr|d |_|jr||j(|j)}|j*||jt+|7_Wn&|js|j,d |_Yn0d S)aOpen an (uncompressed) tar archive `name'. `mode' is either 'r' to read from an existing archive, 'a' to append data to an existing file or 'w' to create a new file overwriting an existing one. `mode' defaults to 'r'. If `fileobj' is given, it is used for reading or writing data. If it can be determined, `mode' is overridden by `fileobj's mode. `fileobj' is not closed, when TarFile is closed. rbzr+bwbxbrzar{rk!mode must be 'r', 'a', 'w' or 'x'rr{FNrrTrzrr{rk)-rJr_moder}r%exists bltn_openrrrrrrOabspathrrSr dereference ignore_zerosr5r6rrdebug errorlevel copybufsizermembers_loadedrrinodes firstmemberrVrrKrrvr rr"rr_r1r)rrrrrSrrrr5r6rrrrZmodeserXr7r7r8rs             &   zTarFile.__init__c s|s|std|dvrfdd}tj|dD]l}tj|}|durV|} z||d|fi|WSttfy|dur|| Yq2Yq20q2tdnd |vr|d d \} }| pd} |pd }|jvrtj|}n td |||| |fi|Sd |vr|d d \} }| p4d} |p>d }| dvrRtdt || |||} z|| | fi|} Wn| Yn0d| _ | S|dvrj |||fi|StddS)aOpen a tar archive for reading, writing or appending. Return an appropriate TarFile class. mode: 'r' or 'r:*' open for reading with transparent compression 'r:' open for reading exclusively uncompressed 'r:gz' open for reading with gzip compression 'r:bz2' open for reading with bzip2 compression 'r:xz' open for reading with lzma compression 'a' or 'a:' open for appending, creating the file if necessary 'w' or 'w:' open for writing without compression 'w:gz' open for writing with gzip compression 'w:bz2' open for writing with bzip2 compression 'w:xz' open for writing with lzma compression 'x' or 'x:' create a tarfile exclusively without compression, raise an exception if the file is already created 'x:gz' create a gzip compressed tarfile, raise an exception if the file is already created 'x:bz2' create a bzip2 compressed tarfile, raise an exception if the file is already created 'x:xz' create an lzma compressed tarfile, raise an exception if the file is already created 'r|*' open a stream of tar blocks with transparent compression 'r|' open an uncompressed stream of tar blocks for reading 'r|gz' open a gzip compressed stream of tar blocks 'r|bz2' open a bzip2 compressed stream of tar blocks 'r|xz' open an lzma compressed stream of tar blocks 'w|' open an uncompressed stream for writing 'w|gz' open a gzip compressed stream for writing 'w|bz2' open a bzip2 compressed stream for writing 'w|xz' open an lzma compressed stream for writing znothing to open)rzr:*csj|dkS)Ntaropen) OPEN_METH)rr!r7r8not_compressedDsz$TarFile.open..not_compressedkeyNrzz%file could not be opened successfully:r#rr|ryzmode must be 'r' or 'w'Frzundiscernible mode) rJsortedrrjrrrrr#rrrr) r!rrrrckwargsrrfuncZ saved_posfilemodestreamrr7rr8rsP%            z TarFile.opencKs$|dvrtd||||fi|S)zCOpen uncompressed tar archive name for reading or writing. rr)rJ)r!rrrrr7r7r8ruszTarFile.taropenrcKs|dvrtdzddlm}Wnty:tdYn0z|||d||}Wn,ty~|durx|dkrxtd Yn0z|j|||fi|}Wn@ty||dkrtd Yn|Yn0d |_ |S) zkOpen gzip compressed tar archive name for reading or writing. Appending is not allowed. rzr{rkmode must be 'r', 'w' or 'x'r)GzipFilezgzip module is not availablerfNrzrF) rJgziprrrrrrrr)r!rrr compresslevelrrrr7r7r8gzopen}s0   zTarFile.gzopenc Ks|dvrtdzddlm}Wnty:tdYn0||pD|||d}z|j|||fi|}WnDttfy||dkrt dYn|Yn0d |_ |S) zlOpen bzip2 compressed tar archive name for reading or writing. Appending is not allowed. rrr)BZ2Filer)rrzznot a bzip2 fileF) rJrrrrrrEOFErrorrrr)r!rrrrrrrr7r7r8bz2opens& zTarFile.bz2openc Ks|dvrtdzddlm}m}Wnty>tdYn0||pH|||d}z|j|||fi|}WnD|tfy||dkrt dYn|Yn0d |_ |S) zkOpen lzma compressed tar archive name for reading or writing. Appending is not allowed. rrr)LZMAFilerr)presetrzznot an lzma fileF) rJrrrrrrrrrr) r!rrrrrrrrr7r7r8xzopens& zTarFile.xzopenrrrr)rrrrcCs|jr dSd|_zp|jdvrn|jttd|jtd7_t|jt\}}|dkrn|jtt|W|j s|j n|j s|j 0dS)zlClose the TarFile. In write-mode, two finishing zero blocks are appended to the archive. NTrr$r) rrrr_r2rrr] RECORDSIZErr)rrdrer7r7r8rs  z TarFile.closecCs"||}|durtd||S)aReturn a TarInfo object for member `name'. If `name' can not be found in the archive, KeyError is raised. If a member occurs more than once in the archive, its last occurrence is assumed to be the most up-to-date version. Nzfilename %r not found) _getmemberKeyError)rrrr7r7r8 getmembers  zTarFile.getmembercCs||js||jS)zReturn the members of the archive as a list of TarInfo objects. The list has the same order as the members in the archive. )_checkr_loadrrr7r7r8 getmembersszTarFile.getmemberscCsdd|DS)zReturn the members of the archive as a list of their names. It has the same order as the list returned by getmembers(). cSsg|] }|jqSr7r)rjrr7r7r8rlrz$TarFile.getnames..)rrr7r7r8getnames szTarFile.getnamesc CsZ|d|dur|j}|dur$|}tj|\}}|tjd}|d}|}||_ |dur|j stt |}qt |}nt |}d}|j}t |r|j|jf} |j s|jdkr| |jvr||j| krt} |j| }nt} | dr||j| <nht |rt} nVt |r"t} nDt |r>t} t|}n(t |rPt} nt |rbt!} ndS||_||_"|j#|_$|j%|_&| tkr|j'|_(nd|_(|j)|_*| |_+||_,t-rzt-.|j$d|_/Wnt0yYn0t1rzt12|j&d|_3Wnt0yYn0| tt!fvrVt4tdrVt4tdrVt5|j6|_7t8|j6|_9|S) aCreate a TarInfo object from the result of os.stat or equivalent on an existing file. The file is either named by `name', or specified as a file object `fileobj' with a file descriptor. If given, `arcname' specifies an alternative name for the file in the archive, otherwise, the name is taken from the 'name' attribute of 'fileobj', or the 'name' argument. The name should be a text string. awxNrrr#rmajorminor):rrr}r% splitdriverseplstriprrrlstatstatfstatfilenost_modeS_ISREGst_inost_devst_nlinkrrxrS_ISDIRrS_ISFIFOr|S_ISLNKrvreadlinkS_ISCHRr'S_ISBLKr(rst_uidr)st_gidr*st_sizer'st_mtimer(rrpwdgetpwuidr+rgrpgetgrgidr,rrst_rdevrrr) rrarcnamerdrvrZstatresrZstmdinoderr7r7r8 gettarinfos                 zTarFile.gettarinfoT)rcCs||dur|}|D]}|rtt|jtd|jp>|j|jpH|jf| s`| rztdd|j |j fntd|j tdt|jddt|j|rdnd |r|rtd |j|rtd |jtqdS) aPrint a table of contents to sys.stdout. If `verbose' is False, only the names of the members are printed. If it is True, an `ls -l'-like output is produced. `members' is optional and must be a subset of the list returned by getmembers(). Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02drrrz-> zlink to )rrnrrrr+r)r,r*rzr{rrr'r localtimer(rrArwrryrm)rverboserrr7r7r8rhts0 z TarFile.listfiltercCsL|d|dur|}|jdurFtj||jkrF|dd|dS|d||||}|durz|dd|dS|dur||}|dur|dd|dS|rt|d}| ||Wdn1s0Ynb| r>| ||rHt t |D],}|j tj||tj||||d qn | |dS) a!Add the file `name' to the archive. `name' may be any type of file (directory, fifo, symbolic link, etc.). If given, `arcname' specifies an alternative name for the file in the archive. Directories are added recursively by default. This can be avoided by setting `recursive' to False. `filter' is a function that expects a TarInfo object argument and returns the changed TarInfo object, if it returns None the TarInfo object will be excluded from the archive. rNr$ztarfile: Skipped %rr#ztarfile: Unsupported type %rztarfile: Excluded %rrr)rrr}r%r_dbgrrQraddfilerArlistdiraddr)rrr recursiverrfr7r7r8rs6    ,   z TarFile.addcCs|dt|}||j|j|j}|j||jt |7_|j }|durt ||j|j |dt |j t\}}|dkr|jtt||d7}|j|t7_|j|dS)aAdd the TarInfo object `tarinfo' to the archive. If `fileobj' is given, it should be a binary file, and tarinfo.size bytes are read from it and added to the archive. You can create TarInfo objects directly, or by using gettarinfo(). rN)rcrr#)rrr rSr5r6rr_rr1rr\r'r]rr2rr)rrrrXrcrdrer7r7r8rs   zTarFile.addfile. numeric_ownerc Csg}|dur|}|D]>}|r:||t|}d|_|j||| |dq|jddd||D]}tj ||j }z,|j |||d| ||| ||Wqpty}z*|jdkr΂n|dd |WYd}~qpd}~00qpdS) aExtract all members from the archive to the current working directory and set owner, modification time and permissions on directories afterwards. `path' specifies a different directory to extract to. `members' is optional and must be a subset of the list returned by getmembers(). If `numeric_owner` is True, only the numbers for user/group names are used and not the names. N set_attrsrcSs|jSrr)rr7r7r8rz$TarFile.extractall..rrr# tarfile: %s)rArrrextractsortreverser}r%rrchownutimechmodr rr)rr%rrZ directoriesrdirpathrr7r7r8 extractalls.    zTarFile.extractallrc Cs|dt|tr ||}n|}|r>tj||j|_ z"|j |tj||j ||dWnt y}zP|j dkr~n6|jdur|dd|jn|dd|j|jfWYd}~nLd}~0ty }z*|j dkrn|dd|WYd}~n d}~00dS)aExtract a member from the archive to the current working directory, using its full name. Its file information is extracted as accurately as possible. `member' may be a filename or a TarInfo object. You can specify a different directory using `path'. File attributes (owner, mtime, mode) are set unless `set_attrs' is False. If `numeric_owner` is True, only the numbers for user/group names are used and not the names. rzrrNr#rztarfile: %s %r)rrrrryr}r%rrr_extract_memberrrrfilenamerstrerrorr )rmemberr%rrrrr7r7r8rs*      , zTarFile.extractcCs|dt|tr ||}n|}|s6|jtvrB|||S|sR| rzt|j t rht dq~| ||SndSdS)a\Extract a member from the archive as a file object. `member' may be a filename or a TarInfo object. If `member' is a regular file or a link, an io.BufferedReader object is returned. For all other existing members, None is returned. If `member' does not appear in the archive, KeyError is raised. rzz'cannot extract (sym)link as file objectN)rrrrrQrrR fileobjectryrwrrr extractfile_find_link_target)rrrr7r7r8r.s      zTarFile.extractfilecCsT|d}|dtj}tj|}|r>tj|s>t||sN| rh| dd|j |j fn| d|j | r|||n|r|||nx|r|||nb|s|r|||nD|s| r|||n&|jtvr|||n ||||rP||||| sP||||||dS)z\Extract the TarInfo object tarinfo to a physical file called targetpath. rr#z%s -> %sN)rBrr}rr%dirnamermakedirsryrwrrrrQmakefilerAmakedirr}makefiforzr{makedevmakelinkrrR makeunknownrrr)rr targetpathrrZ upperdirsr7r7r8rNs4       zTarFile._extract_membercCs(zt|dWnty"Yn0dS)z,Make a directory called targetpath. rN)r}mkdirFileExistsErrorrrrr7r7r8rs zTarFile.makedircCs|j}||j|j}t|dl}|jdurn|jD]"\}}||t|||t|q4||j| nt|||jt|Wdn1s0YdS)z'Make a file called targetpath. rN) rrrrrrr\rr'truncate)rrrsourcerctargetrr'r7r7r8rs      zTarFile.makefilecCs"||||dd|jdS)zYMake a file from a TarInfo object with an unknown type at targetpath. r#z9tarfile: Unknown file type %r, extracted as regular file.N)rrrr r7r7r8rs zTarFile.makeunknowncCs"ttdrt|ntddS)z'Make a fifo called targetpath. mkfifozfifo not supported by systemN)rr}rr r r7r7r8rs  zTarFile.makefifocCs^ttdrttdstd|j}|r6|tjO}n |tjO}t||t |j |j dS)zzShow listing of a tarfile)metavarr2z-ez --extract+)r4z zExtract tarfile into target dir)nargsr5r2z-cz--create)zzzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validrzr&z{!r} is a tar archive.r#z{!r} is not a tar archive. r)rr$)r%rz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rrr)rz.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:r{z{!r} file created.)argparseArgumentParser add_argumentadd_mutually_exclusive_group parse_argstestrrrrmrkr(rrSexitrhrrr1r}curdir format_helprZcreatepopr%splitextr)r8r.parserr^argsr`rZtfr?r*Ztar_name_extZ compressionsZtar_modeZ tar_files file_namer7r7r8main s          0  0    ,      .rH__main__)^rsversion __author__ __credits__builtinsrrrkr}rr[rrrVrr\rrrAttributeErrorNotImplementedErrorrr NameError__all__r2rrrr rrr$rr>rxrvr'r(rr|ZCONTTYPErrr?rr rNr rrrrRrtrCrprcrrHrqrr getfilesystemencodingr9r>rNrTrYr\rn Exceptionrr rrr r rtrurvrKrwrxrobjectrrBufferedReaderrrrrrHrpr7r7r7r8s          sh L"W