U ifY@s ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZzddlZejZWnek rdZejZYnXz ddlZWnek rdZYnXz ddlZWnek rdZYnXdddddddd d d d d dg ZGdddeZGdd d eZeZZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'e (e&Z)dZ*dZ+dZ,dZ-dZ.d Z/d!Z0d"Z1dZ2d#Z3d$Z4d%Z5e (e4Z6dZ7dZ8dZ9dZ:dZ;d ZdZ?d#Z@d&ZAd'ZBdZCd(ZDdZEd)ZFd*ZGd+ZHd,ZId-ZJd.ZKe (eJZLdZMdZNdZOdZPdZQd ZRd!ZSd"ZTdZUd#ZVd&ZWd'ZXd/ZYd0ZZe (eYZ[d1Z\d2Z]e (e\Z^dZ_dZ`dZadZbdZcd Zdd!Zed"ZfdZgd#Zhd3Zie jd4Zkd5d6Zld7d8Zmd9d Znd:d;Zodd d eqZrdasd?d@ZtdAdBZuGdCdDdDZvGdEdFdFZwdGdHdIdIdIdIdJdKdLdMdJdNdOdPdQdRdSdTZxdUdVZydsdWdXZzdYdZZ{Gd[d\d\Z|Gd]d^d^Z}Gd_d`d`ej~ZGdadbdbej~ZGdcd d ZGddd d eZdedfZdgdhZejZdidjZGdkdldleZGdmdndneZGdoddZdtdpdqZedrkredS)uN BadZipFile BadZipfileerror ZIP_STORED ZIP_DEFLATED ZIP_BZIP2ZIP_LZMA is_zipfileZipInfoZipFile PyZipFile LargeZipFilePathc@s eZdZdS)rN__name__ __module__ __qualname__rr,/opt/alt/python38/lib64/python3.8/zipfile.pyr+sc@s eZdZdS)r Nrrrrrr /si -.?s<4s4H2LHsPK z<4s4B4HL2L5H2LsPK z <4s2B4HL2L2HsPKz<4sLQLsPKz <4sQ2H2L4QsPKiPKr0structr/structEndArchive64LocatorstringEndArchive64LocatorrsizeEndCentDir64structEndArchive64stringEndArchive64_ECD_SIGNATURE_ECD_DISK_NUMBER_ECD_DISK_START_ECD_ENTRIES_THIS_DISK_ECD_ENTRIES_TOTAL _ECD_SIZE _ECD_OFFSET)fpinoffsetendrecdataZsigZdisknoZreloffZdisksZszcreate_versionZ read_versionZdisk_numZdisk_dirZdircountZ dircount2ZdirsizeZ diroffsetrrr _EndRecData64s@      rXc Csh|dd|}z|t dWntk r<YdSX|}t|tkr|ddtkr|dddkrtt |}t |}| d| |tt |t |St |dtd}||d|}|t}|dkrd|||t}t|tkrdSt tt |}|t}||t|t|}| || ||t |||||SdS)Nrrr sr-i)rDtellsizeEndCentDirr:r>r0stringEndArchiverFr/structEndArchivelistr1rXmaxrfind_ECD_COMMENT_SIZE) rSZfilesizerVrUZmaxCommentStartr5ZrecDataZ commentSizecommentrrrr9sD        r9c@sXeZdZdZdddZddZdd d Zd d Zd dZe dddddZ ddZ dS)r ) orig_filenamerB date_time compress_type_compresslevelrbr3 create_systemrWextract_versionreserved flag_bitsvolume internal_attr external_attr header_offsetCRC compress_size file_size _raw_time _end_offsetNoNamerrrrrcCs||_|td}|dkr(|d|}tjdkrJtj|krJ|tjd}||_||_|ddkrjtdt |_ d|_ d|_ d|_ tjdkrd|_nd|_t|_t|_d|_d|_d|_d|_d|_d|_dS)Nr/rvz+ZIP does not support timestamps before 1980r-Zwin32r)rcfindchrossepreplacerBrd ValueErrorrrerfrbr3sysplatformrgDEFAULT_VERSIONrWrhrirjrkrlrmrs)selfrBrdZ null_byterrr__init__Ys2   zZipInfo.__init__cCsd|jj|jfg}|jtkr8|dt|j|j|jd?}|jd@}|rd|dt ||rv|d|| }|r|j r|d|j |r|j r|jtks|j |j kr|d|j |d d |S) Nz<%s filename=%r compress_type=%sr)rz filemode=%rz external_attr=%#xz file_size=%rz compress_size=%r>) __class__rrBrerr1compressor_namesgetrmstatfilemodeis_dirrqrpr2)rrChiloisdirrrr__repr__s0       zZipInfo.__repr__NcCs||j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}|jd @rfd}}}n|j}|j}|j}|j}d} |dkr|tkp|tk}|rd } |t| dt | d ||}|tks|tkr|st d d }d }t } |j t krtt| } n|j tkrtt| } t| |j|_t| |j|_|\} } ttt|j|j| |j |||||t| t| } | | |S)Nrrvr$rr!rrr&r rz|jd|jdBfYSXdS)Nasciiutf-8)rBencoderjUnicodeEncodeErrorrrrrrszZipInfo._encodeFilenameFlagscCs|j}tj}t|dkr|d|dd\}}|dt|krPtd||f|dkrp|dkrv|d|dd}nV|dkr|d |dd }n:|d kr|d |dd }n|dkrd}ntd||fd}|jdkrt||krtd|||_|d7}|jdkr6t||kr$td|||_|d7}|jdkrpt||krXtd|j}|||_|d7}||dd}q dS)Nr r,z"Corrupt extra field %04x (size=%d)rz|_|rd|_|jd O_n|j|_|S) Nrr"rvru;)rr;rrrwrr)) isinstancerzPathLikefspathrS_ISDIRst_modetime localtimest_mtimepathnormpath splitdriver{altseprmrqst_size) clsrBarcnamerstrmtimerdzinforrr from_files0       zZipInfo.from_filecCs|jddkS)NrwrBrrrrr'szZipInfo.is_dir)rtru)N)N) rrr __slots__rrrrr classmethodrrrrrrr >s , .2%cCs0tdD]"}|d@r"|d?dA}q|dL}q|S)Nrrl q[)range)crcr7rrr_gen_crc1s   rcsldddtdkr&ttttdatfddfdd|D] }|qLfd d }|S) NixV4igE#ixV4cs|d?||Ad@AS)Nrr)Zchr)crctablerrcrc32Ksz_ZipDecrypter..crc32cs<|d@d@ddd@d?dS)Nrrirrr)c)rkey0key1key2rr update_keysOs z"_ZipDecrypter..update_keyscsNt}|j}|D]4}dB}|||dAd?d@N}|||qt|S)Nrrrr) bytearrayr1bytes)rVrCr1rk)rrrr decrypterYs z _ZipDecrypter..decrypter) _crctabler^maprr)pwdprr)rrrrrrr _ZipDecrypterAs   rc@s,eZdZddZddZddZddZd S) LZMACompressorcCs d|_dSN)_comprrrrriszLZMACompressor.__init__cCsFtdtji}tjtjttj|gd|_tdddt ||S)Nidfiltersz|rtd|j|||j|_|jW5QRSQRXdS)Nz}Can't reposition in the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrr}rrDrZr)rrTwhencerrrrDs  z_SharedFile.seekrc CsX|jH|rtd|j|j|j|}|j|_|W5QRSQRXdS)NyCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)rrr}rrDrr>rZrnrVrrrr>s  z_SharedFile.readcCs$|jdk r |j}d|_||dSr)rr)rfileobjrrrr s z_SharedFile.closeN)r)r)rrrrrDr>r rrrrrs rc@s4eZdZddZddZddZddZd d Zd S) _TellablecCs||_d|_dSNr)r<rTrr<rrrr sz_Tellable.__init__cCs|j|}|j|7_|Sr)r<writerT)rrVrrrrrs z_Tellable.writecCs|jSr)rTrrrrrZsz_Tellable.tellcCs|jdSr)r<rrrrrrsz_Tellable.flushcCs|jdSr)r<r rrrrr sz_Tellable.closeN)rrrrrrZrr rrrrr s rcseZdZdZdZdZd'ddZdd Zd d Zd(d dZ d)ddZ ddZ d*ddZ ddZ ddZddZddZfddZd d!Zd+d#d$Zd%d&ZZS), ZipExtFilei@iiNFcCs(||_||_||_|j|_|j|_|j|_t |j|_ d|_ d|_ d|_ d|_||_|j|_t|drz|j|_td|_nd|_d|_z4|r||_|j|_|j|_|j|_d|_Wntk rYnXd|_|r$|j d@r|j!d?d@}n|jd?d@}|"}||kr$t#d |j$dS) NFr-rroTrrrzBad password for file %r)%_fileobj_pwd_close_fileobjre_compress_typerp_compress_leftrq_leftr _decompressor_eof _readbuffer_offsetnewlinesmoderBnamer@ro _expected_crcr _running_crc _seekablerrZ_orig_compress_start_orig_compress_size_orig_file_size_orig_start_crcAttributeError _decrypterrjrr_init_decrypterrrc)rrr!zipinforZ close_fileobjZ check_bytehrrrr+sF       zZipExtFile.__init__cCs4t|j|_|jd}|jd8_||dS)Nrr&)rrr+rr>r)rrrrrr,^s  zZipExtFile._init_decryptercCsvd|jj|jjfg}|jsX|d|j|jf|jtkrb|dt |j|jn |d|dd |S)N<%s.%sz name=%r mode=%rr [closed]rr) rrrclosedr1r"r!rrrrr2rrCrrrris   zZipExtFile.__repr__rcCsL|dkr>|jd|jd}|dkr>|j|j|}||_|Stj||S)Nr r)rrxrioBufferedIOBasereadline)rlimitr6linerrrr6wszZipExtFile.readlinercCsr|t|j|jkr\||}t||jkrJ||j|jd|_d|_n|jt|8_|j|j|jdS)Nri)r0rrr>)rrchunkrrrpeeks zZipExtFile.peekcCsdSNTrrrrrreadableszZipExtFile.readablecCs|dks|dkrH|j|jd}d|_d|_|jsD|||j7}q,|S||j}|t|jkrz|j|j|}||_|S|t|j}|j|jd}d|_d|_|dkr|js||}|t|kr||_||_||d|7}q||7}|t|8}q|SNrr-rrr_read1MAX_Nr0)rrbufendrVrrrr>s4   zZipExtFile.readcCs@|jdkrdSt||j|_|jr<|j|jkr)rrrArVrBrrrread1s>     zZipExtFile.read1cCs"|js|dkrdS|jtkrH|jj}|t|krR|||t|7}n ||}|jtkrj|jdk|_nx|jtkrt ||j }|j ||}|jj p|jdko|jj |_|jr||j 7}n |j |}|jj p|jdk|_|d|j}|jt|8_|jdkrd|_|||S)Nrr-T)rrrrZunconsumed_tailr0_read2rrr_ MIN_READ_SIZErrrrrDrrrrr?s4          zZipExtFile._read1cCsd|jdkrdSt||j}t||j}|j|}|jt|8_|sLt|jdk r`||}|Sr=) rr_rGminrr>r0EOFErrorr+rrrrrF s      zZipExtFile._read2cs&z|jr|jW5tXdSr)superr rrrrrrr szZipExtFile.closecCs|jSr)r%rrrrr"szZipExtFile.seekablercCs>|jstd|}|dkr&|}n.|dkr8||}n|dkrL|j|}ntd||jkrd|j}|dkrpd}||}||j}|dkr|t|jkr||_d}nf|dkr |j |j |j |_ |j|_|j|_d|_d|_t|j|_d|_|}|jdk r ||dkr6t|j|}||||8}q |S)N!underlying stream is not seekablerrrzCwhence must be os.SEEK_SET (0), os.SEEK_CUR (1), or os.SEEK_END (2)r-F)r%r4UnsupportedOperationrZr(r}rr0rrrDr&r)r$r'rrrrrrr+r,rH MAX_SEEK_READr>)rrTr Zcurr_posZnew_posZ read_offsetZ buff_offsetZread_lenrrrrD%sH            zZipExtFile.seekcCs0|jstd|j|jt|j|j}|S)NrL)r%r4rMr(rr0rr)rZfileposrrrrZUs zZipExtFile.tell)NF)r)r)r)r)rrrr@rGrNrr,rr6r:r<r>rDrEr?rFr rrDrZ __classcell__rrrKrrs( 3    ! %$  0rcs@eZdZddZeddZddZddZfd d ZZ S) _ZipWriteFilecCs8||_||_||_t|j|j|_d|_d|_d|_ dSr) _zinfo_zip64_zipfilerrerf _compressor _file_size_compress_size_crc)rzfrrrrrr]sz_ZipWriteFile.__init__cCs|jjSr)rSr<rrrrrgsz_ZipWriteFile._fileobjcCsdSr;rrrrrwritableksz_ZipWriteFile.writablecCsf|jrtdt|}|j|7_t||j|_|jrV|j|}|jt|7_|j ||S)NzI/O operation on closed file.) r1r}r0rUrrWrTrrVrr)rrVnbytesrrrrns  z_ZipWriteFile.writec sb|jr dSzFt|jrR|j}|jt|7_|j ||j|j _ n |j |j _ |j|j _|j |j _|j jd@r|jrdnd}|j t|t|j j|j j |j j|j |j_nn|js|j tkrtd|jtkrtd|j |j_|j |j j|j |j |j|j |jj|jj|j |j |jj|j j <W5d|j_XdS)NFrzd d!d"d#Zd?d$d%Zd@d&d'ZdAd(d)Zed*d+Zd,d-Zd.d/ZdBd0d1ZdCd2d3Zd4d5Zd6d7Z d8d9Z!d:d;Z"dS)Dr NrTrc CsP|dkrtdt|||_d|_d|_i|_g|_||_||_||_ d|_ d|_ ||_ t |tjrpt|}t |trd|_||_dddd dd d d }||}zt|||_Wqtk r||kr||}YqYqXqqnd |_||_t|dd|_d |_t|_d|_d|_z|dkr4|n|dkrd|_z|j |_!Wn2t"tfk rt#|j|_d|_!d|_Yn6Xz|j$|j!Wn t"tfk rd|_YnXnf|dkrz||j$|j!Wn6t%k r|j$ddd|_|j |_!YnXntdWn$|j} d|_|&| YnXdS)N)r`wxaz+ZipFile requires mode 'r', 'w', 'x', or 'a'Frr-r?w+bx+br+bwbZxb)r`rarbrcrfrdrerr"Tr`)rarbrcrz"Mode must be 'r', 'w', 'x', or 'a')'r}r _allowZip64 _didModifydebugr^r]rrr!r_comment_strict_timestampsrrzrrstr _filePassedrBr4rAr<r:getattr _fileRefCnt threadingRLockrr%r_RealGetContentsrZr\r*rrDr_fpclose) rrr!r allowZip64rrZmodeDictrr<rrrrs            zZipFile.__init__cCs|Srrrrrr __enter__szZipFile.__enter__cCs |dSrr )rtypevalue tracebackrrr__exit__!szZipFile.__exit__cCsd|jj|jjfg}|jdk rd|jr8|d|jn|jdk rR|d|j|d|jn |d|dd|S)Nr/z file=%rz filename=%rz mode=%rr0rr) rrrr<rnr1rBr!r2r2rrrr$s    zZipFile.__repr__c Cs|j}z t|}Wntk r.tdYnX|sr-z*ZipFile._RealGetContents..T)keyreverse);r<r9r:rrjprintrQrR _ECD_COMMENTrk _ECD_LOCATIONrLrKrIrEr\rDr>r4BytesIOsizeCentralDirr0rFr/structCentralDir _CD_SIGNATUREstringCentralDir_CD_FILENAME_LENGTHdecoder _CD_EXTRA_FIELD_LENGTHr3_CD_COMMENT_LENGTHrb_CD_LOCAL_HEADER_OFFSETrnrWrgrhrirjrerorprqMAX_EXTRACT_VERSIONrrkrlrmrrrdrr]r1r^rBsortedrs)rr<rUZsize_cdZ offset_cdconcatZinferredrVr}centdirrBflagsrbtdZ end_offsetrrrrrs2s                          zZipFile._RealGetContentscCsdd|jDS)NcSsg|] }|jqSrr).0rVrrr sz$ZipFile.namelist..r]rrrrnamelistszZipFile.namelistcCs|jSrrrrrrinfolistszZipFile.infolistcCsLtdd|d|jD]0}d|jdd}td|j||jf|dqdS)Nz%-46s %19s %12s)z File Namez Modified ZSizerz%d-%02d-%02d %02d:%02d:%02dr"z %-46s %s %12d)rr]rdrBrq)rrrdaterrrprintdirs zZipFile.printdirc Cs^d}|jD]N}z*||jd}||r,q W5QRXWq tk rV|jYSXq dS)Nir`)r]rArBr>r)rZ chunk_sizerfrrrtestzips  zZipFile.testzipcCs$|j|}|dkr td||S)Nz(There is no item named %r in the archive)r^rKeyError)rr"inforrrgetinfos  zZipFile.getinfocCs6|r t|ts tdt|j|r,||_nd|_dS)Npwd: expected bytes, got %s)rr TypeErrorrxrr)rrrrr setpasswords zZipFile.setpasswordcCs|jSr)rkrrrrrbszZipFile.commentcCs^t|tstdt|jt|tkrNddl}|jdtdd|dt}||_ d|_ dS)Nzcomment: expected bytes, got %srz3Archive comment is too long; truncating to %d bytesr stacklevelT) rrrrxrr0ZIP_MAX_COMMENTwarningswarnrkri)rrbrrrrrbs   c Cs.||d|}|W5QRSQRXdSNr`rAr>)rr"rr<rrrr>sz ZipFile.readF force_zip64c sJ|dkrtd|r0t|ts0tdt|j|rD|dkrDtdjsRtdt|trb|}n,|dkrt|}j|_ j |_ n |}|dkrj ||dSjrtdjd 7_tj|jjjfd d }zL|t}t|tkrtd tt|}|ttkr&td ||t}|trL||t|jd@r`t d|jd@rtt d|t!d@r|"d} n |"d} | |j#krtd|j#|f|j$dk r|%|j&|j$krtd|j#d|jd @} | r|sj'}|st(d|nd}t)||||dWS|*YnXdS)N>r`razopen() requires mode "r" or "w"rraz'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closedrr rcsjSr)rrrrrr~r-zZipFile.open..zTruncated file headerz Bad magic number for file header z$compressed patched data (flag bit 5)@zstrong encryption (flag bit 6)rrr|z/File name in directory %r and header %r differ.zOverlapped entries: z (possible zip bomb)z6File %r is encrypted, password required for extractionT)+r}rrrrxrr<r rrerrfr_open_to_writerrprrnrtrr>sizeFileHeaderr0rrFr/r _FH_SIGNATUREr_FH_FILENAME_LENGTH_FH_EXTRA_FIELD_LENGTHrjr_FH_GENERAL_PURPOSE_FLAG_BITSrrcrsrZrprrrr ) rr"r!rrrZzef_fileZfheaderfnameZ fname_strZ is_encryptedrrrrAs                z ZipFile.opencCs|r|jstd|jr tdt|ds0d|_d|_d|_d|_|jt krZ|jdO_|j sn|jdO_|j szd|_ |jo|p|jdt k}|j r|j |j|j |_||d |_|j ||d |_t|||S) NzHforce_zip64 is True, but allowZip64 was False when opening the ZIP file.zzCan't write to the ZIP file while there is another write handle open on it. Close the first handle before opening another.rqrrrg?T)rhr}rr@rqrprorjrerr%rmrr<rDr\rZrn _writecheckrirrrP)rrrrrrrr4s8     zZipFile._open_to_writecCs*|dkrt}n t|}||||Sr)rzgetcwdr_extract_member)rmemberrrrrrextract_s  zZipFile.extractcCsH|dkr|}|dkr"t}n t|}|D]}||||q0dSr)rrzrrr)rrmembersrr-rrr extractallls  zZipFile.extractallcCs^|j}|s(d}t|dt|}||_||}dd||D}|dd|D}|S)Nz:<>|"?*_css|]}|dVqdS).N)rstriprrbrrr sz1ZipFile._sanitize_windows_name..css|]}|r|VqdSrrrrrrrs)!_windows_illegal_name_trans_tablerm maketransr0 translatesplitr2)rrpathseptableZillegalrrr_sanitize_windows_name}s zZipFile._sanitize_windows_namec sLt|ts||}|jdtjj}tjjrB|tjjtjj}tj |d}dtjj tjj ftjj fdd| tjjD}tjjdkr||tjj}tj ||}tj|}tj|}|rtj|st||r tj|st||S|j||d(}t|d}t||W5QRXW5QRX|S) Nrwrrc3s|]}|kr|VqdSrrrZinvalid_path_partsrrrsz*ZipFile._extract_member..\)rrg)rr rrBr|rzrr{rrcurdirpardirr2rrrdirnameexistsmakedirsrrmkdirrAshutil copyfileobj)rrZ targetpathrrZ upperdirssourcetargetrrrrs2  &       zZipFile._extract_membercCs|j|jkr(ddl}|jd|jdd|jdkr:td|jsHtdt|j|j sd}t |j t krpd}n|j tkrd }n|jtkrd }|rt|d dS) NrzDuplicate name: %rrrrarbrcz&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closed Files countZFilesizez Zipfile size would require ZIP64 extensions)rBr^rrr!r}r<rrerhr0r]ZIP_FILECOUNT_LIMITrqrrnr )rrrrequires_zip64rrrrs,     zZipFile._writecheckc CsP|jstd|jrtdtj|||jd}|rDd|_d|_n0|dk rT||_ n|j |_ |dk rl||_ n|j |_ |r|j |jr|j|j|j|_|j tkr|jdO_||d|_|j|||j|j<|j|d|j|_W5QRXnCan't write to ZIP archive while an open writing handle existsrrrTFr?rai ) r<r}rr rrlrrprorerrfrrr%rDr\rZrnrrjrrir]r1r^rBrrrArr)rrBrrerrsrcdestrrrrsF      z ZipFile.writec Cst|tr|d}t|tsxt|ttddd}|j|_|j|_ |j ddkrpd|_ |j dO_ q|d|_ n|}|j st d |jrt d |dk r||_|dk r||_ t||_|j*|j|d d }||W5QRXW5QRXdS) Nrr")rBrdrrwiAr)rrz?Can't write to ZIP archive while an open writing handle exists.ra)r!)rrmrr rrrrerrfrBrmr<r}rr0rqrrAr)rZzinfo_or_arcnamerVrerrrrrrwritestrs:    zZipFile.writestrcCs |dSrrwrrrr__del__'szZipFile.__del__c Cs||jdkrdS|jrtdzB|jdkr\|jr\|j"|jrJ|j|j | W5QRXW5|j}d|_||XdS)NzvCan't close the ZIP file while there is an open writing handle on it. Close the writing handle before closing the zip.r) r<rr}rtr!rirr%rDr\_write_end_recordrrrrr +s z ZipFile.closecCs|jD]D}|j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}g}|jtksr|jtkr||j||jd }d }n |j}|j}|jtkr||jd }n|j}|j} d} |r t| d } t j d d t |ddt |f|| } t } |j tkr$tt| } n|j tkr:tt| } t| |j} t| |j} zZ|\} }t tt| |j| |j||j |||j||t | t | t |jd|j|j|}Wnltk rttt| |j| |j|j |j |||j||t |j!t | t |jd|j|j|ft"j#dYnX|j$%||j$%| |j$%| |j$%|jq|j$&}t |j}||j'}|j'}d}|t(krd}n|tkrd}n|tkrd}|r$|j)st*|dt t+t,ddddd|||| }|j$%|t t-t.d|d}|j$%|t/|d}t/|d }t/|d }t t0t1dd||||t |j2 }|j$%||j$%|j2|j3dkrt|j$4|j$5dS)Nrrvr$rr!rrr&r r)rr,QrrrzCentral directory offsetzCentral directory sizer,rrrc)6r]rdrqrrpr1rnr3r8rFrr0rrerr_rrrrhrWrrrrgrirorbrlrmDeprecationWarningrrjrBr~stderrr<rrZr\rrhr rJrKrGrHrHr]r\rkr!truncater)rrrrrr3rqrprnZ extra_datarrhrWrBrjrZpos2Z centDirCountZ centDirSizeZ centDirOffsetrZ zip64endrecZ zip64locrecrUrrrrAs $$                               zZipFile._write_end_recordcCs&|jd8_|js"|js"|dSNr)rprnr rrrrrts zZipFile._fpclose)N)N)r`N)F)NN)NNN)NNN)NN)#rrrr<rrrrvr{rrsrrrrrrr_rbsetterr>rArrrrrrrrrrr rrtrrrrr sR ZT      f +  * 2 )hc@s0eZdZdeddfddZd dd Zd d ZdS) r r`TrcCstj|||||d||_dS)N)r!rru)r r _optimize)rrr!rruoptimizerrrrs zPyZipFile.__init__rNcCst|}|rD||sD|jr@tj|r,dnd}td||fdStj|\}}tj|rhtj|d}tj|r|rd||f}n|}|jrtd|d|| |dd |\}} |jrtd | | || t t |} | d| D]} tj|| } tj| \} }tj| rRtjtj| dr|j| ||d q|d kr|r~|| s~|jrtd | q| | dd |\}} |jrtd | | || qn|jrtd|t t |D]} tj|| } tj| \} }|d kr|r,|| s,|jrtd | q| | dd |\}} |jrVtd | | || qnP|d dd krtd| |dd |\}} |jrtd| | || dS)Nrrz%s %r skipped by filterfuncz __init__.py%s/%szAdding package inasrZAdding) filterfunc.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"z Adding file)rzrrjrrrrr2isfile _get_codenamerrlistdirremovesplitextwritepyr)rpathnamebasenamerZlabeldirr"ZinitnamerrZdirlistrBrrootZextrrrrs            zPyZipFile.writepyc sdfdd }|d}|d}tjj|dd}tjj|dd}tjj|d d}jdkr\tj|rt|jt|jkr|} } ntj|rt|jt|jkr|} |} ntj|rt|jt|jkr|} |} nvtj|rt|jt|jkr|} |} nD||rRt j j d kr4|} nt j j dkrH|} n|} |} n|} } njd krr|} |} n<|} jdkr|} n&jd kr|} nd j} t | tj| rt| jt|jks||jd s|} } tj| d} |rd || f} | | fS)Nrc sfddl}jrtd|z|j|d|dWn4|jk r`}zt|jWYdSd}~XYnXdS)NrZ CompilingT)doraiserF) py_compilerjrcompilePyCompileErrormsg)rrrerrrrr_compiles  z)PyZipFile._get_codename.._compilerz.pycr) optimizationrrrz"invalid value for 'optimize': {!r})rr)r) importlibutilcache_from_sourcerrzrrrrr~rrformatr}r) rrrrZfile_pyZfile_pycZ pycache_opt0Z pycache_opt1Z pycache_opt2rrrZ archivenamerrrr sj             zPyZipFile._get_codename)rN)rrrrrrrrrrrr s   RcCstt|ddSr) itertoolsislice _ancestry)rrrr_parents^sr ccs2|tj}|tjr.|Vt|\}}q dSr)r posixpathr{r)rtailrrrrqs  rcCstt|j|Sr)r filterfalseset __contains__)ZminuendZ subtrahendrrr _differencesrcsDeZdZeddZfddZddZddZed d Z Z S) CompleteDirscCs.tjtt|}dd|D}tt||S)Ncss|]}|tjVqdSr)r r{)rrrrrrsz-CompleteDirs._implied_dirs..)rchain from_iterablerr _deduper)namesparentsZas_dirsrrr _implied_dirsszCompleteDirs._implied_dirscs tt|}|t||Sr)rJrrr^r)rrrKrrrszCompleteDirs.namelistcCs t|Sr)r rrrrr _name_setszCompleteDirs._name_setcCs,|}|d}||ko||k}|r(|S|SNrw)r)rr"rrZ dir_matchrrr resolve_dirszCompleteDirs.resolve_dircCsNt|tr|St|ts ||Sd|jkr.t}||}t|t||Sr)rrr r!__new__varsupdate)rrresrrrmakes    zCompleteDirs.make) rrr staticmethodrrrrrrrOrrrKrrs   rcs(eZdZfddZfddZZS) FastLookupc s:tt|jW5QRSQRXtt||_|jSr) contextlibsuppressr*Z_FastLookup__namesrJr rrrKrrrs zFastLookup.namelistc s:tt|jW5QRSQRXtt||_|jSr)r!r"r*Z_FastLookup__lookuprJr rrrKrrrs zFastLookup._name_set)rrrrrrOrrrKrr s r c@seZdZdZd"ddZeddZeddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZeZedd Zd!S)#rz>{self.__class__.__name__}({self.root.filename!r}, {self.at!r})rcCst||_||_dSr)r rrat)rrr#rrrr s z Path.__init__cCst|jj|jSr) functoolspartialrrAr#rrrrrA# sz Path.opencCst|jdSr)r rr#rrrrrr"' sz Path.namec Os6|$}tj|f||W5QRSQRXdSr)rAr4 TextIOWrapperr>)rargskwargsstrmrrr read_text+ s zPath.read_textc Cs(|}|W5QRSQRXdSrr)rr)rrr read_bytes/ s zPath.read_bytescCst|jd|jdkSr)r rr#r)rrrrr _is_child3 szPath._is_childcCs t|j|Sr)rr)rr#rrr_next6 sz Path._nextcCs|j p|jdSr)r#endswithrrrrr9 sz Path.is_dircCs | Sr)rrrrris_file< sz Path.is_filecCs|j|jkSr)r#rrrrrrr? sz Path.existscCs.|stdt|j|j}t|j|S)NzCan't listdir a file)rr}rr-rrfilterr,)rZsubsrrriterdirB sz Path.iterdircCst|jj|jSr)r r2rrBr#rrrr__str__H sz Path.__str__cCs|jj|dS)Nr) _Path__reprrrrrrrK sz Path.__repr__cCs t|j|}||j|Sr)r r2r#r-rr)raddnextrrrjoinpathN sz Path.joinpathcCs(t|jd}|r|d7}||Sr)r rr#rr-)rZ parent_atrrrparentT sz Path.parentN)r)rrrr3rr_rAr"r*r+r,r-rr/rr1r2rr6 __truediv__r7rrrrrs(A   c sddl}d}|j|d}|jdd}|jdddd d |jd d d ddd|jdddddd|jddddd ||}|jdk r|j}t|d}|}W5QRX|rtd |tdn|j dk r|j }t|d}| W5QRXn|j dk r,|j \}}t|d}| |W5QRXn|jdk r|jd} |j} fddt| d\}| D]P} tj| } | stjtj| } | dtjtjfkrd} || | qfW5QRXdS) Nrz3A simple command-line interface for zipfile module.) descriptionT)Zrequiredz-lz--list zShow listing of a zipfile)metavarhelpz-ez --extractr)r:z zExtract zipfile into target dir)nargsr;r<z-cz--create+)zzzCreate zipfile from sourcesz-tz--testzTest if a zipfile is validr`z.The following enclosed file is corrupted: {!r}z Done testingcsptj|r|||tnPtj|rl|r8|||tt|D]$}|tj||tj||qFdSr) rzrrrrrrrr2)rXrzippathZnmaddToZiprrrA s    zmain..addToZiprar)argparseArgumentParserZadd_mutually_exclusive_group add_argument parse_argsZtestr rrrr^rrrZcreatepoprzrrrrr) r'rBr9parsergrouprrXZbadfilerZzip_namefilesrr?rr@rmain\ s\                   rJ__main__)N)N)Zbinasciir$importlib.utilrr4rrzr rrrFr~rqrr!rr ImportErrorrr__all__ Exceptionrr rrrrrrrrrrrrrrr]r\rr[rLrMrNrOrPrQrRrarrrrrrZ_CD_CREATE_VERSIONZ_CD_CREATE_SYSTEMZ_CD_EXTRACT_VERSIONZ_CD_EXTRACT_SYSTEMZ _CD_FLAG_BITSZ_CD_COMPRESS_TYPEZ_CD_TIMEZ_CD_DATEZ_CD_CRCZ_CD_COMPRESSED_SIZEZ_CD_UNCOMPRESSED_SIZErrrZ_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESrrrrrZ_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMrZ_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZErrrGrHrErJrKrIZ_CD64_SIGNATUREZ_CD64_DIRECTORY_RECSIZEZ_CD64_CREATE_VERSIONZ_CD64_EXTRACT_VERSIONZ_CD64_DISK_NUMBERZ_CD64_DISK_NUMBER_STARTZ_CD64_NUMBER_ENTRIES_THIS_DISKZ_CD64_NUMBER_ENTRIES_TOTALZ_CD64_DIRECTORY_SIZEZ_CD64_OFFSET_START_CENTDIRr[ZStructr.r8r=r rXr9objectr rrrrrrrrrrrr5rrPr r r rdictfromkeysrrrr rrJrrrrrsj             +=s& &AN /2 =