3 2a!X@s^ddlZddlZddlZddlZddlZddlZyddlmZWn e k r`ddl mZYnXej d4krzddl m ZndZddlZddlmZmZmZmZdddhZeed rejejejejd5ZeZd7ddZGdddZGdddZy ejZWn(ek r*Gddde e!ZYnXGdddej"dZ#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#Z/ej/j$e/Gd.d/d/ej0Z1Gd0d1d1e/Z2Gd2d3d3e2Z3dS)8N) allocate_lockwin32cygwin)setmode)__all__SEEK_SETSEEK_CURSEEK_END SEEK_HOLEirTcCs~t|tstj|}t|tttfs0td|t|tsFtd|t|ts\td||dk r|t|t r|td||dk rt|t rtd|t|}|tdst|t|krt d|d|k} d|k} d |k} d |k} d |k} d |k}d |k}d|krH| s&| s&| s&| r.t dddl }|j dt dd} |r\|r\t d| | | | dkrzt d| p| p| p| st d|r|dk rt d|r|dk rt d|r|dk rt dt || rdpd| rdpd| rd pd| r d p"d| r0d p2d||d}|}yd}|dksh|dkrp|jrpd!}d}|dkrt}ytj|jj}Wnttfk rYnX|dkr|}|dkrt d|dkr|r|St d| rt||}n<| s| s| rt||}n| r,t||}n t d ||}|rF|St|||||}|}||_|S|jYnXdS)"Nzinvalid file: %rzinvalid mode: %rzinvalid buffering: %rzinvalid encoding: %rzinvalid errors: %rzaxrwb+tUxrwa+tbUz4mode U cannot be combined with 'x', 'w', 'a', or '+'rz'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 argument)openerFzinvalid buffering sizezcan't have unbuffered text I/Ozunknown mode: %r) isinstanceintosfspathstrbytes TypeErrorsetlen ValueErrorwarningswarnDeprecationWarningFileIOisattyDEFAULT_BUFFER_SIZEfstatfileno st_blksizeOSErrorAttributeErrorBufferedRandomBufferedWriterBufferedReader TextIOWrappermodeclose)filer2 bufferingencodingerrorsnewlineclosefdrZmodesZcreatingZreadingZwritingZ appendingZupdatingtextZbinaryr#rawresultline_bufferingbsbufferr@*/opt/alt/python36/lib64/python3.6/_pyio.pyopen(s{            >         rBc@seZdZddZdS) DocDescriptorcCs dtjS)Nz\open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) )rB__doc__)selfobjtypr@r@rA__get__szDocDescriptor.__get__N)__name__ __module__ __qualname__rHr@r@r@rArCsrCc@seZdZeZddZdS) OpenWrappercOs t||S)N)rB)clsargskwargsr@r@rA__new__szOpenWrapper.__new__N)rIrJrKrCrDrPr@r@r@rArLsrLc@s eZdZdS)UnsupportedOperationN)rIrJrKr@r@r@rArQsrQc@seZdZddZd5ddZddZd6d d Zd d Zd ZddZ ddZ ddZ d7ddZ ddZ d8ddZddZd9ddZeddZd:d d!Zd"d#Zd$d%Zd&d'Zd(d)ZdIOBasecCstd|jj|fdS)Nz%s.%s() not supported)rQ __class__rI)rEnamer@r@rA _unsupported@szIOBase._unsupportedrcCs|jddS)Nseek)rU)rEposwhencer@r@rArVGsz IOBase.seekcCs |jddS)Nrr )rV)rEr@r@rAtellWsz IOBase.tellNcCs|jddS)Ntruncate)rU)rErWr@r@rArZ[szIOBase.truncatecCs |jdS)N) _checkClosed)rEr@r@rAflushesz IOBase.flushFc Cs |jsz |jWdd|_XdS)NT)_IOBase__closedr\)rEr@r@rAr3os z IOBase.closec Csy |jWn YnXdS)N)r3)rEr@r@rA__del__zs zIOBase.__del__cCsdS)NFr@)rEr@r@rAseekableszIOBase.seekablecCs |jst|dkrdn|dS)NzFile or stream is not seekable.)r_rQ)rEmsgr@r@rA_checkSeekableszIOBase._checkSeekablecCsdS)NFr@)rEr@r@rAreadableszIOBase.readablecCs |jst|dkrdn|dS)NzFile or stream is not readable.)rbrQ)rEr`r@r@rA_checkReadableszIOBase._checkReadablecCsdS)NFr@)rEr@r@rAwritableszIOBase.writablecCs |jst|dkrdn|dS)NzFile or stream is not writable.)rdrQ)rEr`r@r@rA_checkWritableszIOBase._checkWritablecCs|jS)N)r])rEr@r@rAclosedsz IOBase.closedcCs|jrt|dkrdn|dS)NzI/O operation on closed file.)rfr")rEr`r@r@rAr[szIOBase._checkClosedcCs |j|S)N)r[)rEr@r@rA __enter__szIOBase.__enter__cGs |jdS)N)r3)rErNr@r@rA__exit__szIOBase.__exit__cCs|jddS)Nr*)rU)rEr@r@rAr*sz IOBase.filenocCs |jdS)NF)r[)rEr@r@rAr'sz IOBase.isattyr cstdrfdd}ndd}dkr0d nttsBtdt}x>dks^t|krj|}|spP||7}|jdrJPqJWt|S) Npeekcs>jd}|sdS|jddp&t|}dkr:t|}|S)Nr  r)rifindr!min)Z readaheadn)rEsizer@rA nreadaheads  z#IOBase.readline..nreadaheadcSsdS)Nr r@r@r@r@rArosr zsize must be an integerrrjr) hasattrrrr bytearrayr!readendswithr)rErnroresrr@)rErnrAreadlines     zIOBase.readlinecCs |j|S)N)r[)rEr@r@rA__iter__szIOBase.__iter__cCs|j}|st|S)N)ru StopIteration)rEliner@r@rA__next__ szIOBase.__next__cCsR|dks|dkrt|Sd}g}x,|D]$}|j||t|7}||kr&Pq&W|S)Nr)listappendr!)rEZhintrmlinesrxr@r@rA readliness   zIOBase.readlinescCs$|jx|D]}|j|qWdS)N)r[write)rEr|rxr@r@rA writelines#s zIOBase.writelines)r)N)N)N)N)Nr)r)N)rIrJrKrUrVrYrZr\r]r3r^r_rarbrcrdrepropertyrfr[rgrhr*r'rurvryr}rr@r@r@rArRs2$         % rR) metaclassc@s.eZdZd ddZddZddZdd Zd S) RawIOBaser cCsP|dkr d}|dkr|jSt|j}|j|}|dkr>dS||d=t|S)Nr rr)readallrq __index__readintor)rErnrrmr@r@rArr9s   zRawIOBase.readcCs8t}x|jt}|sP||7}qW|r0t|S|SdS)N)rqrrr(r)rErtdatar@r@rArJs  zRawIOBase.readallcCs|jddS)Nr)rU)rErr@r@rArXszRawIOBase.readintocCs|jddS)Nr~)rU)rErr@r@rAr~`szRawIOBase.writeNr)r)rIrJrKrrrrr~r@r@r@rAr+s r)r&c@sHeZdZdddZdddZddZdd Zd d Zd d ZddZ dS)BufferedIOBaseNcCs|jddS)Nrr)rU)rErnr@r@rArr~szBufferedIOBase.readcCs|jddS)Nread1)rU)rErnr@r@rArszBufferedIOBase.read1cCs|j|ddS)NF)r) _readinto)rErr@r@rArs zBufferedIOBase.readintocCs|j|ddS)NT)r)r)rErr@r@rA readinto1s zBufferedIOBase.readinto1cCsVt|tst|}|jd}|r0|jt|}n|jt|}t|}||d|<|S)NB)r memoryviewcastrr!rr)rErrrrmr@r@rArs   zBufferedIOBase._readintocCs|jddS)Nr~)rU)rErr@r@rAr~s zBufferedIOBase.writecCs|jddS)Ndetach)rU)rEr@r@rArszBufferedIOBase.detach)N)N) rIrJrKrrrrrrr~rr@r@r@rArms    rc@seZdZddZd#ddZddZd$d d Zd d Zd dZddZ ddZ e ddZ e ddZ e ddZe ddZddZddZdd Zd!d"ZdS)%_BufferedIOMixincCs ||_dS)N)_raw)rEr;r@r@rA__init__sz_BufferedIOMixin.__init__rcCs"|jj||}|dkrtd|S)Nrz#seek() returned an invalid position)r;rVr,)rErWrXZ new_positionr@r@rArVsz_BufferedIOMixin.seekcCs|jj}|dkrtd|S)Nrz#tell() returned an invalid position)r;rYr,)rErWr@r@rArYs z_BufferedIOMixin.tellNcCs$|j|dkr|j}|jj|S)N)r\rYr;rZ)rErWr@r@rArZsz_BufferedIOMixin.truncatecCs|jrtd|jjdS)Nzflush of closed file)rfr"r;r\)rEr@r@rAr\sz_BufferedIOMixin.flushc Cs0|jdk r,|j r,z |jWd|jjXdS)N)r;rfr\r3)rEr@r@rAr3s z_BufferedIOMixin.closecCs*|jdkrtd|j|j}d|_|S)Nzraw stream already detached)r;r"r\r)rEr;r@r@rAr s  z_BufferedIOMixin.detachcCs |jjS)N)r;r_)rEr@r@rAr_sz_BufferedIOMixin.seekablecCs|jS)N)r)rEr@r@rAr;sz_BufferedIOMixin.rawcCs|jjS)N)r;rf)rEr@r@rArfsz_BufferedIOMixin.closedcCs|jjS)N)r;rT)rEr@r@rArT!sz_BufferedIOMixin.namecCs|jjS)N)r;r2)rEr@r@rAr2%sz_BufferedIOMixin.modecCstdj|jjdS)Nz can not serialize a '{0}' object)rformatrSrI)rEr@r@rA __getstate__)sz_BufferedIOMixin.__getstate__c CsJ|jj}|jj}y |j}Wntk r6dj||SXdj|||SdS)Nz<{}.{}>z<{}.{} name={!r}>)rSrJrKrT Exceptionr)rEmodnameZclsnamerTr@r@rA__repr__-s z_BufferedIOMixin.__repr__cCs |jjS)N)r;r*)rEr@r@rAr*9sz_BufferedIOMixin.filenocCs |jjS)N)r;r')rEr@r@rAr'<sz_BufferedIOMixin.isatty)r)N)rIrJrKrrVrYrZr\r3rr_rr;rfrTr2rrr*r'r@r@r@rArs          rcseZdZdddZddZddZdd Zfd d Zd d d ZddZ ddZ d!ddZ ddZ d"ddZ ddZddZddZZS)#BytesIONcCs&t}|dk r||7}||_d|_dS)Nr)rq_buffer_pos)rEZ initial_bytesbufr@r@rArDs zBytesIO.__init__cCs|jrtd|jjS)Nz__getstate__ on closed file)rfr"__dict__copy)rEr@r@rArKszBytesIO.__getstate__cCs|jrtdt|jS)Nzgetvalue on closed file)rfr"rr)rEr@r@rAgetvaluePszBytesIO.getvaluecCs|jrtdt|jS)Nzgetbuffer on closed file)rfr"rr)rEr@r@rA getbufferWszBytesIO.getbuffercs|jjtjdS)N)rclearsuperr3)rE)rSr@rAr3^s z BytesIO.closecCst|jrtd|dkrd}|dkr,t|j}t|j|jkr@dStt|j|j|}|j|j|}||_t|S)Nzread from closed filer rr)rfr"r!rrrlr)rErnZnewposrr@r@rArrbs z BytesIO.readcCs |j|S)N)rr)rErnr@r@rArpsz BytesIO.read1c Cs|jrtdt|tr tdt| }|j}WdQRX|dkrFdS|j}|t|j krzd|t|j }|j |7_ ||j |||<|j|7_|S)Nzwrite to closed filez can't write str to binary streamr) rfr"rrrrnbytesrr!r)rErZviewrmrWZpaddingr@r@rAr~us  z BytesIO.writercCs|jrtdy |jWn,tk rD}ztd|WYdd}~XnX|dkrl|dkrdtd|f||_nD|dkrtd|j||_n(|dkrtdt|j||_ntd|jS)Nzseek on closed filezan integer is requiredrznegative seek position %rr r zunsupported whence value) rfr"rr-rrmaxr!r)rErWrXerrr@r@rArVs  z BytesIO.seekcCs|jrtd|jS)Nztell on closed file)rfr"r)rEr@r@rArYsz BytesIO.tellcCs||jrtd|dkr|j}nNy |jWn,tk rT}ztd|WYdd}~XnX|dkrltd|f|j|d=|S)Nztruncate on closed filezan integer is requiredrznegative truncate position %r)rfr"rrr-rr)rErWrr@r@rArZs  zBytesIO.truncatecCs|jrtddS)NzI/O operation on closed file.T)rfr")rEr@r@rArbszBytesIO.readablecCs|jrtddS)NzI/O operation on closed file.T)rfr")rEr@r@rArdszBytesIO.writablecCs|jrtddS)NzI/O operation on closed file.T)rfr")rEr@r@rAr_szBytesIO.seekable)N)N)r)N)rIrJrKrrrrr3rrrr~rVrYrZrbrdr_ __classcell__r@r@)rSrAr@s     rc@sreZdZefddZddZddZddd Zdd d Zdd dZ dddZ ddZ ddZ ddZ dddZdS)r0cCsF|jstdtj|||dkr,td||_|jt|_dS)Nz "raw" argument must be readable.rzinvalid buffer size) rbr,rrr" buffer_size_reset_read_bufLock _read_lock)rEr;rr@r@rArs zBufferedReader.__init__cCs |jjS)N)r;rb)rEr@r@rArbszBufferedReader.readablecCsd|_d|_dS)Nrr) _read_buf _read_pos)rEr@r@rArszBufferedReader._reset_read_bufNc Cs4|dk r|dkrtd|j |j|SQRXdS)Nr zinvalid number of bytes to readr)r"r_read_unlocked)rErnr@r@rArrszBufferedReader.readc Csd}d}|j}|j}|dks$|dkr|jt|jdrj|jj}|dkrZ||dpXdS||d|S||dg}d}x2|jj}||kr|}P|t|7}|j|q~Wdj |p|St||} || kr|j|7_||||S||dg}t |j |} xB| |krL|jj| }||kr2|}P| t|7} |j|q Wt || }dj |} | |d|_d|_| r| d|S|S)Nrr rr)rNr) rrrrpr;rrrr!r{joinrrrl) rErmZ nodata_valZ empty_valuesrrWchunkchunksZ current_sizeavailZwantedoutr@r@rArsN            zBufferedReader._read_unlockedrc Cs|j |j|SQRXdS)N)r_peek_unlocked)rErnr@r@rAriszBufferedReader.peekcCsrt||j}t|j|j}||ks,|dkrb|j|}|jj|}|rb|j|jd||_d|_|j|jdS)Nr)rlrr!rrr;rr)rErmZwantZhaveZto_readZcurrentr@r@rAr)s   zBufferedReader._peek_unlockedc CsT|dkrtd|dkrdS|j(|jd|jt|t|j|jSQRXdS)Nrz(number of bytes to read must be positiverr )r"rrrrlr!rr)rErnr@r@rAr4s zBufferedReader.read1c Cst|tst|}|jdkr dS|jd}d}|jx|t|krtt|j|jt|}|r|j|j|j|||||<|j|7_||7}|t|krPt|||j kr|j j ||d}|sP||7}n|o|s|j dsP|r8|r8Pq8WWdQRX|S)Nrrr ) rrrrrr!rlrrrr;rr)rErrwrittenrrmr@r@rArFs4   "   zBufferedReader._readintocCstj|t|j|jS)N)rrYr!rr)rEr@r@rArYtszBufferedReader.tellc CsX|tkrtd|j8|dkr4|t|j|j8}tj|||}|j|SQRXdS)Nzinvalid whence valuer ) valid_seek_flagsr"rr!rrrrVr)rErWrXr@r@rArVwszBufferedReader.seek)N)N)r)r)r)rIrJrKr(rrbrrrrrirrrrYrVr@r@r@rAr0s  4 .r0c@sTeZdZefddZddZddZddd Zd d Zd d Z ddZ dddZ dS)r/cCsF|jstdtj|||dkr,td||_t|_t|_ dS)Nz "raw" argument must be writable.rzinvalid buffer size) rdr,rrr"rrq _write_bufr _write_lock)rEr;rr@r@rArs zBufferedWriter.__init__cCs |jjS)N)r;rd)rEr@r@rArdszBufferedWriter.writablecCs|jrtdt|tr td|jt|j|jkr@|j t|j}|jj |t|j|}t|j|jkry |j Wnlt k r}zPt|j|jkrt|j|j}||8}|jd|j|_t |j |j |WYdd}~XnX|SQRXdS)Nzwrite to closed filez can't write str to binary stream)rfr"rrrrr!rr_flush_unlockedextendBlockingIOErrorerrnostrerror)rErZbeforereZoverager@r@rAr~s(    "zBufferedWriter.writeNc Cs8|j(|j|dkr"|jj}|jj|SQRXdS)N)rrr;rYrZ)rErWr@r@rArZs  zBufferedWriter.truncatec Cs|j|jWdQRXdS)N)rr)rEr@r@rAr\szBufferedWriter.flushc Cs|jrtdxz|jry|jj|j}Wntk rDtdYnX|dkr\ttjdd|t |jksr|dkrzt 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) rfr"rr;r~r RuntimeErrorrZEAGAINr!r,)rErmr@r@rArszBufferedWriter._flush_unlockedcCstj|t|jS)N)rrYr!r)rEr@r@rArYszBufferedWriter.tellrc Cs8|tkrtd|j|jtj|||SQRXdS)Nzinvalid whence value)rr"rrrrV)rErWrXr@r@rArVs zBufferedWriter.seek)N)r) rIrJrKr(rrdr~rZr\rrYrVr@r@r@rAr/s  r/c@seZdZefddZdddZddZdd Zdd d Zd dZ ddZ ddZ ddZ ddZ ddZddZeddZdS)BufferedRWPaircCs<|jstd|js tdt|||_t|||_dS)Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rbr,rdr0readerr/writer)rErrrr@r@rArs  zBufferedRWPair.__init__NcCs|dkr d}|jj|S)Nr r)rrr)rErnr@r@rArrszBufferedRWPair.readcCs |jj|S)N)rr)rErr@r@rArszBufferedRWPair.readintocCs |jj|S)N)rr~)rErr@r@rAr~szBufferedRWPair.writercCs |jj|S)N)rri)rErnr@r@rAriszBufferedRWPair.peekcCs |jj|S)N)rr)rErnr@r@rArszBufferedRWPair.read1cCs |jj|S)N)rr)rErr@r@rAr szBufferedRWPair.readinto1cCs |jjS)N)rrb)rEr@r@rArb szBufferedRWPair.readablecCs |jjS)N)rrd)rEr@r@rArdszBufferedRWPair.writablecCs |jjS)N)rr\)rEr@r@rAr\szBufferedRWPair.flushc Cs z|jjWd|jjXdS)N)rr3r)rEr@r@rAr3szBufferedRWPair.closecCs|jjp|jjS)N)rr'r)rEr@r@rAr'szBufferedRWPair.isattycCs|jjS)N)rrf)rEr@r@rArfszBufferedRWPair.closed)N)r)rIrJrKr(rrrrr~rirrrbrdr\r3r'rrfr@r@r@rArs   rc@sheZdZefddZdddZddZdd d Zdd d Zd dZ dddZ ddZ ddZ ddZ dS)r.cCs(|jtj|||tj|||dS)N)rar0rr/)rEr;rr@r@rAr-szBufferedRandom.__init__rcCs|tkrtd|j|jrJ|j |jj|jt|jdWdQRX|jj||}|j|j WdQRX|dkrt d|S)Nzinvalid whence valuer rz seek() returned invalid position) rr"r\rrr;rVrr!rr,)rErWrXr@r@rArV2s$zBufferedRandom.seekcCs|jrtj|Stj|SdS)N)rr/rYr0)rEr@r@rArYCs zBufferedRandom.tellNcCs|dkr|j}tj||S)N)rYr/rZ)rErWr@r@rArZIszBufferedRandom.truncatecCs |dkr d}|jtj||S)Nr r)r\r0rr)rErnr@r@rArrOszBufferedRandom.readcCs|jtj||S)N)r\r0r)rErr@r@rArUszBufferedRandom.readintocCs|jtj||S)N)r\r0ri)rErnr@r@rAriYszBufferedRandom.peekcCs|jtj||S)N)r\r0r)rErnr@r@rAr]szBufferedRandom.read1cCs|jtj||S)N)r\r0r)rErr@r@rAraszBufferedRandom.readinto1c CsF|jr:|j(|jj|jt|jd|jWdQRXtj||S)Nr ) rrr;rVrr!rr/r~)rErr@r@rAr~es zBufferedRandom.write)r)N)N)r)rIrJrKr(rrVrYrZrrrrirrr~r@r@r@rAr.$s     r.cseZdZd0ZdZdZdZdZdZdZ d1ddZ dd Z d d Z d d Z ddZd2ddZd3ddZddZddZddZefddZddZd4ddZfd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zed,d-Zed.d/Z Z!S)5r&r FNTrc Cs |jdkr*z|jrtj|jWdd|_Xt|trsz"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_closefdrr3rfloatrrr"rr sumcount_created _writableO_EXCLO_CREAT _readableO_TRUNC _appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrBr,set_inheritabler)statS_ISDIRst_modeIsADirectoryErrorrZEISDIRrr-_blksizer(_setmoderrTlseekr ) rEr4r2r9rfdflagsZnoinherit_flagZowned_fdZfdfstatr@r@rArws     $                    zFileIO.__init__cCsD|jdkr@|jr@|j r@ddl}|jd|ftd|d|jdS)Nrzunclosed file %rr ) stacklevelsource)rrrfr#r$ResourceWarningr3)rEr#r@r@rAr^s  zFileIO.__del__cCstd|jjdS)Nzcannot serialize '%s' object)rrSrI)rEr@r@rArszFileIO.__getstate__c Csld|jj|jjf}|jr"d|Sy |j}Wn&tk rRd||j|j|jfSXd|||j|jfSdS)Nz%s.%sz <%s [closed]>z<%s fd=%d mode=%r closefd=%r>z<%s name=%r mode=%r closefd=%r>) rSrJrKrfrTr-rr2r)rE class_namerTr@r@rArs  zFileIO.__repr__cCs|jstddS)NzFile not open for reading)rrQ)rEr@r@rArcszFileIO._checkReadablecCs|jstddS)NzFile not open for writing)rrQ)rEr`r@r@rAreszFileIO._checkWritablec CsP|j|j|dks |dkr(|jSytj|j|Stk rJdSXdS)Nr)r[rcrrrrrr)rErnr@r@rArr sz FileIO.readcCs|j|jt}y6tj|jdt}tj|jj}||krH||d}Wnt k r^YnXt }xnt ||krt |}|t |t7}|t |}ytj |j|}Wntk r|rPdSX|sP||7}qhWt|S)Nrr )r[rcr(rrrrr)st_sizer,rqr!rrrrr)rEbufsizerWendr<rmrr@r@rArs4   zFileIO.readallcCs4t|jd}|jt|}t|}||d|<|S)Nr)rrrrr!)rErmrrmr@r@rAr?s  zFileIO.readintoc Cs8|j|jytj|j|Stk r2dSXdS)N)r[rerr~rr)rErr@r@rAr~Gs z FileIO.writecCs*t|trtd|jtj|j||S)Nzan integer is required)rrrr[rrr)rErWrXr@r@rArVUs z FileIO.seekcCs|jtj|jdtS)Nr)r[rrrr)rEr@r@rArYesz FileIO.tellcCs2|j|j|dkr |j}tj|j||S)N)r[rerYr ftruncater)rErnr@r@rArZls zFileIO.truncatec s.|js*z|jrtj|jWdtjXdS)N)rfrrr3rr)rE)rSr@rAr3ys z FileIO.closec CsF|j|jdkr@y |jWntk r8d|_YnXd|_|jS)NFT)r[ _seekablerYr,)rEr@r@rAr_s   zFileIO.seekablecCs|j|jS)N)r[r)rEr@r@rArbszFileIO.readablecCs|j|jS)N)r[r)rEr@r@rArdszFileIO.writablecCs|j|jS)N)r[r)rEr@r@rAr*sz FileIO.filenocCs|jtj|jS)N)r[rr'r)rEr@r@rAr'sz FileIO.isattycCs|jS)N)r)rEr@r@rAr9szFileIO.closefdcCsJ|jr|jrdSdSn0|jr,|jr&dSdSn|jrB|jrZ!d?d@Z"dKdAdBZ#edCdDZ$dS)Lr1iNFc Cs|dk r&t|t r&tdt|f|dkr)rrSrJrKrTrr2r6)rEr<rTr2r@r@rArs    zTextIOWrapper.__repr__cCs|jS)N)r)rEr@r@rAr6szTextIOWrapper.encodingcCs|jS)N)r)rEr@r@rAr7szTextIOWrapper.errorscCs|jS)N)r)rEr@r@rAr=szTextIOWrapper.line_bufferingcCs|jS)N)r)rEr@r@rAr?szTextIOWrapper.buffercCs|jrtd|jS)NzI/O operation on closed file.)rfr"r)rEr@r@rAr_szTextIOWrapper.seekablecCs |jjS)N)r?rb)rEr@r@rArbszTextIOWrapper.readablecCs |jjS)N)r?rd)rEr@r@rArdszTextIOWrapper.writablecCs|jj|j|_dS)N)r?r\rr')rEr@r@rAr\s zTextIOWrapper.flushc Cs0|jdk r,|j r,z |jWd|jjXdS)N)r?rfr\r3)rEr@r@rAr3s zTextIOWrapper.closecCs|jjS)N)r?rf)rEr@r@rArfszTextIOWrapper.closedcCs|jjS)N)r?rT)rEr@r@rArTszTextIOWrapper.namecCs |jjS)N)r?r*)rEr@r@rAr*szTextIOWrapper.filenocCs |jjS)N)r?r')rEr@r@rAr'szTextIOWrapper.isattycCs|jrtdt|ts(td|jjt|}|js<|j oBd|k}|rf|jrf|j dkrf|j d|j }|j pr|j }|j|}|jj||j r|sd|kr|j|jdd|_|jr|jj|S)Nzwrite to closed filezcan't write %s to text streamrrr)rfr"rrrrSrIr!rrr!rr"r*encoder?r~r\_set_decoded_charsr&r#r)rErZlengthZhaslfencoderrr@r@rAr~s&      zTextIOWrapper.writecCstj|j}||j|_|jS)N)rgetincrementalencoderrrr")rEZ make_encoderr@r@rAr*s  zTextIOWrapper._get_encodercCs2tj|j}||j}|jr(t||j}||_|S)N)rgetincrementaldecoderrrrrrr#)rEZ make_decoderrr@r@rA _get_decoders    zTextIOWrapper._get_decodercCs||_d|_dS)Nr)r$r%)rEcharsr@r@rAr.)sz TextIOWrapper._set_decoded_charscCsF|j}|dkr|j|d}n|j|||}|jt|7_|S)N)r%r$r!)rErmoffsetr3r@r@rA_get_decoded_chars.s z TextIOWrapper._get_decoded_charscCs$|j|krtd|j|8_dS)Nz"rewind decoded_chars out of bounds)r%AssertionError)rErmr@r@rA_rewind_decoded_chars8s z#TextIOWrapper._rewind_decoded_charscCs|jdkrtd|jr&|jj\}}|jr<|jj|j}n|jj|j}| }|jj ||}|j ||rt |t |j |_ nd|_ |jr|||f|_| S)Nz no decoderg)r#r"r'rr(r?r _CHUNK_SIZErrrr.r!r$r)r&)rE dec_buffer dec_flags input_chunkeofZ decoded_charsr@r@rA _read_chunk>s  zTextIOWrapper._read_chunkrcCs(||d>B|d>B|d>Bt|d>BS)N@)r)rEr,r: bytes_to_feedneed_eof chars_to_skipr@r@rA _pack_cookiehszTextIOWrapper._pack_cookiecCsFt|d\}}t|d\}}t|d\}}t|d\}}|||||fS)Nr r>llll)divmod)rEZbigintrestr,r:rBrCrDr@r@rA_unpack_cookiers zTextIOWrapper._unpack_cookiecCs>|jstd|jstd|j|jj}|j}|dksF|jdkrX|j rTt d|S|j\}}|t |8}|j }|dkr|j ||S|j}zt|j|}d}x|dkr$|jd|ft |j|d|} | |kr|j\} } | s| }|| 8}P|t | 8}d}q||8}|d}qWd}|jd|f||} |} |dkrZ|j | | Sd}d}d}xt|t |D]v}|d7}|t |j|||d7}|j\}}| r||kr| |7} ||8}|dd} }}||krvPqvW|t |jddd 7}d}||krtd |j | | |||S|j|XdS) Nz!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textrr rr T)rz'can't reconstruct logical file position)rrQr'r,r\r?rYr#r&r$r6r!r%rErrr)rrrange)rEr,rr:Z next_inputrDZ saved_stateZ skip_bytesZ skip_backrmrd start_posZ start_flagsZ bytes_fedrCZ chars_decodedir9r@r@rArYysv              zTextIOWrapper.tellcCs$|j|dkr|j}|jj|S)N)r\rYr?rZ)rErWr@r@rArZszTextIOWrapper.truncatecCs*|jdkrtd|j|j}d|_|S)Nzbuffer is already detached)r?r"r\r)rEr?r@r@rArs  zTextIOWrapper.detachc sfdd}jrtdjs(td|dkrL|dkr@tdd}j}|dkr|dkrdtd jjjdd}jd d_ j rj j |||S|dkrtd |f|dkrtd |fjj |\}}}}} jj|jd d_ |dkr(j r(j j n@j s<|s<| rhj pJj _ j jd |f|d f_ | rjj|} jj j| ||| f_ tj| krtd| _|||S)Nc sHyjpj}Wntk r&YnX|dkr<|jdn|jdS)Nr)r"r*rrr)r,r/)rEr@rA_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)rfr"rrQrYr\r?rVr.r&r#rrHr2rrrrr!r$r,r%) rEZcookierXrMr,rKr:rBrCrDr;r@)rErArVs\         zTextIOWrapper.seekcCs|j|dkrd}|jp |j}y |jWn,tk rX}ztd|WYdd}~XnX|dkr|j|j|jj dd}|j dd|_ |Sd}|j|}x6t ||kr| r|j }||j|t |7}qW|SdS) Nr zan integer is requiredrT)rrFr)rcr#r2rr-rr5rr?rrr.r&r!r=)rErnrrr<r<r@r@rArr5 s(    zTextIOWrapper.readcCs(d|_|j}|s$d|_|j|_t|S)NF)r'rur&rrw)rErxr@r@rAryN szTextIOWrapper.__next__cCs|jrtd|dkrd }nt|ts.td|j}d}|jsH|jd}}xR|jr|j d|}|dkrz|d}Pnt |}n|j r|j d|}|j d|}|d kr|d krt |}n |d}PnL|d kr|d}Pn8||kr|d}Pn$||dkr |d}Pn |d}Pn&|j |j }|dkr>|t |j }P|dkr\t ||kr\|}Px|j rv|jr^Pq^W|jr||j7}qT|jdd|_|SqTW|dkr||kr|}|jt |||d|S) Nzread from closed filer zsize must be an integerrrrr rrrrr)rfr"rrrr5r#r2rrkr!rrr=r$r.r&r7)rErnrxstartrWendposZnlposZcrposr@r@rAruW sp          zTextIOWrapper.readlinecCs|jr|jjSdS)N)r#r)rEr@r@rAr szTextIOWrapper.newlines)NNNFF)N)rrrr)N)r)N)N)%rIrJrKr8rrrr6r7r=r?r_rbrdr\r3rfrTr*r'r~r*r2r.r5r7r=rErHrYrZrrVrrryrurr@r@r@rAr1ZsF E        * c  K  Xr1csNeZdZdfdd ZddZddZed d Zed d Zd dZ Z S)StringIOrrcsftt|jtdd|d|dkr(d|_|dk rbt|tsNtdjt |j |j ||j ddS)Nzutf-8 surrogatepass)r6r7r8Fz*initial_value must be str or None, not {0}r) rrPrrrrrrrrrIr~rV)rEZ initial_valuer8)rSr@rAr s  zStringIO.__init__c CsL|j|jp|j}|j}|jz|j|jjddS|j|XdS)NT)r) r\r#r2rrrr?rr)rErZ old_stater@r@rAr szStringIO.getvaluecCs tj|S)N)objectr)rEr@r@rAr szStringIO.__repr__cCsdS)Nr@)rEr@r@rAr7 szStringIO.errorscCsdS)Nr@)rEr@r@rAr6 szStringIO.encodingcCs|jddS)Nr)rU)rEr@r@rAr szStringIO.detach)rr) rIrJrKrrrrr7r6rrr@r@)rSrArP s    rP>rri r)rrNNNTN)4rabcrrrsys_threadrrrZ _dummy_threadplatformZmsvcrtrriorrrr rrpaddr SEEK_DATAr(rrBrCrLrQr-r,r"ABCMetarRregisterr_ior&rrrr0r/rr.rrrr1rPr@r@r@rAst      T   =   g iCZIJUA U^