???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
]W                @   s[  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z y d  d l m Z	 Wn" e
 k
 r d  d l m Z	 Yn Xe j d d h k r d  d l m Z n d Z d  d l Z d  d l m Z m Z m Z m Z d  d d h Z e e  d	  r'e j e  j  e j e  j  d
 d Z e Z d d d d d d d d d  Z Gd d   d  Z Gd d   d  Z y e j Z Wn+ e  k
 rGd d   d e! e"  Z Yn XGd d   d d e j# Z$ e j$ j% e$  Gd d   d e$  Z& e j& j% e&  d  d l' m( Z( e& j% e(  Gd d   d e$  Z) e j) j% e)  Gd d   d e)  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$  Z0 e j0 j% e0  Gd. d/   d/ e j1  Z2 Gd0 d1   d1 e0  Z3 Gd2 d3   d3 e3  Z4 d S)4    N)allocate_lockwin32cygwin)setmode)__all__SEEK_SETSEEK_CURSEEK_END      	SEEK_HOLE   i   rTc             C   sS  t  |  t t t f  s( t d |    t  | t  sG t d |   t  | t  sf t d |   | d  k	 r t  | t  r t d |   | d  k	 r t  | t  r t d |   t |  } | t d  s t |  t |  k rt d |   d | k }	 d | k }
 d	 | k } d
 | k } d | k } d | k } d | k } d | k r|	 st| st| rt d   d d  l } | j	 d t
 d  d }
 | r| rt d   |	 |
 | | d k rt d   |	 p|
 p| p| st d   | r#| d  k	 r#t d   | rA| d  k	 rAt d   | r_| d  k	 r_t d   t |  |	 rqd ptd |
 rd pd | rd	 pd | rd
 pd | rd pd | d | } | } ynd } | d k s| d k  r| j   rd! } d } | d k  r]t } y t j | j    j } Wn t t f k
 rJYn X| d k r]| } | d k  rut d   | d k r| r| St d   | rt | |  } nL |	 s| s| rt | |  } n( |
 rt | |  } n t d  |   | } | r| St | | | | |  } | } | | _ | SWn | j     Yn Xd  S)"Nzinvalid file: %rzinvalid mode: %rzinvalid buffering: %rzinvalid encoding: %rzinvalid errors: %rzaxrwb+tUxr   wa+tbUz$can't use U and writing mode at oncer   z'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 openerFzinvalid buffering sizezcan't have unbuffered text I/Ozunknown mode: %r)
isinstancestrbytesint	TypeErrorsetlen
ValueErrorwarningswarnDeprecationWarningFileIOisattyDEFAULT_BUFFER_SIZEosfstatfileno
st_blksizeOSErrorAttributeErrorBufferedRandomBufferedWriterBufferedReaderTextIOWrappermodeclose)filer1   	bufferingencodingerrorsnewlineclosefdr   ZmodesZcreatingreadingwritingZ	appendingZupdatingtextbinaryr!   rawresultline_bufferingbsbuffer rB   */opt/alt/python35/lib64/python3.5/_pyio.pyopen)   s    {(	
?$	
rD   c               @   s   e  Z d  Z d d   Z d S)DocDescriptorc             C   s   d t  j S)Nz\open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)

)rD   __doc__)selfobjtyprB   rB   rC   __get__   s    zDocDescriptor.__get__N)__name__
__module____qualname__rJ   rB   rB   rB   rC   rE      s   rE   c               @   s%   e  Z d  Z e   Z d d   Z d S)OpenWrapperc             O   s   t  | |   S)N)rD   )clsargskwargsrB   rB   rC   __new__  s    zOpenWrapper.__new__N)rK   rL   rM   rE   rF   rR   rB   rB   rB   rC   rN     s   	rN   c               @   s   e  Z d  Z d S)UnsupportedOperationN)rK   rL   rM   rB   rB   rB   rC   rS     s   rS   c               @   sT  e  Z d  Z d d   Z d d d  Z d d   Z d d	 d
  Z d d   Z d Z d d   Z	 d d   Z
 d d   Z d d d  Z d d   Z d d d  Z d d   Z d d d  Z e d d    Z d d  d!  Z d" d#   Z d$ d%   Z d& d'   Z d( d)   Z d5 d+ d,  Z d- d.   Z d/ d0   Z d d1 d2  Z d3 d4   Z d S)6IOBasec             C   s    t  d |  j j | f   d  S)Nz%s.%s() not supported)rS   	__class__rK   )rG   namerB   rB   rC   _unsupported?  s    zIOBase._unsupportedr   c             C   s   |  j  d  d  S)Nseek)rW   )rG   poswhencerB   rB   rC   rX   F  s    zIOBase.seekc             C   s   |  j  d d  S)Nr   r
   )rX   )rG   rB   rB   rC   tellV  s    zIOBase.tellNc             C   s   |  j  d  d  S)Ntruncate)rW   )rG   rY   rB   rB   rC   r\   Z  s    zIOBase.truncatec             C   s   |  j    d  S)N)_checkClosed)rG   rB   rB   rC   flushd  s    zIOBase.flushFc             C   s(   |  j  s$ z |  j   Wd  d |  _  Xd  S)NT)_IOBase__closedr^   )rG   rB   rB   rC   r2   n  s    	zIOBase.closec          	   C   s   y |  j    Wn Yn Xd  S)N)r2   )rG   rB   rB   rC   __del__y  s    zIOBase.__del__c             C   s   d S)NFrB   )rG   rB   rB   rC   seekable  s    zIOBase.seekablec             C   s.   |  j    s* t | d  k r! d n |   d  S)NzFile or stream is not seekable.)ra   rS   )rG   msgrB   rB   rC   _checkSeekable  s    zIOBase._checkSeekablec             C   s   d S)NFrB   )rG   rB   rB   rC   readable  s    zIOBase.readablec             C   s.   |  j    s* t | d  k r! d n |   d  S)NzFile or stream is not readable.)rd   rS   )rG   rb   rB   rB   rC   _checkReadable  s    zIOBase._checkReadablec             C   s   d S)NFrB   )rG   rB   rB   rC   writable  s    zIOBase.writablec             C   s.   |  j    s* t | d  k r! d n |   d  S)NzFile or stream is not writable.)rf   rS   )rG   rb   rB   rB   rC   _checkWritable  s    zIOBase._checkWritablec             C   s   |  j  S)N)r_   )rG   rB   rB   rC   closed  s    zIOBase.closedc             C   s+   |  j  r' t | d  k r d n |   d  S)NzI/O operation on closed file.)rh   r    )rG   rb   rB   rB   rC   r]     s    	zIOBase._checkClosedc             C   s   |  j    |  S)N)r]   )rG   rB   rB   rC   	__enter__  s    
zIOBase.__enter__c             G   s   |  j    d  S)N)r2   )rG   rP   rB   rB   rC   __exit__  s    zIOBase.__exit__c             C   s   |  j  d  d  S)Nr)   )rW   )rG   rB   rB   rC   r)     s    zIOBase.filenoc             C   s   |  j    d S)NF)r]   )rG   rB   rB   rC   r%     s    
zIOBase.isattyr
   c                s   t    d  r'    f d d   } n d d   }  d  k rH d	  n t  t  sc t d   t   } xU  d k  s t |   k  r   j |    } | s P| | 7} | j d  ro Pqo Wt |  S)
