zfc @s[dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z yddl Z e j Z Wn ek reZ ej Z nXddddddd d d g Zdefd YZd efd YZeZdd>dZdd>dZdd>dZdZdZdZdZejeZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)eje(Z*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7d!Z8d"Z9d#Z:dZ;d$Z<d%Z=d&Z>d'Z?eje>Z@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJdZKdZLd(ZMd)ZNejeMZOd*ZPd+ZQejePZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\d,Z]ej^d-Z_d.Z`d/Zad0Zbd1Zcd2Zddeefd3YZfd4fd5YZgid6d6d7d6d8d6d8d6d8d6d8d6d9d6d:d6d;d6d<d6d9d6d=d 6d>d"6d?d%6d@dA6dBdC6dDdE6ZhdFe jifdGYZjd eefdHYZkd ekfdIYZledJZmendKkrWemndS(Ls Read and write ZIP files. iNt BadZipfileterrort ZIP_STOREDt ZIP_DEFLATEDt is_zipfiletZipInfotZipFilet PyZipFilet LargeZipFilecBseZRS((t__name__t __module__(((s/usr/lib64/python2.7/zipfile.pyRscBseZdZRS(su Raised when writing a zipfile, the zipfile requires ZIP64 extensions and those extensions are disabled. (R R t__doc__(((s/usr/lib64/python2.7/zipfile.pyRsiiiiis<4s4H2LHsPKiiiiiii s<4s4B4HL2L5H2LsPKi i i i iiiis <4s2B4HL2L2HsPKs<4sLQLsPKs <4sQ2H2L4QsPKiPKs         cBsJeZdZdZdddZddZdZdZdZ RS( s>Class with attributes describing each file in the ZIP archive.t orig_filenameR&t date_timet compress_typeRVRt create_systemR@textract_versiontreservedt flag_bitstvolumet internal_attrt external_attrt header_offsettCRCt compress_sizet file_sizet _raw_timetNoNameiiicCs#||_|jtd}|dkr:|d|!}ntjdkrptj|krp|jtjd}n||_||_|ddkrtdnt |_ d|_ d|_ t jdkrd|_n d|_d|_d|_d|_d|_d|_d|_d|_dS( Nit/is+ZIP does not support timestamps before 1980R twin32ii(RWtfindtchrtostseptreplaceR&RXt ValueErrorRRYRVRtsystplatformRZR@R[R\R]R^R_R`(tselfR&RXt null_byte((s/usr/lib64/python2.7/zipfile.pyt__init__6s.               c Cs|j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}|jd @rsd}}}n|j}|j}|j}|j}|dkr|tkp|tk}n|rd } |tj | dtj | d ||}n|tks|tkr_|s&t d nd }d }t d|j |_ t d|j |_n|j\} } tj tt|j |j| |j|||||t| t| } | | |S(s'Return the per-file header as a string.iii iiiii iisZdZejdZde dZ ddZ ddZ d Z dd Zd Zd Zd ZRS(sZFile-like object for reading an archive member. Is returned by ZipFile.open(). iiis*^(?P[^\r\n]+)|(?P\n|\r\n?)cCsf||_||_||_|j|_|j|_|j|_|jtkrct j d|_ n\|jt krt j|j}|rtd|j|fqtd|jfnd|_d|_d|_d|k|_d|_|jdk r|jd8_n||_|j|_t|drY|j|_tdd @|_n d|_dS( Niscompression type %d (%s)scompression type %dR itUi RbI(t_fileobjt _decryptert_close_fileobjRYt_compress_typeRct_compress_sizet_compress_leftRtzlibt decompressobjt _decompressorRtcompressor_namestgettNotImplementedErrort _unconsumedt _readbuffert_offsett _universalRKtnewlinestmodeR&tnameR$Rbt _expected_crctcrc32t _running_crc(RqtfileobjRtzipinfot decryptert close_fileobjtdescr((s/usr/lib64/python2.7/zipfile.pyRss4             icCs|j ra|dkra|jjd|jd}|dkra|j|j|!}||_|Sn|js}tjj||Sd}x|dkst||kr|jd}|dkr|S|j j |}|j d}|dk rJ|j dkr g|_ n||j kr-|j j|n|jt|7_|dS|j d}|dkr|||t| }n|jt|7_||7}qW|S( srRead and return a line from the stream. If limit is specified, at most limit bytes will be read. is iR itnewlinetchunkN(RRRiRtiotBufferedIOBasetreadlineRtpeektPATTERNtsearchtgroupRKRR(RqtlimitRtlinet readaheadtmatchRR((s/usr/lib64/python2.7/zipfile.pyRBs8   !     cCs|t|j|jkr{|j|}t||jkrc||j|j|_d|_q{|jt|8_n|j|j|jd!S(s6Returns buffered bytes without advancing the position.ii(RRRR"(RqtnR((s/usr/lib64/python2.7/zipfile.pyRts cCstS(N(R(Rq((s/usr/lib64/python2.7/zipfile.pytreadablescCsd}|dkrd}nxztr|dkrB|j|}n2|t|krp|j|t|}n|St|dkr|S||7}qWdS(sRead and return up to n bytes. If the argument is omitted, None, or negative, data is read and returned until EOF is reached.. R iiN(RKRtread1R(RqRtbufR:((s/usr/lib64/python2.7/zipfile.pyR"s    cCs^|jdkrdSt||jd@|_|rZ|j|jkrZtd|jndS(NIsBad CRC-32 for file %r(RRKRRRR(Rqtnewdatateof((s/usr/lib64/python2.7/zipfile.pyt _update_crcs cCsg|dks|dkr$|j}nt|j|j}|jdkrW||t|jkrW||t|j}t||j}t ||j}|j j |}|jt|8_|r|j dk rdj t|j |}n|jtkrE|j|d|jdk|j|j||_d|_qW|j|7_nt|jdkr4||kr4|jtkr4|jj|jt|||j}|jj|_t|jdko|jdk}|r||jj7}n|j|d||j|j||_d|_n|j|j|j|!}|jt|7_|S(s7Read up to n bytes with at most one read() system call.iR RN(RKtMAX_NRRRRRROt MIN_READ_SIZEtminRR"RRtmapRRRRRt decompresstunconsumed_tailtflush(RqRtlen_readbuffertnbytesR:R((s/usr/lib64/python2.7/zipfile.pyRs> ( ! $ cCs8z|jr|jjnWdtt|jXdS(N(RRtclosetsuperR(Rq((s/usr/lib64/python2.7/zipfile.pyRs iN(R R R RRtretcompileRRKRRsRRRR"RRR(((s/usr/lib64/python2.7/zipfile.pyR s  ' 2   4cBseZdZdZdeedZdZdZ dZ dZ dZ dZ d Zd Zd Zed Zejd ZddZdddZdddZddddZdZdZdddZddZdZdZRS(sd Class with methods to open, read, write, close, list zip files. z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False) file: Either the path to the file, or a file-like object. If it is a path, the file will be opened and closed by ZipFile. mode: The mode can be either read "r", write "w" or append "a". compression: ZIP_STORED (no compression) or ZIP_DEFLATED (requires zlib). allowZip64: if True ZipFile will create files with ZIP64 extensions when needed, otherwise it will raise an exception when this would be necessary. trcCs\|dkrtdn|tkr*n*|tkrKtsTtdqTn td||_t|_d|_i|_g|_ ||_ |j dd d|_ }d|_d |_t|trXd|_||_id d6d d6d d6}yt||||_Wqtk rT|dkrNd}}t||||_qUqXn'd |_||_t|dd|_y|dkr|jn|dkrt|_no|dkry$|j|jj|jdWq"tk r|jjddt|_q"Xn tdWn2|j}d|_|jsQ|jnnXdS(s>Open the ZIP file with mode read "r", write "w" or append "a".Rtwtas(ZipFile() requires mode "r", "w", or "a"s.Compression requires the (missing) zlib modules(That compression method is not supporteditbR R#twbsr+biRisMode must be "r", "w" or "a"N(RRR(RRRRt _allowZip64Rt _didModifytdebugt NameToInfotfilelistt compressionRmRRKRt_commentRt basestringt _filePassedR&R%R Rtgetattrt_RealGetContentsRR(t start_dirRR(RqtfileRRt allowZip64tkeytmodeDictR ((s/usr/lib64/python2.7/zipfile.pyRssf                                cCs|S(N((Rq((s/usr/lib64/python2.7/zipfile.pyt __enter__4scCs|jdS(N(R(Rqttypetvaluet traceback((s/usr/lib64/python2.7/zipfile.pyt__exit__7sc CsH|j}yt|}Wntk r8tdnX|sKtdn|jdkrb|GHn|t}|t}|t|_|t ||}|t t kr|t t 8}n|jdkr||}dG|G|G|GHn|||_|j|jd|j|}tj|}d}x||krC|jt} t| tkrftdntjt| } | ttkrtdn|jdkr| GHn|j| t} t| } |j| t| _|j| t| _| t | _!| dd!\ | _"| _#| _$| _%| _&| _'} } | _(| _)| _*| d d !\| _+| _,| _-| | _.| d ?d | d ?d @| d@| d?| d ?d@| d@df| _/| j0| j!|| _!| j1| _2|j3j4| | |j5| j2<|t| t| t| t}|jdkr*dG|GHq*q*WdS(s/Read in the table of contents for the ZIP file.sFile is not a zip fileiisgiven, inferred, offsetisTruncated central directorys&Bad magic number for central directoryi iii iiii i?ttotalN(6R RRRRR5R6t _ECD_COMMENTRt _ECD_LOCATIONR0R/R-R)RR(R"t cStringIOtStringIOtsizeCentralDirRR*RtstructCentralDirt _CD_SIGNATUREtstringCentralDirt_CD_FILENAME_LENGTHRt_CD_EXTRA_FIELD_LENGTHRt_CD_COMMENT_LENGTHRVt_CD_LOCAL_HEADER_OFFSETRaR@RZR[R\R]RYRbRcRdR^R_R`ReRXRRR&RRR(RqR R9tsize_cdt offset_cdtconcattinferredR:RtcentdirR&txtttd((s/usr/lib64/python2.7/zipfile.pyR:sd          I & "cCs.g}x!|jD]}|j|jqW|S(s+Return a list of file names in the archive.(RRR&(RqtlR:((s/usr/lib64/python2.7/zipfile.pytnamelistscCs|jS(sJReturn a list of class ZipInfo instances for files in the archive.(R(Rq((s/usr/lib64/python2.7/zipfile.pytinfolistscCsJdd GHx:|jD]/}d|jd }d|j||jfGHqWdS( s+Print a table of contents for the zip file.s%-46s %19s %12ss File Names Modified tSizes%d-%02d-%02d %02d:%02d:%02dis %-46s %s %12dN(s File Names Modified R (RRXR&Rd(Rqtzinfotdate((s/usr/lib64/python2.7/zipfile.pytprintdirs cCsnd}xa|jD]V}y8|j|jd}x|j|rFq4WWdQXWqtk re|jSXqWdS(s%Read all the files and check the CRC.iiRNi(RR%R&R"R(Rqt chunk_sizeR!tf((s/usr/lib64/python2.7/zipfile.pyttestzips cCs5|jj|}|dkr1td|n|S(s,Return the instance of ZipInfo given 'name'.s(There is no item named %r in the archiveN(RRRKtKeyError(RqRtinfo((s/usr/lib64/python2.7/zipfile.pytgetinfos  cCs ||_dS(s)Set default password for encrypted files.N(R(RqR((s/usr/lib64/python2.7/zipfile.pyt setpasswordscCs|jS(s.The comment text associated with the ZIP file.(R(Rq((s/usr/lib64/python2.7/zipfile.pyRVscCsXt|tkrBddl}|jdtdd|t }n||_t|_dS(Nis3Archive comment is too long; truncating to %d bytest stackleveli(RtZIP_MAX_COMMENTtwarningstwarnRRR(RqRVR-((s/usr/lib64/python2.7/zipfile.pyRVs    cCs|j|d|jS(s)Return file bytes (as a string) for name.R(R%R"(RqRR((s/usr/lib64/python2.7/zipfile.pyR"scCsd|dkrtdn|js-tdn|jrH|j}t}nt|jd}t}yt|tr{|}n|j |}|j |j d|j t }t|t krtdntjt|}|ttkrtd n|j |t}|tr/|j |tn||jkrWtd |j|fn|jd @} d} | r&|s|j}n|std |nt|} |j d } t| | dd !} |jd@r|jd?d@} n|jd?d@} t| d| kr&td|q&nt |||| d|SWn|rY|j!nnXdS(s#Return file-like object for 'name'.RRtrUs&open() requires mode "r", "U", or "rU"s3Attempt to read ZIP archive that was already closedR#isTruncated file headers Bad magic number for file headers3File name in directory "%s" and header "%s" differ.is6File %s is encrypted, password required for extractioni iiii sBad password for fileRN(RRR/("RR RRR%R&RRRR)R(RaR"tsizeFileHeaderRRR*RRxt _FH_SIGNATURERyt_FH_FILENAME_LENGTHt_FH_EXTRA_FIELD_LENGTHRWR]RKRRRReRbRRR(RqRRRtzef_filet should_closeR!tfheadertfnamet is_encryptedtzdtbytestht check_byte((s/usr/lib64/python2.7/zipfile.pyR%sd                cCsOt|ts!|j|}n|dkr<tj}n|j|||S(s#Extract 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 ZipInfo object. You can specify a different directory using `path'. N(RRR)RKRktgetcwdt_extract_member(RqtmembertpathR((s/usr/lib64/python2.7/zipfile.pytextracts  cCsC|dkr|j}nx!|D]}|j|||q"WdS(sExtract all members from the archive to the current working directory. `path' specifies a different directory to extract to. `members' is optional and must be a subset of the list returned by namelist(). N(RKRRA(RqR@tmembersRR((s/usr/lib64/python2.7/zipfile.pyt extractalls  c Cs|jjdtjj}tjjrH|jtjjtjj}ntjj|d}tjjjd|jtjjD}tjjdkr2d}t |t rd|D}nt j |dt |}|j|}d|jtjjD}tjjjd |D}ntjj||}tjj|}tjj|}|rtjj| rtj|n|jd dkrtjj|stj|n|S|j|d |/}t|d } tj|| Wd QXWd QX|S(sbExtract the ZipInfo object 'member' to a physical file on the path targetpath. Rgicss6|],}|dtjjtjjfkr|VqdS(R N(RkR@tcurdirtpardir(t.0R((s/usr/lib64/python2.7/zipfile.pys 6ss\s:<>|"?*cSs%i|]}tdt|qS(t_(R(RFR((s/usr/lib64/python2.7/zipfile.pys <s RGcss|]}|jdVqdS(t.N(trstrip(RFR((s/usr/lib64/python2.7/zipfile.pys Ascss|]}|r|VqdS(N((RFR((s/usr/lib64/python2.7/zipfile.pys BsiRRN(R&RmRkR@Rltaltsept splitdriveRtsplitRRtstringt maketransRt translatetnormpathtdirnametexiststmakedirstisdirtmkdirR%Rtshutilt copyfileobj( RqR?t targetpathRtarcnametillegalRt upperdirstsourcettarget((s/usr/lib64/python2.7/zipfile.pyR>)s4 !."cCs+|j|jkr;ddl}|jd|jddn|jdkrVtdn|jsktd n|jtkrt rtd n|jt tfkrtd n|j s'd}t |jtkrd }n0|jtkrd }n|jtkr d}n|r't|dq'ndS(s6Check for errors before writing a file to the archive.iNsDuplicate name: %rR+iRRs write() requires mode "w" or "a"s4Attempt to write ZIP archive that was already closeds.Compression requires the (missing) zlib modules(That compression method is not supporteds Files counttFilesizes Zipfile sizes would require ZIP64 extensions(RR(R&RR-R.RRR RYRRRRRKRRtZIP_FILECOUNT_LIMITRdRtRaR(RqR!R-trequires_zip64((s/usr/lib64/python2.7/zipfile.pyt _writecheckWs2          cCs|jstdntj|}tj|j}tj|j}|dd!}|d krm|}ntj j tj j |d}x*|dtj tjfkr|d}qW|r|d7}nt||}|dd@d>|_|rt|_n$|d kr |j|_n ||_|j|_d|_|jj|_|j|t|_|rd|_d|_d|_|jdO_|jj|||j |j!<|jj"|j#t$d St%|d  } d|_} d|_} |j&o|jd t'k} |jj"|j#| |jt(krat)j*t)j+t)j,d } nd } d}xx| j-d}|sPn|t.|}t/|| d@} | r| j0|}| t.|} n|jj"|qpWWd QX| r,| j1}| t.|} |jj"|| |_n ||_| |_||_| r|j&r|t'krrtdn| t'krtdqn|jj}|jj2|jd|jj"|j#| |jj2|d|jj|||j |j!|dd>B|d B}|d d >|d d>B|dd B}g}|jtks|j tkr|j |j|j |j d }d }n|j}|j }|j tkr/|j |j d} n |j } |j } |rt | d} tjddt|ddt||| } td|j} td|j} n|j} |j} y|j\} }tjtt| |j| |j||j|||j||t| t| t|jd|j|j| }Wntk rtj tt| |j| |j|j!|j|||j||t|j"t| t|jd|j|j| fIJnX|jj#||jj#| |jj#| |jj#|jqGW|jj}t|j}||}|}d}|t$kred}n*|tkrzd}n|tkrd}n|rI|j%st&|dntjt't(ddddd|||| }|jj#|tjt)t*d|d}|jj#|t+|d}t+|d }t+|d }ntjt,t-dd||||t|j. }|jj#||jj#|j.|jj/nWd|j}d|_|j0s|j1nXdS(sJClose the file, and for mode "w" and "a" write the ending records.NRRiii iiiii iIlsRaRiRuRvR(((s/usr/lib64/python2.7/zipfile.pyRs0 G   E     O . \ 3 cBs#eZdZddZdZRS(sDClass to create ZIP archives with Python library files and packages.R c Cstjj|\}}tjj|r|tjj|d}tjj|r|rjd||f}n|}|jrdG|GdG|GHn|j|dd!|\}}|jrdG|GHn|j||tj |}|j dx|D]} tjj|| } tjj | \} } tjj| rptjjtjj| dr|j | |qq| dkr|j| dd!|\}}|jrdG|GHn|j||qqWq|jrd G|GHnxtj |D]} tjj|| } tjj | \} } | dkr|j| dd!|\}}|jrbdG|GHn|j||qqWn`|ddkrt d n|j|dd!|\}}|jrd G|GHn|j||d S( s,Add all files from "pathname" to the ZIP archive. If pathname is a package directory, search the directory and all package subdirectories recursively for all *.py and enter the modules into the archive. If pathname is a plain directory, listdir *.py and enter all modules. Else, pathname must be a Python *.py file and the module will be put into the archive. Added modules are always module.pyo or module.pyc. This method will compile the module.py into module.pyc if necessary. s __init__.pys%s/%ssAdding package intasiitAddings.pysAdding files from directorys.Files added with writepy() must end with ".py"s Adding fileN(RkR@RLRTRtisfileRt _get_codenameRitlistdirtremovetsplitexttwritepyR( RqtpathnametbasenametdirRtinitnameR7RYtdirlistR&R@troottext((s/usr/lib64/python2.7/zipfile.pyRzsZ      !           c Cs8|d}|d}|d}tjj|r]tj|jtj|jkr]|}ntjj| stj|jtj|jkrddl}|jrdG|GHny|j||dt Wn|j k r}|j GHnX|}n|}tjj |d} |r.d|| f} n|| fS( sReturn (filename, archivename) for the path. Given a module name path, return the correct file path and archive name, compiling if necessary. For example, given /python/lib/string, return (/python/lib/string.pyc, string). s.pys.pycs.pyoiNt Compilingis%s/%s( RkR@RRbRgt py_compileRRRKRtPyCompileErrortmsgRL( RqRRtfile_pytfile_pyctfile_pyoR7Rterrt archivename((s/usr/lib64/python2.7/zipfile.pyRs*   $ $     (R R R RR(((s/usr/lib64/python2.7/zipfile.pyRws Ac sddl}|jd}|dkr7tjd}n| sN|ddkrc|GHtjdn|ddkrt|d kr|GHtjdnt|dd }|jWdQXn|ddkrAt|d kr|GHtjdnt|dd }|j }WdQX|r9d j |GHnd GHnT|ddkrt|d krx|GHtjdnt|dd }|j |d WdQXn|ddkrt|d kr|GHtjdnfdt|dddt }x|d D]s}t jj|}|sTt jjt jj|}n|dt jt jfkrxd}n|||qWWdQXndS(NisE 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 iis-ls-cs-es-tiRs.The following enclosed file is corrupted: {!r}s Done testingicstjj|r(|j||tnvtjj|r|rS|j||nxHtj|D]4}|tjj||tjj||qcWndS(N(RkR@RRiRRTRR(tzfR@tzippathtnm(taddToZip(s/usr/lib64/python2.7/zipfile.pyRsRRR (s-ls-cs-es-t(ttextwraptdedentRKRotargvtexitRRR#R&tformatRCRRkR@RRQRDRE(targsRtUSAGERtbadfileR@R((Rs/usr/lib64/python2.7/zipfile.pytmainsT    ! t__main__(oR R*RkReRoRVtbinasciiR RbRRRMRRt ImportErrorRKt__all__t ExceptionRRRRtR_R,RRRMRLRvRJR0R1R2R3R4R5R6RQR R RRR Rt_CD_CREATE_VERSIONt_CD_CREATE_SYSTEMt_CD_EXTRACT_VERSIONt_CD_EXTRACT_SYSTEMt _CD_FLAG_BITSt_CD_COMPRESS_TYPEt_CD_TIMEt_CD_DATEt_CD_CRCt_CD_COMPRESSED_SIZEt_CD_UNCOMPRESSED_SIZERRRt_CD_DISK_NUMBER_STARTt_CD_INTERNAL_FILE_ATTRIBUTESt_CD_EXTERNAL_FILE_ATTRIBUTESRRxRyR0R1t_FH_EXTRACT_VERSIONt_FH_EXTRACT_SYSTEMt_FH_GENERAL_PURPOSE_FLAG_BITSt_FH_COMPRESSION_METHODt_FH_LAST_MOD_TIMEt_FH_LAST_MOD_DATEt_FH_CRCt_FH_COMPRESSED_SIZEt_FH_UNCOMPRESSED_SIZER2R3R+R,R)R.R/R-t_CD64_SIGNATUREt_CD64_DIRECTORY_RECSIZEt_CD64_CREATE_VERSIONt_CD64_EXTRACT_VERSIONt_CD64_DISK_NUMBERt_CD64_DISK_NUMBER_STARTt_CD64_NUMBER_ENTRIES_THIS_DISKt_CD64_NUMBER_ENTRIES_TOTALt_CD64_DIRECTORY_SIZEt_CD64_OFFSET_START_CENTDIRRrtStructR RR!RRHRtobjectRRRRRRRRR (((s/usr/lib64/python2.7/zipfile.pyts<$            + =< c B