3 \)2@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z y ddl Z Wne k rxddl Z YnXyddlZejZWne k rdZe jZYnXy ddlZWne k rdZYnXy ddlZWne k rdZYnXdddddddd d d d d g ZGdddeZGdd d eZeZZdeZdgZdiZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%e j&e$Z'dZ(dZ)dZ*dZ+dZ,dZ-d Z.d!Z/dZ0d"Z1d#Z2d$Z3e j&e2Z4dZ5dZ6dZ7dZ8dZ9dZ:d Z;d!Zd%Z?d&Z@dZAd'ZBdZCd(ZDdZEd)ZFd*ZGd+ZHd,ZIe j&eHZJdZKdZLdZMdZNdZOdZPd ZQd!ZRdZSd"ZTd%ZUd&ZVd-ZWd.ZXe j&eWZYd/ZZd0Z[e j&eZZ\dZ]dZ^dZ_dZ`dZadZbd Zcd!ZddZed"Zfd1Zge jhd2Zid3d4Zjd5d6Zkd7d Zld8d9Zmd:d;ZnGdd>ZqGd?d@d@ZrGdAdBdBZsdCdDdEdEdEdEdFdGdHdIdFdJdKdLdMdNdOdPZtdQdRZudSdTZvdUdVZwGdWdXdXZxGdYdZdZZyGd[d\d\ejzZ{Gd]d^d^ejzZ|Gd_d d Z}Gd`d d e}Z~djdadbZedckredS)kN BadZipFile BadZipfileerror ZIP_STORED ZIP_DEFLATED ZIP_BZIP2ZIP_LZMA is_zipfileZipInfoZipFile PyZipFile LargeZipFilec@s eZdZdS)rN)__name__ __module__ __qualname__rr/usr/lib64/python3.6/zipfile.pyr+sc@s eZdZdS)r N)rrrrrrrr /s -.?s<4s4H2LHsPK z<4s4B4HL2L5H2LsPK z <4s2B4HL2L2HsPKz<4sLQLsPKz <4sQ2H2L4QsPKiPKz        r6c@sReZdZd'Zd)ddZddZd*ddZdd Zd!d"Ze d+d#d$Z d%d&Z dS),r orig_filenamer> date_time compress_typer^r0 create_systemrSextract_versionreserved flag_bitsvolume internal_attr external_attr header_offsetCRC compress_size file_size _raw_timeNoNamerrcCs||_|jtd}|dkr(|d|}tjdkrJtj|krJ|jtjd}||_||_|ddkrjtdt |_ d|_ d|_ t jdkrd|_nd|_t|_t|_d|_d|_d|_d|_d|_dS)Nr/iz+ZIP does not support timestamps before 1980r*Zwin32r)r_findchrossepreplacer>r` ValueErrorrrar^r0sysplatformrbDEFAULT_VERSIONrSrcrdrerfrgrh)selfr>r`Z null_byterrr__init__Ws.   zZipInfo.__init__cCsd|jj|jfg}|jtkr8|jdtj|j|j|jd?}|jd@}|rd|jdt j ||rv|jd||j }| s|j r|jd|j | s|j r|jtks|j |j kr|jd|j |jd d j|S) Nz<%s filename=%rz compress_type=%sriz filemode=%rz external_attr=%#xz file_size=%rz compress_size=%r>) __class__rr>rarr.compressor_namesgetrhstatfilemodeis_dirrlrkr/)rzr?hiloisdirrrr__repr__s(         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 } |tj| dtj | d ||}|tks|tkr|st d d }d }t } |j t krtt| } n|j tkrtt| } t| |j|_t| |j|_|j\} } tjtt|j|j| |j |||||t| t| } | | |S)Nrir#rr rrr%rrzreheaderrrr FileHeadersF$$        zZipInfo.FileHeaderc Cs>y|jjd|jfStk r8|jjd|jdBfSXdS)Nasciizutf-8i)r>encodereUnicodeEncodeError)rzrrrrszZipInfo._encodeFilenameFlagscCs(|j}tj}xt|dkr"|d|dd\}}|dkr|dkrZ|d|dd}nV|dkrv|d|dd }n:|d kr|d |dd }n|d krf}ntd||fd }|jdkr|||_|d7}|jdkr|||_|d7}|jdkr|j}|||_|d7}||dd}qWdS)Nrz|_|rd|_|jdO_n|j|_|S)Nrr!rrpir) isinstancersPathLikefspathrS_ISDIRst_modetime localtimest_mtimepathnormpath splitdrivertaltseprhrlst_size)clsr>arcnamestrmtimer`zinforrr from_files(       zZipInfo.from_filecCs|jddkS)Nrrp)r>)rzrrrrszZipInfo.is_dir)r_r>r`rar^r0rbrSrcrdrerfrgrhrirjrkrlrmrorrrrr)rnr)N)N) rrr __slots__r{rrrr classmethodrrrrrrr >s6 * .$ !c@s8eZdZddZdZddZddZdd Zd d ZdS) _ZipDecryptercCshd}dgd}xTtdD]H}|}x6tdD]*}|d@rH|d?d@|A}q*|d?d@}q*W|||<qW|S)Nl q[rrri)range)Zpolytabler3crcr4rrr_GenerateCRCTable#s  z_ZipDecrypter._GenerateCRCTableNcCs|d?d@|j||Ad@AS)Nri)crctable)rzZchrrrr_crc327sz_ZipDecrypter._crc32cCsBtjdkrtjt_d|_d|_d|_x|D]}|j|q,WdS)NixV4igE#ixV4)rrrkey0key1key2 _UpdateKeys)rzpwdprrrr{;s   z_ZipDecrypter.__init__cCsX|j||j|_|j|jd@d@|_|jddd@|_|j|jd?d@|j|_dS)Nrlirr)rrrr)rzcrrrrDsz_ZipDecrypter._UpdateKeyscCs0|jdB}|||dAd?d@A}|j||S)Nrrrr)rr)rzrkrrr__call__Js  z_ZipDecrypter.__call__) rrrrrrr{rrrrrrrs   rc@s,eZdZddZddZddZddZd S) LZMACompressorcCs d|_dS)N)_comp)rzrrrr{UszLZMACompressor.__init__cCsFtjdtji}tjtjtjtj|gd|_tjdddt ||S)Nid)filtersznamer<rj _expected_crccrc32 _running_crc)rzrrzipinfoZ decrypterZ close_fileobjrrrr{s&    zZipExtFile.__init__cCsvd|jj|jjfg}|jsX|jd|j|jf|jtkrb|jdt j |j|jn |jd|jddj |S)Nz<%s.%sz name=%r mode=%rz compress_type=%sz [closed]r|r}) r~rrclosedr.rrrrrrr/)rzr?rrrr#s   zZipExtFile.__repr__cCsL|dkr>|jjd|jd}|dkr>|j|j|}||_|Stjj||S)Nr r)rrqrioBufferedIOBasereadline)rzlimitr3linerrrr1szZipExtFile.readlinecCsr|t|j|jkr\|j|}t||jkrJ||j|jd|_d|_n|jt|8_|j|j|jdS)Nri)r-rrr:)rzrchunkrrrpeekAs zZipExtFile.peekcCsdS)NTr)rzrrrreadableNszZipExtFile.readablecCs |dks|dkrL|j|jd}d|_d|_x|jsF||j|j7}q.W|S||j}|t|jkr~|j|j|}||_|S|t|j}|j|jd}d|_d|_x^|dko|j r|j|}|t|kr||_||_||d|7}P||7}|t|8}qW|S)Nrr*)rrr_read1MAX_Nr-)rzrbufendrRrrrr:Qs4   zZipExtFile.readcCs@|jdkrdSt||j|_|jr<|j|jkr      zZipExtFile.read1cCs"|js|dkrdS|jtkrH|jj}|t|krR||j|t|7}n |j|}|jtkrj|jdk|_nx|jtkrt ||j }|jj ||}|jj p|jdko|jj |_|jr||jj 7}n |jj |}|jj p|jdk|_|d|j}|jt|8_|jdkrd|_|j||S)Nrr*T)rrrrZunconsumed_tailr-_read2rrr[ MIN_READ_SIZErrrrr)rzrrRrrrrs2           zZipExtFile._read1cCsj|jdkrdSt||j}t||j}|jj|}|jt|8_|sLt|jdk rft t |j|}|S)Nrr*) rr[rminrr:r-EOFErrorrbytesmap)rzrrRrrrrs     zZipExtFile._read2c s&z|jr|jjWdtjXdS)N)rrrsuper)rz)r~rrrszZipExtFile.closei@)NFr)r)rr)r)rrrrrr{rrrrr:rrrrr __classcell__rr)r~rrs    ! %$rcs@eZdZddZeddZddZddZfd d ZZ S) _ZipWriteFilecCs4||_||_||_t|j|_d|_d|_d|_dS)Nr) _zinfo_zip64_zipfilerra _compressor _file_size_compress_size_crc)rzzfrrrrrr{s z_ZipWriteFile.__init__cCs|jjS)N)r(r8)rzrrrrsz_ZipWriteFile._fileobjcCsdS)NTr)rzrrrwritablesz_ZipWriteFile.writablecCsf|jrtdt|}|j|7_t||j|_|jrV|jj|}|jt|7_|j j ||S)NzI/O operation on closed file.) r rvr-r*rr,r)rr+rr)rzrRnbytesrrrrs  z_ZipWriteFile.writecsX|jr dStj|jrN|jj}|jt|7_|jj||j|j _ n |j |j _ |j |j _ |j |j _|j jd@r|jrdnd}|jjtj|t|j j |j j |j j|jj|j_nn|js|j tkrtd|jtkrtd|jj|j_|jj|j j|jj|j j|j|jj|jjd|j_|jjj|j |j |jj|j j <dS)Nrz)rzrr)r~rrrs8          z_ZipWriteFile.close) rrrr{propertyrr.rrr$rr)r~rr%s   r%c@seZdZdZdZdedfddZddZdd Zd d Z d d Z ddZ ddZ d;ddZ ddZddZddZeddZejddZdd#d$Zd?d%d&Zd@d'd(Zed)d*Zd+d,Zd-d.ZdAd/d0ZdBd1d2Zd3d4Zd5d6Z d7d8Z!d9d:Z"dS)Cr NrTcCsF|dkrtdt|||_d|_d|_i|_g|_||_||_d|_ d|_ t |t j rdt j|}t |trd|_||_d d d d d d dd}||}x^ytj|||_Wn(tk r||kr||}wYnXPqWnd|_||_t|dd|_d|_tj|_d|_d|_y|dkr*|jn|dkrd|_y|jj|_Wn2t tfk r|t!|j|_d|_d|_Yn6Xy|jj"|jWn t tfk rd|_YnXnf|dkry|j|jj"|jWn6t#k r|jj"ddd|_|jj|_YnXntdWn$|j}d|_|j$|YnXdS)Nr5wxaz+ZipFile requires mode 'r', 'w', 'x', or 'a'Frr*r;zw+bzx+bzr+bwbZxb)r5r6r7r8zr+bzw+bzx+brrTrz"Mode must be 'r', 'w', 'x', or 'a')r5r6r7r8)r6r7)%rvr _allowZip64 _didModifydebugr3r2rrr_commentrrsrrstr _filePassedr>r r=r8r7getattr _fileRefCnt threadingRLockr _seekabler_RealGetContentsrVr1AttributeErrorrr@r_fpclose)rzrrr allowZip64ZmodeDictrr8rrrr{;s             zZipFile.__init__cCs|S)Nr)rzrrr __enter__szZipFile.__enter__cCs |jdS)N)r)rztypevalue tracebackrrr__exit__szZipFile.__exit__cCsd|jj|jjfg}|jdk rd|jr8|jd|jn|jdk rR|jd|j|jd|jn |jd|jddj|S)Nz<%s.%sz file=%rz filename=%rz mode=%rz [closed]r|r}) r~rrr8r?r.r>rr/)rzr?rrrrs    zZipFile.__repr__cCs|j}y t|}Wntk r.tdYnX|s)rzr8rQZsize_cdZ offset_cdconcatZinferredrRrOcentdirr>flagsr7tdrrrrEsp                4       zZipFile._RealGetContentscCsdd|jDS)NcSsg|] }|jqSr)r>).0rRrrr sz$ZipFile.namelist..)r2)rzrrrnamelistszZipFile.namelistcCs|jS)N)r2)rzrrrinfolistszZipFile.infolistcCsPtdd |dx:|jD]0}d|jdd}td|j||jf|dqWdS) Nz%-46s %19s %12s File Name Modified Size)rz%d-%02d-%02d %02d:%02d:%02dr!z %-46s %s %12d)rgrhri)rPr2r`r>rl)rzrrZdaterrrprintdirs  zZipFile.printdircCs^d}xT|jD]J}y.|j|jd}x|j|r0q$WWdQRXWq tk rT|jSXq WdS)Nrrr5i)r2r=r>r:r)rzZ chunk_sizerfrrrtestzips  zZipFile.testzipcCs$|jj|}|dkr td||S)Nz(There is no item named %r in the archive)r3rKeyError)rzrinforrrgetinfos   zZipFile.getinfocCs8|r"t|t r"tdt|j|r.||_nd|_dS)Nzpwd: expected bytes, got %s)rr  TypeErrorrJrr)rzrrrr setpasswords zZipFile.setpasswordcCs|jS)N)r=)rzrrrr^%szZipFile.commentcCs^t|tstdt|jt|tkrNddl}|jdtdd|dt}||_ d|_ dS)Nzcomment: expected bytes, got %srz3Archive comment is too long; truncating to %d bytesr) stacklevelT) rr rprJrr-ZIP_MAX_COMMENTwarningswarnr=r;)rzr^rtrrrr^*s    c Cs"|j|d| }|jSQRXdS)Nr5)r=r:)rzrrr8rrrr:7sz ZipFile.readF) force_zip64c sv|dkrtd|r2t|t r2tdt|j|rF|dkrFtdjsTtdt|trd|}n$|dkr~t|}j|_ n j |}|dkrj ||dSj rtdj d 7_ tj|jjjfd d }y~|jt}t|tkrtd tjt|}|ttkr td |j|t}|trF|j|t|jd@rZtd|jd@rntd|jd@r|jd} n |jd} | |j krtd|j |f|jd @} d} | rL|sΈj!}|st"d|t#|} |jd} t$t%| | dd} |jd@r$|j&d?d@}n|j'd?d@}| d|krLt"d|t(|||| dS|j)YnXdS) Nr5r6zopen() requires mode "r" or "w"zpwd: expected bytes, got %sz'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closed)rvzyCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.rcsjS)N)rr)rzrrlszZipFile.open..zTruncated file headerz Bad magic number for file header z$compressed patched data (flag bit 5)@zstrong encryption (flag bit 6)izutf-8rNz/File name in directory %r and header %r differ.z6File %r is encrypted, password required for extractionrrrrrr%zBad password for file %rT>r5r6)*rvrr rprJrr8r rraro_open_to_writerrArrirGrr:sizeFileHeaderr-rrBr,r _FH_SIGNATUREr_FH_FILENAME_LENGTH_FH_EXTRA_FIELD_LENGTHrerrYr_rrrrZr!rmrjrr)rzrrrrvrZzef_fileZfheaderfnameZ fname_strZ is_encryptedZzdrhZ check_byter)rzrr=<s~                  z ZipFile.opencCs|r|j rtd|jr"tdt|ds2d|_d|_d|_d|_|jt kr\|jdO_|j sp|jdO_|j s|d |_ |jo|p|jd t k}|j r|j j|j|j j|_|j|d |_|j j|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.rlrrrirg?Ti)r:rvrr<rlrkrjrerarrDrhrr8r@r1rVri _writecheckr;rrr%)rzrrvrrrrrzs4     zZipFile._open_to_writecCs*|dkrtj}n tj|}|j|||S)N)rsgetcwdr_extract_member)rzmemberrrrrrextracts  zZipFile.extractcCsL|dkr|j}|dkr"tj}n tj|}x|D]}|j|||q2WdS)N)rersrrr)rzrmembersrr rrr extractalls   zZipFile.extractallcCs^|j}|s(d}tj|dt|}||_|j|}dd|j|D}|jdd|D}|S)Nz:<>|"?*_css|]}|jdVqdS).N)rstrip)rcr7rrr sz1ZipFile._sanitize_windows_name..css|]}|r|VqdS)Nr)rcr7rrrrs)!_windows_illegal_name_trans_tabler> maketransr- translatesplitr/)rrpathseprZillegalrrr_sanitize_windows_names zZipFile._sanitize_windows_namecsNt|ts|j|}|jjdtjj}tjjrB|jtjjtjj}tjj |d}dtjj tjj ftjjj fdd|j tjjD}tjjdkr|j|tjj}tjj ||}tjj|}tjj|}|rtjj| rtj||jrtjj|s tj||S|j||d(}t|d}tj||WdQRXWdQRX|S) Nrprr}c3s|]}|kr|VqdS)Nr)rcr7)invalid_path_partsrrrsz*ZipFile._extract_member..\)rr9)rr ror>rursrrtrrcurdirpardirr/rrrdirnameexistsmakedirsrrmkdirr=shutil copyfileobj)rzrZ targetpathrrZ upperdirssourcetargetr)rrrs.  &        zZipFile._extract_membercCs|j|jkr(ddl}|jd|jdd|jdkr:td|jsHtd t|j|j sd}t |j t krpd }n|j tkrd }n|jtkrd }|rt|d dS)NrzDuplicate name: %rr)rrr6r7r8z&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closedz Files countZFilesizez Zipfile sizez would require ZIP64 extensions)r6r7r8)r>r3rtrurrvr8rrar:r-r2ZIP_FILECOUNT_LIMITrlrrir )rzrrtrequires_zip64rrrr/s(     zZipFile._writecheckcCs0|jstd|jrtdtj||}|jr>d|_d|_n|dk rN||_n|j |_|jr|j |j rz|jj |j |jj|_|jtkr|jdO_|j|d|_|jj|||j|j<|jj|jd|jj|_ WdQRXnCan't write to ZIP archive while an open writing handle existsrrTFr;r6iri )r8rvrr rrrkrjrarrrDr@r1rVrirrerr;r2r.r3r>rrr=rr)rzr>rrarsrcdestrrrrFs8      z ZipFile.writecCst|tr|jd}t|tspt|tjtjddd}|j|_|jd dkrhd|_ |j dO_ qtd|_ n|}|j st d |j rt d |dk r||_t ||_|j*|j|d d }|j|WdQRXWdQRXdS)Nzutf-8r!)r>r`rrpiAriz7Attempt to write to ZIP archive that was already closedz?Can't write to ZIP archive while an open writing handle exists.r6)rriAi)rr>rr rrrrar>rhr8rvrr-rlrr=r)rzZzinfo_or_arcnamerRrarrrrrwritestrps.    zZipFile.writestrcCs |jdS)N)r)rzrrr__del__szZipFile.__del__cCs||jdkrdS|jrtdzB|jdkr\|jr\|j"|jrJ|jj|j|j WdQRXWd|j}d|_|j |XdS)NzvCan't close the ZIP file while there is an open writing handle on it. Close the writing handle before closing the zip.r6r7r8)r6r7r8) r8rrvrr;rrDr@r1_write_end_recordrG)rzr8rrrrs z ZipFile.closecCsrxP|jD]D}|j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}g}|jtksv|jtkr|j|j|j|jd }d }n |j}|j}|jtkr|j|jd }n|j}|j} d} |rt| d} t j d d t |dd t |f|| } t } |j tkr(tt| } n|j tkr>tt| } t| |j} t| |j} yZ|j\} }t j 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%| |j$j%| |j$j%|jq W|j$j&}t |j}||j'}|j'}d}|t(krd}n|tkrd}n|tkrd}|r*|j)st*|dt j t+t,ddddd|||| }|j$j%|t j t-t.d|d}|j$j%|t/|d}t/|d }t/|d }t j t0t1dd||||t |j2 }|j$j%||j$j%|j2|j$j3dS)Nrir#rr rrr%rlzrwstderrr8rrVr1rr:r rFrGrCrDrrYrXr=r)rzrrrrr0rlrkriZ extra_datarrcrSr>rer_Zpos2Z centDirCountZ centDirSizeZ centDirOffsetrZ zip64endrecZ zip64locrecrQrrrrs$$                                     zZipFile._write_end_recordcCs*|jd8_|j r&|j r&|jdS)Nr)rAr?r)rzr8rrrrGszZipFile._fpclose)N)N)r5N)F)NN)NNN)NN)N)#rrrr8rrr{rIrMrrErerfrjrlrorqr4r^setterr:r=rzrrrrrrrrrrrrGrrrrr 's:WN     q +  * * $fc@s0eZdZdedd fddZd dd Zd d ZdS)r r5TrcCstj|||||d||_dS)N)rrrH)r r{ _optimize)rzrrrrHoptimizerrrr{s zPyZipFile.__init__r}NcCstj|}|rF|| rF|jrBtjj|r.dnd}td||fdStjj|\}}tjj|rntjj|d}tjj|r|rd||f}n|}|jrtd|d||j |dd|\}} |jrtd | |j || tj |} | j dx| D]} tjj|| } tjj | \} }tjj| rRtjjtjj| dr|j| ||d q|d kr|r||  r|jrtd | q|j | dd|\}} |jrtd | |j || qWn|jrtd|xtj |D]} tjj|| } tjj | \} }|d kr|r0||  r0|jrtd | q|j | dd|\}} |jrZtd | |j || qWnP|ddd krtd|j |dd|\}} |jrtd| |j || dS)Nrrz%s %r skipped by filterfuncz __init__.pyz%s/%szAdding package inasrrZAdding) filterfuncz.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"z Adding filerrrr)rsrr<rrrPrr/isfile _get_codenamerlistdirremovesplitextwritepyr)rzpathnamebasenamerZlabeldirrZinitnamerrZdirlistr>rrootZextrrrr$sx                zPyZipFile.writepyc sdfdd }|d}|d}tjj|dd}tjj|dd}tjj|dd}jdkr\tjj|rtj|jtj|jkr|} } ntjj|rtj|jtj|jkr|} |} ntjj|rtj|jtj|jkr|} |} nvtjj|rtj|jtj|jkr|} |} nD||rRt j j d kr4|} nt j j dkrH|} n|} |} n|} } njd krr|} |} n<|} jdkr|} n&jdkr|} nd j j} t | tjj| otj| jtj|jks||jd s|} } tjj| d} |rd || f} | | fS)Nrcs^ddl}jrtd|y|j|d|dWn,|jk rX}zt|jdSd}~XnXdS)NrZ CompilingT)doraiserF) py_compiler<rPcompilePyCompileErrormsg)rrrerr)rzrr_compile}s  z)PyZipFile._get_codename.._compilez.pyz.pycr}) optimizationrrz"invalid value for 'optimize': {!r})rz%s/%sr)rr) importlibutilcache_from_sourcerrsrrrrrwr`rformatrvr) rzrrrZfile_pyZfile_pycZ pycache_opt0Z pycache_opt1Z pycache_opt2rrrZ archivenamer)rzrrvs`             zPyZipFile._get_codenamer)r}N)rrrrr{rrrrrrr s Rc sddl}|jd}|dkr(tjdd}| s:|ddkrLt|tjd|ddkrt|dkrvt|tjdt|dd }|jWdQRXn||ddkr t|dkrt|tjdt|dd }|j }WdQRX|rtd j |td n|ddkrbt|d kr8t|tjdt|dd }|j |dWdQRXn|ddkrt|d krt|tjdfd dt|ddh}x`|ddD]P}t j j|}|st j jt j j|}|dt jt jfkrd}|||qWWdQRXdS)NraE Usage: zipfile.py -l zipfile.zip # Show listing of a zipfile zipfile.py -t zipfile.zip # Test if a zipfile is valid zipfile.py -e zipfile.zip target # Extract zipfile into target dir zipfile.py -c zipfile.zip src ... # Create zipfile from sources r-l-c-e-trr5z.The following enclosed file is corrupted: {!r}z Done testingrcsptjj|r|j||tnPtjj|rl|r8|j||x2tj|D]$}|tjj||tjj||qDWdS)N)rsrrrrrrr/)r-rzippathZnm)addToZiprrrs   zmain..addToZipr6r})rrrr)textwrapdedentrwargvrPexitr-r rjrlrrrsrrrrr)argsrZUSAGEr-Zbadfilerrr)rrmainsT           r__main__liiiii)N)r rsreimportlib.utilrrwrrrrBZbinasciirB ImportErrorZdummy_threadingrrrr__all__ Exceptionrr rrrrrsrrrrryrrrr]rYrXrrWrHrIrJrKrLrMrNr]rQrRrUrWrTrVZ_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_SIZErXrZr[Z_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESr\rrr{r|Z_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMZ_FH_GENERAL_PURPOSE_FLAG_BITSZ_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZEr}r~rCrDrArFrGrEZ_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_CENTDIRr0ZStructr+r5r9r rTr6objectr rrrrrrrrrrrr%r r rrrrrrs>              +=Y= fJy/ B