Npeekc                 sW     j  d  }  |  s d S|  j d  d p5 t |   }  d k rS t |   } | S)Nr
   s   
r   )rk   findr   min)Z	readaheadn)rG   sizerB   rC   
nreadahead  s    z#IOBase.readline.<locals>.nreadaheadc               S   s   d S)Nr
   rB   rB   rB   rB   rC   rp     s    r
   zsize must be an integerr   s   
r   )	hasattrr   r   r   	bytearrayr   readendswithr   )rG   ro   rp   resr   rB   )rG   ro   rC   readline  s     			!
zIOBase.readlinec             C   s   |  j    |  S)N)r]   )rG   rB   rB   rC   __iter__  s    
zIOBase.__iter__c             C   s   |  j    } | s t  | S)N)rv   StopIteration)rG   linerB   rB   rC   __next__
  s    zIOBase.__next__c             C   sm   | d  k s | d k r" t  |   Sd } g  } x8 |  D]0 } | j |  | t |  7} | | k r5 Pq5 W| S)Nr   )listappendr   )rG   Zhintrn   linesry   rB   rB   rC   	readlines  s    
zIOBase.readlinesc             C   s,   |  j    x | D] } |  j |  q Wd  S)N)r]   write)rG   r}   ry   rB   rB   rC   
writelines"  s    
zIOBase.writelinesr   )rK   rL   rM   rW   rX   r[   r\   r^   r_   r2   r`   ra   rc   rd   re   rf   rg   propertyrh   r]   ri   rj   r)   r%   rv   rw   rz   r~   r   rB   rB   rB   rC   rT     s2   $
	
%rT   	metaclassc               @   sC   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 S)	RawIOBaser
   c             C   sp   | d  k r d } | d k  r( |  j    St | j    } |  j |  } | d  k rY d  S| | d   =t |  S)Nr
   r   r   )readallrr   	__index__readintor   )rG   ro   r   rn   rB   rB   rC   rs   8  s    
zRawIOBase.readc             C   sH   t    } x$ |  j t  } | s" P| | 7} q W| r@ t |  S| Sd  S)N)rr   rs   r&   r   )rG   ru   datarB   rB   rC   r   I  s    	
zRawIOBase.readallc             C   s   |  j  d  d  S)Nr   )rW   )rG   r   rB   rB   rC   r   W  s    zRawIOBase.readintoc             C   s   |  j  d  d  S)Nr   )rW   )rG   r   rB   rB   rC   r   _  s    zRawIOBase.writeNr   )rK   rL   rM   rs   r   r   r   rB   rB   rB   rC   r   *  s   r   )r$   c               @   sj   e  Z d  Z d d d  Z d d d  Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	 d S)BufferedIOBaseNc             C   s   |  j  d  d  S)Nrs   )rW   )rG   ro   rB   rB   rC   rs   }  s    zBufferedIOBase.readc             C   s   |  j  d  d  S)Nread1)rW   )rG   ro   rB   rB   rC   r     s    zBufferedIOBase.read1c             C   s   |  j  | d d S)Nr   F)	_readinto)rG   r   rB   rB   rC   r     s    zBufferedIOBase.readintoc             C   s   |  j  | d d S)Nr   T)r   )rG   r   rB   rB   rC   	readinto1  s    	zBufferedIOBase.readinto1c             C   s}   t  | t  s t |  } | j d  } | rH |  j t |   } n |  j t |   } t |  } | | d  |  <| S)NB)r   
memoryviewcastr   r   rs   )rG   r   r   r   rn   rB   rB   rC   r     s    zBufferedIOBase._readintoc             C   s   |  j  d  d  S)Nr   )rW   )rG   r   rB   rB   rC   r     s    	zBufferedIOBase.writec             C   s   |  j  d  d  S)Ndetach)rW   )rG   rB   rB   rC   r     s    zBufferedIOBase.detach)
rK   rL   rM   rs   r   r   r   r   r   r   rB   rB   rB   rC   r   l  s   r   c               @   s   e  Z d  Z d d   Z d d d  Z d d   Z d d	 d
  Z d d   Z d d   Z d d   Z	 d d   Z
 e d d    Z e d d    Z e d d    Z e d d    Z d d   Z d d   Z d d    Z d! d"   Z d S)#_BufferedIOMixinc             C   s   | |  _  d  S)N)_raw)rG   r=   rB   rB   rC   __init__  s    z_BufferedIOMixin.__init__r   c             C   s1   |  j  j | |  } | d k  r- t d   | S)Nr   z#seek() returned an invalid position)r=   rX   r+   )rG   rY   rZ   Znew_positionrB   rB   rC   rX     s    z_BufferedIOMixin.seekc             C   s+   |  j  j   } | d k  r' t d   | S)Nr   z#tell() returned an invalid position)r=   r[   r+   )rG   rY   rB   rB   rC   r[     s    z_BufferedIOMixin.tellNc             C   s2   |  j    | d  k r" |  j   } |  j j |  S)N)r^   r[   r=   r\   )rG   rY   rB   rB   rC   r\     s    
z_BufferedIOMixin.truncatec             C   s&   |  j  r t d   |  j j   d  S)Nzflush of closed file)rh   r    r=   r^   )rG   rB   rB   rC   r^     s    	z_BufferedIOMixin.flushc          
   C   s<   |  j  d  k	 r8 |  j r8 z |  j   Wd  |  j  j   Xd  S)N)r=   rh   r^   r2   )rG   rB   rB   rC   r2     s    z_BufferedIOMixin.closec             C   s;   |  j  d  k r t d   |  j   |  j } d  |  _ | S)Nzraw stream already detached)r=   r    r^   r   )rG   r=   rB   rB   rC   r     s    
		z_BufferedIOMixin.detachc             C   s   |  j  j   S)N)r=   ra   )rG   rB   rB   rC   ra     s    z_BufferedIOMixin.seekablec             C   s   |  j  S)N)r   )rG   rB   rB   rC   r=     s    z_BufferedIOMixin.rawc             C   s
   |  j  j S)N)r=   rh   )rG   rB   rB   rC   rh     s    z_BufferedIOMixin.closedc             C   s
   |  j  j S)N)r=   rV   )rG   rB   rB   rC   rV      s    z_BufferedIOMixin.namec             C   s
   |  j  j S)N)r=   r1   )rG   rB   rB   rC   r1   $  s    z_BufferedIOMixin.modec             C   s   t  d j |  j j    d  S)Nz can not serialize a '{0}' object)r   formatrU   rK   )rG   rB   rB   rC   __getstate__(  s    	z_BufferedIOMixin.__getstate__c             C   sa   |  j  j } |  j  j } y |  j } Wn" t k
 rI d j | |  SYn Xd j | | |  Sd  S)Nz<{}.{}>z<{}.{} name={!r}>)rU   rL   rM   rV   	Exceptionr   )rG   modnameZclsnamerV   rB   rB   rC   __repr__,  s    z_BufferedIOMixin.__repr__c             C   s   |  j  j   S)N)r=   r)   )rG   rB   rB   rC   r)   8  s    z_BufferedIOMixin.filenoc             C   s   |  j  j   S)N)r=   r%   )rG   rB   rB   rC   r%   ;  s    z_BufferedIOMixin.isatty)rK   rL   rM   r   rX   r[   r\   r^   r2   r   ra   r   r=   rh   rV   r1   r   r   r)   r%   rB   rB   rB   rC   r     s    	
r   c                   s   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z   f d
 d   Z d d d  Z d d   Z	 d d   Z
 d d d  Z d d   Z d d d  Z d d   Z d d   Z d d   Z   S)BytesIONc             C   s5   t    } | d  k	 r | | 7} | |  _ d |  _ d  S)Nr   )rr   _buffer_pos)rG   Zinitial_bytesbufrB   rB   rC   r   C  s
    	
	zBytesIO.__init__c             C   s"   |  j  r t d   |  j j   S)Nz__getstate__ on closed file)rh   r    __dict__copy)rG   rB   rB   rC   r   J  s    	zBytesIO.__getstate__c             C   s"   |  j  r t d   t |  j  S)Nzgetvalue on closed file)rh   r    r   r   )rG   rB   rB   rC   getvalueO  s    	zBytesIO.getvaluec             C   s"   |  j  r t d   t |  j  S)Nzgetbuffer on closed file)rh   r    r   r   )rG   rB   rB   rC   	getbufferV  s    	zBytesIO.getbufferc                s   |  j  j   t   j   d  S)N)r   clearsuperr2   )rG   )rU   rB   rC   r2   ]  s    zBytesIO.closec             C   s   |  j  r t d   | d  k r' d } | d k  rB t |  j  } t |  j  |  j k r^ d St t |  j  |  j |  } |  j |  j |  } | |  _ t |  S)Nzread from closed filer
   r       r   )rh   r    r   r   r   rm   r   )rG   ro   Znewposr   rB   rB   rC   rs   a  s    		zBytesIO.readc             C   s   |  j  |  S)N)rs   )rG   ro   rB   rB   rC   r   o  s    zBytesIO.read1c             C   s   |  j  r t d   t | t  r0 t d   t |   } | j } Wd  QRX| d k r_ d S|  j } | t |  j	  k r d | t |  j	  } |  j	 | 7_	 | |  j	 | | |  <|  j | 7_ | S)Nzwrite to closed filez can't write str to binary streamr   s    )
rh   r    r   r   r   r   nbytesr   r   r   )rG   r   viewrn   rY   ZpaddingrB   rB   rC   r   t  s    		zBytesIO.writer   c             C   s   |  j  r t d   y | j Wn4 t k
 rV } z t d  |  WYd  d  } ~ Xn X| d k r | d k  r t d | f   | |  _ nb | d k r t d |  j |  |  _ n: | d k r t d t |  j  |  |  _ n t d   |  j S)Nzseek on closed filezan integer is requiredr   znegative seek position %rr
   r   zunsupported whence value)	rh   r    r   r,   r   r   maxr   r   )rG   rY   rZ   errrB   rB   rC   rX     s     	""zBytesIO.seekc             C   s   |  j  r t d   |  j S)Nztell on closed file)rh   r    r   )rG   rB   rB   rC   r[     s    	zBytesIO.tellc             C   s   |  j  r t d   | d  k r- |  j } na y | j Wn4 t k
 rn } z t d  |  WYd  d  } ~ Xn X| d k  r t d | f   |  j | d   =| S)Nztruncate on closed filezan integer is requiredr   znegative truncate position %r)rh   r    r   r   r,   r   r   )rG   rY   r   rB   rB   rC   r\     s    	"zBytesIO.truncatec             C   s   |  j  r t d   d S)NzI/O operation on closed file.T)rh   r    )rG   rB   rB   rC   rd     s    	zBytesIO.readablec             C   s   |  j  r t d   d S)NzI/O operation on closed file.T)rh   r    )rG   rB   rB   rC   rf     s    	zBytesIO.writablec             C   s   |  j  r t d   d S)NzI/O operation on closed file.T)rh   r    )rG   rB   rB   rC   ra     s    	zBytesIO.seekable)rK   rL   rM   r   r   r   r   r2   rs   r   r   rX   r[   r\   rd   rf   ra   rB   rB   )rU   rC   r   ?  s   r   c               @   s   e  Z d  Z e d d  Z d d   Z d d   Z d d d	  Z d d
 d  Z d d d  Z	 d d d  Z
 d d   Z d d   Z d d   Z d d d  Z d S)r/   c             C   sc   | j    s t d   t j |  |  | d k r@ t d   | |  _ |  j   t   |  _ d  S)Nz "raw" argument must be readable.r   zinvalid buffer size)	rd   r+   r   r   r    buffer_size_reset_read_bufLock
_read_lock)rG   r=   r   rB   rB   rC   r     s    	
zBufferedReader.__init__c             C   s   |  j  j   S)N)r=   rd   )rG   rB   rB   rC   rd     s    zBufferedReader.readablec             C   s   d |  _  d |  _ d  S)Nr   r   )	_read_buf	_read_pos)rG   rB   rB   rC   r     s    	zBufferedReader._reset_read_bufNc          	   C   sF   | d  k	 r$ | d k  r$ t  d   |  j  |  j |  SWd  QRXd  S)Nr
   zinvalid number of bytes to readr   )r    r   _read_unlocked)rG   ro   rB   rB   rC   rs     s    
zBufferedReader.readc             C   s  d } d } |  j  } |  j } | d  k s6 | d k r|  j   t |  j d  r |  j j   } | d  k r | | d   p d  S| | d   | S| | d   g } d } xC |  j j   } | | k r | } P| t |  7} | j |  q Wd j	 |  p| St |  | }	 | |	 k rB|  j | 7_ | | | |  S| | d   g } t
 |  j |  }
 xR |	 | k  r|  j j |
  } | | k r| } P|	 t |  7}	 | j |  qjWt | |	  } d j	 |  } | | d   |  _  d |  _ | r
| d  |  S| S)Nr   r
   r   r   )r   Nr   )r   r   r   rq   r=   r   rs   r   r|   joinr   r   rm   )rG   rn   Z
nodata_valZempty_valuesr   rY   chunkchunksZcurrent_sizeavailZwantedoutrB   rB   rC   r     sN    		
	zBufferedReader._read_unlockedr   c          	   C   s"   |  j   |  j |  SWd  QRXd  S)N)r   _peek_unlocked)rG   ro   rB   rB   rC   rk     s    
zBufferedReader.peekc             C   s   t  | |  j  } t |  j  |  j } | | k  s@ | d k r |  j | } |  j j |  } | r |  j |  j d   | |  _ d |  _ |  j |  j d   S)Nr   )rm   r   r   r   r   r=   rs   )rG   rn   ZwantZhaveZto_readcurrentrB   rB   rC   r   (  s    	zBufferedReader._peek_unlockedc             C   sp   | d k  r t  d   | d k r( d S|  j 8 |  j d  |  j t | t |  j  |  j   SWd  QRXd  S)Nr   z(number of bytes to read must be positiver   r
   )r    r   r   r   rm   r   r   r   )rG   ro   rB   rB   rC   r   3  s    
zBufferedReader.read1c             C   se  t  | t  s t |  } | j d k r. d S| j d  } d } |  j x
| t |  k  rYt t |  j  |  j t |   } | r |  j |  j |  j |  | | | |  <|  j | 7_ | | 7} | t |  k r Pt |  | |  j	 k r-|  j
 j | | d    } | s P| | 7} n | o6| sI|  j d  sIP| rP | rP PqP WWd  QRX| S)Nr   r   r
   )r   r   r   r   r   r   rm   r   r   r   r=   r   r   )rG   r   r   writtenr   rn   rB   rB   rC   r   E  s4    
%+
zBufferedReader._readintoc             C   s!   t  j |   t |  j  |  j S)N)r   r[   r   r   r   )rG   rB   rB   rC   r[   s  s    zBufferedReader.tellc             C   sv   | t  k r t d   |  j N | d k rH | t |  j  |  j 8} t j |  | |  } |  j   | SWd  QRXd  S)Nzinvalid whence valuer
   )	valid_seek_flagsr    r   r   r   r   r   rX   r   )rG   rY   rZ   rB   rB   rC   rX   v  s    

zBufferedReader.seek)rK   rL   rM   r&   r   rd   r   rs   r   rk   r   r   r   r[   rX   rB   rB   rB   rC   r/     s   4
.r/   c               @   sy   e  Z d  Z e d d  Z d d   Z d d   Z d d d	  Z d
 d   Z d d   Z	 d d   Z
 d d d  Z d S)r.   c             C   se   | j    s t d   t j |  |  | d k r@ t d   | |  _ t   |  _ t   |  _	 d  S)Nz "raw" argument must be writable.r   zinvalid buffer size)
rf   r+   r   r   r    r   rr   
_write_bufr   _write_lock)rG   r=   r   rB   rB   rC   r     s    	zBufferedWriter.__init__c             C   s   |  j  j   S)N)r=   rf   )rG   rB   rB   rC   rf     s    zBufferedWriter.writablec             C   sT  |  j  r t d   t | t  r0 t d   |  j t |  j  |  j k r\ |  j	   t |  j  } |  j j
 |  t |  j  | } t |  j  |  j k rEy |  j	   Wn t k
 rD} zn t |  j  |  j k r2t |  j  |  j } | | 8} |  j d  |  j  |  _ t | j | j |   WYd  d  } ~ Xn X| SWd  QRXd  S)Nzwrite to closed filez can't write str to binary stream)rh   r    r   r   r   r   r   r   r   _flush_unlockedextendBlockingIOErrorerrnostrerror)rG   r   Zbeforer   eZoveragerB   rB   rC   r     s(    	


+zBufferedWriter.writeNc          	   C   sJ   |  j  : |  j   | d  k r/ |  j j   } |  j j |  SWd  QRXd  S)N)r   r   r=   r[   r\   )rG   rY   rB   rB   rC   r\     s
    

zBufferedWriter.truncatec          	   C   s   |  j   |  j   Wd  QRXd  S)N)r   r   )rG   rB   rB   rC   r^     s    
zBufferedWriter.flushc             C   s   |  j  r t d   x |  j r y |  j j |  j  } Wn t k
 rZ t d   Yn X| d  k r| t t j d d   | t	 |  j  k s | d k  r t
 d   |  j d  |  =q Wd  S)Nzflush of closed filezHself.raw should implement RawIOBase: it should not raise BlockingIOErrorz)write could not complete without blockingr   z*write() returned incorrect number of bytes)rh   r    r   r=   r   r   RuntimeErrorr   EAGAINr   r+   )rG   rn   rB   rB   rC   r     s    	!zBufferedWriter._flush_unlockedc             C   s   t  j |   t |  j  S)N)r   r[   r   r   )rG   rB   rB   rC   r[     s    zBufferedWriter.tellr   c             C   sJ   | t  k r t d   |  j " |  j   t j |  | |  SWd  QRXd  S)Nzinvalid whence value)r   r    r   r   r   rX   )rG   rY   rZ   rB   rB   rC   rX     s
    

zBufferedWriter.seek)rK   rL   rM   r&   r   rf   r   r\   r^   r   r[   rX   rB   rB   rB   rC   r.     s   	r.   c               @   s   e  Z d  Z e d d  Z d d d  Z d d   Z d d	   Z d
 d d  Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z e d d    Z d S)BufferedRWPairc             C   sX   | j    s t d   | j   s0 t d   t | |  |  _ t | |  |  _ d  S)Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rd   r+   rf   r/   readerr.   writer)rG   r   r   r   rB   rB   rC   r     s    zBufferedRWPair.__init__Nc             C   s"   | d  k r d } |  j  j |  S)Nr
   r   )r   rs   )rG   ro   rB   rB   rC   rs     s    zBufferedRWPair.readc             C   s   |  j  j |  S)N)r   r   )rG   r   rB   rB   rC   r     s    zBufferedRWPair.readintoc             C   s   |  j  j |  S)N)r   r   )rG   r   rB   rB   rC   r      s    zBufferedRWPair.writer   c             C   s   |  j  j |  S)N)r   rk   )rG   ro   rB   rB   rC   rk     s    zBufferedRWPair.peekc             C   s   |  j  j |  S)N)r   r   )rG   ro   rB   rB   rC   r     s    zBufferedRWPair.read1c             C   s   |  j  j |  S)N)r   r   )rG   r   rB   rB   rC   r   	  s    zBufferedRWPair.readinto1c             C   s   |  j  j   S)N)r   rd   )rG   rB   rB   rC   rd     s    zBufferedRWPair.readablec             C   s   |  j  j   S)N)r   rf   )rG   rB   rB   rC   rf     s    zBufferedRWPair.writablec             C   s   |  j  j   S)N)r   r^   )rG   rB   rB   rC   r^     s    zBufferedRWPair.flushc          
   C   s&   z |  j  j   Wd  |  j j   Xd  S)N)r   r2   r   )rG   rB   rB   rC   r2     s    zBufferedRWPair.closec             C   s   |  j  j   p |  j j   S)N)r   r%   r   )rG   rB   rB   rC   r%     s    zBufferedRWPair.isattyc             C   s
   |  j  j S)N)r   rh   )rG   rB   rB   rC   rh     s    zBufferedRWPair.closed)rK   rL   rM   r&   r   rs   r   r   rk   r   r   rd   rf   r^   r2   r%   r   rh   rB   rB   rB   rC   r     s   r   c               @   s   e  Z d  Z e d d  Z d d d  Z d d   Z d d	 d
  Z d d d  Z d d   Z	 d d d  Z
 d d   Z d d   Z d d   Z d S)r-   c             C   s4   | j    t j |  | |  t j |  | |  d  S)N)rc   r/   r   r.   )rG   r=   r   rB   rB   rC   r   ,  s    
zBufferedRandom.__init__r   c             C   s   | t  k r t d   |  j   |  j r_ |  j ( |  j j |  j t |  j  d  Wd  QRX|  j j | |  } |  j  |  j	   Wd  QRX| d k  r t
 d   | S)Nzinvalid whence valuer
   r   z seek() returned invalid position)r   r    r^   r   r   r=   rX   r   r   r   r+   )rG   rY   rZ   rB   rB   rC   rX   1  s    
	
*
zBufferedRandom.seekc             C   s'   |  j  r t j |   St j |   Sd  S)N)r   r.   r[   r/   )rG   rB   rB   rC   r[   B  s    	zBufferedRandom.tellNc             C   s(   | d  k r |  j    } t j |  |  S)N)r[   r.   r\   )rG   rY   rB   rB   rC   r\   H  s    zBufferedRandom.truncatec             C   s,   | d  k r d } |  j    t j |  |  S)Nr
   r   )r^   r/   rs   )rG   ro   rB   rB   rC   rs   N  s    
zBufferedRandom.readc             C   s   |  j    t j |  |  S)N)r^   r/   r   )rG   r   rB   rB   rC   r   T  s    
zBufferedRandom.readintoc             C   s   |  j    t j |  |  S)N)r^   r/   rk   )rG   ro   rB   rB   rC   rk   X  s    
zBufferedRandom.peekc             C   s   |  j    t j |  |  S)N)r^   r/   r   )rG   ro   rB   rB   rC   r   \  s    
zBufferedRandom.read1c             C   s   |  j    t j |  |  S)N)r^   r/   r   )rG   r   rB   rB   rC   r   `  s    
zBufferedRandom.readinto1c             C   sW   |  j  rG |  j 2 |  j j |  j t |  j   d  |  j   Wd  QRXt j |  |  S)Nr
   )	r   r   r=   rX   r   r   r   r.   r   )rG   r   rB   rB   rC   r   d  s
    	
