mò %U²Ic@sédZdkZdkZdkZdkZdkZddgZdddddf\ZZZ Z Z ddf\Z Z d „Zd „Zd „Zd „Zd „Zddd„Zdfd„ƒYZd„Zedjo 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.NtGzipFiletopeniiiiicCs#|djo|dd>7}n|S(s‹Return i as an unsigned integer, assuming it fits in 32 bits. If it's >= 2GB when viewed as a 32-bit unsigned int, return a long. ili N(ti(R((t!/data/zmath/lib/python2.4/gzip.pytU32s cCs|d@S(s>Return the low-order 32 bits of an int, as a non-negative int.lÿÿN(R(R((RtLOWU32scCs|itid|ƒƒdS(Ns(treprRRtsthextid(RR5((Rt__repr__€scCsY|ddjo|d}n||_tidƒ|_d|_g|_d|_dS(Niýÿÿÿs.gzRi(RRR(tcrc32tcrctsizetwritebuftbufsize(RR((RR'„s   cCs¹|iidƒ|iidƒ|id }d}|o t}n|iit|ƒƒt|it t i ƒƒƒ|iidƒ|iidƒ|o|ii|dƒndS(Ns‹siýÿÿÿissÿt( RRRRtfnametflagstFNAMEtchrR tlongttime(RR?R@((RR0s  cCstidƒ|_d|_dS(NRi(R(R9RR:R;(R((Rt _init_read›scCs”|iidƒ}|djo td‚nt|iidƒƒ}|djo td‚nt|iidƒƒ}|iidƒ|t@oLt|iidƒƒ}|dt|iidƒƒ}|ii|ƒn|t @o?x<t o0|iidƒ}| p |d joPqëqëWn|t @o?x<t o0|iidƒ}| p |d joPq5q5Wn|t@o|iidƒndS( Nis‹sNot a gzipped fileiisUnknown compression methodiiR>(RRRtmagicR.tordtmethodtflagtFEXTRAtxlenRAR"R5tFCOMMENTtFHCRC(RRFR5RKRIRH((Rt_read_gzip_headerŸs4         cCsÆ|itjodk}t|idƒ‚n|idjo td‚nt |ƒdjoc|i t |ƒ|_ t i ||iƒ|_|ii|ii|ƒƒ|it |ƒ7_ndS(Ns$write() on read-only GzipFile objects!write() on closed GzipFile objecti(RRR&terrnoR.tEBADFRRt ValueErrortlentdataR;R(R9R:RR-R/(RRSRO((RRÁs  iÿÿÿÿcCsu|itjodk}t|idƒ‚n|idjo|idjodSnd}|djoYy6x/t o'|i |ƒt |i|dƒ}qpWWq5tj o|i}q5Xnsy?x8||ijo'|i |ƒt |i|dƒ}qÉWWn0tj o$||ijo |i}q5nX|i| }|i||_|i||_|i|7_|S(Ns$read() on write-only GzipFile objectiRii(RRR!ROR.RPR%RRtreadsizeR;R"t_readtmintmax_read_chunktEOFErrorR$tchunkR/(RR;RORTRY((RRÎs6      cCs?||i|_t|ƒ|i|_|it|ƒ8_dS(N(tbufRR$RRR%R/(RRZ((Rt_unreadîscCsv|idjo td‚n|ioŒ|iiƒ}|iiddƒ||iiƒjo td‚n|ii|ƒ|iƒ|i ƒt i t i ƒ|_ t|_n|ii|ƒ}|djo3|i iƒ}|iƒ|i|ƒtd‚n|i i |ƒ}|i|ƒ|i idjo;|iit|i iƒ ddƒ|iƒt|_ndS(Ns Reached EOFiiRii(RRRRXR#ttelltpostseekRERNR(t decompressobjR+t decompresstFalseRR;RZtflusht uncompresst _read_eoft_add_read_datat unused_dataRRR"(RR;RcR]RZ((RRUós0           $ cCsXti||iƒ|_|i||_|it|ƒ|_|it|ƒ|_dS(N( R(R9RSRR:R$R%RRR;(RRS((RRe%scCs‡|iiddƒt|iƒ}tt|iƒƒ}t|ƒt|iƒjo td‚n$|t |i ƒjo td‚ndS(NiøÿÿÿisCRC check faileds!Incorrect length of data produced( RRR^RR9RtisizeR:R.RR;(RR9Rg((RRd+s cCs§|itjoR|ii|iiƒƒt|i|iƒt |it |i ƒƒd|_n|it jo d|_n|io|iiƒd|_ndS(N(RRR&RRR-RbR R:R RR;RR!Rtclose(R((RRh9s    cCsTy,|idjo|idjodSnWntj o dSnX|iƒdS(N(RRRRtAttributeErrorRh(R((Rt__del__Fs    cCsA|itjo |ii|ii|ƒƒn|iiƒdS(N(RRR&RRR-Rbt zlib_mode(RRk((RRbOs cCs |iiƒS(s¥Invoke the underlying file object's fileno() method. This will raise AttributeError if the underlying file object doesn't support fileno(). N(RRtfileno(R((RRlUscCstS(N(Ra(R((Rtisatty]scCs|iS(N(RR/(R((RR\`scCsX|itjotdƒ‚n|iidƒt|_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.RR^R"R#R$R%R/(R((Rtrewindcs   cCsþ|itjor||ijotdƒ‚n||i}x)t|dƒD]}|iddƒqNW|i|ddƒny|it joh||ijo|i ƒn||i}x%t|dƒD]}|i dƒqÎW|i |dƒndS(NsNegative seek in write modeiR>( RRR&R/R.tcounttrangeRRR!RnR(RR/RoR((RR^ns   cCs]|djo ti}ng}td|ƒ}x'to|djodi|ƒSn|i |ƒ}|i dƒ}|dj oM|djo!t|ƒ|jo|d}qÏ||jo|d}qÏn|djp |djo;|i||d ƒ|i||dƒdi|ƒSn|i|ƒ|t|ƒ}t||dƒ}q2WdS(NiidRs iÿÿÿÿii(R;tsystmaxinttbufsRVRTR"tjoinRRtctfindRRRRtappendR[(RR;RuRRTRs((Rtreadlines,      icCst|djo ti}ng}xM|djo?|iƒ}|djoPn|i|ƒ|t|ƒ}q#W|S(NiR( tsizehintRqRrtLRRxtlineRwRR(RRyRzR{((Rt readlines›s      cCs"x|D]}|i|ƒqWdS(N(RzR{RR(RRzR{((Rt writelines©scCs|S(N(R(R((Rt__iter__­scCs%|iƒ}|o|Snt‚dS(N(RRxR{t StopIteration(RR{((Rtnext°s (!t__name__t __module__t__doc__RRRWR1R8R'R0RERNRRR[RUReRdRhRjR(t Z_SYNC_FLUSHRbRlRmR\RnR^RxR|R}R~R€(((RR3s8 D    "  2           cCsÁtid}|o|ddj}|o|d}n|p dg}nxm|D]e}|oˆ|djo+tddddd tiƒ}ti}qF|d d jod Gt |ƒGHqTnt |dƒ}t i |d d ƒ}n^|djo+ti}tdddd d tiƒ}n&t i |dƒ}t |d d ƒ}x4t o,|idƒ}|pPn|i|ƒqIW|tij o|iƒn|tij o|iƒqTqTWdS(Niis-dt-RRRRRiýÿÿÿs.gzsfilename doesn't end in .gz:twbi(RqtargvtargsR`targRtstdintftstdouttgR4RRR"RRYRRh(RR‹RYRˆR`R‰((Rt_test¸s@      "t__main__(RƒRRqRDR(Rt__all__tFTEXTRMRJRARLR!R&RRR R RRRRŽR(RAR!RŽRRRRMRR RRR R‘R&RJRLRqR(RRDR((Rt?s"   $     ÿ† &