U :eS@sddlZddlZddlZddlZddlZddlZddlZddlZdddddgZd\Z Z Z Z Z d\ZZd Zd Zd Zd edddfd dZddZGdddZGdddeZGdddejZGdddejZefddddZddZddZedkredS)N BadGzipFileGzipFileopencompress decompress))rrr rbcCsd|kr d|krPtd|fn0|dk r0td|dk r@td|dk rPtd|dd}t|tttjfr|t|||}n,t|dst|d rtd|||}nt d d|krt ||||S|SdS) NtbzInvalid mode: %rz0Argument 'encoding' not supported in binary modez.Argument 'errors' not supported in binary modez/Argument 'newline' not supported in binary modereadwritez1filename must be a str or bytes object, or a file) ValueErrorreplace isinstancestrbytesosPathLikerhasattr TypeErrorio TextIOWrapper)filenamemode compresslevelencodingerrorsnewlineZgz_modeZ binary_filer%)/usr/local/python38/lib/python3.8/gzip.pyrs$ cCs|td|dS)Nz|jdkr||_n|jt|8_dSt|j|_d|_dSr.)r3r/r0r1)r4r6r%r%r&r6bs   z_PaddedFile.prependcCsd|_d|_|j|Sr8)r3r/r2seek)r4Zoffr%r%r&r:ksz_PaddedFile.seekcCsdSNTr%r4r%r%r&seekablepsz_PaddedFile.seekableN)r-)r-)__name__ __module__ __qualname__r7rr6r:r=r%r%r%r&r,Js   r,c@s eZdZdS)rN)r>r?r@r%r%r%r&rtsc@seZdZdZddeddfddZeddZeddZdd Z d d Z d d Z ddZ d+ddZ d,ddZddZeddZddZejfddZddZdd Zd!d"Zd#d$Zd%d&Zejfd'd(Zd-d)d*ZdS).rNcCs4|r"d|ksd|kr"td||r6d|kr6|d7}|dkrTt||pJd}|_|dkr|t|dd}t|ttfsd}n t |}|dkrt|dd}| d rt |_ t|}t||_||_nN| d rt|_ ||t|tjtj tjd |_||_ntd|||_|j tkr0||dS) NrUzInvalid mode: {!r}rrnamerr r)waxr)rformatbuiltinsr myfileobjgetattrrrrrfspath startswithREADr _GzipReaderrBufferedReaderr/rBWRITE _init_writezlib compressobjDEFLATED MAX_WBITS DEF_MEM_LEVELr _write_mtimefileobj_write_gzip_header)r4rr r!rXmtimerawr%r%r&r7s@#         zGzipFile.__init__cCsBddl}|dtd|jtkr<|jdddkr<|jdS|jS)Nrzuse the name attributer.gz)warningswarnDeprecationWarningr rPrB)r4r^r%r%r&rs  zGzipFile.filenamecCs |jjjSr8)r/r[ _last_mtimer<r%r%r&rZszGzipFile.mtimecCs.t|j}d|dddtt|dS)Nz)reprrXhexid)r4sr%r%r&__repr__s zGzipFile.__repr__cCs.||_td|_d|_g|_d|_d|_dSNr-r)rBrRcrc32crcr9Zwritebufbufsizeoffset)r4rr%r%r&rQs  zGzipFile._init_writecCs|jd|jdzs   zGzipFile.closecCs4||jtkr0|j|j||jdSr8)rr rPrXrrr)r4Z zlib_moder%r%r&rQs zGzipFile.flushcCs |jSr8)rXfilenor<r%r%r&rXszGzipFile.filenocCs"|jtkrtd|jddS)NzCan't rewind in write moder)r rMrr/r:r<r%r%r&rewind`s zGzipFile.rewindcCs |jtkSr8)r rMr<r%r%r&readablegszGzipFile.readablecCs |jtkSr8)r rPr<r%r%r&writablejszGzipFile.writablecCsdSr;r%r<r%r%r&r=mszGzipFile.seekablecCs|jtkr|tjkr2|tjkr*|j|}ntd||jkrDtd||j}d}t|dD]}| |q^| d|dn |jt kr| |j ||S|jS)NzSeek from end not supportedzNegative seek in write modesrs)r rPrSEEK_SETSEEK_CURrnrrrangerrMrr/r:)r4rnwhencecountchunkir%r%r&r:ps         z GzipFile.seekcCs||j|Sr8)rr/readline)r4r9r%r%r&rszGzipFile.readline)rb)rb)rb)r>r?r@rIr~r7propertyrrZrirQrYrrrrrrrR Z_SYNC_FLUSHrrrrrr=rrr:rr%r%r%r&rxs8  I      csZeZdZfddZddZddZddZdd d Zd d ZddZ fddZ Z S)rNcs,tjt|tjtj dd|_d|_dS)N)ZwbitsT)superr7r,rR decompressobjrU _new_memberra)r4fp __class__r%r&r7s z_GzipReader.__init__cCstd|_d|_dSrj)rRrk_crc _stream_sizer<r%r%r& _init_reads z_GzipReader._init_readcCsF|j|}t||krB|j|t|}|s8td||7}q |S)NACompressed file ended before the end-of-stream marker was reached)_fprr0EOFError)r4rrrr%r%r& _read_exacts   z_GzipReader._read_exactcCs|jd}|dkrdS|dkr,td|td|d\}}|_|dkrVtd|t@r|td |d\}|||t@r|jd }|r|d krqq|t @r|jd }|r|d krqq|t @r|dd S) Nrr-FrozNot a gzipped file (%r)z|d|_|jf|j|_|jrf||s`|j |_ dSd|_|j t j}|j||}|jjdkr|j |jjn|jjdkr|j |jj|dkrq|dkrtdq|||j t|7_ |S)Nrr-TFr)readall _decompressoreof _read_eofr_decomp_factory _decomp_argsrr_pos_sizerrrrrunconsumed_tailr6 unused_datar_add_read_datar0)r4r9bufZ uncompressr%r%r&rs:    z_GzipReader.readcCs$t||j|_|jt||_dSr8)rRrkrrr0)r4rr%r%r&rsz_GzipReader._add_read_datacCstd|d\}}||jkrr?r@r7rrrrrrr __classcell__r%r%rr&rNs ! 3rN)rZc Cs6t}t|d||d}||W5QRX|S)Nwb)rXr r!rZ)rBytesIOrrgetvalue)rr!rZrr5r%r%r&rsc Cs0tt|d}|W5QRSQRXdS)Nr)rrrr)rr5r%r%r&rsc Csddlm}|dd}|}|jdddd|jd dd d|jd d dd d|jdddgdd|}t}|jr|t}n |jrt }|j D]}|j r|dkrt ddt jjd}t jj}n>|dddkrt d|t|d}t|ddd}nB|dkr"t jj}t ddt jj|d}nt|d}t|dd}|d}|sPq^||q<|t jjk rt||t jjk r|qdS)Nr)ArgumentParserzeA simple command line interface for the gzip module: act like gzip, but do not delete the input file.) descriptionz--fast store_truezcompress faster)actionhelpz--bestzcompress betterz-dz --decompresszact like gunzip instead of gzipargs*-r2)nargsdefaultmetavarrr)rr rXr\r]zfilename doesn't end in .gz: r)rr rXr!r)argparseradd_mutually_exclusive_group add_argument parse_args_COMPRESS_LEVEL_TRADEOFFfastrZbestr~rrrsysstdinbufferstdoutexitrrHrrr) rparsergrouprr!argr5grr%r%r&main'sR          r__main__) r'rr|rrRrHr _compression__all__ZFTEXTrrrzrrMrPrrr~rr+r,rr BaseStreamrDecompressReaderrNrrrr>r%r%r%r&s8  ,* 0