#zBufferedRandom.write)rK   rL   rM   r&   r   rX   r[   r\   rs   r   rk   r   r   r   rB   rB   rB   rC   r-   #  s   	r-   c                   s]  e  Z d  Z d0 Z d Z d Z d Z d Z d Z d Z	 d d d d d  Z
 d d	   Z d
 d   Z d d   Z d d   Z d d d  Z d d d  Z d d   Z d d   Z d d   Z e d d  Z d d   Z d d d  Z   f d  d!   Z d" d#   Z d$ d%   Z d& d'   Z d( d)   Z d* d+   Z e d, d-    Z e d. d/    Z    S)1r$   r
   FNTr   c       
      C   s  |  j  d k r9 z |  j r+ t j |  j   Wd  d |  _  Xt | t  rT t d   t | t  r | } | d k  r t d   n d } t | t	  s t d | f   t
 |  t
 d  k s t d | f   t d d   | D  d k s| j d	  d k rt d
   d | k rHd |  _ d |  _ t j t j B} nt d | k rfd |  _ d } nV d | k rd |  _ t j t j B} n. d | k rd |  _ d |  _ t j t j B} d	 | k rd |  _ d |  _ |  j r|  j r| t j O} n& |  j r| t j O} n | t j O} | t t d d  O} t t d d  pYt t d d  } | | O} d  } yp| d k  r| st d   | d  k rt j | | d  } nB | | |  } t | t  st d   | d k  rt d   | } | st j | d  | |  _ t j |  }	 y7 t j |	 j  r]t  t! j" t j# t! j"  |   Wn t$ k
 rrYn Xt |	 d d  |  _% |  j% d k rt& |  _% t' rt' | t j(  | |  _) |  j rt j* | d t+  Wn$ | d  k	 rt j |    Yn X| |  _  d  S)Nr   r
   z$integer argument expected, got floatznegative file descriptorzinvalid mode: %szxrwab+c             s   s   |  ] } | d  k Vq d S)ZrwaxNrB   ).0crB   rB   rC   	<genexpr>  s    z"FileIO.__init__.<locals>.<genexpr>r   zKMust have exactly one of create/read/write/append mode and at most one plusr   Tr   r   r   O_BINARYZO_NOINHERIT	O_CLOEXECz'Cannot use closefd=False with file namei  zexpected integer from openerzNegative file descriptorFr*   r   r   ),_fd_closefdr'   r2   r   floatr   r   r    r   r   sumcount_created	_writableO_EXCLO_CREAT	_readableO_TRUNC
