a DOgl@svddlZddlZddlZddlZddlZddlZddlmZej dvrTddl m Z ndZ ddl Z ddl mZmZmZmZhdZeedreejeejdZeZeed pejjZeZd5d dZddZz e jZWne yeZYn0GdddZ!GdddZ"z e j#Z#Wn&e yBGddde$e%Z#Yn0Gdddej&dZ'e j'(e'Gddde'Z)e j)(e)ddl*m+Z+e)(e+Gddde'Z,e j,(e,Gdd d e,Z-Gd!d"d"e,Z.Gd#d$d$e-Z/Gd%d&d&e-Z0Gd'd(d(e,Z1Gd)d*d*e0e/Z2Gd+d,d,e)Z+Gd-d.d.e'Z3e j3(e3Gd/d0d0ej4Z5Gd1d2d2e3Z6Gd3d4d4e6Z7dS)6N) allocate_lock>cygwinZwin32)setmode)__all__SEEK_SETSEEK_CURSEEK_END>r SEEK_HOLEi ZgettotalrefcountrTc Cst|tst|}t|tttfs0td|t|tsFtd|t|ts\td||durzt|tsztd||durt|tstd|t|}|tdst|t|krt d|d|v} d|v} d |v} d |v} d |v} d |v}d |v}d|vrD| s"| s"| s"| r*t dddl }| dt dd} |rX|rXt d| | | | dkrvt d| s| s| s| st d|r|durt d|r|durt d|r|durt d|r|dkrddl }| dt dt|| rdpd| r"dp$d| r2d p4d| rBd pDd| rRd pTd||d}|}z"d}|dks|dkr|rd}d}|dkrt}zt|j}WnttfyYn0|dkr|}|dkrt d |dkr |r|WSt d!| rt||}n<| s0| s0| rd}|sdS|ddp&t|}dkr:t|}|S)Nr  r)rzfindr!min)Z readaheadnrHsizer@rA nreadaheads  z#IOBase.readline..nreadaheadcSsdSNr r@r@r@r@rAr!sr  is not an integerrr{) hasattr __index__r.r bytearrayr!readendswithr)rHrr size_indexresrr@rrAreadline s&      zIOBase.readlinecCs ||SrPrer`r@r@rA__iter__6szIOBase.__iter__cCs|}|st|SrP)r StopIterationrHliner@r@rA__next__:szIOBase.__next__cCsP|dus|dkrt|Sd}g}|D]&}|||t|7}||kr$qLq$|SNr)listappendr!)rHhintr~linesrr@r@rA readlines@s  zIOBase.readlinescCs ||D]}||q dSrP)rfwrite)rHrrr@r@rA writelinesRszIOBase.writelines)r)N)N)N)N)N)r )N)rLrMrNrYrZrarcrgrhr4rkrmrprqrrrsrtpropertyrirfrxryr+r(rrrrrr@r@r@rArV;s4"         * rV) metaclassc@s.eZdZd ddZddZddZdd Zd S) RawIOBaser cCsP|dur d}|dkr|St|}||}|dur>dS||d=t|S)Nr r)readallrrreadintor)rHrrr~r@r@rArms   zRawIOBase.readcCs4t}|t}|sq ||7}q|r,t|S|SdSrP)rrr)r)rHrdatar@r@rAr~s  zRawIOBase.readallcCs|ddS)Nrr[rHrr@r@rArszRawIOBase.readintocCs|ddSNrr[rr@r@rArszRawIOBase.writeN)r )rLrMrNrrrrr@r@r@rAr_s r)r'c@sHeZdZdddZdddZddZdd Zd d Zd d ZddZ dS)BufferedIOBaser cCs|ddSNrr[rr@r@rArszBufferedIOBase.readcCs|ddS)Nread1r[rr@r@rArszBufferedIOBase.read1cCs|j|ddS)NFr _readintorr@r@rArs zBufferedIOBase.readintocCs|j|ddS)NTrrrr@r@rA readinto1s zBufferedIOBase.readinto1cCsVt|tst|}|d}|r0|t|}n|t|}t|}||d|<|SNB)r memoryviewcastrr!r)rHrrrr~r@r@rArs   zBufferedIOBase._readintocCs|ddSrr[rr@r@rArs zBufferedIOBase.writecCs|ddSNdetachr[r`r@r@rArszBufferedIOBase.detachN)r )r ) rLrMrNrrrrrrrr@r@r@rArs    rc@seZdZddZd#ddZddZd$d d Zd d Zd dZddZ ddZ e ddZ e ddZ e ddZe ddZddZddZdd Zd!d"ZdS)%_BufferedIOMixincCs ||_dSrP_rawrHr<r@r@rA__init__sz_BufferedIOMixin.__init__rcCs"|j||}|dkrtd|S)Nrz#seek() returned an invalid position)r<rZr-)rHr]r^Z new_positionr@r@rArZsz_BufferedIOMixin.seekcCs|j}|dkrtd|S)Nrz#tell() returned an invalid position)r<rar-rdr@r@rAras z_BufferedIOMixin.tellNcCs4||||dur(|}|j|SrP)rfrtrgrar<rcrdr@r@rArc%s z_BufferedIOMixin.truncatecCs|jrtd|jdS)Nflush on closed file)rir"r<rgr`r@r@rArg6sz_BufferedIOMixin.flushcCs8|jdur4|js4z|W|jn |j0dSrP)r<rirgr4r`r@r@rAr4;s z_BufferedIOMixin.closecCs*|jdurtd||j}d|_|S)Nzraw stream already detached)r<r"rgrrr@r@rArCs  z_BufferedIOMixin.detachcCs |jSrP)r<rmr`r@r@rArmMsz_BufferedIOMixin.seekablecCs|jSrPrr`r@r@rAr<Psz_BufferedIOMixin.rawcCs|jjSrP)r<rir`r@r@rAriTsz_BufferedIOMixin.closedcCs|jjSrP)r<rXr`r@r@rArXXsz_BufferedIOMixin.namecCs|jjSrP)r<r3r`r@r@rAr3\sz_BufferedIOMixin.modecCstd|jjddSNzcannot pickle z objectrrWrLr`r@r@rA __getstate__`sz_BufferedIOMixin.__getstate__cCsL|jj}|jj}z |j}Wnty8d||YS0d|||SdS)Nz<{}.{}>z<{}.{} name={!r}>)rWrMrNrXr.format)rHmodnameZclsnamerXr@r@rA__repr__cs  z_BufferedIOMixin.__repr__cCs |jSrP)r<r+r`r@r@rAr+osz_BufferedIOMixin.filenocCs |jSrP)r<r(r`r@r@rAr(rsz_BufferedIOMixin.isatty)r)N)rLrMrNrrZrarcrgr4rrmrr<rirXr3rrr+r(r@r@r@rAr s(         rcseZdZdZd ddZddZddZdd Zfd d Zd!d dZ d"ddZ ddZ d#ddZ ddZ d$ddZddZddZddZZS)%BytesIONcCs&t}|dur||7}||_d|_dSr)r_buffer_pos)rHZ initial_bytesbufr@r@rAr~s zBytesIO.__init__cCs|jrtd|jS)Nz__getstate__ on closed file)rir"__dict__copyr`r@r@rArszBytesIO.__getstate__cCs|jrtdt|jS)Nzgetvalue on closed file)rir"rrr`r@r@rAgetvalueszBytesIO.getvaluecCs|jrtdt|jS)Nzgetbuffer on closed file)rir"rrr`r@r@rA getbufferszBytesIO.getbuffercs"|jdur|jtdSrP)rclearsuperr4r`rWr@rAr4s  z BytesIO.closer cCs|jrtd|durd}n2z |j}Wn tyFt|dYn0|}|dkr`t|j}t|j|jkrtdStt|j|j|}|j|j|}||_t |S)Nread from closed filer rr) rir"rr.rr!rrr}r)rHrrZnewposrr@r@rArs"   z BytesIO.readcCs ||SrP)rrr@r@rArsz BytesIO.read1cCs|jrtdt|tr tdt|}|j}Wdn1sD0Y|dkrZdS|j}|t|j krd|t|j }|j |7_ ||j |||<|j|7_|S)Nwrite to closed file can't write str to binary streamr) rir"rrrrnbytesrr!r)rHrZviewr~r]Zpaddingr@r@rArs  $z BytesIO.writercCs|jrtdz |j}Wn ty8t|dYn0|}|dkrf|dkr^td|f||_nD|dkrtd|j||_n(|dkrtdt|j||_ntd|jS)Nzseek on closed filerrnegative seek position %rr r zunsupported whence value) rir"rr.rrmaxr!r)rHr]r^ pos_indexr@r@rArZs"  z BytesIO.seekcCs|jrtd|jS)Ntell on closed file)rir"rr`r@r@rArasz BytesIO.tellcCsv|jrtd|dur|j}nHz |j}Wn tyHt|dYn0|}|dkrftd|f|j|d=|S)Nztruncate on closed filerrznegative truncate position %r)rir"rrr.rr)rHr]rr@r@rArcs   zBytesIO.truncatecCs|jrtddSNrvTrwr`r@r@rArqszBytesIO.readablecCs|jrtddSrrwr`r@r@rArsszBytesIO.writablecCs|jrtddSrrwr`r@r@rArmszBytesIO.seekable)N)r )r )r)N)rLrMrNrrrrrr4rrrrZrarcrqrsrm __classcell__r@r@rrArvs      rc@steZdZefddZddZddZddd Zdd d Zdd dZ dddZ dddZ ddZ ddZ dddZdS) r1cCsF|stdt|||dkr,td||_|t|_dS)Nz "raw" argument must be readable.rinvalid buffer size) rqr-rrr" buffer_size_reset_read_bufLock _read_lockrHr<rr@r@rArs zBufferedReader.__init__cCs |jSrP)r<rqr`r@r@rArqszBufferedReader.readablecCsd|_d|_dS)Nrr) _read_buf _read_posr`r@r@rAr szBufferedReader._reset_read_bufNcCsL|dur|dkrtd|j||WdS1s>0YdS)Nr zinvalid number of bytes to read)r"r_read_unlockedrr@r@rAr$szBufferedReader.readc Csd}d}|j}|j}|dus$|dkr|t|jdrj|j}|durZ||dpXdS||d|S||dg}d}|j}||vr|}q|t|7}||q|d |p|St||} || kr|j|7_||||S||dg}t |j |} | |krH|j| }||vr.|}qH| t|7} ||qt || }d |} | |d|_d|_| r| d|S|S)Nr)rNr rr) rrrrr<rrr!rjoinrrr}) rHr~Z nodata_valZ empty_valuesrr]chunkZchunksZ current_sizeavailZwantedoutr@r@rAr1sL             zBufferedReader._read_unlockedrcCs4|j||WdS1s&0YdSrP)r_peek_unlockedrr@r@rArzeszBufferedReader.peekcCsrt||j}t|j|j}||ks,|dkrb|j|}|j|}|rb|j|jd||_d|_|j|jdSr)r}rr!rrr<r)rHr~ZwantZhaveZto_readZcurrentr@r@rAros   zBufferedReader._peek_unlockedr cCsj|dkr|j}|dkrdS|j6|d|t|t|j|jWdS1s\0YdS)Nrrr )rrrrr}r!rrrr@r@rArzs zBufferedReader.read1cCs t|tst|}|jdkr dS|d}d}|j|t|krtt|j|jt|}|r|j|j|j|||||<|j|7_||7}|t|krqt|||j kr|j ||d}|sq||7}n|r|s| dsq|r6|r6qq6Wdn1s0Y|S)Nrrr ) rrrrrr!r}rrrr<rr)rHrrwrittenrr~r@r@rArs6       $zBufferedReader._readintocCst|t|j|jSrP)rrar!rrr`r@r@rAraszBufferedReader.tellcCsp|tvrtd|jF|dkr4|t|j|j8}t|||}||WdS1sb0YdS)Ninvalid whence valuer ) valid_seek_flagsr"rr!rrrrZrr\r@r@rArZszBufferedReader.seek)N)N)r)r)r )r)rLrMrNr)rrqrrrrzrrrrarZr@r@r@rAr1s  4 .r1c@s\eZdZefddZddZddZddd Zd d Zd d Z ddZ dddZ ddZ dS)r0cCsF|stdt|||dkr,td||_t|_t|_ dS)Nz "raw" argument must be writable.rr) rsr-rrr"rr _write_bufr _write_lockrr@r@rArs zBufferedWriter.__init__cCs |jSrP)r<rsr`r@r@rArsszBufferedWriter.writablec Cst|trtd|j|jr(tdt|j|jkr@| t|j}|j |t|j|}t|j|jkrz | Wnnt y}zVt|j|jkrt|j|j}||8}|jd|j|_t |j |j |WYd}~n d}~00|WdS1s 0YdS)Nrr)rrrrrir"r!rr_flush_unlockedextendBlockingIOErrorerrnostrerror)rHrZbeforereZoverager@r@rArs(    &zBufferedWriter.writeNcCsP|j6||dur"|j}|j|WdS1sB0YdSrP)rrr<rarcrdr@r@rArcs  zBufferedWriter.truncatecCs2|j|Wdn1s$0YdSrP)rrr`r@r@rArgszBufferedWriter.flushcCs|jrtd|jrz|j|j}Wnty@tdYn0|durXttjdd|t |jksn|dkrvt d|jd|=qdS)NrzHself.raw should implement RawIOBase: it should not raise BlockingIOErrorz)write could not complete without blockingrz*write() returned incorrect number of bytes) rir"rr<rr RuntimeErrorrZEAGAINr!r-rHr~r@r@rArs zBufferedWriter._flush_unlockedcCst|t|jSrP)rrar!rr`r@r@rAraszBufferedWriter.tellrcCsP|tvrtd|j&|t|||WdS1sB0YdS)Nr)rr"rrrrZr\r@r@rArZs zBufferedWriter.seekcCs|j0|jdus|jr(WddSWdn1s<0Yz<|W|j|jWdq1sx0Yn2|j|jWdn1s0Y0dSrP)rr<rirgr4r`r@r@rAr4 s. *zBufferedWriter.close)N)r) rLrMrNr)rrsrrcrgrrarZr4r@r@r@rAr0s   r0c@seZdZefddZdddZddZdd Zdd d Zd d dZ ddZ ddZ ddZ ddZ ddZddZeddZdS)!BufferedRWPaircCs<|std|s tdt|||_t|||_dS)Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rqr-rsr1readerr0writer)rHrrrr@r@rAr@s  zBufferedRWPair.__init__r cCs|dur d}|j|SNr )rrrr@r@rArNszBufferedRWPair.readcCs |j|SrP)rrrr@r@rArSszBufferedRWPair.readintocCs |j|SrP)rrrr@r@rArVszBufferedRWPair.writercCs |j|SrP)rrzrr@r@rArzYszBufferedRWPair.peekcCs |j|SrP)rrrr@r@rAr\szBufferedRWPair.read1cCs |j|SrP)rrrr@r@rAr_szBufferedRWPair.readinto1cCs |jSrP)rrqr`r@r@rArqbszBufferedRWPair.readablecCs |jSrP)rrsr`r@r@rArseszBufferedRWPair.writablecCs |jSrP)rrgr`r@r@rArghszBufferedRWPair.flushcCs*z|jW|jn |j0dSrP)rr4rr`r@r@rAr4ks zBufferedRWPair.closecCs|jp|jSrP)rr(rr`r@r@rAr(qszBufferedRWPair.isattycCs|jjSrP)rrir`r@r@rAritszBufferedRWPair.closedN)r )r)r )rLrMrNr)rrrrrzrrrqrsrgr4r(rrir@r@r@rAr0s    rc@sjeZdZefddZdddZddZdd d Zdd d Zd dZ dddZ dddZ ddZ ddZ dS)r/cCs(|t|||t|||dSrP)rpr1rr0rr@r@rArszBufferedRandom.__init__rcCs|tvrtd||jr^|j*|j|jt|jdWdn1sT0Y|j||}|j| Wdn1s0Y|dkrt d|S)Nrr rz seek() returned invalid position) rr"rgrrr<rZrr!rr-r\r@r@rArZs8&zBufferedRandom.seekcCs|jrt|St|SdSrP)rr0rar1r`r@r@rAras zBufferedRandom.tellNcCs|dur|}t||SrP)rar0rcrdr@r@rArcszBufferedRandom.truncatecCs |dur d}|t||Sr)rgr1rrr@r@rArszBufferedRandom.readcCs|t||SrP)rgr1rrr@r@rArszBufferedRandom.readintocCs|t||SrP)rgr1rzrr@r@rArzszBufferedRandom.peekr cCs|t||SrP)rgr1rrr@r@rArszBufferedRandom.read1cCs|t||SrP)rgr1rrr@r@rArszBufferedRandom.readinto1cCsZ|jrN|j2|j|jt|jd|Wdn1sD0Yt||Sr) rrr<rZrr!rr0rrr@r@rArs &zBufferedRandom.write)r)N)N)r)r )rLrMrNr)rrZrarcrrrzrrrr@r@r@rAr/ys      r/cseZdZdZdZdZdZdZdZdZ d0ddZ dd Z d d Z d d Z ddZd1ddZd2ddZddZddZddZefddZddZd3ddZfd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zed,d-Zed.d/Z Z!S)4r'r FNTr c CsH|jdkr0z|jrt|jWd|_nd|_0t|trBtdt|trb|}|dkrftdnd}t|t s~td|ft |t dkstd|ft dd|Dd ks| d d krtd d |vrd |_ d |_tjtjB}nTd|vrd |_d}n@d|vrd |_tjtjB}n"d|vr>d |_d |_tjtjB}d |vrTd |_d |_|jrp|jrp|tjO}n|jr|tjO}n |tjO}|ttddO}ttddpttdd}||O}d}zT|dkr@|std|durt||d}n0|||}t|tstd|dkr*td|}|s@t|d||_t|} z(t| jrvt t!j"t#t!j"|Wnt$yYn0t| dd|_%|j%d krt&|_%t'rt'|tj(||_)|jrzt*|dt+Wn6ty} z| j!t!j,krWYd} ~ n d} ~ 00Wn"|dur6t|Yn0||_dS)Nrr z$integer argument expected, got floatznegative file descriptorzinvalid mode: %szxrwab+css|]}|dvVqdS)ZrwaxNr@).0cr@r@rA rz"FileIO.__init__..r rzKMust have exactly one of create/read/write/append mode and at most one plusrTr rrO_BINARYZ O_NOINHERIT O_CLOEXECz'Cannot use closefd=False with file nameizexpected integer from openerzNegative file descriptorFr,)-_fd_closefdrr4rfloatrrr"rr sumcount_created _writableO_EXCLO_CREAT _readableO_TRUNC _appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrBr-set_inheritabler*statS_ISDIRst_modeIsADirectoryErrorrZEISDIRrr._blksizer)_setmoderrXlseekrZESPIPE) rHr5r3r:rfdflagsZnoinherit_flagZowned_fdZfdfstatrr@r@rArs     $                    zFileIO.__init__cCsB|jdkr>|jr>|js>ddl}|jd|ftd|d|dS)Nrzunclosed file %rr ) stacklevelsource)rrrir#r$ResourceWarningr4)rHr#r@r@rArkEs zFileIO.__del__cCstd|jjddSrrr`r@r@rArLszFileIO.__getstate__cCsnd|jj|jjf}|jr"d|Sz |j}Wn(tyTd||j|j|jfYS0d|||j|jfSdS)Nz%s.%sz <%s [closed]>z<%s fd=%d mode=%r closefd=%r>z<%s name=%r mode=%r closefd=%r>) rWrMrNrirXr.rr3r)rH class_namerXr@r@rArOs   zFileIO.__repr__cCs|jstddS)NzFile not open for reading)rrUr`r@r@rArr]szFileIO._checkReadablecCs|jstddS)NzFile not open for writing)rrUrnr@r@rArtaszFileIO._checkWritablecCsR|||dus |dkr(|Szt|j|WStyLYdS0dSr)rfrrrrrrrrr@r@rAres z FileIO.readcCs||t}z6t|jdt}t|jj}||krH||d}Wnt y\Yn0t }t ||krt |}|t |t7}|t |}zt |j|}Wnty|rYqYdS0|sq||7}qdt|Sr_)rfrrr)rr rrr*st_sizer-rr!rrrr)rHbufsizer]endr=r~rr@r@rArus2     zFileIO.readallcCs4t|d}|t|}t|}||d|<|Sr)rrrr!)rHrmrr~r@r@rArs  zFileIO.readintocCs:||zt|j|WSty4YdS0dSrP)rfrtrrrrrr@r@rArs  z FileIO.writecCs*t|trtd|t|j||S)Nzan integer is required)rrrrfrr rr\r@r@rArZs z FileIO.seekcCs|t|jdtSr)rfrr rrr`r@r@rArasz FileIO.tellcCs2|||dur |}t|j||SrP)rfrtrar ftruncaterrr@r@rArcs zFileIO.truncatecs8|js4z |jrt|jWtn t0dSrP)rirrr4rrr`rr@rAr4s z FileIO.closecCsD||jdur>z |Wnty6d|_Yn0d|_|jS)NFT)rf _seekablerar-r`r@r@rArms    zFileIO.seekablecCs||jSrP)rfrr`r@r@rArqszFileIO.readablecCs||jSrP)rfrr`r@r@rArsszFileIO.writablecCs||jSrP)rfrr`r@r@rAr+sz FileIO.filenocCs|t|jSrP)rfrr(rr`r@r@rAr(sz FileIO.isattycCs|jSrP)rr`r@r@rAr:szFileIO.closefdcCsJ|jr|jrdSdSn0|jr,|jr&dSdSn|jrB|jrd?Z#dRd@dAZ$dBdCZ%dSdDdEZ&dTdFdGZ'dHdIZ(dUdJdKZ)e dLdMZ*dS)Vr2iNFc Cs$|||durrzt|}Wnttfy:Yn0|durrz ddl}Wntyfd}Yn 0|d}t |t st d|t |jsd}t|||durd}n$t |t st d|trt |||_d|_d|_d|_|j|_|_t|jd |_||||||dS) NrasciiFrzG%r is not a text encoding; use codecs.open() to handle arbitrary codecsrrrr)_check_newlinerdevice_encodingr+r.rUlocale ImportErrorZgetpreferredencodingrrr"r lookup_is_text_encoding LookupError _CHECK_ERRORS lookup_errorr_decoded_chars_decoded_chars_used _snapshotr?rmr_tellingr _has_read1 _configure) rHr?r7r8r9r> write_throughr<ror@r@rArs@             zTextIOWrapper.__init__cCs>|dur$t|ts$tdt|f|dvr:td|fdS)Nzillegal newline type: %r)Nrr*r(r)zillegal newline value: %r)rrrtyper")rHr9r@r@rAr:szTextIOWrapper._check_newlinecCs||_||_d|_d|_d|_| |_|du|_||_|dk|_|pHt j |_ ||_ ||_ |jr|r|j}|dkrz|dWntyYn0dS)Nrr) _encoding_errors_encoder_decoder _b2cratio_readuniversal_readtranslate_readnl_writetranslaterlinesep_writenl_line_buffering_write_throughrrsr?ra _get_encoderr5r@)rHr7r8r9r>rIpositionr@r@rArHs&     zTextIOWrapper._configurecCs|d|jj|jj}z |j}Wnty0Yn0|d|7}z |j}Wnty\Yn0|d|7}|d|jS)Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)rrWrMrNrXr.r3r7)rHr=rXr3r@r@rAr's     zTextIOWrapper.__repr__cCs|jSrP)rLr`r@r@rAr78szTextIOWrapper.encodingcCs|jSrP)rMr`r@r@rAr8<szTextIOWrapper.errorscCs|jSrP)rWr`r@r@rAr>@szTextIOWrapper.line_bufferingcCs|jSrP)rXr`r@r@rArIDszTextIOWrapper.write_throughcCs|jSrP)rr`r@r@rAr?HszTextIOWrapper.buffer)r7r8r9r>rIcCs|jdur*|dus"|dus"|tur*td|durH|durB|j}q^d}nt|ts^td||durn|j}nt|tstd||tur|j}| ||dur|j }|dur|j }| | |||||dS)NzPIt is not possible to set the encoding or newline of stream after the first readrrr)rOEllipsisrUrMrrrrLrSr:r>rIrgrH)rHr7r8r9r>rIr@r@rA reconfigureLs>       zTextIOWrapper.reconfigurecCs|jrtd|jSru)rir"rr`r@r@rArmuszTextIOWrapper.seekablecCs |jSrP)r?rqr`r@r@rArqzszTextIOWrapper.readablecCs |jSrP)r?rsr`r@r@rArs}szTextIOWrapper.writablecCs|j|j|_dSrP)r?rgrrFr`r@r@rArgs zTextIOWrapper.flushcCs8|jdur4|js4z|W|jn |j0dSrP)r?rirgr4r`r@r@rAr4s zTextIOWrapper.closecCs|jjSrP)r?rir`r@r@rAriszTextIOWrapper.closedcCs|jjSrP)r?rXr`r@r@rArXszTextIOWrapper.namecCs |jSrP)r?r+r`r@r@rAr+szTextIOWrapper.filenocCs |jSrP)r?r(r`r@r@rAr(szTextIOWrapper.isattycCs|jrtdt|ts(td|jjt|}|js<|j oBd|v}|rf|jrf|j dkrf| d|j }|j pr| }||}|j||j r|sd|vr||dd|_|jr|j|S)Nrzcan't write %s to text streamr*r(r)rir"rrrrWrLr!rTrWrVr/rNrYencoder?rrg_set_decoded_charsrErOr7)rHrZlengthZhaslfencoderrr@r@rArs(     zTextIOWrapper.writecCst|j}||j|_|jSrP)r getincrementalencoderrLrMrN)rHZ make_encoderr@r@rArYs  zTextIOWrapper._get_encodercCs2t|j}||j}|jr(t||j}||_|SrP)r getincrementaldecoderrLrMrQrrRrO)rHZ make_decoderr#r@r@rA _get_decoders    zTextIOWrapper._get_decodercCs||_d|_dSr)rCrD)rHcharsr@r@rAr^sz TextIOWrapper._set_decoded_charscCsF|j}|dur|j|d}n|j|||}|jt|7_|SrP)rDrCr!)rHr~offsetrcr@r@rA_get_decoded_charss z TextIOWrapper._get_decoded_charscCs$|j|krtd|j|8_dS)Nz"rewind decoded_chars out of bounds)rDAssertionErrorrr@r@rA_rewind_decoded_charss z#TextIOWrapper._rewind_decoded_charscCs|jdurtd|jr&|j\}}|jr<|j|j}n|j|j}| }|j ||}| ||rt |t |j |_ nd|_ |jr|||f|_| S)Nz no decoderrK)rOr"rFr2rGr?r _CHUNK_SIZErr+r^r!rCrPrE)rH dec_buffer dec_flags input_chunkeofZ decoded_charsr@r@rA _read_chunks  zTextIOWrapper._read_chunkrcCs(||d>B|d>B|d>Bt|d>BS)N@)r4)rHrZrj bytes_to_feedneed_eof chars_to_skipr@r@rA _pack_cookies  zTextIOWrapper._pack_cookiecCsJt|d\}}t|d\}}t|d\}}t|d\}}|||t||fS)Nl)divmodr4)rHZbigintrestrZrjrrrsrtr@r@rA_unpack_cookie s zTextIOWrapper._unpack_cookiec CsP|jstd|jstd||j}|j}|dusF|jdurX|j rTt d|S|j\}}|t |8}|j }|dkr| ||S|}zt|j|}d}|dkr"|d|ft ||d|} | |kr|\} } | s| }|| 8}q4|t | 8}d}q||8}|d}qd}|d|f||} |} |dkrb| | | W||Sd}d}d}t|t |D]x}|d7}|t ||||d7}|\}}|s||kr| |7} ||8}|dd} }}||kr|q"q||t |jdd d 7}d }||kr"td | | | |||W||S||0dS) N!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textrr rr FTr&z'can't reconstruct logical file position)rrUrFr-rgr?rarOrErCrfr!rDrur2rrPr5r+range)rHrZr#rjZ next_inputrtZ saved_stateZ skip_bytesZ skip_backr~rd start_posZ start_flagsZ bytes_fedrsZ chars_decodedirir@r@rAra s                 zTextIOWrapper.tellcCs$||dur|}|j|SrP)rgrar?rcrdr@r@rArcs szTextIOWrapper.truncatecCs*|jdurtd||j}d|_|S)Nzbuffer is already detached)r?r"rgr)rHr?r@r@rAry s  zTextIOWrapper.detachc sfdd}jrtdjs(td|tkrN|dkr@tdd}}nZ|tkr|dkrftdj d|} dd_ j rj |||S|dkrtd |f|dkrtd |f|\}}}}} j | dd_ |dkr*j r*j n@j s>|s>| rjj pL_ j d |f|d f_ | rj|} j | ||| f_ tj| krtd | _|||S) NcsFzjp}Wnty$Yn0|dkr:|dn|dSr)rNrYr@r5r7)rZr_r`r@rA_reset_encoder s  z*TextIOWrapper.seek.._reset_encoderrryrz#can't do nonzero cur-relative seeksz#can't do nonzero end-relative seeksrzunsupported whence (%r)rrz#can't restore logical file position)rir"rrUrrarrgr?rZr^rErOr7rxrbr5rr+r!rCr-rD) rHZcookier^r~rZr|rjrrrsrtrkr@r`rArZ s`            zTextIOWrapper.seekcCs||durd}n2z |j}Wn ty@t|dYn0|}|jpT|}|dkr||j|j dd}| dd|_ |Sd}||}t ||kr|s| }|||t |7}q|SdS)Nr rrTr&rF)rrrr.rrOrbrer+r?rr^rEr!rm)rHrrr#r=rlr@r@rAr s,     zTextIOWrapper.readcCs(d|_|}|s$d|_|j|_t|Srl)rFrrErrrr@r@rAr szTextIOWrapper.__next__c Cs|jrtd|durd}n2z |j}Wn tyFt|dYn0|}|}d}|jsh|d}}|jr| d|}|dkr|d}qnt |}n|j rD| d|}| d|}|dkr|dkrt |}n |d}qnX|dkr|d}qn@||kr|d}qn(||dkr6|d}qn |d}qn(| |j }|dkrl|t |j }q|dkrt ||kr|}q| r|jrqq|jr||7}qp|d d|_|Sqp|dkr||kr|}|t |||d|S) Nrr rrr*r r(r r)rir"rr.rrerOrbrRr|r!rQrSrmrCr^rErg) rHrrrstartr]endposZnlposZcrposr@r@rAr st             zTextIOWrapper.readlinecCs|jr|jjSdSrP)rOrr`r@r@rArN szTextIOWrapper.newlines)NNNFF)NNNFF)N)rrFr)N)r)N)N)+rLrMrNrhrrr:rHrrr7r8r>rIr?r[r\rmrqrsrgr4rirXr+r(rrYrbr^rergrmrurxrarcrrZrrrrr@r@r@rAr2sl * $      )    * c  K  ]r2csNeZdZdfdd ZddZddZed d Zed d Zd dZ Z S)StringIOrr*csftt|jtdd|d|dur(d|_|durbt|tsNtdt |j | || ddS)Nzutf-8 surrogatepass)r7r8r9Fz*initial_value must be str or None, not {0}r) rrrrrTrrrrrJrLrrZ)rHZ initial_valuer9rr@rArZ s  zStringIO.__init__c CsX||jp|}|}|z |j|jddW||S||0dS)NTr&) rgrOrbr2r7r+r?rr5)rHr#Z old_stater@r@rArj s zStringIO.getvaluecCs t|SrP)objectrr`r@r@rArt szStringIO.__repr__cCsdSrPr@r`r@r@rAr8y szStringIO.errorscCsdSrPr@r`r@r@rAr7} szStringIO.encodingcCs|ddSrr[r`r@r@rAr szStringIO.detach)rr*) rLrMrNrrrrr8r7rrr@r@rrArS s   r)r r NNNTN)8rabcr rrsys_threadrrplatformZmsvcrtrr iorrrrrraddr SEEK_DATAr)rrdev_moderjrArBrE open_coder.rFrOrUr-r"ABCMetarVregisterr_ior'rrrr1r0rr/rr!rr2rr@r@r@rAs      [    # =   g kCiIJY@ U&