ó ükWc@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(NsRiitridtwtasMode s not supportedN(treplacetNonet __builtin__Rt myfileobjthasattrRRtREADtTruet _new_membertextrabuft extrasizet extrastartt min_readsizetWRITEt _init_writetzlibt compressobjtDEFLATEDt MAX_WBITSt DEF_MEM_LEVELtcompresstIOErrortfileobjtoffsettmtimet_write_gzip_header(tselfR RRR,R.((s/usr/lib/python2.7/gzip.pyt__init__-sH*  "             &      cCsSddl}|jdtdƒ|jtkrL|jddkrL|jdS|jS(Ni˙˙˙˙suse the name attributeiiý˙˙˙s.gz(twarningstwarntDeprecationWarningRR#R(R0R2((s/usr/lib/python2.7/gzip.pyR Šs  " cCs6t|jƒ}d|dd!dtt|ƒƒdS(Ns(treprR,thextid(R0ts((s/usr/lib/python2.7/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(R0((s/usr/lib/python2.7/gzip.pyt _check_closed–s cCs>||_tjdƒd@|_d|_g|_d|_dS(NRl˙˙i(RR%tcrc32tcrctsizetwritebuftbufsize(R0R ((s/usr/lib/python2.7/gzip.pyR$s    cCs6|jjdƒ|jjdƒyVtjj|jƒ}t|tƒsY|jdƒ}n|j dƒru|d }nWnt k rd}nXd}|rĽt }n|jjt |ƒƒ|j }|dkrßtjƒ}nt|jt|ƒƒ|jjdƒ|jjd ƒ|r2|jj|d ƒndS( Ns‹sslatin-1s.gziý˙˙˙Riss˙t(R,RtostpathtbasenameRt isinstancetstrtencodetendswithtUnicodeEncodeErrortFNAMEtchrR.RttimeRtlong(R0tfnametflagsR.((s/usr/lib/python2.7/gzip.pyR/¤s,     cCs#tjdƒd@|_d|_dS(NRl˙˙i(R%R?R@RA(R0((s/usr/lib/python2.7/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 methodiRD( R,R R+tordR R.tFEXTRARMRtFCOMMENTtFHCRC(R0tmagictmethodtflagtxlenR:((s/usr/lib/python2.7/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=RHt memoryviewttobytestlenRAR%R?R@RR*R-(R0tdataR]((s/usr/lib/python2.7/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>RRR]R+R^R R,RRt_readtmintmax_read_chunktEOFErrorR-R!R(R0RAR]treadsizeR-tchunk((s/usr/lib/python2.7/gzip.pyR řs4        cCs/t|ƒ|j|_|jt|ƒ8_dS(N(RaR R-(R0tbuf((s/usr/lib/python2.7/gzip.pyt_unreadscCsl|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,RRfRttelltseekRSR\R%t decompressobjR(t decompresstFalseR tflusht _read_eoft_add_read_datat unused_dataRaR(R0RAtposRit uncompress((s/usr/lib/python2.7/gzip.pyRcs0           $ cCs|tj||jƒd@|_|j|j}|j|||_|jt|ƒ|_|j|_|jt|ƒ|_dS(Nl˙˙( R%R?R@R-R!RR RaRA(R0RbR-((s/usr/lib/python2.7/gzip.pyRrOs  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 producedRDi˙˙˙˙(R,RlR R@R+R8RAR (R0R?tisizetc((s/usr/lib/python2.7/gzip.pyRqWs cCs |jdkS(N(R,R(R0((s/usr/lib/python2.7/gzip.pyR<oscCs˛|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*RpRR@RARRtclose(R0((s/usr/lib/python2.7/gzip.pyRxss    cCsI|jƒ|jtkrE|jj|jj|ƒƒ|jjƒndS(N(R>RR#R,RR*Rp(R0t zlib_mode((s/usr/lib/python2.7/gzip.pyRp‚s 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(R0((s/usr/lib/python2.7/gzip.pyRz‰scCs_|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,RlRRRR R!R-(R0((s/usr/lib/python2.7/gzip.pytrewind‘s    cCs |jtkS(N(RR(R0((s/usr/lib/python2.7/gzip.pytreadablescCs |jtkS(N(RR#(R0((s/usr/lib/python2.7/gzip.pytwritable scCstS(N(R(R0((s/usr/lib/python2.7/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 modeiRD( R-R=RR#R+txrangeRRR{R (R0R-twhencetcountti((s/usr/lib/python2.7/gzip.pyRlŚ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-R!RtfindR tsystmaxintR"R RatappendRjRdtjoin(R0RAR-R‚RgtbufsRw((s/usr/lib/python2.7/gzip.pytreadlinežs4    *  Ni(i (!t__name__t __module__t__doc__RRReR1tpropertyR R;R>R$R/RSR\RR RjRcRrRqR<RxR%t Z_SYNC_FLUSHRpRzR{R|R}R~RlR‰(((s/usr/lib/python2.7/gzip.pyR$s8\      !  !  2        cCsŹ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( R„targvRtstdintstdoutR7RRRR RRx(targsRntargtftgRh((s/usr/lib/python2.7/gzip.pyt_testćs<        !  t__main__(RŒRR„RORER%tioRt__all__tFTEXTRWRURMRVRR#RR RtBufferedIOBaseRR˜RŠ(((s/usr/lib/python2.7/gzip.pyts0    $   ˙Ă &