_appendingO_APPENDO_RDWRO_RDONLYO_WRONLYgetattrrD   r+   set_inheritabler(   statS_ISDIRst_modeIsADirectoryErrorr   ZEISDIRr   r,   _blksizer&   _setmoder   rV   lseekr	   )
rG   r3   r1   r8   r   fdflagsZnoinherit_flagZowned_fdZfdfstatrB   rB   rC   r   v  s    	
4										
					zFileIO.__init__c             C   sY   |  j  d k rU |  j rU |  j rU d d  l } | j d |  f t d d |  j   d  S)Nr   zunclosed file %r
stacklevelr   )r   r   rh   r!   r"   ResourceWarningr2   )rG   r!   rB   rB   rC   r`     s
    "zFileIO.__del__c             C   s   t  d |  j j   d  S)Nzcannot serialize '%s' object)r   rU   rK   )rG   rB   rB   rC   r     s    zFileIO.__getstate__c             C   s   d |  j  j |  j  j f } |  j r- d | Sy |  j } Wn/ t k
 rk d | |  j |  j |  j f SYn Xd | | |  j |  j f Sd  S)Nz%s.%sz<%s [closed]>z<%s fd=%d mode=%r closefd=%r>z<%s name=%r mode=%r closefd=%r>)	rU   rL   rM   rh   rV   r,   r   r1   r   )rG   
