ó őůPc@sůdZddlZddlZddlZddlZddlZddlZddlZddgZddddd f\Z Z Z Z Z ddf\ZZd „Zd „Zd d d„Zdejfd„ƒYZd„ZedkrőeƒndS(s‘Functions that read and write gzipped files. The user of the file doesn't have to worry about the compression, but random access is not allowed.i˙˙˙˙NtGzipFiletopeniiiiicCs|jtjd|ƒƒdS(Ns(treprR*thextid(R.ts((s..\python\lib\gzip.pyt__repr__‰scCs|jrtdƒ‚ndS(sLRaises a ValueError if the underlying file object has been closed. sI/O operation on closed file.N(tclosedt ValueError(R.((s..\python\lib\gzip.pyt _check_closeds cCs>||_tjdƒd@|_d|_g|_d|_dS(NRl˙˙i(RR#tcrc32tcrctsizetwritebuftbufsize(R.R ((s..\python\lib\gzip.pyR"”s    cCs÷|jjdƒ|jjdƒtjj|jƒ}|jdƒrQ|d }nd}|rft}n|jjt|ƒƒ|j }|dkr t j ƒ}nt |jt |ƒƒ|jjdƒ|jjdƒ|ró|jj|dƒndS( Ns‹ss.gziý˙˙˙iss˙t(R*RtostpathtbasenameRtendswithtFNAMEtchrR,RttimeRtlong(R.tfnametflagsR,((s..\python\lib\gzip.pyR-›s"    cCs#tjdƒd@|_d|_dS(NRl˙˙i(R#R=R>R?(R.((s..\python\lib\gzip.pyt _init_readŽscCs|jjdƒ}|dkr*td‚nt|jjdƒƒ}|dkrZtd‚nt|jjdƒƒ}t|jƒ|_|jjdƒ|t@rét|jjdƒƒ}|dt|jjdƒƒ}|jj|ƒn|t@r,x6tr(|jjdƒ}| s!|dkröPqöqöWn|t @rox6trk|jjdƒ}| sd|dkr9Pq9q9Wn|t @rŒ|jjdƒndS( Nis‹sNot a gzipped fileiisUnknown compression methodiRB( R*R R)tordR R,tFEXTRARGRtFCOMMENTtFHCRC(R.tmagictmethodtflagtxlenR8((s..\python\lib\gzip.pyt_read_gzip_header˛s2             cCső|jƒ|jtkr:ddl}t|jdƒ‚n|jdkrUtd‚nt |t ƒrs|j ƒ}nt |ƒdkrë|j t |ƒ|_ tj||jƒd@|_|jj|jj|ƒƒ|jt |ƒ7_nt |ƒS(Ni˙˙˙˙s$write() on read-only GzipFile objects!write() on closed GzipFile objectil˙˙(R<RR!terrnoR)tEBADFR*RR;t isinstancet memoryviewttobytestlenR?R#R=R>RR(R+(R.tdataRW((s..\python\lib\gzip.pyRÓs   i˙˙˙˙cCsu|jƒ|jtkr:ddl}t|jdƒ‚n|jdkr\|jdkr\dSd}|dkrÂy4x-t r |j |ƒt |j |dƒ}qtWWq.t k rž|j}q.Xnly=x6||jkrý|j |ƒt |j |dƒ}qČWWn,t k r-||jkr.|j}q.nX|j|j}|j|||!}|j||_|j|7_|S(Ni˙˙˙˙s$read() on write-only GzipFile objectiRii(R<RRRWR)RXRR*RRt_readtmintmax_read_chunktEOFErrorR+RR(R.R?RWtreadsizeR+tchunk((s..\python\lib\gzip.pyR čs4        cCs/t|ƒ|j|_|jt|ƒ8_dS(N(R\RR+(R.tbuf((s..\python\lib\gzip.pyt_unread scCsl|jdkrtd‚n|jr­|jjƒ}|jjddƒ||jjƒkrgtd‚n|jj|ƒ|jƒ|jƒtj tj ƒ|_ t |_n|jj |ƒ}|dkrý|j jƒ}|jƒ|j|ƒtd‚n|j j |ƒ}|j|ƒ|j jdkrh|jjt|j jƒ ddƒ|jƒt|_ndS(Ns Reached EOFiiRii(R*RRaRttelltseekRMRVR#t decompressobjR&t decompresstFalseR tflusht _read_eoft_add_read_datat unused_dataR\R(R.R?tposRdt uncompress((s..\python\lib\gzip.pyR^ s0           $ cCs|tj||jƒd@|_|j|j}|j|||_|jt|ƒ|_|j|_|jt|ƒ|_dS(Nl˙˙( R#R=R>R+RRRR\R?(R.R]R+((s..\python\lib\gzip.pyRm?s  cCsŇ|jjddƒt|jƒ}t|jƒ}||jkrhtdt|ƒt|jƒfƒ‚n||jd@kr‡td‚nd}x"|dkrą|jjdƒ}qW|rÎ|jjddƒndS(Niř˙˙˙isCRC check failed %s != %sl˙˙s!Incorrect length of data producedRBi˙˙˙˙(R*RgR R>R)R6R?R (R.R=tisizetc((s..\python\lib\gzip.pyRlGs cCs |jdkS(N(R*R(R.((s..\python\lib\gzip.pyR:_scCs˛|jdkrdS|jtkrq|jj|jjƒƒt|j|jƒt|j|j d@ƒd|_n|jt krŒd|_n|j rŽ|j j ƒd|_ ndS(Nl˙˙( R*RRR!RR(RkRR>R?RRtclose(R.((s..\python\lib\gzip.pyRscs    cCsI|jƒ|jtkrE|jj|jj|ƒƒ|jjƒndS(N(R<RR!R*RR(Rk(R.t zlib_mode((s..\python\lib\gzip.pyRkrs cCs |jjƒS(sĽInvoke the underlying file object's fileno() method. This will raise AttributeError if the underlying file object doesn't support fileno(). (R*tfileno(R.((s..\python\lib\gzip.pyRuyscCs_|jtkrtdƒ‚n|jjdƒt|_d|_d|_d|_ d|_ dS(s[Return the uncompressed stream file position indicator to the beginning of the filesCan't rewind in write modeiRN( RRR)R*RgRRRRRR+(R.((s..\python\lib\gzip.pytrewinds    cCs |jtkS(N(RR(R.((s..\python\lib\gzip.pytreadablescCs |jtkS(N(RR!(R.((s..\python\lib\gzip.pytwritablescCstS(N(R(R.((s..\python\lib\gzip.pytseekable“sicCs*|r1|dkr"|j|}q1tdƒ‚n|jtkrŻ||jkr^tdƒ‚n||j}x)t|dƒD]}|jddƒq|W|j|ddƒnt|jtkr#||jkrÚ|jƒn||j}x%t|dƒD]}|j dƒqřW|j |dƒn|jS(NisSeek from end not supportedsNegative seek in write modeiRB( R+R;RR!R)trangeRRRvR (R.R+twhencetcountti((s..\python\lib\gzip.pyRg–s&    cCsŻ|dkrŠ|j|j}|jjd|ƒd}|dkru|j||8_|j||7_|j||!Stj}|j}n|}g}xŰ|dkrs|j|ƒ}|jdƒ}||ksí|dkrút |ƒ|krú|d}n|dks|dkr@|j ||d ƒ|j ||dƒPn|j |ƒ|t |ƒ}t ||dƒ}q™W||jkr˘t ||jddƒ|_ndj |ƒS(Nis ii˙˙˙˙Rii(R+RRtfindRtsystmaxintR R R\tappendReR_tjoin(R.R?R+R}RbtbufsRr((s..\python\lib\gzip.pytreadlineŽs4    *  Ni(i (!t__name__t __module__t__doc__RRR`R/tpropertyR R9R<R"R-RMRVRR ReR^RmRlR:RsR#t Z_SYNC_FLUSHRkRuRvRwRxRyRgR„(((s..\python\lib\gzip.pyR$s8S      !  !  2        c CsŹtjd}|o |ddk}|r6|d}n|sHdg}nx]|D]U}|rŢ|dkr‘tddddd tjƒ}tj}q9|d d krśd Gt|ƒGHqOnt|dƒ}tj|d d ƒ}n[|dkrtj}tdddd d tjƒ}n%tj|dƒ}t|d d ƒ}x0trk|j dƒ}|s[Pn|j |ƒq<W|tjk rˆ|j ƒn|tjk rO|j ƒqOqOWdS(Niis-dt-R RRR R*iý˙˙˙s.gzsfilename doesn't end in .gz:twbi( RtargvRtstdintstdoutR5RRRR RRs(targsRitargtftgRc((s..\python\lib\gzip.pyt_testÖs<        !  t__main__(R‡RRRIRCR#tioRt__all__tFTEXTRQRORGRPRR!RR RtBufferedIOBaseRR“R…(((s..\python\lib\gzip.pyts0    $   ˙ł &