3 \!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_bufferingZbsbufferr?/usr/lib64/python3.6/_pyio.pyopen(s{            >         rAc@seZdZddZdS) DocDescriptorcCs dtjS)Nz\open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True) )rA__doc__)selfobjtypr?r?r@__get__szDocDescriptor.__get__N)__name__ __module__ __qualname__rGr?r?r?r@rBsrBc@seZdZeZddZdS) OpenWrappercOs t||S)N)rA)clsargskwargsr?r?r@__new__szOpenWrapper.__new__N)rHrIrJrBrCrOr?r?r?r@rKsrKc@s eZdZdS)UnsupportedOperationN)rHrIrJr?r?r?r@rPsrPc@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)rP __class__rH)rDnamer?r?r@ _unsupported@szIOBase._unsupportedrcCs|jddS)Nseek)rT)rDposwhencer?r?r@rUGsz IOBase.seekcCs |jddS)Nrr )rU)rDr?r?r@tellWsz IOBase.tellNcCs|jddS)Ntruncate)rT)rDrVr?r?r@rY[szIOBase.truncatecCs |jdS)N) _checkClosed)rDr?r?r@flushesz IOBase.flushFc Cs |jsz |jWdd|_XdS)NT)_IOBase__closedr[)rDr?r?r@r3os z IOBase.closec Csy |jWn YnXdS)N)r3)rDr?r?r@__del__zs zIOBase.__del__cCsdS)NFr?)rDr?r?r@seekableszIOBase.seekablecCs |jst|dkrdn|dS)NzFile or stream is not seekable.)r^rP)rDmsgr?r?r@_checkSeekableszIOBase._checkSeekablecCsdS)NFr?)rDr?r?r@readableszIOBase.readablecCs |jst|dkrdn|dS)NzFile or stream is not readable.)rarP)rDr_r?r?r@_checkReadableszIOBase._checkReadablecCsdS)NFr?)rDr?r?r@writableszIOBase.writablecCs |jst|dkrdn|dS)NzFile or stream is not writable.)rcrP)rDr_r?r?r@_checkWritableszIOBase._checkWritablecCs|jS)N)r\)rDr?r?r@closedsz IOBase.closedcCs|jrt|dkrdn|dS)NzI/O operation on closed file.)rer")rDr_r?r?r@rZszIOBase._checkClosedcCs |j|S)N)rZ)rDr?r?r@ __enter__szIOBase.__enter__cGs |jdS)N)r3)rDrMr?r?r@__exit__szIOBase.__exit__cCs|jddS)Nr*)rT)rDr?r?r@r*sz IOBase.filenocCs |jdS)NF)rZ)rDr?r?r@r'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)rhfindr!min)Z readaheadn)rDsizer?r@ nreadaheads  z#IOBase.readline..nreadaheadcSsdS)Nr r?r?r?r?r@rnsr zsize must be an integerrrir) hasattrrrr bytearrayr!readendswithr)rDrmrnresrr?)rDrmr@readlines     zIOBase.readlinecCs |j|S)N)rZ)rDr?r?r@__iter__szIOBase.__iter__cCs|j}|st|S)N)rt StopIteration)rDliner?r?r@__next__ szIOBase.__next__cCsR|dks|dkrt|Sd}g}x,|D]$}|j||t|7}||kr&Pq&W|S)Nr)listappendr!)rDZhintrllinesrwr?r?r@ readliness   zIOBase.readlinescCs$|jx|D]}|j|qWdS)N)rZwrite)rDr{rwr?r?r@ writelines#s zIOBase.writelines)r)N)N)N)N)Nr)r)N)rHrIrJrTrUrXrYr[r\r3r]r^r`rarbrcrdpropertyrerZrfrgr*r'rtrurxr|r~r?r?r?r@rQs2$         % rQ) metaclassc@s.eZdZd ddZddZddZdd Zd S) RawIOBaser cCsP|dkr d}|dkr|jSt|j}|j|}|dkr>dS||d=t|S)Nr rr)readallrp __index__readintor)rDrmrrlr?r?r@rq9s   zRawIOBase.readcCs8t}x|jt}|sP||7}qW|r0t|S|SdS)N)rprqr(r)rDrsdatar?r?r@rJs  zRawIOBase.readallcCs|jddS)Nr)rT)rDrr?r?r@rXszRawIOBase.readintocCs|jddS)Nr})rT)rDrr?r?r@r}`szRawIOBase.writeNr)r)rHrIrJrqrrr}r?r?r?r@r+s r)r&c@sHeZdZdddZdddZddZdd Zd d Zd d ZddZ dS)BufferedIOBaseNcCs|jddS)Nrq)rT)rDrmr?r?r@rq~szBufferedIOBase.readcCs|jddS)Nread1)rT)rDrmr?r?r@rszBufferedIOBase.read1cCs|j|ddS)NF)r) _readinto)rDrr?r?r@rs zBufferedIOBase.readintocCs|j|ddS)NT)r)r)rDrr?r?r@ readinto1s zBufferedIOBase.readinto1cCsVt|tst|}|jd}|r0|jt|}n|jt|}t|}||d|<|S)NB)r memoryviewcastrr!rq)rDrrrrlr?r?r@rs   zBufferedIOBase._readintocCs|jddS)Nr})rT)rDrr?r?r@r}s zBufferedIOBase.writecCs|jddS)Ndetach)rT)rDr?r?r@rszBufferedIOBase.detach)N)N) rHrIrJrqrrrrr}rr?r?r?r@rms    rc@seZdZddZd#ddZddZd$d d Zd d Zd dZddZ ddZ e ddZ e ddZ e ddZe ddZddZddZdd Zd!d"ZdS)%_BufferedIOMixincCs ||_dS)N)_raw)rDr;r?r?r@__init__sz_BufferedIOMixin.__init__rcCs"|jj||}|dkrtd|S)Nrz#seek() returned an invalid position)r;rUr,)rDrVrWZ new_positionr?r?r@rUsz_BufferedIOMixin.seekcCs|jj}|dkrtd|S)Nrz#tell() returned an invalid position)r;rXr,)rDrVr?r?r@rXs z_BufferedIOMixin.tellNcCs$|j|dkr|j}|jj|S)N)r[rXr;rY)rDrVr?r?r@rYsz_BufferedIOMixin.truncatecCs|jrtd|jjdS)Nzflush of closed file)rer"r;r[)rDr?r?r@r[sz_BufferedIOMixin.flushc Cs0|jdk r,|j r,z |jWd|jjXdS)N)r;rer[r3)rDr?r?r@r3s z_BufferedIOMixin.closecCs*|jdkrtd|j|j}d|_|S)Nzraw stream already detached)r;r"r[r)rDr;r?r?r@r s  z_BufferedIOMixin.detachcCs |jjS)N)r;r^)rDr?r?r@r^sz_BufferedIOMixin.seekablecCs|jS)N)r)rDr?r?r@r;sz_BufferedIOMixin.rawcCs|jjS)N)r;re)rDr?r?r@resz_BufferedIOMixin.closedcCs|jjS)N)r;rS)rDr?r?r@rS!sz_BufferedIOMixin.namecCs|jjS)N)r;r2)rDr?r?r@r2%sz_BufferedIOMixin.modecCstdj|jjdS)Nz can not serialize a '{0}' object)rformatrRrH)rDr?r?r@ __getstate__)sz_BufferedIOMixin.__getstate__c CsJ|jj}|jj}y |j}Wntk r6dj||SXdj|||SdS)Nz<{}.{}>z<{}.{} name={!r}>)rRrIrJrS Exceptionr)rDmodnameZclsnamerSr?r?r@__repr__-s z_BufferedIOMixin.__repr__cCs |jjS)N)r;r*)rDr?r?r@r*9sz_BufferedIOMixin.filenocCs |jjS)N)r;r')rDr?r?r@r'<sz_BufferedIOMixin.isatty)r)N)rHrIrJrrUrXrYr[r3rr^rr;rerSr2rrr*r'r?r?r?r@rs          rcseZdZdddZddZddZdd Zfd d Zd d d ZddZ ddZ d!ddZ ddZ d"ddZ ddZddZddZZS)#BytesIONcCs&t}|dk r||7}||_d|_dS)Nr)rp_buffer_pos)rDZ initial_bytesbufr?r?r@rDs zBytesIO.__init__cCs|jrtd|jjS)Nz__getstate__ on closed file)rer"__dict__copy)rDr?r?r@rKszBytesIO.__getstate__cCs|jrtdt|jS)Nzgetvalue on closed file)rer"rr)rDr?r?r@getvaluePszBytesIO.getvaluecCs|jrtdt|jS)Nzgetbuffer on closed file)rer"rr)rDr?r?r@ getbufferWszBytesIO.getbuffercs|jjtjdS)N)rclearsuperr3)rD)rRr?r@r3^s z BytesIO.closecCst|jrtd|dkrd}|dkr,t|j}t|j|jkr@dStt|j|j|}|j|j|}||_t|S)Nzread from closed filer rr)rer"r!rrrkr)rDrmZnewposrr?r?r@rqbs z BytesIO.readcCs |j|S)N)rq)rDrmr?r?r@rpsz 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) rer"rrrrnbytesrr!r)rDrZviewrlrVZpaddingr?r?r@r}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) rer"rr-rrmaxr!r)rDrVrWerrr?r?r@rUs  z BytesIO.seekcCs|jrtd|jS)Nztell on closed file)rer"r)rDr?r?r@rXsz 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)rer"rrr-rr)rDrVrr?r?r@rYs  zBytesIO.truncatecCs|jrtddS)NzI/O operation on closed file.T)rer")rDr?r?r@raszBytesIO.readablecCs|jrtddS)NzI/O operation on closed file.T)rer")rDr?r?r@rcszBytesIO.writablecCs|jrtddS)NzI/O operation on closed file.T)rer")rDr?r?r@r^szBytesIO.seekable)N)N)r)N)rHrIrJrrrrr3rqrr}rUrXrYrarcr^ __classcell__r?r?)rRr@r@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) rar,rrr" buffer_size_reset_read_bufLock _read_lock)rDr;rr?r?r@rs zBufferedReader.__init__cCs |jjS)N)r;ra)rDr?r?r@raszBufferedReader.readablecCsd|_d|_dS)Nrr) _read_buf _read_pos)rDr?r?r@rszBufferedReader._reset_read_bufNc Cs4|dk r|dkrtd|j |j|SQRXdS)Nr zinvalid number of bytes to readr)r"r_read_unlocked)rDrmr?r?r@rqszBufferedReader.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) rrrror;rrqr!rzjoinrrrk) rDrlZ nodata_valZ empty_valuesrrVchunkZchunksZ current_sizeavailZwantedoutr?r?r@rsN            zBufferedReader._read_unlockedrc Cs|j |j|SQRXdS)N)r_peek_unlocked)rDrmr?r?r@rhszBufferedReader.peekcCsrt||j}t|j|j}||ks,|dkrb|j|}|jj|}|rb|j|jd||_d|_|j|jdS)Nr)rkrr!rrr;rq)rDrlZwantZhaveZto_readZcurrentr?r?r@r)s   zBufferedReader._peek_unlockedc CsT|dkrtd|dkrdS|j(|jd|jt|t|j|jSQRXdS)Nrz(number of bytes to read must be positiverr )r"rrrrkr!rr)rDrmr?r?r@r4s 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!rkrrrr;rr)rDrrwrittenrrlr?r?r@rFs4   "   zBufferedReader._readintocCstj|t|j|jS)N)rrXr!rr)rDr?r?r@rXtszBufferedReader.tellc CsX|tkrtd|j8|dkr4|t|j|j8}tj|||}|j|SQRXdS)Nzinvalid whence valuer ) valid_seek_flagsr"rr!rrrrUr)rDrVrWr?r?r@rUwszBufferedReader.seek)N)N)r)r)r)rHrIrJr(rrarrqrrhrrrrXrUr?r?r?r@r0s  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) rcr,rrr"rrp _write_bufr _write_lock)rDr;rr?r?r@rs zBufferedWriter.__init__cCs |jjS)N)r;rc)rDr?r?r@rcszBufferedWriter.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)rer"rrrrr!rr_flush_unlockedextendBlockingIOErrorerrnostrerror)rDrZbeforereZoverager?r?r@r}s(    "zBufferedWriter.writeNc Cs8|j(|j|dkr"|jj}|jj|SQRXdS)N)rrr;rXrY)rDrVr?r?r@rYs  zBufferedWriter.truncatec Cs|j|jWdQRXdS)N)rr)rDr?r?r@r[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) rer"rr;r}r RuntimeErrorrZEAGAINr!r,)rDrlr?r?r@rszBufferedWriter._flush_unlockedcCstj|t|jS)N)rrXr!r)rDr?r?r@rXszBufferedWriter.tellrc Cs8|tkrtd|j|jtj|||SQRXdS)Nzinvalid whence value)rr"rrrrU)rDrVrWr?r?r@rUs zBufferedWriter.seek)N)r) rHrIrJr(rrcr}rYr[rrXrUr?r?r?r@r/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.)rar,rcr0readerr/writer)rDrrrr?r?r@rs  zBufferedRWPair.__init__NcCs|dkr d}|jj|S)Nr r)rrq)rDrmr?r?r@rqszBufferedRWPair.readcCs |jj|S)N)rr)rDrr?r?r@rszBufferedRWPair.readintocCs |jj|S)N)rr})rDrr?r?r@r}szBufferedRWPair.writercCs |jj|S)N)rrh)rDrmr?r?r@rhszBufferedRWPair.peekcCs |jj|S)N)rr)rDrmr?r?r@rszBufferedRWPair.read1cCs |jj|S)N)rr)rDrr?r?r@r szBufferedRWPair.readinto1cCs |jjS)N)rra)rDr?r?r@ra szBufferedRWPair.readablecCs |jjS)N)rrc)rDr?r?r@rcszBufferedRWPair.writablecCs |jjS)N)rr[)rDr?r?r@r[szBufferedRWPair.flushc Cs z|jjWd|jjXdS)N)rr3r)rDr?r?r@r3szBufferedRWPair.closecCs|jjp|jjS)N)rr'r)rDr?r?r@r'szBufferedRWPair.isattycCs|jjS)N)rre)rDr?r?r@reszBufferedRWPair.closed)N)r)rHrIrJr(rrqrr}rhrrrarcr[r3r'rrer?r?r?r@rs   rc@sheZdZefddZdddZddZdd d Zdd d Zd dZ dddZ ddZ ddZ ddZ dS)r.cCs(|jtj|||tj|||dS)N)r`r0rr/)rDr;rr?r?r@r-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;rUrr!rr,)rDrVrWr?r?r@rU2s$zBufferedRandom.seekcCs|jrtj|Stj|SdS)N)rr/rXr0)rDr?r?r@rXCs zBufferedRandom.tellNcCs|dkr|j}tj||S)N)rXr/rY)rDrVr?r?r@rYIszBufferedRandom.truncatecCs |dkr d}|jtj||S)Nr r)r[r0rq)rDrmr?r?r@rqOszBufferedRandom.readcCs|jtj||S)N)r[r0r)rDrr?r?r@rUszBufferedRandom.readintocCs|jtj||S)N)r[r0rh)rDrmr?r?r@rhYszBufferedRandom.peekcCs|jtj||S)N)r[r0r)rDrmr?r?r@r]szBufferedRandom.read1cCs|jtj||S)N)r[r0r)rDrr?r?r@raszBufferedRandom.readinto1c CsF|jr:|j(|jj|jt|jd|jWdQRXtj||S)Nr ) rrr;rUrr!rr/r})rDrr?r?r@r}es zBufferedRandom.write)r)N)N)r)rHrIrJr(rrUrXrYrqrrhrrr}r?r?r?r@r.$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_WRONLYgetattrrAr,set_inheritabler)statS_ISDIRst_modeIsADirectoryErrorrZEISDIRrr-_blksizer(_setmoderrSlseekr ) rDr4r2r9rfdflagsZnoinherit_flagZowned_fdZfdfstatr?r?r@rws     $                    zFileIO.__init__cCsD|jdkr@|jr@|j r@ddl}|jd|ftd|d|jdS)Nrzunclosed file %rr ) stacklevelsource)rrrer#r$ResourceWarningr3)rDr#r?r?r@r]s  zFileIO.__del__cCstd|jjdS)Nzcannot serialize '%s' object)rrRrH)rDr?r?r@rszFileIO.__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>) rRrIrJrerSr-rr2r)rD class_namerSr?r?r@rs  zFileIO.__repr__cCs|jstddS)NzFile not open for reading)rrP)rDr?r?r@rbszFileIO._checkReadablecCs|jstddS)NzFile not open for writing)rrP)rDr_r?r?r@rdszFileIO._checkWritablec CsP|j|j|dks |dkr(|jSytj|j|Stk rJdSXdS)Nr)rZrbrrrqrr)rDrmr?r?r@rq 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 )rZrbr(rrrrr)st_sizer,rpr!rrqrr)rDbufsizerVendr<rlrr?r?r@rs4   zFileIO.readallcCs4t|jd}|jt|}t|}||d|<|S)Nr)rrrqr!)rDrmrrlr?r?r@r?s  zFileIO.readintoc Cs8|j|jytj|j|Stk r2dSXdS)N)rZrdrr}rr)rDrr?r?r@r}Gs z FileIO.writecCs*t|trtd|jtj|j||S)Nzan integer is required)rrrrZrrr)rDrVrWr?r?r@rUUs z FileIO.seekcCs|jtj|jdtS)Nr)rZrrrr)rDr?r?r@rXesz FileIO.tellcCs2|j|j|dkr |j}tj|j||S)N)rZrdrXr ftruncater)rDrmr?r?r@rYls zFileIO.truncatec s.|js*z|jrtj|jWdtjXdS)N)rerrr3rr)rD)rRr?r@r3ys z FileIO.closec CsF|j|jdkr@y |jWntk r8d|_YnXd|_|jS)NFT)rZ _seekablerXr,)rDr?r?r@r^s   zFileIO.seekablecCs|j|jS)N)rZr)rDr?r?r@raszFileIO.readablecCs|j|jS)N)rZr)rDr?r?r@rcszFileIO.writablecCs|j|jS)N)rZr)rDr?r?r@r*sz FileIO.filenocCs|jtj|jS)N)rZrr'r)rDr?r?r@r'sz FileIO.isattycCs|jS)N)r)rDr?r?r@r9szFileIO.closefdcCsJ|jr|jrdSdSn0|jr,|jr&dSdSn|jrB|jrZ!d?d@Z"dKdAdBZ#edCdDZ$dS)Lr1iNFc Cs|dk r&t|t r&tdt|f|dkrr^r_tellingro _has_read1 _b2cratiorcrX _get_encoderr) rDr>r6r7r8r= write_throughrr_positionr?r?r@rws`             zTextIOWrapper.__init__cCsdj|jj|jj}y |j}Wntk r2YnX|dj|7}y |j}Wntk r`YnX|dj|7}|dj|jS)Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)rrRrIrJrSrr2r6)rDr<rSr2r?r?r@rs    zTextIOWrapper.__repr__cCs|jS)N)r)rDr?r?r@r6szTextIOWrapper.encodingcCs|jS)N)r)rDr?r?r@r7szTextIOWrapper.errorscCs|jS)N)r)rDr?r?r@r=szTextIOWrapper.line_bufferingcCs|jS)N)r)rDr?r?r@r>szTextIOWrapper.buffercCs|jrtd|jS)NzI/O operation on closed file.)rer"r)rDr?r?r@r^szTextIOWrapper.seekablecCs |jjS)N)r>ra)rDr?r?r@raszTextIOWrapper.readablecCs |jjS)N)r>rc)rDr?r?r@rcszTextIOWrapper.writablecCs|jj|j|_dS)N)r>r[rr%)rDr?r?r@r[s zTextIOWrapper.flushc Cs0|jdk r,|j r,z |jWd|jjXdS)N)r>rer[r3)rDr?r?r@r3s zTextIOWrapper.closecCs|jjS)N)r>re)rDr?r?r@reszTextIOWrapper.closedcCs|jjS)N)r>rS)rDr?r?r@rSszTextIOWrapper.namecCs |jjS)N)r>r*)rDr?r?r@r*szTextIOWrapper.filenocCs |jjS)N)r>r')rDr?r?r@r'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)rer"rrrrRrHr!rrrrr r(encoder>r}r[_set_decoded_charsr$r!r)rDrZlengthZhaslfencoderrr?r?r@r}s&      zTextIOWrapper.writecCstj|j}||j|_|jS)N)rgetincrementalencoderrrr )rDZ make_encoderr?r?r@r(s  zTextIOWrapper._get_encodercCs2tj|j}||j}|jr(t||j}||_|S)N)rgetincrementaldecoderrrrrrr!)rDZ make_decoderrr?r?r@ _get_decoders    zTextIOWrapper._get_decodercCs||_d|_dS)Nr)r"r#)rDcharsr?r?r@r,)sz TextIOWrapper._set_decoded_charscCsF|j}|dkr|j|d}n|j|||}|jt|7_|S)N)r#r"r!)rDrloffsetr1r?r?r@_get_decoded_chars.s z TextIOWrapper._get_decoded_charscCs$|j|krtd|j|8_dS)Nz"rewind decoded_chars out of bounds)r#AssertionError)rDrlr?r?r@_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_SIZErqrr,r!r"r'r$)rD dec_buffer dec_flags input_chunkeofZ decoded_charsr?r?r@ _read_chunk>s  zTextIOWrapper._read_chunkrcCs(||d>B|d>B|d>Bt|d>BS)N@)r)rDr*r8 bytes_to_feedneed_eof chars_to_skipr?r?r@ _pack_cookiehszTextIOWrapper._pack_cookiecCsFt|d\}}t|d\}}t|d\}}t|d\}}|||||fS)Nr r<llll)divmod)rDZbigintrestr*r8r@rArBr?r?r@_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)rrPr%r,r[r>rXr!r$r"r4r!r#rCrrr'rrrange)rDr*rr8Z next_inputrBZ saved_stateZ skip_bytesZ skip_backrlrd start_posZ start_flagsZ bytes_fedrAZ chars_decodedir7r?r?r@rXysv              zTextIOWrapper.tellcCs$|j|dkr|j}|jj|S)N)r[rXr>rY)rDrVr?r?r@rYszTextIOWrapper.truncatecCs*|jdkrtd|j|j}d|_|S)Nzbuffer is already detached)r>r"r[r)rDr>r?r?r@rs  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-)rDr?r@_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)rer"rrPrXr[r>rUr,r$r!rrFr0rrqrr!r"r,r#) rDZcookierWrKr*rIr8r@rArBr9r?)rDr@rUs\         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)rbr!r0rr-rr3rr>rqr,r$r!r;)rDrmrrr<r:r?r?r@rq5 s(    zTextIOWrapper.readcCs(d|_|j}|s$d|_|j|_t|S)NF)r%rtr$rrv)rDrwr?r?r@rxN 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)rer"rrrr3r!r0rrjr!rrr;r"r,r$r5)rDrmrwstartrVendposZnlposZcrposr?r?r@rtW sp          zTextIOWrapper.readlinecCs|jr|jjSdS)N)r!r)rDr?r?r@r szTextIOWrapper.newlines)NNNFF)N)rrrr)N)r)N)N)%rHrIrJr6rrrr6r7r=r>r^rarcr[r3rerSr*r'r}r(r0r,r3r5r;rCrFrXrYrrUrqrxrtrr?r?r?r@r1ZsF 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) rrNrrrrrrrrrHr}rU)rDZ initial_valuer8)rRr?r@r s  zStringIO.__init__c CsL|j|jp|j}|j}|jz|j|jjddS|j|XdS)NT)r) r[r!r0rrrr>rr)rDrZ old_stater?r?r@r szStringIO.getvaluecCs tj|S)N)objectr)rDr?r?r@r szStringIO.__repr__cCsdS)Nr?)rDr?r?r@r7 szStringIO.errorscCsdS)Nr?)rDr?r?r@r6 szStringIO.encodingcCs|jddS)Nr)rT)rDr?r?r@r szStringIO.detach)rr) rHrIrJrrrrr7r6rrr?r?)rRr@rN s    rN>rri r)rrNNNTN)4rabcrrrsys_threadrrrZ _dummy_threadplatformZmsvcrtrriorrrr rroaddr SEEK_DATAr(rrArBrKrPr-r,r"ABCMetarQregisterr_ior&rrrr0r/rr.rrrr1rNr?r?r?r@st      T   =   g iCZIJUA U^