class_namerV   rB   rB   rC   r     s    	zFileIO.__repr__c             C   s   |  j  s t d   d  S)NzFile not open for reading)r   rS   )rG   rB   rB   rC   re     s    	zFileIO._checkReadablec             C   s   |  j  s t d   d  S)NzFile not open for writing)r   rS   )rG   rb   rB   rB   rC   rg     s    	zFileIO._checkWritablec             C   sj   |  j    |  j   | d  k s, | d k  r6 |  j   Sy t j |  j |  SWn t k
 re d  SYn Xd  S)Nr   )r]   re   r   r'   rs   r   r   )rG   ro   rB   rB   rC   rs     s    


zFileIO.readc             C   s  |  j    |  j   t } yK t j |  j d t  } t j |  j  j } | | k rd | | d } Wn t	 k
 ry Yn Xt
   } x t |  | k r t |  } | t | t  7} | t |  } y t j |  j |  } Wn t k
 r | r Pd  SYn X| sP| | 7} q Wt |  S)Nr   r
   )r]   re   r&   r'   r   r   r   r(   st_sizer+   rr   r   r   rs   r   r   )rG   bufsizerY   endr>   rn   r   rB   rB   rC   r     s4    

		zFileIO.readallc             C   sJ   t  |  j d  } |  j t |   } t |  } | | d  |  <| S)Nr   )r   r   rs   r   )rG   r   mr   rn   rB   rB   rC   r   >  s
    zFileIO.readintoc             C   sH   |  j    |  j   y t j |  j |  SWn t k
 rC d  SYn Xd  S)N)r]   rg   r'   r   r   r   )rG   r   rB   rB   rC   r   F  s    

