]W@s[ddlZddlZddlZddlZddlZddlZddlZyddlmZ Wn"e k rddl mZ YnXej ddhkrddl mZndZddlZddlmZmZmZmZdddhZeed r'ejejejejd d ZeZd d dddd dddZGdddZGdddZy ejZWn+e k rGddde!e"ZYnXGddddej#Z$ej$j%e$Gddde$Z&ej&j%e&ddl'm(Z(e&j%e(Gddde$Z)ej)j%e)Gddde)Z*Gd d!d!e)Z+Gd"d#d#e*Z,Gd$d%d%e*Z-Gd&d'd'e)Z.Gd(d)d)e-e,Z/Gd*d+d+e&Z(Gd,d-d-e$Z0ej0j%e0Gd.d/d/ej1Z2Gd0d1d1e0Z3Gd2d3d3e3Z4dS)4N) allocate_lockwin32cygwin)setmode)__all__SEEK_SETSEEK_CURSEEK_END SEEK_HOLEirTcCsSt|tttfs(td|t|tsGtd|t|tsftd||dk rt|t rtd||dk rt|t rtd|t|}|tdst|t|krtd|d|k} d|k} d |k} d |k} d |k} d |k}d |k}d|kr| st| st| rtdddl}|j dt dd} |r|rtd| | | | dkrtd| p| p| p| std|r#|dk r#td|rA|dk rAtd|r_|dk r_tdt || rqdptd| rdpd| rd pd| rd pd| rd pd|d|}|}ynd}|dks|dkr|j rd!}d}|dkr]t }ytj|jj}Wnttfk rJYnX|dkr]|}|dkrutd|dkr|r|Std| rt||}nL| s| s| rt||}n(| rt||}ntd ||}|r |St|||||}|}||_|SWn|jYnXdS)"Nzinvalid file: %rzinvalid mode: %rzinvalid buffering: %rzinvalid encoding: %rzinvalid errors: %rzaxrwb+tUxrwa+tbUz$can't use U and writing mode at oncerz'U' mode is deprecatedr Tz'can't have text and binary mode at oncer z)can't have read/write/append mode at oncez/must have exactly one of read/write/append modez-binary mode doesn't take an encoding argumentz+binary mode doesn't take an errors argumentz+binary mode doesn't take a newline argumentopenerFzinvalid buffering sizezcan't have unbuffered text I/Ozunknown mode: %r) isinstancestrbytesint TypeErrorsetlen ValueErrorwarningswarnDeprecationWarningFileIOisattyDEFAULT_BUFFER_SIZEosfstatfileno st_blksizeOSErrorAttributeErrorBufferedRandomBufferedWriterBufferedReader TextIOWrappermodeclose)filer1 bufferingencodingerrorsnewlineclosefdrZmodesZcreatingreadingwritingZ appendingZupdatingtextbinaryr!rawresultline_bufferingbsbufferrB*/opt/alt/python35/lib64/python3.5/_pyio.pyopen)s{ (                   ?$        rDc@seZdZddZdS) DocDescriptorcCs dtjS)Nz\open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) )rD__doc__)selfobjtyprBrBrC__get__szDocDescriptor.__get__N)__name__ __module__ __qualname__rJrBrBrBrCrEs rEc@s%eZdZeZddZdS) OpenWrappercOs t||S)N)rD)clsargskwargsrBrBrC__new__szOpenWrapper.__new__N)rKrLrMrErFrRrBrBrBrCrNs  rNc@seZdZdS)UnsupportedOperationN)rKrLrMrBrBrBrCrSs rSc@sTeZdZddZdddZddZdd d Zd d Zd ZddZ ddZ ddZ dddZ ddZ dddZddZdddZeddZdd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd5d+d,Zd-d.Zd/d0Zdd1d2Zd3d4ZdS)6IOBasecCs td|jj|fdS)Nz%s.%s() not supported)rS __class__rK)rGnamerBrBrC _unsupported?szIOBase._unsupportedrcCs|jddS)Nseek)rW)rGposwhencerBrBrCrXFsz IOBase.seekcCs|jddS)Nrr )rX)rGrBrBrCtellVsz IOBase.tellNcCs|jddS)Ntruncate)rW)rGrYrBrBrCr\ZszIOBase.truncatecCs|jdS)N) _checkClosed)rGrBrBrCflushdsz IOBase.flushFc Cs(|js$z|jWdd|_XdS)NT)_IOBase__closedr^)rGrBrBrCr2ns z IOBase.closec Csy|jWnYnXdS)N)r2)rGrBrBrC__del__yszIOBase.__del__cCsdS)NFrB)rGrBrBrCseekableszIOBase.seekablecCs.|js*t|dkr!dn|dS)NzFile or stream is not seekable.)rarS)rGmsgrBrBrC_checkSeekables zIOBase._checkSeekablecCsdS)NFrB)rGrBrBrCreadableszIOBase.readablecCs.|js*t|dkr!dn|dS)NzFile or stream is not readable.)rdrS)rGrbrBrBrC_checkReadables zIOBase._checkReadablecCsdS)NFrB)rGrBrBrCwritableszIOBase.writablecCs.|js*t|dkr!dn|dS)NzFile or stream is not writable.)rfrS)rGrbrBrBrC_checkWritables zIOBase._checkWritablecCs|jS)N)r_)rGrBrBrCclosedsz IOBase.closedcCs+|jr't|dkrdn|dS)NzI/O operation on closed file.)rhr )rGrbrBrBrCr]s zIOBase._checkClosedcCs|j|S)N)r])rGrBrBrC __enter__s zIOBase.__enter__cGs|jdS)N)r2)rGrPrBrBrC__exit__szIOBase.__exit__cCs|jddS)Nr))rW)rGrBrBrCr)sz IOBase.filenocCs|jdS)NF)r])rGrBrBrCr%s z IOBase.isattyr cstdr'fdd}n dd}dkrHd nttsctdt}xUdkst|krj|}|sP||7}|jdroPqoWt|S) NpeekcsWjd}|sdS|jddp5t|}dkrSt|}|S)Nr s r)rkfindrmin)Z readaheadn)rGsizerBrC nreadaheads z#IOBase.readline..nreadaheadcSsdS)Nr rBrBrBrBrCrpsr zsize must be an integerrs r) hasattrrrr bytearrayrreadendswithr)rGrorpresrrB)rGrorCreadlines      ! zIOBase.readlinecCs|j|S)N)r])rGrBrBrC__iter__s zIOBase.__iter__cCs|j}|st|S)N)rv StopIteration)rGlinerBrBrC__next__ s zIOBase.__next__cCsm|dks|dkr"t|Sd}g}x8|D]0}|j||t|7}||kr5Pq5W|S)Nr)listappendr)rGZhintrnlinesryrBrBrC readliness    zIOBase.readlinescCs,|jx|D]}|j|qWdS)N)r]write)rGr}ryrBrBrC writelines"s  zIOBase.writelinesr)rKrLrMrWrXr[r\r^r_r2r`rarcrdrerfrgpropertyrhr]rirjr)r%rvrwrzr~rrBrBrBrCrTs2 $           %  rT metaclassc@sCeZdZd ddZddZddZdd Zd S) RawIOBaser cCsp|dkrd}|dkr(|jSt|j}|j|}|dkrYdS||d=t|S)Nr rr)readallrr __index__readintor)rGrorrnrBrBrCrs8s     zRawIOBase.readcCsHt}x$|jt}|s"P||7}q W|r@t|S|SdS)N)rrrsr&r)rGrudatarBrBrCrIs  zRawIOBase.readallcCs|jddS)Nr)rW)rGrrBrBrCrWszRawIOBase.readintocCs|jddS)Nr)rW)rGrrBrBrCr_szRawIOBase.writeNr)rKrLrMrsrrrrBrBrBrCr*s   r)r$c@sjeZdZdddZdddZddZdd Zd d Zd d ZddZ dS)BufferedIOBaseNcCs|jddS)Nrs)rW)rGrorBrBrCrs}szBufferedIOBase.readcCs|jddS)Nread1)rW)rGrorBrBrCrszBufferedIOBase.read1cCs|j|ddS)NrF) _readinto)rGrrBrBrCrs zBufferedIOBase.readintocCs|j|ddS)NrT)r)rGrrBrBrC readinto1s zBufferedIOBase.readinto1cCs}t|tst|}|jd}|rH|jt|}n|jt|}t|}||d|<|S)NB)r memoryviewcastrrrs)rGrrrrnrBrBrCrs  zBufferedIOBase._readintocCs|jddS)Nr)rW)rGrrBrBrCrs zBufferedIOBase.writecCs|jddS)Ndetach)rW)rGrBrBrCrszBufferedIOBase.detach) rKrLrMrsrrrrrrrBrBrBrCrls    rc@seZdZddZdddZddZdd d Zd d Zd dZddZ ddZ e ddZ e ddZ e ddZe ddZddZddZdd Zd!d"ZdS)#_BufferedIOMixincCs ||_dS)N)_raw)rGr=rBrBrC__init__sz_BufferedIOMixin.__init__rcCs1|jj||}|dkr-td|S)Nrz#seek() returned an invalid position)r=rXr+)rGrYrZZ new_positionrBrBrCrXs  z_BufferedIOMixin.seekcCs+|jj}|dkr'td|S)Nrz#tell() returned an invalid position)r=r[r+)rGrYrBrBrCr[s  z_BufferedIOMixin.tellNcCs2|j|dkr"|j}|jj|S)N)r^r[r=r\)rGrYrBrBrCr\s   z_BufferedIOMixin.truncatecCs&|jrtd|jjdS)Nzflush of closed file)rhr r=r^)rGrBrBrCr^s  z_BufferedIOMixin.flushc Cs<|jdk r8|j r8z|jWd|jjXdS)N)r=rhr^r2)rGrBrBrCr2sz_BufferedIOMixin.closecCs;|jdkrtd|j|j}d|_|S)Nzraw stream already detached)r=r r^r)rGr=rBrBrCr s     z_BufferedIOMixin.detachcCs |jjS)N)r=ra)rGrBrBrCrasz_BufferedIOMixin.seekablecCs|jS)N)r)rGrBrBrCr=sz_BufferedIOMixin.rawcCs |jjS)N)r=rh)rGrBrBrCrhsz_BufferedIOMixin.closedcCs |jjS)N)r=rV)rGrBrBrCrV sz_BufferedIOMixin.namecCs |jjS)N)r=r1)rGrBrBrCr1$sz_BufferedIOMixin.modecCstdj|jjdS)Nz can not serialize a '{0}' object)rformatrUrK)rGrBrBrC __getstate__(s z_BufferedIOMixin.__getstate__c Csa|jj}|jj}y |j}Wn"tk rIdj||SYnXdj|||SdS)Nz<{}.{}>z<{}.{} name={!r}>)rUrLrMrV Exceptionr)rGmodnameZclsnamerVrBrBrC__repr__,s    z_BufferedIOMixin.__repr__cCs |jjS)N)r=r))rGrBrBrCr)8sz_BufferedIOMixin.filenocCs |jjS)N)r=r%)rGrBrBrCr%;sz_BufferedIOMixin.isatty)rKrLrMrrXr[r\r^r2rrarr=rhrVr1rrr)r%rBrBrBrCrs       rcseZdZdddZddZddZdd Zfd d Zdd d ZddZ ddZ dddZ ddZ dddZ ddZddZddZS)BytesIONcCs5t}|dk r||7}||_d|_dS)Nr)rr_buffer_pos)rGZ initial_bytesbufrBrBrCrCs     zBytesIO.__init__cCs"|jrtd|jjS)Nz__getstate__ on closed file)rhr __dict__copy)rGrBrBrCrJs  zBytesIO.__getstate__cCs"|jrtdt|jS)Nzgetvalue on closed file)rhr rr)rGrBrBrCgetvalueOs  zBytesIO.getvaluecCs"|jrtdt|jS)Nzgetbuffer on closed file)rhr rr)rGrBrBrC getbufferVs  zBytesIO.getbuffercs|jjtjdS)N)rclearsuperr2)rG)rUrBrCr2]s z BytesIO.closecCs|jrtd|dkr'd}|dkrBt|j}t|j|jkr^dStt|j|j|}|j|j|}||_t|S)Nzread from closed filer rr)rhr rrrrmr)rGroZnewposrrBrBrCrsas     z BytesIO.readcCs |j|S)N)rs)rGrorBrBrCrosz BytesIO.read1c Cs|jrtdt|tr0tdt|}|j}WdQRX|dkr_dS|j}|t|j krd|t|j }|j |7_ ||j |||<|j|7_|S)Nzwrite to closed filez can't write str to binary streamrs) rhr rrrrnbytesrrr)rGrviewrnrYZpaddingrBrBrCrts     z BytesIO.writercCs|jrtdy |jWn4tk rV}ztd|WYdd}~XnX|dkr|dkrtd|f||_nb|dkrtd|j||_n:|dkrtdt|j||_n td|jS)Nzseek on closed filezan integer is requiredrznegative seek position %rr r zunsupported whence value) rhr rr,rrmaxrr)rGrYrZerrrBrBrCrXs    "     " z BytesIO.seekcCs|jrtd|jS)Nztell on closed file)rhr r)rGrBrBrCr[s  z BytesIO.tellcCs|jrtd|dkr-|j}nay |jWn4tk rn}ztd|WYdd}~XnX|dkrtd|f|j|d=|S)Nztruncate on closed filezan integer is requiredrznegative truncate position %r)rhr rrr,rr)rGrYrrBrBrCr\s     " zBytesIO.truncatecCs|jrtddS)NzI/O operation on closed file.T)rhr )rGrBrBrCrds  zBytesIO.readablecCs|jrtddS)NzI/O operation on closed file.T)rhr )rGrBrBrCrfs  zBytesIO.writablecCs|jrtddS)NzI/O operation on closed file.T)rhr )rGrBrBrCras  zBytesIO.seekable)rKrLrMrrrrr2rsrrrXr[r\rdrfrarBrB)rUrCr?s         rc@seZdZeddZddZddZddd Zdd d Zd d dZ d ddZ ddZ ddZ ddZ d ddZdS)r/cCsc|jstdtj|||dkr@td||_|jt|_dS)Nz "raw" argument must be readable.rzinvalid buffer size) rdr+rrr buffer_size_reset_read_bufLock _read_lock)rGr=rrBrBrCrs      zBufferedReader.__init__cCs |jjS)N)r=rd)rGrBrBrCrdszBufferedReader.readablecCsd|_d|_dS)Nrr) _read_buf _read_pos)rGrBrBrCrs zBufferedReader._reset_read_bufNc CsF|dk r$|dkr$td|j|j|SWdQRXdS)Nr zinvalid number of bytes to readr)r r_read_unlocked)rGrorBrBrCrss  zBufferedReader.readc Csd}d}|j}|j}|dks6|dkr|jt|jdr|jj}|dkr||dpdS||d|S||dg}d}xC|jj}||kr|}P|t|7}|j|qWdj |p|St||} || krB|j|7_||||S||dg}t |j |} xR| |kr|jj| }||kr|}P| t|7} |j|qjWt || }dj |} | |d|_d|_| r | d|S|S)Nrr rr)rNr) rrrrqr=rrsrr|joinrrrm) rGrnZ nodata_valZ empty_valuesrrYchunkchunksZ current_sizeavailZwantedoutrBrBrCrsN        zBufferedReader._read_unlockedrc Cs"|j|j|SWdQRXdS)N)r_peek_unlocked)rGrorBrBrCrks zBufferedReader.peekcCst||j}t|j|j}||ks@|dkr|j|}|jj|}|r|j|jd||_d|_|j|jdS)Nr)rmrrrrr=rs)rGrnZwantZhaveZto_readcurrentrBrBrCr(s  zBufferedReader._peek_unlockedc Csp|dkrtd|dkr(dS|j8|jd|jt|t|j|jSWdQRXdS)Nrz(number of bytes to read must be positiverr )r rrrrmrrr)rGrorBrBrCr3s     zBufferedReader.read1c Cset|tst|}|jdkr.dS|jd}d}|jx |t|krYtt|j|jt|}|r|j|j|j|||||<|j|7_||7}|t|krPt|||j kr-|j j ||d}|s P||7}n|o6|sI|j dsIP|rP|rPPqPWWdQRX|S)Nrrr ) rrrrrrrmrrrr=rr)rGrrwrittenrrnrBrBrCrEs4  %+     zBufferedReader._readintocCs!tj|t|j|jS)N)rr[rrr)rGrBrBrCr[sszBufferedReader.tellc Csv|tkrtd|jN|dkrH|t|j|j8}tj|||}|j|SWdQRXdS)Nzinvalid whence valuer ) valid_seek_flagsr rrrrrrXr)rGrYrZrBrBrCrXvs     zBufferedReader.seek)rKrLrMr&rrdrrsrrkrrrr[rXrBrBrBrCr/s    4   . r/c@syeZdZeddZddZddZddd Zd d Zd d Z ddZ dddZ dS)r.cCse|jstdtj|||dkr@td||_t|_t|_ dS)Nz "raw" argument must be writable.rzinvalid buffer size) rfr+rrr rrr _write_bufr _write_lock)rGr=rrBrBrCrs      zBufferedWriter.__init__cCs |jjS)N)r=rf)rGrBrBrCrfszBufferedWriter.writablecCsT|jrtdt|tr0td|jt|j|jkr\|j t|j}|jj |t|j|}t|j|jkrEy|j Wnt k rD}znt|j|jkr2t|j|j}||8}|jd|j|_t |j |j |WYdd}~XnX|SWdQRXdS)Nzwrite to closed filez can't write str to binary stream)rhr rrrrrrr_flush_unlockedextendBlockingIOErrorerrnostrerror)rGrZbeforereZoveragerBrBrCrs(      +zBufferedWriter.writeNc CsJ|j:|j|dkr/|jj}|jj|SWdQRXdS)N)rrr=r[r\)rGrYrBrBrCr\s    zBufferedWriter.truncatec Cs|j|jWdQRXdS)N)rr)rGrBrBrCr^s zBufferedWriter.flushc Cs|jrtdx|jry|jj|j}Wntk rZtdYnX|dkr|ttjdd|t |jks|dkrt d|jd|=qWdS)Nzflush of closed filezHself.raw should implement RawIOBase: it should not raise BlockingIOErrorz)write could not complete without blockingrz*write() returned incorrect number of bytes) rhr rr=rr RuntimeErrorrEAGAINrr+)rGrnrBrBrCrs      ! zBufferedWriter._flush_unlockedcCstj|t|jS)N)rr[rr)rGrBrBrCr[szBufferedWriter.tellrc CsJ|tkrtd|j"|jtj|||SWdQRXdS)Nzinvalid whence value)rr rrrrX)rGrYrZrBrBrCrXs     zBufferedWriter.seek) rKrLrMr&rrfrr\r^rr[rXrBrBrBrCr.s      r.c@seZdZeddZdddZddZdd Zd d d Zd dZ ddZ ddZ ddZ ddZ ddZddZeddZdS)BufferedRWPaircCsX|jstd|js0tdt|||_t|||_dS)Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rdr+rfr/readerr.writer)rGrrrrBrBrCrs     zBufferedRWPair.__init__NcCs"|dkrd}|jj|S)Nr r)rrs)rGrorBrBrCrss zBufferedRWPair.readcCs|jj|S)N)rr)rGrrBrBrCrszBufferedRWPair.readintocCs|jj|S)N)rr)rGrrBrBrCrszBufferedRWPair.writercCs|jj|S)N)rrk)rGrorBrBrCrkszBufferedRWPair.peekcCs|jj|S)N)rr)rGrorBrBrCrszBufferedRWPair.read1cCs|jj|S)N)rr)rGrrBrBrCr szBufferedRWPair.readinto1cCs |jjS)N)rrd)rGrBrBrCrd szBufferedRWPair.readablecCs |jjS)N)rrf)rGrBrBrCrfszBufferedRWPair.writablecCs |jjS)N)rr^)rGrBrBrCr^szBufferedRWPair.flushc Cs&z|jjWd|jjXdS)N)rr2r)rGrBrBrCr2szBufferedRWPair.closecCs|jjp|jjS)N)rr%r)rGrBrBrCr%szBufferedRWPair.isattycCs |jjS)N)rrh)rGrBrBrCrhszBufferedRWPair.closed)rKrLrMr&rrsrrrkrrrdrfr^r2r%rrhrBrBrBrCrs          rc@seZdZeddZdddZddZdd d Zdd d Zd dZ dddZ ddZ ddZ ddZ dS)r-cCs4|jtj|||tj|||dS)N)rcr/rr.)rGr=rrBrBrCr,s zBufferedRandom.__init__rcCs|tkrtd|j|jr_|j(|jj|jt|jdWdQRX|jj||}|j|j WdQRX|dkrt d|S)Nzinvalid whence valuer rz seek() returned invalid position) rr r^rrr=rXrrrr+)rGrYrZrBrBrCrX1s     *   zBufferedRandom.seekcCs'|jrtj|Stj|SdS)N)rr.r[r/)rGrBrBrCr[Bs  zBufferedRandom.tellNcCs(|dkr|j}tj||S)N)r[r.r\)rGrYrBrBrCr\Hs  zBufferedRandom.truncatecCs,|dkrd}|jtj||S)Nr r)r^r/rs)rGrorBrBrCrsNs  zBufferedRandom.readcCs|jtj||S)N)r^r/r)rGrrBrBrCrTs zBufferedRandom.readintocCs|jtj||S)N)r^r/rk)rGrorBrBrCrkXs zBufferedRandom.peekcCs|jtj||S)N)r^r/r)rGrorBrBrCr\s zBufferedRandom.read1cCs|jtj||S)N)r^r/r)rGrrBrBrCr`s zBufferedRandom.readinto1c CsW|jrG|j2|jj|jt|jd|jWdQRXtj||S)Nr ) rrr=rXrrrr.r)rGrrBrBrCrds   #zBufferedRandom.write)rKrLrMr&rrXr[r\rsrrkrrrrBrBrBrCr-#s     r-cs]eZdZd0ZdZdZdZdZdZdZ dddddZ dd Z d d Z d d Z ddZdddZdddZddZddZddZeddZddZdddZfd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zed,d-Zed.d/Z S)1r$r FNTrc Cs|jdkr9z|jr+tj|jWdd|_Xt|trTtdt|tr|}|dkrtdnd}t|t std|ft |t dkstd|ft dd|Ddks |j d dkrtd d |krHd |_ d |_tjtjB}ntd |krfd |_d}nVd|krd |_tjtjB}n.d|krd |_d |_tjtjB}d |krd |_d |_|jr|jr|tjO}n&|jr|tjO}n |tjO}|ttddO}ttddpYttdd}||O}d}yp|dkr|std|dkrtj||d}nB|||}t|tstd|dkrtd|}|stj|d||_tj|} y7tj| jr]t t!j"tj#t!j"|Wnt$k rrYnXt| dd|_%|j%dkrt&|_%t'rt'|tj(||_)|jrtj*|dt+Wn$|dk rtj|YnX||_dS)Nrr z$integer argument expected, got floatznegative file descriptorzinvalid mode: %szxrwab+css|]}|dkVqdS)ZrwaxNrB).0crBrBrC sz"FileIO.__init__..rzKMust have exactly one of create/read/write/append mode and at most one plusrTrrrO_BINARYZ O_NOINHERIT O_CLOEXECz'Cannot use closefd=False with file nameizexpected integer from openerzNegative file descriptorFr*rr),_fd_closefdr'r2rfloatrrr rrsumcount_created _writableO_EXCLO_CREAT _readableO_TRUNC _appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrDr+set_inheritabler(statS_ISDIRst_modeIsADirectoryErrorrZEISDIRrr,_blksizer&_setmoderrVlseekr ) rGr3r1r8rfdflagsZnoinherit_flagZowned_fdZfdfstatrBrBrCrvs     4                                zFileIO.__init__cCsY|jdkrU|jrU|j rUddl}|jd|ftdd|jdS)Nrzunclosed file %r stacklevelr )rrrhr!r"ResourceWarningr2)rGr!rBrBrCr`s " zFileIO.__del__cCstd|jjdS)Nzcannot serialize '%s' object)rrUrK)rGrBrBrCrszFileIO.__getstate__c Csd|jj|jjf}|jr-d|Sy |j}Wn/tk rkd||j|j|jfSYnXd|||j|jfSdS)Nz%s.%sz <%s [closed]>z<%s fd=%d mode=%r closefd=%r>z<%s name=%r mode=%r closefd=%r>) rUrLrMrhrVr,rr1r)rG class_namerVrBrBrCrs    zFileIO.__repr__cCs|jstddS)NzFile not open for reading)rrS)rGrBrBrCres zFileIO._checkReadablecCs|jstddS)NzFile not open for writing)rrS)rGrbrBrBrCrgs zFileIO._checkWritablec Csj|j|j|dks,|dkr6|jSytj|j|SWntk redSYnXdS)Nr)r]rerr'rsrr)rGrorBrBrCrs s    z FileIO.readcCs|j|jt}yKtj|jdt}tj|jj}||krd||d}Wnt k ryYnXt }xt ||krt |}|t |t7}|t |}ytj |j|}Wntk r|rPdSYnX|sP||7}qWt|S)Nrr )r]rer&r'rrrr(st_sizer+rrrrrsrr)rGbufsizerYendr>rnrrBrBrCrs4        zFileIO.readallcCsJt|jd}|jt|}t|}||d|<|S)Nr)rrrsr)rGrmrrnrBrBrCr>s  zFileIO.readintoc CsH|j|jytj|j|SWntk rCdSYnXdS)N)r]rgr'rrr)rGrrBrBrCrFs    z FileIO.writecCs;t|trtd|jtj|j||S)Nzan integer is required)rrrr]r'rr)rGrYrZrBrBrCrXTs   z FileIO.seekcCs |jtj|jdtS)Nr)r]r'rrr)rGrBrBrCr[ds z FileIO.tellcCsC|j|j|dkr,|j}tj|j||S)N)r]rgr[r' ftruncater)rGrorBrBrCr\ks     zFileIO.truncatec s;|js7z|jr%tj|jWdtjXdS)N)rhrr'r2rr)rG)rUrBrCr2xs   z FileIO.closec CsU|j|jdkrNy|jWntk rDd|_Yn Xd|_|jS)NFT)r] _seekabler[r+)rGrBrBrCras   zFileIO.seekablecCs|j|jS)N)r]r)rGrBrBrCrds zFileIO.readablecCs|j|jS)N)r]r)rGrBrBrCrfs zFileIO.writablecCs|j|jS)N)r]r)rGrBrBrCr)s z FileIO.filenocCs|jtj|jS)N)r]r'r%r)rGrBrBrCr%s z FileIO.isattycCs|jS)N)r)rGrBrBrCr8szFileIO.closefdcCs_|jr|jrdSdSn>|jr:|jr3dSdSn!|jrW|jrPdSdSndSdS)Nzxb+xbzab+abzrb+rbwb)rrrr)rGrBrBrCr1s      z FileIO.moder)!rKrLrMrrrrrrrrr`rrrergrsrrrrrXr[r\r2rardrfr)r%rr8r1rBrB)rUrCr$ms8 u     #        r$c@seZdZdddZddZdddZd d Zd d Zed dZ eddZ eddZ dS) TextIOBaser cCs|jddS)Nrs)rW)rGrorBrBrCrsszTextIOBase.readcCs|jddS)Nr)rW)rGsrBrBrCrszTextIOBase.writeNcCs|jddS)Nr\)rW)rGrYrBrBrCr\szTextIOBase.truncatecCs|jddS)Nrv)rW)rGrBrBrCrvszTextIOBase.readlinecCs|jddS)Nr)rW)rGrBrBrCrszTextIOBase.detachcCsdS)NrB)rGrBrBrCr5szTextIOBase.encodingcCsdS)NrB)rGrBrBrCnewlinesszTextIOBase.newlinescCsdS)NrB)rGrBrBrCr6szTextIOBase.errorsr) rKrLrMrsrr\rvrrr5rr6rBrBrBrCrs     rc@sveZdZdddZdddZddZd d Zd d Zd ZdZ dZ e ddZ dS)IncrementalNewlineDecoderstrictcCs>tjj|d|||_||_d|_d|_dS)Nr6rF)codecsIncrementalDecoderr translatedecoderseennl pendingcr)rGrrr6rBrBrCr s    z"IncrementalNewlineDecoder.__init__FcCs+|jdkr|}n|jj|d|}|jrX|sE|rXd|}d|_|jdr| r|dd}d|_|jd}|jd|}|jd|}|j|o|j|o|jB|o|jBO_|j r'|r|j dd}|r'|j dd}|S) Nfinal Fr Tz  r) rdecoderrtrr_LF_CR_CRLFrreplace)rGinputroutputZcrlfZcrZlfrBrBrCrs(    + z IncrementalNewlineDecoder.decodecCsZ|jdkrd}d}n|jj\}}|dK}|jrP|dO}||fS)Nrrr )rgetstater)rGrflagrBrBrCr1s    z"IncrementalNewlineDecoder.getstatecCsL|\}}t|d@|_|jdk rH|jj||d?fdS)Nr )boolrrsetstate)rGstaterrrBrBrCr <s z"IncrementalNewlineDecoder.setstatecCs2d|_d|_|jdk r.|jjdS)NrF)rrrreset)rGrBrBrCr Bs  zIncrementalNewlineDecoder.resetr r c Cs d|jS) Nrr rrrr rr rrr )Nrrrr rrr)r)rGrBrBrCrLsz"IncrementalNewlineDecoder.newlinesN) rKrLrMrrrr r rrrrrrBrBrBrCrs   rc@seZdZdZdddddddZddZedd Zed d Zed d Z eddZ ddZ ddZ ddZ ddZddZeddZeddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zdd*d+Zd,d-Zd.d/Zd0d0d0d0d1d2Zd3d4Zd5d6Zdd7d8Zd9d:Zd0d;d<Z dd=d>Z!d?d@Z"ddAdBZ#edCdDZ$dS)Er0iNFc Cs|dk r5t|t r5tdt|f|dkrTtd|f|dkrytj|j}Wntt fk rYnX|dkryddl }Wnt k rd}YnX|j d }t|tstd |t j|js!d }t|||dkr6d }nt|tsUtd |||_||_||_||_| |_|dk|_||_|dk|_|ptj|_d|_d|_d|_d|_d|_|j j!|_"|_#t$|j d|_%d|_&|j"r||j'r||j j(} | dkr|y|j)j*dWntk r{YnXdS)Nzillegal newline type: %rrrr zillegal newline value: %rrasciiFzinvalid encoding: %rzG%r is not a text encoding; use codecs.open() to handle arbitrary codecsrzinvalid errors: %rrg)Nrrrr)+rrrtyper r'device_encodingr)r,rSlocale ImportErrorgetpreferredencodingrlookup_is_text_encoding LookupErrorr_line_buffering _encoding_errors_readuniversal_readtranslate_readnl_writetranslatelinesep_writenl_encoder_decoder_decoded_chars_decoded_chars_used _snapshotrArar_tellingrq _has_read1 _b2cratiorfr[ _get_encoderr ) rGrAr5r6r7r? write_throughrrbpositionrBrBrCrvs`                     zTextIOWrapper.__init__cCsdj|jj|jj}y |j}Wntk r?YnX|dj|7}y |j}Wntk rtYnX|dj|7}|dj|jS)Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)rrUrLrMrVrr1r5)rGr>rVr1rBrBrCrs    zTextIOWrapper.__repr__cCs|jS)N)r)rGrBrBrCr5szTextIOWrapper.encodingcCs|jS)N)r)rGrBrBrCr6szTextIOWrapper.errorscCs|jS)N)r)rGrBrBrCr?szTextIOWrapper.line_bufferingcCs|jS)N)r)rGrBrBrCrAszTextIOWrapper.buffercCs|jrtd|jS)NzI/O operation on closed file.)rhr r)rGrBrBrCras  zTextIOWrapper.seekablecCs |jjS)N)rArd)rGrBrBrCrdszTextIOWrapper.readablecCs |jjS)N)rArf)rGrBrBrCrfszTextIOWrapper.writablecCs|jj|j|_dS)N)rAr^rr*)rGrBrBrCr^s zTextIOWrapper.flushc Cs<|jdk r8|j r8z|jWd|jjXdS)N)rArhr^r2)rGrBrBrCr2szTextIOWrapper.closecCs |jjS)N)rArh)rGrBrBrCrhszTextIOWrapper.closedcCs |jjS)N)rArV)rGrBrBrCrVszTextIOWrapper.namecCs |jjS)N)rAr))rGrBrBrCr)szTextIOWrapper.filenocCs |jjS)N)rAr%)rGrBrBrCr%szTextIOWrapper.isattycCs|jrtdt|ts:td|jjt|}|jsX|j oad|k}|r|jr|j dkr|j d|j }|j p|j }|j|}|jj||j r|sd|kr|jd|_|jr|jj|S)Nzwrite to closed filezcan't write %s to text streamrr)rhr rrrrUrKrr"rr$rr%r-encoderArr^r)r&r )rGrlengthZhaslfencoderrrBrBrCrs$       zTextIOWrapper.writecCs+tj|j}||j|_|jS)N)rgetincrementalencoderrrr%)rGZ make_encoderrBrBrCr-szTextIOWrapper._get_encodercCsItj|j}||j}|jr<t||j}||_|S)N)rgetincrementaldecoderrrrrr r&)rGZ make_decoderrrBrBrC _get_decoders   zTextIOWrapper._get_decodercCs||_d|_dS)Nr)r'r()rGcharsrBrBrC_set_decoded_chars's z TextIOWrapper._set_decoded_charscCs[|j}|dkr+|j|d}n|j|||}|jt|7_|S)N)r(r'r)rGrnoffsetr6rBrBrC_get_decoded_chars,s   z TextIOWrapper._get_decoded_charscCs.|j|krtd|j|8_dS)Nz"rewind decoded_chars out of bounds)r(AssertionError)rGrnrBrBrC_rewind_decoded_chars6s z#TextIOWrapper._rewind_decoded_charscCs|jdkrtd|jr9|jj\}}|jrZ|jj|j}n|jj|j}| }|jj ||}|j ||rt |t |j |_ n d|_ |jr|||f|_| S)Nz no decoderg)r&r r*rr+rAr _CHUNK_SIZErsrr7rr'r,r))rG dec_buffer dec_flags input_chunkeofZ decoded_charsrBrBrC _read_chunk<s       zTextIOWrapper._read_chunkrcCs*||d>B|d>B|d>Bt|d>BS)N@)r)rGr/r> bytes_to_feedneed_eof chars_to_skiprBrBrC _pack_cookiefszTextIOWrapper._pack_cookiecCsgt|d\}}t|d\}}t|d\}}t|d\}}|||||fS)Nr rBllll)divmod)rGZbigintrestr/r>rFrGrHrBrBrC_unpack_cookieps zTextIOWrapper._unpack_cookiecCs|jstd|js*td|j|jj}|j}|dksg|jdkr|j r|t d|S|j\}}|t |8}|j }|dkr|j ||S|j}zt|j|}d}x|dkr|jd|ft |j|d|} | |kr{|j\} } | sb| }|| 8}P|t | 8}d}q||8}|d}qWd}|jd|f||} |} |dkr|j | | Sd}d}d}xt|t |D]}|d7}|t |j|||d7}|j\}}| r||kr| |7} ||8}|dd} }}||krPqW|t |jddd 7}d}||krtd |j | | |||SWd|j|XdS) Nz!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textrr rr rTz'can't reconstruct logical file position)rrSr*r+r^rAr[r&r)r'r:rr(rIrrr,r rrange)rGr/rr>Z next_inputrH saved_stateZ skip_bytesZ skip_backrnrd start_posZ start_flagsZ bytes_fedrGZ chars_decodedir=rBrBrCr[wsv                  '     zTextIOWrapper.tellcCs2|j|dkr"|j}|jj|S)N)r^r[rAr\)rGrYrBrBrCr\s   zTextIOWrapper.truncatecCs;|jdkrtd|j|j}d|_|S)Nzbuffer is already detached)rAr r^r)rGrArBrBrCrs     zTextIOWrapper.detachc smfdd}jr'tdjs<td|dkrr|dkr`tdd}j}|dkr|dkrtd jjjdd}jd d_ j rj j |||S|dkrtd |f|dkr-td |fjj |\}}}}} jj|jd d_ |dkrj rj j nRj s|s| rj pj _ j jd |f|d f_ | r_jj|} jj j| ||| f_ tj| krVtd| _|||S)Nc sXyjpj}Wntk r-Yn'X|dkrJ|jdn |jdS)Nr)r%r-rr r )r/r2)rGrBrC_reset_encoders  z*TextIOWrapper.seek.._reset_encoderztell on closed filez!underlying stream is not seekabler rz#can't do nonzero cur-relative seeksr z#can't do nonzero end-relative seeksrzunsupported whence (%r)znegative seek position %rrz#can't restore logical file position)rhr rrSr[r^rArXr7r)r&r rLr5r rsrrr'r+r() rGZcookierZrRr/rPr>rFrGrHr?rB)rGrCrXs\                         zTextIOWrapper.seekcCs(|j|dkrd}|jp.|j}y |jWn4tk rr}ztd|WYdd}~XnX|dkr|j|j|jj dd}|j dd|_ |Sd}|j|}xGt ||kr| r|j }||j|t |7}qW|SdS) Nr zan integer is requiredrrTrFr)rer&r5rr,rr9rrArsr7r)rrA)rGrorrr>r@rBrBrCrs3 s(   "     !zTextIOWrapper.readcCs:d|_|j}|s6d|_|j|_t|S)NF)r*rvr)rrx)rGryrBrBrCrzL s    zTextIOWrapper.__next__cCsn|jrtd|dkr*d }nt|tsEtd|j}d}|jsj|jd}}x|jr|j d|}|dkr|d}Pqt |}n|j r}|j d|}|j d|}|d kr|d krt |}qz|d}Pq|d kr7|d}Pq||krQ|d}Pq||dkro|d}Pq|d}Pn2|j |j }|dkr|t |j }P|dkrt ||kr|}Px|j r|jrPqW|jr ||j7}qw|jdd|_|SqwW|dkrI||krI|}|jt |||d|S) Nzread from closed filer zsize must be an integerrrrr rrrrr)rhr rrrr9r&r5r rlrrr!rAr'r7r)r;)rGrorystartrYendposZnlposZcrposrBrBrCrvU sp                           zTextIOWrapper.readlinecCs|jr|jjSdS)N)r&r)rGrBrBrCr szTextIOWrapper.newlines)%rKrLrMr<rrrr5r6r?rArardrfr^r2rhrVr)r%rr-r5r7r9r;rArIrLr[r\rrXrsrzrvrrBrBrBrCr0YsF  E             *  c K Xr0cspeZdZddfddZddZddZed d Zed d Zd dZ S)StringIOrrcstt|jtddddd||dkr@d|_|dk rt|tsytdjt |j |j ||j ddS) Nr5zutf-8r6 surrogatepassr7Fz*initial_value must be str or None, not {0}r) rrUrrr"rrrrrrKrrX)rGZ initial_valuer7)rUrBrCr s     zStringIO.__init__c Csj|j|jp|j}|j}|jz |j|jjddSWd|j|XdS)NrT) r^r&r5rr rrArr )rGrZ old_staterBrBrCr s    zStringIO.getvaluecCs tj|S)N)objectr)rGrBrBrCr szStringIO.__repr__cCsdS)NrB)rGrBrBrCr6 szStringIO.errorscCsdS)NrB)rGrBrBrCr5 szStringIO.encodingcCs|jddS)Nr)rW)rGrBrBrCr szStringIO.detach) rKrLrMrrrrr6r5rrBrB)rUrCrU s  rU)5r'abcrrarrayrsys_threadrrr _dummy_threadplatformmsvcrtrriorrrr rrqaddr SEEK_DATAr&rrDrErNrSr,r+r ABCMetarTregisterr_ior$rrrr/r.rr-rrrr0rUrBrBrBrCsj         "      = giZIJTAU[