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>win32cygwin)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)rfindr"min)Z readaheadnrMsizerErF nreadaheads  z#IOBase.readline..nreadaheadcSsdSNr rErErErErFr!sr is not an integerrr) hasattr __index__r/r bytearrayr"readendswithr)rMrr size_indexresrrErrFreadline s&      zIOBase.readlinecCs ||SrUrjrerErErF__iter__6szIOBase.__iter__cCs|}|st|SrU)r StopIterationrMlinerErErF__next__:szIOBase.__next__cCsP|dus|dkrt|Sd}g}|D]&}|||t|7}||kr$qLq$|SNr)listappendr")rMhintrlinesrrErErF readlines@s  zIOBase.readlinescCs ||D]}||q dSrU)rkwrite)rMrrrErErF writelinesRszIOBase.writelines)r)N)N)N)N)N)r)N)rQrRrSr^r_rfrhrlrmr5rprrrurvrwrxrypropertyrnrkr}r~r,r)rrrrrrErErErFr[;s4"         * r[) metaclassc@s.eZdZd ddZddZddZdd Zd S) RawIOBasercCsP|dur d}|dkr|St|}||}|dur>dS||d=t|S)Nrr)readallrrreadintor)rMrrrrErErFrms   zRawIOBase.readcCs4t}|t}|sq ||7}q|r,t|S|SdSrU)rrr*r)rMrdatarErErFr~s  zRawIOBase.readallcCs|ddS)Nrr`rMrrErErFrszRawIOBase.readintocCs|ddSNrr`rrErErFrszRawIOBase.writeN)r)rQrRrSrrrrrErErErFr_s r)r(c@sHeZdZdddZdddZddZdd Zd d Zd d ZddZ dS)BufferedIOBasercCs|ddSNrr`rrErErFrszBufferedIOBase.readcCs|ddS)Nread1r`rrErErFrszBufferedIOBase.read1cCs|j|ddS)NFr _readintorrErErFrs zBufferedIOBase.readintocCs|j|ddS)NTrrrrErErF readinto1s zBufferedIOBase.readinto1cCsVt|tst|}|d}|r0|t|}n|t|}t|}||d|<|SNB)r memoryviewcastrr"r)rMrrrrrErErFrs   zBufferedIOBase._readintocCs|ddSrr`rrErErFrs zBufferedIOBase.writecCs|ddSNdetachr`rerErErFrszBufferedIOBase.detachN)r)r) rQrRrSrrrrrrrrErErErFrs    rc@seZdZddZd#ddZddZd$d d Zd d Zd dZddZ ddZ e ddZ e ddZ e ddZe ddZddZddZdd Zd!d"ZdS)%_BufferedIOMixincCs ||_dSrU_rawrMr@rErErF__init__sz_BufferedIOMixin.__init__rcCs"|j||}|dkrtd|S)Nrz#seek() returned an invalid position)r@r_r.)rMrbrcZ new_positionrErErFr_sz_BufferedIOMixin.seekcCs|j}|dkrtd|S)Nrz#tell() returned an invalid position)r@rfr.rirErErFrfs z_BufferedIOMixin.tellNcCs4||||dur(|}|j|SrU)rkryrlrfr@rhrirErErFrh%s z_BufferedIOMixin.truncatecCs|jrtd|jdS)Nflush on closed file)rnr#r@rlrerErErFrl6sz_BufferedIOMixin.flushcCs8|jdur4|js4z|W|jn |j0dSrU)r@rnrlr5rerErErFr5;s z_BufferedIOMixin.closecCs*|jdurtd||j}d|_|S)Nzraw stream already detached)r@r#rlrrrErErFrCs  z_BufferedIOMixin.detachcCs |jSrU)r@rrrerErErFrrMsz_BufferedIOMixin.seekablecCs|jSrUrrerErErFr@Psz_BufferedIOMixin.rawcCs|jjSrU)r@rnrerErErFrnTsz_BufferedIOMixin.closedcCs|jjSrU)r@r]rerErErFr]Xsz_BufferedIOMixin.namecCs|jjSrU)r@r4rerErErFr4\sz_BufferedIOMixin.modecCstd|jjddSNzcannot pickle z objectr r\rQrerErErF __getstate__`sz_BufferedIOMixin.__getstate__cCsL|jj}|jj}z |j}Wnty8d||YS0d|||SdS)Nz<{}.{}>z<{}.{} name={!r}>)r\rRrSr]r/format)rMmodnameZclsnamer]rErErF__repr__cs  z_BufferedIOMixin.__repr__cCs |jSrU)r@r,rerErErFr,osz_BufferedIOMixin.filenocCs |jSrU)r@r)rerErErFr)rsz_BufferedIOMixin.isatty)r)N)rQrRrSrr_rfrhrlr5rrrrr@rnr]r4rrr,r)rErErErFr 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)rMZ initial_bytesbufrErErFr~s zBytesIO.__init__cCs|jrtd|jS)Nz__getstate__ on closed file)rnr#__dict__copyrerErErFrszBytesIO.__getstate__cCs|jrtdt|jS)Nzgetvalue on closed file)rnr#rrrerErErFgetvalueszBytesIO.getvaluecCs|jrtdt|jS)Nzgetbuffer on closed file)rnr#rrrerErErF getbufferszBytesIO.getbuffercs"|jdur|jtdSrU)rclearsuperr5rer\rErFr5s  z BytesIO.closercCs|jrtd|durd}n2z |j}Wn tyFt|dYn0|}|dkr`t|j}t|j|jkrtdStt|j|j|}|j|j|}||_t |S)Nread from closed filerrr) rnr#rr/r r"rrrr)rMrrZnewposrrErErFrs"   z BytesIO.readcCs ||SrU)rrrErErFrsz 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) rnr#rrr rnbytesrr"r)rMrviewrrbZpaddingrErErFrs  $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) rnr#rr/r rmaxr"r)rMrbrc pos_indexrErErFr_s"  z BytesIO.seekcCs|jrtd|jS)Ntell on closed file)rnr#rrerErErFrfsz BytesIO.tellcCsv|jrtd|dur|j}nHz |j}Wn tyHt|dYn0|}|dkrftd|f|j|d=|S)Nztruncate on closed filerrznegative truncate position %r)rnr#rrr/r r)rMrbrrErErFrhs   zBytesIO.truncatecCs|jrtddSNr{Tr|rerErErFrvszBytesIO.readablecCs|jrtddSrr|rerErErFrxszBytesIO.writablecCs|jrtddSrr|rerErErFrrszBytesIO.seekable)N)r)r)r)N)rQrRrSrrrrrr5rrrr_rfrhrvrxrr __classcell__rErErrFrvs      rc@steZdZefddZddZddZddd Zdd d Zdd dZ dddZ dddZ ddZ ddZ dddZdS) r2cCsF|stdt|||dkr,td||_|t|_dS)Nz "raw" argument must be readable.rinvalid buffer size) rvr.rrr# buffer_size_reset_read_bufLock _read_lockrMr@rrErErFrs zBufferedReader.__init__cCs |jSrU)r@rvrerErErFrvszBufferedReader.readablecCsd|_d|_dS)Nrr) _read_buf _read_posrerErErFr szBufferedReader._reset_read_bufNcCsL|dur|dkrtd|j||WdS1s>0YdS)Nrzinvalid number of bytes to read)r#r_read_unlockedrrErErFr$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)rNrrr) rrrrr@rrr"rjoinrrr) rMrZ nodata_valZ empty_valuesrrbchunkchunksZ current_sizeavailZwantedoutrErErFr1sL             zBufferedReader._read_unlockedrcCs4|j||WdS1s&0YdSrU)r_peek_unlockedrrErErFreszBufferedReader.peekcCsrt||j}t|j|j}||ks,|dkrb|j|}|j|}|rb|j|jd||_d|_|j|jdSr)rrr"rrr@r)rMrZwantZhaveZto_readcurrentrErErFros   zBufferedReader._peek_unlockedrcCsj|dkr|j}|dkrdS|j6|d|t|t|j|jWdS1s\0YdS)Nrrr )rrrrrr"rrrrErErFrzs 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"rrrrr@rr)rMrrwrittenrrrErErFrs6       $zBufferedReader._readintocCst|t|j|jSrU)rrfr"rrrerErErFrfszBufferedReader.tellcCsp|tvrtd|jF|dkr4|t|j|j8}t|||}||WdS1sb0YdS)Ninvalid whence valuer ) valid_seek_flagsr#rr"rrrr_rrarErErFr_szBufferedReader.seek)N)N)r)r)r)r)rQrRrSr*rrvrrrrrrrrfr_rErErErFr2s  4 .r2c@s\eZdZefddZddZddZddd Zd d Zd d Z ddZ dddZ ddZ dS)r1cCsF|stdt|||dkr,td||_t|_t|_ dS)Nz "raw" argument must be writable.rr) rxr.rrr#rr _write_bufr _write_lockrrErErFrs zBufferedWriter.__init__cCs |jSrU)r@rxrerErErFrxszBufferedWriter.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)rrr rrnr#r"rr_flush_unlockedextendBlockingIOErrorerrnostrerror)rMrbeforereZoveragerErErFrs(    &zBufferedWriter.writeNcCsP|j6||dur"|j}|j|WdS1sB0YdSrU)rrr@rfrhrirErErFrhs  zBufferedWriter.truncatecCs2|j|Wdn1s$0YdSrU)rrrerErErFrlszBufferedWriter.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) rnr#rr@rr RuntimeErrorrEAGAINr"r.rMrrErErFrs zBufferedWriter._flush_unlockedcCst|t|jSrU)rrfr"rrerErErFrfszBufferedWriter.tellrcCsP|tvrtd|j&|t|||WdS1sB0YdS)Nr)rr#rrrr_rarErErFr_s zBufferedWriter.seekcCs|j0|jdus|jr(WddSWdn1s<0Yz<|W|j|jWdq1sx0Yn2|j|jWdn1s0Y0dSrU)rr@rnrlr5rerErErFr5 s. *zBufferedWriter.close)N)r) rQrRrSr*rrxrrhrlrrfr_r5rErErErFr1s   r1c@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.)rvr.rxr2readerr1writer)rMrrrrErErFr@s  zBufferedRWPair.__init__rcCs|dur d}|j|SNr)rrrrErErFrNszBufferedRWPair.readcCs |j|SrU)rrrrErErFrSszBufferedRWPair.readintocCs |j|SrU)rrrrErErFrVszBufferedRWPair.writercCs |j|SrU)rrrrErErFrYszBufferedRWPair.peekcCs |j|SrU)rrrrErErFr\szBufferedRWPair.read1cCs |j|SrU)rrrrErErFr_szBufferedRWPair.readinto1cCs |jSrU)rrvrerErErFrvbszBufferedRWPair.readablecCs |jSrU)rrxrerErErFrxeszBufferedRWPair.writablecCs |jSrU)rrlrerErErFrlhszBufferedRWPair.flushcCs*z|jW|jn |j0dSrU)rr5rrerErErFr5ks zBufferedRWPair.closecCs|jp|jSrU)rr)rrerErErFr)qszBufferedRWPair.isattycCs|jjSrU)rrnrerErErFrntszBufferedRWPair.closedN)r)r)r)rQrRrSr*rrrrrrrrvrxrlr5r)rrnrErErErFr0s    rc@sjeZdZefddZdddZddZdd d Zdd d Zd dZ dddZ dddZ ddZ ddZ dS)r0cCs(|t|||t|||dSrU)rur2rr1rrErErFrszBufferedRandom.__init__rcCs|tvrtd||jr^|j*|j|jt|jdWdn1sT0Y|j||}|j| Wdn1s0Y|dkrt d|S)Nrr rz seek() returned invalid position) rr#rlrrr@r_rr"rr.rarErErFr_s8&zBufferedRandom.seekcCs|jrt|St|SdSrU)rr1rfr2rerErErFrfs zBufferedRandom.tellNcCs|dur|}t||SrU)rfr1rhrirErErFrhszBufferedRandom.truncatecCs |dur d}|t||Sr)rlr2rrrErErFrszBufferedRandom.readcCs|t||SrU)rlr2rrrErErFrszBufferedRandom.readintocCs|t||SrU)rlr2rrrErErFrszBufferedRandom.peekrcCs|t||SrU)rlr2rrrErErFrszBufferedRandom.read1cCs|t||SrU)rlr2rrrErErFrszBufferedRandom.readinto1cCsZ|jrN|j2|j|jt|jd|Wdn1sD0Yt||Sr) rrr@r_rr"rr1rrrErErFrs &zBufferedRandom.write)r)N)N)r)r)rQrRrSr*rr_rfrhrrrrrrrErErErFr0ys      r0cseZdZdZdZdZdZdZdZdZ 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(rFNTr 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)Nrrz$integer argument expected, got floatznegative file descriptorzinvalid mode: %szxrwab+css|]}|dvVqdS)ZrwaxNrE).0crErErF 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_closefdrr5rfloatr rr#rr!sumcount_created _writableO_EXCLO_CREAT _readableO_TRUNC _appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrGr.set_inheritabler+statS_ISDIRst_modeIsADirectoryErrorrZEISDIRrr/_blksizer*_setmoderr]lseekr ZESPIPE) rMr6r4r;rfdflagsZnoinherit_flagZowned_fdZfdfstatrrErErFrs     $                    zFileIO.__init__cCsB|jdkr>|jr>|js>ddl}|jd|ftd|d|dS)Nrzunclosed file %rr ) stacklevelsource)rrrnr$r%ResourceWarningr5)rMr$rErErFrpEs zFileIO.__del__cCstd|jjddSrrrerErErFrLszFileIO.__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>) r\rRrSrnr]r/rr4r)rM class_namer]rErErFrOs   zFileIO.__repr__cCs|jstddS)NzFile not open for reading)rrZrerErErFrw]szFileIO._checkReadablecCs|jstddS)NzFile not open for writing)rrZrsrErErFryaszFileIO._checkWritablecCsR|||dus |dkr(|Szt|j|WStyLYdS0dSr)rkrwrrrrrrrErErFres 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|Srd)rkrwr*rrrrr+st_sizer.rr"rrrr)rMbufsizerbendrArrrErErFrus2     zFileIO.readallcCs4t|d}|t|}t|}||d|<|Sr)rrrr")rMrmrrrErErFrs  zFileIO.readintocCs:||zt|j|WSty4YdS0dSrU)rkryrrrrrrErErFrs  z FileIO.writecCs*t|trtd|t|j||S)Nzan integer is required)rrr rkrrrrarErErFr_s z FileIO.seekcCs|t|jdtSr)rkrrrrrerErErFrfsz FileIO.tellcCs2|||dur |}t|j||SrU)rkryrfr ftruncaterrrErErFrhs zFileIO.truncatecs8|js4z |jrt|jWtn t0dSrU)rnrrr5rrrerrErFr5s z FileIO.closecCsD||jdur>z |Wnty6d|_Yn0d|_|jS)NFT)rk _seekablerfr.rerErErFrrs    zFileIO.seekablecCs||jSrU)rkrrerErErFrvszFileIO.readablecCs||jSrU)rkrrerErErFrxszFileIO.writablecCs||jSrU)rkrrerErErFr,sz FileIO.filenocCs|t|jSrU)rkrr)rrerErErFr)sz FileIO.isattycCs|jSrU)rrerErErFr;szFileIO.closefdcCsJ|jr|jrdSdSn0|jr,|jr&dSdSn|jrB|jrs z"IncrementalNewlineDecoder.getstatecCs8|\}}t|d@|_|jdur4|j||d?fdSr)boolr1r/setstate)rMstaterr?rErErFrAs z"IncrementalNewlineDecoder.setstatecCs$d|_d|_|jdur |jdS)NrF)r0r1r/resetrerErErFrCs zIncrementalNewlineDecoder.resetr r cCs d|jS)N)Nr6r4)r4r6r5)r6r5)r4r5)r4r6r5)r0rerErErFr)sz"IncrementalNewlineDecoder.newlinesN)r+)F) rQrRrSrr7r>rArCr8r9r:rr)rErErErFr*]s   r*c@sreZdZdZdZdNddZddZdOdd Zd d Ze d d Z e ddZ e ddZ e ddZ e ddZddedddddZddZddZddZdd Zd!d"Ze d#d$Ze d%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2ZdPd3d4Zd5d6Zd7d8Z dQd:d;Z!dd?Z#dRd@dAZ$dBdCZ%dSdDdEZ&dTdFdGZ'dHdIZ(dUdJdKZ)e dLdMZ*dS)Vr3iNFc 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 codecsr+rrr)_check_newlinerdevice_encodingr,r/rZlocale ImportErrorgetpreferredencodingrrr#r,lookup_is_text_encoding LookupError _CHECK_ERRORS lookup_errorr_decoded_chars_decoded_chars_used _snapshotrDrrr#_tellingr _has_read1 _configure) rMrDr8r9r:rB write_throughrHrtrErErFrs@             zTextIOWrapper.__init__cCs>|dur$t|ts$tdt|f|dvr:td|fdS)Nzillegal newline type: %r)Nrr6r4r5zillegal newline value: %r)rrr typer#)rMr:rErErFrFszTextIOWrapper._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_throughr#rxrDrf _get_encoderrArM)rMr8r9r:rBrVpositionrErErFrUs&     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}>)rr\rRrSr]r/r4r8)rMrAr]r4rErErFr's     zTextIOWrapper.__repr__cCs|jSrU)rYrerErErFr88szTextIOWrapper.encodingcCs|jSrU)rZrerErErFr9<szTextIOWrapper.errorscCs|jSrU)rdrerErErFrB@szTextIOWrapper.line_bufferingcCs|jSrU)rererErErFrVDszTextIOWrapper.write_throughcCs|jSrU)rrerErErFrDHszTextIOWrapper.buffer)r8r9r:rBrVcCs|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 readr+rr)r\EllipsisrZrZrrr rYr`rFrBrVrlrU)rMr8r9r:rBrVrErErF reconfigureLs>       zTextIOWrapper.reconfigurecCs|jrtd|jSrz)rnr#r#rerErErFrruszTextIOWrapper.seekablecCs |jSrU)rDrvrerErErFrvzszTextIOWrapper.readablecCs |jSrU)rDrxrerErErFrx}szTextIOWrapper.writablecCs|j|j|_dSrU)rDrlr#rSrerErErFrls zTextIOWrapper.flushcCs8|jdur4|js4z|W|jn |j0dSrU)rDrnrlr5rerErErFr5s zTextIOWrapper.closecCs|jjSrU)rDrnrerErErFrnszTextIOWrapper.closedcCs|jjSrU)rDr]rerErErFr]szTextIOWrapper.namecCs |jSrU)rDr,rerErErFr,szTextIOWrapper.filenocCs |jSrU)rDr)rerErErFr)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 streamr6r4r)rnr#rrr r\rQr"rardrcr;r[rfencoderDrrl_set_decoded_charsrRr\rC)rMr(lengthZhaslfencoderrrErErFrs(     zTextIOWrapper.writecCst|j}||j|_|jSrU)r,getincrementalencoderrYrZr[)rMZ make_encoderrErErFrfs  zTextIOWrapper._get_encodercCs2t|j}||j}|jr(t||j}||_|SrU)r,getincrementaldecoderrYrZr^r*r_r\)rMZ make_decoderr/rErErF _get_decoders    zTextIOWrapper._get_decodercCs||_d|_dSr)rPrQ)rMcharsrErErFrksz TextIOWrapper._set_decoded_charscCsF|j}|dur|j|d}n|j|||}|jt|7_|SrU)rQrPr")rMroffsetrqrErErF_get_decoded_charss z TextIOWrapper._get_decoded_charscCs$|j|krtd|j|8_dS)Nz"rewind decoded_chars out of bounds)rQAssertionErrorrrErErF_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 decoderrX)r\r#rSr>rTrDr _CHUNK_SIZErr7rkr"rPr]rR)rM dec_buffer dec_flags input_chunkeofZ decoded_charsrErErF _read_chunks  zTextIOWrapper._read_chunkrcCs(||d>B|d>B|d>Bt|d>BS)N@)r@)rMrgrx bytes_to_feedneed_eof chars_to_skiprErErF _pack_cookies  zTextIOWrapper._pack_cookiecCsJt|d\}}t|d\}}t|d\}}t|d\}}|||t||fS)Nl)divmodr@)rMZbigintrestrgrxrrrrErErF_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 FTr2z'can't reconstruct logical file position)r#rZrSr.rlrDrfr\rRrPrtr"rQrr>rr]rAr7range)rMrgr/rxZ next_inputr saved_stateZ skip_bytesZ skip_backrrd start_posZ start_flagsZ bytes_fedrZ chars_decodedirwrErErFrf s                 zTextIOWrapper.tellcCs$||dur|}|j|SrU)rlrfrDrhrirErErFrhs szTextIOWrapper.truncatecCs*|jdurtd||j}d|_|S)Nzbuffer is already detached)rDr#rlr)rMrDrErErFry 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)r[rfrMrArC)rgrmrerErF_reset_encoder s  z*TextIOWrapper.seek.._reset_encoderrrrz#can't do nonzero cur-relative seeksz#can't do nonzero end-relative seeksrzunsupported whence (%r)rrz#can't restore logical file position)rnr#r#rZrrfr rlrDr_rkrRr\rCrrprArr7r"rPr.rQ) rMZcookiercrrgrrxrrrryrErerFr_ s`            zTextIOWrapper.seekcCs||durd}n2z |j}Wn ty@t|dYn0|}|jpT|}|dkr||j|j dd}| dd|_ |Sd}||}t ||kr|s| }|||t |7}q|SdS)NrrrTr2rF)rwrr/r r\rprsr7rDrrkrRr"r{)rMrrr/rArzrErErFr s,     zTextIOWrapper.readcCs(d|_|}|s$d|_|j|_t|Srq)rSrrRr#rrrErErFr 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) Nrrrrr6r r4r r)rnr#rr/r rsr\rpr_rr"r^r`r{rPrkrRru) rMrrrstartrbendposZnlposZcrposrErErFr st             zTextIOWrapper.readlinecCs|jr|jjSdSrU)r\r)rerErErFr)N szTextIOWrapper.newlines)NNNFF)NNNFF)N)rrFr)N)r)N)N)+rQrRrSrvrrrFrUrrr8r9rBrVrDrhrirrrvrxrlr5rnr]r,r)rrfrprkrsrur{rrrfrhrr_rrrr)rErErErFr3sl * $      )    * c  K  ]r3csNeZdZdfdd ZddZddZed d Zed d Zd dZ Z S)StringIOrr6csftt|jtdd|d|dur(d|_|durbt|tsNtdt |j | || ddS)Nzutf-8 surrogatepass)r8r9r:Fz*initial_value must be str or None, not {0}r) rrrrrarrr rrWrQrr_)rMZ initial_valuer:rrErFrZ s  zStringIO.__init__c CsX||jp|}|}|z |j|jddW||S||0dS)NTr2) rlr\rpr>rCr7rDrrA)rMr/Z old_staterErErFrj s zStringIO.getvaluecCs t|SrU)objectrrerErErFrt szStringIO.__repr__cCsdSrUrErerErErFr9y szStringIO.errorscCsdSrUrErerErErFr8} szStringIO.encodingcCs|ddSrr`rerErErFr szStringIO.detach)rr6) rQrRrSrrrrr9r8rrrErErrFrS s   r)r rNNNTN)8rabcr,rrsys_threadrrplatformmsvcrtrriorrrr rraddr SEEK_DATAr*rrdev_moderorNrGrJ open_coder/rKrTrZr.r#ABCMetar[registerr_ior(rrrr2r1rr0r'r-r*r3rrErErErFs      [    # =   g kCiIJY@ U&