zFileIO.writec             C   s;   t  | t  r t d   |  j   t j |  j | |  S)Nzan integer is required)r   r   r   r]   r'   r   r   )rG   rY   rZ   rB   rB   rC   rX   T  s    
zFileIO.seekc             C   s    |  j    t j |  j d t  S)Nr   )r]   r'   r   r   r   )rG   rB   rB   rC   r[   d  s    
zFileIO.tellc             C   sC   |  j    |  j   | d  k r, |  j   } t j |  j |  | S)N)r]   rg   r[   r'   	ftruncater   )rG   ro   rB   rB   rC   r\   k  s    

zFileIO.truncatec          
      s;   |  j  s7 z |  j r% t j |  j  Wd  t   j   Xd  S)N)rh   r   r'   r2   r   r   )rG   )rU   rB   rC   r2   x  s
    		zFileIO.closec             C   sU   |  j    |  j d  k rN y |  j   Wn t k
 rD d |  _ Yn
 Xd |  _ |  j S)NFT)r]   	_seekabler[   r+   )rG   rB   rB   rC   ra     s    
	zFileIO.seekablec             C   s   |  j    |  j S)N)r]   r   )rG   rB   rB   rC   rd     s    
zFileIO.readablec             C   s   |  j    |  j S)N)r]   r   )rG   rB   rB   rC   rf     s    
zFileIO.writablec             C   s   |  j    |  j S)N)r]   r   )rG   rB   rB   rC   r)     s    
zFileIO.filenoc             C   s   |  j    t j |  j  S)N)r]   r'   r%   r   )rG   rB   rB   rC   r%     s    
zFileIO.isattyc             C   s   |  j  S)N)r   )rG   rB   rB   rC   r8     s    zFileIO.closefdc             C   s_   |  j  r |  j r d Sd Sn> |  j r: |  j r3 d Sd Sn! |  j rW |  j rP d Sd Sn d Sd  S)Nzxb+xbzab+abzrb+rbwb)r   r   r   r   )rG   rB   rB   rC   r1     s    						zFileIO.moder   )!rK   rL   rM   r   r   r   r   r   r   r   r   r`   r   r   re   rg   rs   r   r   r   r   rX   r[   r\   r2   ra   rd   rf   r)   r%   r   r8   r1   rB   rB   )rU   rC   r$   m  s8   u#r$   c               @   s   e  Z d  Z d d d  Z d d   Z d d d  Z d	 d
   Z d d   Z e d d    Z	 e d d    Z
 e d d    Z d S)
TextIOBaser
   c             C   s   |  j  d  d  S)Nrs   )rW   )rG   ro   rB   rB   rC   rs     s    zTextIOBase.readc             C   s   |  j  d  d  S)Nr   )rW   )rG   srB   rB   rC   r     s    zTextIOBase.writeNc             C   s   |  j  d  d  S)Nr\   )rW   )rG   rY   rB   rB   rC   r\     s    zTextIOBase.truncatec             C   s   |  j  d  d  S)Nrv   )rW   )rG   rB   rB   rC   rv     s    zTextIOBase.readlinec             C   s   |  j  d  d  S)Nr   )rW   )rG   rB   rB   rC   r     s    zTextIOBase.detachc             C   s   d  S)NrB   )rG   rB   rB   rC   r5     s    zTextIOBase.encodingc             C   s   d  S)NrB   )rG   rB   rB   rC   newlines  s    zTextIOBase.newlinesc             C   s   d  S)NrB   )rG   rB   rB   rC   r6     s    zTextIOBase.errorsr   )rK   rL   rM   rs   r   r\   rv   r   r   r5   r   r6   rB   rB   rB   rC   r     s   	
	
r   c               @   sv   e  Z d  Z d d d  Z d d d  Z d d   Z d	 d
   Z d d   Z d Z d Z	 d Z
 e d d    Z d S)IncrementalNewlineDecoderstrictc             C   s>   t  j j |  d | | |  _ | |  _ d |  _ d |  _ d  S)Nr6   r   F)codecsIncrementalDecoderr   	translatedecoderseennl	pendingcr)rG   r   r   r6   rB   rB   rC   r     s
    			z"IncrementalNewlineDecoder.__init__Fc             C   s+  |  j  d  k r | } n |  j  j | d | } |  j rX | sE | rX d | } d |  _ | j d  r | r | d  d  } d |  _ | j d  } | j d  | } | j d  | } |  j | o |  j | o |  j B| o |  j BO_ |  j	 r'| r| j
 d d  } | r'| j
 d d  } | S)	NfinalFr
   Tz

r   )r   decoder   rt   r   r   _LF_CR_CRLFr   replace)rG   inputr   outputZcrlfZcrZlfrB   rB   rC   r     s(    	
		+	z IncrementalNewlineDecoder.decodec             C   sZ   |  j  d  k r d } d } n |  j  j   \ } } | d K} |  j rP | d O} | | f S)Nr   r   r
   )r   getstater   )rG   r   flagrB   rB   rC   r  1  s    	
	
z"IncrementalNewlineDecoder.getstatec             C   sL   | \ } } t  | d @ |  _ |  j d  k	 rH |  j j | | d ?f  d  S)Nr
   )boolr   r   setstate)rG   stater   r  rB   rB   rC   r	  <  s    z"IncrementalNewlineDecoder.setstatec             C   s2   d |  _  d |  _ |  j d  k	 r. |  j j   d  S)Nr   F)r   r   r   reset)rG   rB   rB   rC   r  B  s    		zIncrementalNewlineDecoder.resetr
   r      c          
   C   s   d |  j  S)	Nr   r   
r   r   r   r  r   r  r   r   r  )Nr   r   r  r  r  r  r  )r   )rG   rB   rB   rC   r   L  s           z"IncrementalNewlineDecoder.newlinesN)rK   rL   rM   r   r   r  r	  r  r   r  r  r   r   rB   rB   rB   rC   r     s   r   c               @   s  e  Z d  Z d Z d d d d d d d  Z d d   Z e d d	    Z e d
 d    Z e d d    Z	 e d d    Z
 d d   Z d d   Z d d   Z d d   Z d d   Z e d d    Z e d d    Z d d   Z d  d!   Z d" d#   Z d$ d%   Z d& d'   Z d( d)   Z d d* d+  Z d, d-   Z d. d/   Z d0 d0 d0 d0 d1 d2  Z d3 d4   Z d5 d6   Z d d7 d8  Z d9 d:   Z d0 d; d<  Z  d d= d>  Z! d? d@   Z" d dA dB  Z# e dC dD    Z$ d S)Er0   i   NFc       
      C   s  | d  k	 r5 t  | t  r5 t d t |  f   | d k rT t d | f   | d  k r y t j | j    } Wn t t	 f k
 r Yn X| d  k r y d d  l
 } Wn t k
 r d } Yn X| j d	  } t  | t  s t d
 |   t j |  j s!d } t | |   | d  k r6d } n t  | t  sUt d |   | |  _ | |  _ | |  _ | |  _ | |  _ | d  k |  _ | |  _ | d k |  _ | pt j |  _ d  |  _ d  |  _ d |  _ d |  _ d  |  _ |  j  j!   |  _" |  _# t$ |  j  d  |  _% d |  _& |  j" r||  j'   r||  j  j(   }	 |	 d k r|y |  j)   j* d  Wn t k
 r{Yn Xd  S)Nzillegal newline type: %rr   r   r   
zillegal newline value: %rr   asciiFzinvalid encoding: %rzG%r is not a text encoding; use codecs.open() to handle arbitrary codecsr   zinvalid errors: %rr   g        )Nr   r   r   r  )+r   r   r   typer    r'   device_encodingr)   r,   rS   localeImportErrorgetpreferredencodingr   lookup_is_text_encodingLookupErrorr   _line_buffering	_encoding_errors_readuniversal_readtranslate_readnl_writetranslatelinesep_writenl_encoder_decoder_decoded_chars_decoded_chars_used	_snapshotrA   ra   r   _tellingrq   
_has_read1	_b2cratiorf   r[   _get_encoderr	  )
rG   rA   r5   r6   r7   r?   write_throughr  rb   positionrB   rB   rC   r   v  s`    					
							zTextIOWrapper.__init__c             C   s   d j  |  j j |  j j  } y |  j } Wn t k
 r? Yn X| d j  |  7} y |  j } Wn t k
 rt Yn X| d j  |  7} | d j  |  j  S)Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)r   rU   rL   rM   rV   r   r1   r5   )rG   r>   rV   r1   rB   rB   rC   r     s    zTextIOWrapper.__repr__c             C   s   |  j  S)N)r  )rG   rB   rB   rC   r5     s    zTextIOWrapper.encodingc             C   s   |  j  S)N)r  )rG   rB   rB   rC   r6     s    zTextIOWrapper.errorsc             C   s   |  j  S)N)r  )rG   rB   rB   rC   r?     s    zTextIOWrapper.line_bufferingc             C   s   |  j  S)N)r   )rG   rB   rB   rC   rA     s    zTextIOWrapper.bufferc             C   s   |  j  r t d   |  j S)NzI/O operation on closed file.)rh   r    r   )rG   rB   rB   rC   ra     s    	zTextIOWrapper.seekablec             C   s   |  j  j   S)N)rA   rd   )rG   rB   rB   rC   rd     s    zTextIOWrapper.readablec             C   s   |  j  j   S)N)rA   rf   )rG   rB   rB   rC   rf     s    zTextIOWrapper.writablec             C   s   |  j  j   |  j |  _ d  S)N)rA   r^   r   r*  )rG   rB   rB   rC   r^     s    zTextIOWrapper.flushc          
   C   s<   |  j  d  k	 r8 |  j r8 z |  j   Wd  |  j  j   Xd  S)N)rA   rh   r^   r2   )rG   rB   rB   rC   r2     s    zTextIOWrapper.closec             C   s
   |  j  j S)N)rA   rh   )rG   rB   rB   rC   rh     s    zTextIOWrapper.closedc             C   s
   |  j  j S)N)rA   rV   )rG   rB   rB   rC   rV     s    zTextIOWrapper.namec             C   s   |  j  j   S)N)rA   r)   )rG   rB   rB   rC   r)     s    zTextIOWrapper.filenoc             C   s   |  j  j   S)N)rA   r%   )rG   rB   rB   rC   r%     s    zTextIOWrapper.isattyc             C   s  |  j  r t d   t | t  s: t d | j j   t |  } |  j sX |  j	 oa d | k } | r |  j r |  j
 d k r | j d |  j
  } |  j p |  j   } | j |  } |  j j |  |  j	 r | s d | k r |  j   d  |  _ |  j r|  j j   | S)Nzwrite to closed filezcan't write %s to text streamr   r   )rh   r    r   r   r   rU   rK   r   r"  r  r$  r  r%  r-  encoderA   r   r^   r)  r&  r  )rG   r   lengthZhaslfencoderr   rB   rB   rC   r     s$    	
		zTextIOWrapper.writec             C   s+   t  j |  j  } | |  j  |  _ |  j S)N)r   getincrementalencoderr  r  r%  )rG   Zmake_encoderrB   rB   rC   r-    s    zTextIOWrapper._get_encoderc             C   sI   t  j |  j  } | |  j  } |  j r< t | |  j  } | |  _ | S)N)r   getincrementaldecoderr  r  r  r   r   r&  )rG   Zmake_decoderr   rB   rB   rC   _get_decoder  s    		zTextIOWrapper._get_decoderc             C   s   | |  _  d |  _ d  S)Nr   )r'  r(  )rG   charsrB   rB   rC   _set_decoded_chars'  s    	z TextIOWrapper._set_decoded_charsc             C   s[   |  j  } | d  k r+ |  j | d   } n |  j | | |  } |  j  t |  7_  | S)N)r(  r'  r   )rG   rn   offsetr6  rB   rB   rC   _get_decoded_chars,  s    	z TextIOWrapper._get_decoded_charsc             C   s.   |  j  | k  r t d   |  j  | 8_  d  S)Nz"rewind decoded_chars out of bounds)r(  AssertionError)rG   rn   rB   rB   rC   _rewind_decoded_chars6  s    z#TextIOWrapper._rewind_decoded_charsc             C   s   |  j  d  k r t d   |  j r9 |  j  j   \ } } |  j rZ |  j j |  j  } n |  j j |  j  } | } |  j  j	 | |  } |  j
 |  | r t |  t |  j  |  _ n	 d |  _ |  j r | | | f |  _ | S)Nz
no decoderg        )r&  r    r*  r  r+  rA   r   _CHUNK_SIZErs   r   r7  r   r'  r,  r)  )rG   
dec_buffer	dec_flagsinput_chunkeofZdecoded_charsrB   rB   rC   _read_chunk<  s     				zTextIOWrapper._read_chunkr   c             C   s*   | | d >B| d >B| d >Bt  |  d >BS)N@            )r  )rG   r/  r>  bytes_to_feedneed_eofchars_to_skiprB   rB   rC   _pack_cookief  s    zTextIOWrapper._pack_cookiec             C   sg   t  | d  \ } } t  | d  \ } } t  | d  \ } } t  | d  \ } } | | | | | f S)Nr
   rB  l            l            l            l            )divmod)rG   Zbigintrestr/  r>  rF  rG  rH  rB   rB   rC   _unpack_cookiep  s
    zTextIOWrapper._unpack_cookiec             C   s  |  j  s t d   |  j s* t d   |  j   |  j j   } |  j } | d  k sg |  j d  k r |  j	 r| t
 d   | S|  j \ } } | t |  8} |  j } | d k r |  j | |  S| j   } zt |  j |  } d } x | d k r| j d | f  t | j | d  |    }	 |	 | k r{| j   \ }
 } |
 sb| } | |	 8} P| t |
  8} d } q | | 8} | d } q Wd } | j d | f  | | } | } | d k r|  j | |  Sd } d } d } x t | t |   D] } | d 7} | t | j | | | d    7} | j   \ } } | r| | k r| | 7} | | 8} | d d } } } | | k r Pq W| t | j d d d	  7} d } | | k  rt d
   |  j | | | | |  SWd  | j |  Xd  S)Nz!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textr   r
   r   r   r   Tz'can't reconstruct logical file position)r   rS   r*  r+   r^   rA   r[   r&  r)  r'  r:  r   r(  rI  r  r   r,  r	  r   range)rG   r/  r   r>  Z
next_inputrH  saved_stateZ
skip_bytesZ	skip_backrn   r   d	start_posZstart_flagsZ	bytes_fedrG  Zchars_decodedir=  rB   rB   rC   r[   w  sv    		
			
	


'

zTextIOWrapper.tellc             C   s2   |  j    | d  k r" |  j   } |  j j |  S)N)r^   r[   rA   r\   )rG   rY   rB   rB   rC   r\     s    
zTextIOWrapper.truncatec             C   s;   |  j  d  k r t d   |  j   |  j } d  |  _ | S)Nzbuffer is already detached)rA   r    r^   r   )rG   rA   rB   rB   rC   r     s    
		zTextIOWrapper.detachc                sm    f d d   }   j  r' t d     j s< t d   | d k rr | d k r` t d   d }   j   } | d k r | d k r t d	     j     j j d d  }   j d
  d    _	   j
 r   j
 j   | |  | S| d k rt d | f   | d k  r-t d | f     j     j |  \ } } } } }	   j j |    j d
  d    _	 | d k r  j
 r  j
 j   nR   j
 s| s|	 r  j
 p  j     _
   j
 j d | f  | d f   _	 |	 r_  j j |  }
   j   j
 j |
 |   | |
 f   _	 t   j  |	 k  rVt d   |	   _ | |  | S)Nc                sX   y   j  p   j   } Wn t k
 r- Yn' X|  d k rJ | j d  n
 | j   d  S)Nr   )r%  r-  r  r	  r  )r/  r2  )rG   rB   rC   _reset_encoder  s    z*TextIOWrapper.seek.<locals>._reset_encoderztell on closed filez!underlying stream is not seekabler
   r   z#can't do nonzero cur-relative seeksr   z#can't do nonzero end-relative seeksr   zunsupported whence (%r)znegative seek position %rr   z#can't restore logical file position)rh   r    r   rS   r[   r^   rA   rX   r7  r)  r&  r  rL  r5  r	  rs   r   r   r'  r+   r(  )rG   ZcookierZ   rR  r/  rP  r>  rF  rG  rH  r?  rB   )rG   rC   rX     s\    		
		

		
zTextIOWrapper.seekc             C   s(  |  j    | d  k r d } |  j p. |  j   } y | j Wn4 t k
 rr } z t d  |  WYd  d  } ~ Xn X| d k  r |  j   | j |  j j	   d d } |  j
 d  d  |  _ | Sd } |  j |  } xG t |  | k  r| r|  j   } | |  j | t |   7} q W| Sd  S)	Nr
   zan integer is requiredr   r   Tr   Fr   )re   r&  r5  r   r,   r   r9  r   rA   rs   r7  r)  r   rA  )rG   ro   r   r   r>   r@  rB   rB   rC   rs   3	  s(    
"		!zTextIOWrapper.readc             C   s:   d |  _  |  j   } | s6 d  |  _ |  j |  _  t  | S)NF)r*  rv   r)  r   rx   )rG   ry   rB   rB   rC   rz   L	  s    		zTextIOWrapper.__next__c             C   sn  |  j  r t d   | d  k r* d	 } n t | t  sE t d   |  j   } d } |  j sj |  j   d  } } x|  j r | j	 d |  } | d k r | d } Pqt
 |  } n |  j r}| j	 d |  } | j	 d |  } | d
 k r| d k rt
 |  } qz| d } Pq| d k r7| d } Pq| | k  rQ| d } Pq| | d k ro| d } Pq| d } Pn2 | j	 |  j  } | d k r| t
 |  j  } P| d k rt
 |  | k r| } Px |  j   r|  j rPqW|  j r| |  j   7} qw |  j d  d  |  _ | Sqw W| d k rI| | k rI| } |  j t
 |  |  | d  |  S)Nzread from closed filer
   zsize must be an integerr   r   r   r   r   r   r   r   r   )rh   r    r   r   r   r9  r&  r5  r   rl   r   r  r!  rA  r'  r7  r)  r;  )rG   ro   ry   startrY   endposZnlposZcrposrB   rB   rC   rv   U	  sp    			

	
	




			zTextIOWrapper.readlinec             C   s   |  j  r |  j  j Sd  S)N)r&  r   )rG   rB   rB   rC   r   	  s    zTextIOWrapper.newlines)%rK   rL   rM   r<  r   r   r   r5   r6   r?   rA   ra   rd   rf   r^   r2   rh   rV   r)   r%   r   r-  r5  r7  r9  r;  rA  rI  rL  r[   r\   r   rX   rs   rz   rv   r   rB   rB   rB   rC   r0   Y  sF   	E
*	cK	Xr0   c                   sp   e  Z d  Z d d   f d d  Z d d   Z d d   Z e d	 d
    Z e d d    Z d d   Z	   S)StringIOr   r   c                s   t  t |   j t   d d d d d | | d  k r@ d |  _ | d  k	 r t | t  sy t d j t	 |  j
    |  j |  |  j d  d  S)	Nr5   zutf-8r6   surrogatepassr7   Fz*initial_value must be str or None, not {0}r   )r   rU  r   r   r"  r   r   r   r   r  rK   r   rX   )rG   Zinitial_valuer7   )rU   rB   rC   r   	  s    		zStringIO.__init__c             C   sj   |  j    |  j p |  j   } | j   } | j   z  | j |  j j   d d SWd  | j |  Xd  S)Nr   T)	r^   r&  r5  r  r  r   rA   r   r	  )rG   r   Z	old_staterB   rB   rC   r   	  s    

 zStringIO.getvaluec             C   s   t  j |   S)N)objectr   )rG   rB   rB   rC   r   	  s    zStringIO.__repr__c             C   s   d  S)NrB   )rG   rB   rB   rC   r6   	  s    zStringIO.errorsc             C   s   d  S)NrB   )rG   rB   rB   rC   r5   	  s    zStringIO.encodingc             C   s   |  j  d  d  S)Nr   )rW   )rG   rB   rB   rC   r   	  s    zStringIO.detach)
rK   rL   rM   r   r   r   r   r6   r5   r   rB   rB   )rU   rC   rU  	  s   
rU  )5r'   abcr   r   arrayr   sys_threadr   r   r  _dummy_threadplatformmsvcrtr   r   ior   r   r   r	   r   rq   addr   	SEEK_DATAr&   r   rD   rE   rN   rS   r,   r+   r    ABCMetarT   registerr   _ior$   r   r   r   r/   r.   r   r-   r   r   r   r0   rU  rB   rB   rB   rC   <module>   sj   "
	 =giZIJ TAU  [