???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
2a!X                @   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yd dlmZ W n  e	k
r`   d dl
mZ Y nX ejd4krzd 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	reje j eje j d5ZeZd7ddZG dd dZG dd dZy
ejZW n( ek
r*   G dd de e!ZY nX G dd dej"dZ#ej#j$e# G dd de#Z%ej%j$e% d dl&m'Z' e%j$e' G dd de#Z(ej(j$e( G dd de(Z)G d d! d!e(Z*G d"d# d#e)Z+G d$d% d%e)Z,G d&d' d'e(Z-G d(d) d)e,e+Z.G d*d+ d+e%Z'G d,d- d-e#Z/ej/j$e/ G d.d/ d/ej0Z1G d0d1 d1e/Z2G d2d3 d3e2Z3dS )8    N)allocate_lockwin32cygwin)setmode)__all__SEEK_SETSEEK_CURSEEK_END      	SEEK_HOLE   i   rTc             C   s~  t | tstj| } t | tttfs0td|  t |tsFtd| t |ts\td| |d k	r|t |t r|td| |d k	rt |t rtd| t|}|td st|t|krt	d| d|k}	d|k}
d	|k}d
|k}d|k}d|k}d|k}d|krH|	s&|s&|s&|r.t	ddd l
}|jdtd d}
|r\|r\t	d|	|
 | | dkrzt	d|	p|
p|p|st	d|r|d k	rt	d|r|d k	rt	d|r|d k	rt	dt| |	rdpd|
r dpd |rd	pd |r d
p"d |r0dp2d ||d}|}yd}|dksh|dk rp|j rpd!}d}|dk rt}ytj|j j}W n ttfk
r   Y nX |dkr|}|dk rt	d|dkr|r|S t	d|rt||}n<|	s|s|rt||}n|
r,t||}nt	d | |}|rF|S t|||||}|}||_|S    |j   Y nX d S )"Nzinvalid file: %rzinvalid mode: %rzinvalid buffering: %rzinvalid encoding: %rzinvalid errors: %rzaxrwb+tUxr   wa+tbUz4mode U cannot be combined with 'x', 'w', 'a', or '+'r   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intosfspathstrbytes	TypeErrorsetlen
ValueErrorwarningswarnDeprecationWarningFileIOisattyDEFAULT_BUFFER_SIZEfstatfileno
st_blksizeOSErrorAttributeErrorBufferedRandomBufferedWriterBufferedReaderTextIOWrappermodeclose)filer2   	bufferingencodingerrorsnewlineclosefdr   ZmodesZcreatingZreadingZwritingZ	appendingZupdatingtextZbinaryr#   rawresultline_bufferingbsbuffer r@   */opt/alt/python36/lib64/python3.6/_pyio.pyopen(   s    {




>




rB   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)

)rB   __doc__)selfobjtypr@   r@   rA   __get__   s    zDocDescriptor.__get__N)__name__
__module____qualname__rH   r@   r@   r@   rA   rC      s   rC   c               @   s   e Zd Ze Zdd ZdS )OpenWrapperc             O   s
   t ||S )N)rB   )clsargskwargsr@   r@   rA   __new__  s    zOpenWrapper.__new__N)rI   rJ   rK   rC   rD   rP   r@   r@   r@   rA   rL     s   rL   c               @   s   e Zd ZdS )UnsupportedOperationN)rI   rJ   rK   r@   r@   r@   rA   rQ     s   rQ   c               @   s   e Zd Zdd Zd5ddZdd Zd6d	d
Zdd ZdZdd Z	dd Z
dd Zd7ddZdd Zd8ddZdd Zd9ddZedd Zd:d d!Zd"d# Zd$d% Zd&d' Zd(d) Zd<d+d,Zd-d. Zd/d0 Zd=d1d2Zd3d4 ZdS )>IOBasec             C   s   t d| jj|f d S )Nz%s.%s() not supported)rQ   	__class__rI   )rE   namer@   r@   rA   _unsupported@  s    zIOBase._unsupportedr   c             C   s   | j d d S )Nseek)rU   )rE   poswhencer@   r@   rA   rV   G  s    zIOBase.seekc             C   s   | j ddS )Nr   r
   )rV   )rE   r@   r@   rA   tellW  s    zIOBase.tellNc             C   s   | j d d S )Ntruncate)rU   )rE   rW   r@   r@   rA   rZ   [  s    zIOBase.truncatec             C   s   | j   d S )N)_checkClosed)rE   r@   r@   rA   flushe  s    zIOBase.flushFc             C   s    | j sz| j  W d d| _ X d S )NT)_IOBase__closedr\   )rE   r@   r@   rA   r3   o  s    zIOBase.closec          	   C   s   y| j   W n   Y nX d S )N)r3   )rE   r@   r@   rA   __del__z  s    zIOBase.__del__c             C   s   dS )NFr@   )rE   r@   r@   rA   seekable  s    zIOBase.seekablec             C   s    | j  st|d krdn|d S )NzFile or stream is not seekable.)r_   rQ   )rE   msgr@   r@   rA   _checkSeekable  s    zIOBase._checkSeekablec             C   s   dS )NFr@   )rE   r@   r@   rA   readable  s    zIOBase.readablec             C   s    | j  st|d krdn|d S )NzFile or stream is not readable.)rb   rQ   )rE   r`   r@   r@   rA   _checkReadable  s    zIOBase._checkReadablec             C   s   dS )NFr@   )rE   r@   r@   rA   writable  s    zIOBase.writablec             C   s    | j  st|d krdn|d S )NzFile or stream is not writable.)rd   rQ   )rE   r`   r@   r@   rA   _checkWritable  s    zIOBase._checkWritablec             C   s   | j S )N)r]   )rE   r@   r@   rA   closed  s    zIOBase.closedc             C   s   | j rt|d krdn|d S )NzI/O operation on closed file.)rf   r"   )rE   r`   r@   r@   rA   r[     s    zIOBase._checkClosedc             C   s   | j   | S )N)r[   )rE   r@   r@   rA   	__enter__  s    zIOBase.__enter__c             G   s   | j   d S )N)r3   )rE   rN   r@   r@   rA   __exit__  s    zIOBase.__exit__c             C   s   | j d d S )Nr*   )rU   )rE   r@   r@   rA   r*     s    zIOBase.filenoc             C   s   | j   dS )NF)r[   )rE   r@   r@   rA   r'     s    zIOBase.isattyr
   c                s   t  dr fdd}ndd }d kr0d	nttsBtdt }x>dk s^t|k r j| }|spP ||7 }|jdrJP qJW t|S )
Npeekc                 s>    j d} | sdS | jdd p&t| }dkr:t|}|S )Nr
      
r   )ri   findr!   min)Z	readaheadn)rE   sizer@   rA   
nreadahead  s    

z#IOBase.readline.<locals>.nreadaheadc               S   s   dS )Nr
   r@   r@   r@   r@   rA   ro     s    r
   zsize must be an integerr   rj   r   )	hasattrr   r   r   	bytearrayr!   readendswithr   )rE   rn   ro   resr   r@   )rE   rn   rA   readline  s     
	

zIOBase.readlinec             C   s   | j   | S )N)r[   )rE   r@   r@   rA   __iter__  s    zIOBase.__iter__c             C   s   | j  }|st|S )N)ru   StopIteration)rE   liner@   r@   rA   __next__  s    zIOBase.__next__c             C   sR   |d ks|dkrt | S d}g }x,| D ]$}|j| |t|7 }||kr&P q&W |S )Nr   )listappendr!   )rE   Zhintrm   linesrx   r@   r@   rA   	readlines  s    

zIOBase.readlinesc             C   s$   | j   x|D ]}| j| qW d S )N)r[   write)rE   r|   rx   r@   r@   rA   
writelines#  s    
zIOBase.writelines)r   )N)N)N)N)Nr   )r   )N)rI   rJ   rK   rU   rV   rY   rZ   r\   r]   r3   r^   r_   ra   rb   rc   rd   re   propertyrf   r[   rg   rh   r*   r'   ru   rv   ry   r}   r   r@   r@   r@   rA   rR     s2   $






	

%
rR   )	metaclassc               @   s.   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  S t|j }| j|}|d kr>d S ||d = t|S )Nr
   r   r   )readallrq   	__index__readintor   )rE   rn   r   rm   r@   r@   rA   rr   9  s    

zRawIOBase.readc             C   s8   t  }x| jt}|sP ||7 }qW |r0t|S |S d S )N)rq   rr   r(   r   )rE   rt   datar@   r@   rA   r   J  s    
zRawIOBase.readallc             C   s   | j d d S )Nr   )rU   )rE   r   r@   r@   rA   r   X  s    zRawIOBase.readintoc             C   s   | j d d S )Nr~   )rU   )rE   r   r@   r@   rA   r~   `  s    zRawIOBase.writeNr   )r   )rI   rJ   rK   rr   r   r   r~   r@   r@   r@   rA   r   +  s   
r   )r&   c               @   sH   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 )Nrr   )rU   )rE   rn   r@   r@   rA   rr   ~  s    zBufferedIOBase.readc             C   s   | j d d S )Nread1)rU   )rE   rn   r@   r@   rA   r     s    zBufferedIOBase.read1c             C   s   | j |ddS )NF)r   )	_readinto)rE   r   r@   r@   rA   r     s    zBufferedIOBase.readintoc             C   s   | j |ddS )NT)r   )r   )rE   r   r@   r@   rA   	readinto1  s    	zBufferedIOBase.readinto1c             C   sV   t |tst|}|jd}|r0| jt|}n| jt|}t|}||d |< |S )NB)r   
memoryviewcastr   r!   rr   )rE   r   r   r   rm   r@   r@   rA   r     s    

zBufferedIOBase._readintoc             C   s   | j d d S )Nr~   )rU   )rE   r   r@   r@   rA   r~     s    	zBufferedIOBase.writec             C   s   | j d d S )Ndetach)rU   )rE   r@   r@   rA   r     s    zBufferedIOBase.detach)N)N)
rI   rJ   rK   rr   r   r   r   r   r~   r   r@   r@   r@   rA   r   m  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)rE   r;   r@   r@   rA   __init__  s    z_BufferedIOMixin.__init__r   c             C   s"   | j j||}|dk rtd|S )Nr   z#seek() returned an invalid position)r;   rV   r,   )rE   rW   rX   Znew_positionr@   r@   rA   rV     s    z_BufferedIOMixin.seekc             C   s   | j j }|dk rtd|S )Nr   z#tell() returned an invalid position)r;   rY   r,   )rE   rW   r@   r@   rA   rY     s    
z_BufferedIOMixin.tellNc             C   s$   | j   |d kr| j }| jj|S )N)r\   rY   r;   rZ   )rE   rW   r@   r@   rA   rZ     s    z_BufferedIOMixin.truncatec             C   s   | j rtd| jj  d S )Nzflush of closed file)rf   r"   r;   r\   )rE   r@   r@   rA   r\     s    z_BufferedIOMixin.flushc          
   C   s0   | j d k	r,| j r,z| j  W d | j j  X d S )N)r;   rf   r\   r3   )rE   r@   r@   rA   r3     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   )rE   r;   r@   r@   rA   r     s    
z_BufferedIOMixin.detachc             C   s
   | j j S )N)r;   r_   )rE   r@   r@   rA   r_     s    z_BufferedIOMixin.seekablec             C   s   | j S )N)r   )rE   r@   r@   rA   r;     s    z_BufferedIOMixin.rawc             C   s   | j jS )N)r;   rf   )rE   r@   r@   rA   rf     s    z_BufferedIOMixin.closedc             C   s   | j jS )N)r;   rT   )rE   r@   r@   rA   rT   !  s    z_BufferedIOMixin.namec             C   s   | j jS )N)r;   r2   )rE   r@   r@   rA   r2   %  s    z_BufferedIOMixin.modec             C   s   t dj| jjd S )Nz can not serialize a '{0}' object)r   formatrS   rI   )rE   r@   r@   rA   __getstate__)  s    z_BufferedIOMixin.__getstate__c             C   sJ   | j j}| j j}y
| j}W n tk
r6   dj||S X dj|||S d S )Nz<{}.{}>z<{}.{} name={!r}>)rS   rJ   rK   rT   	Exceptionr   )rE   modnameZclsnamerT   r@   r@   rA   __repr__-  s    
z_BufferedIOMixin.__repr__c             C   s
   | j j S )N)r;   r*   )rE   r@   r@   rA   r*   9  s    z_BufferedIOMixin.filenoc             C   s
   | j j S )N)r;   r'   )rE   r@   r@   rA   r'   <  s    z_BufferedIOMixin.isatty)r   )N)rI   rJ   rK   r   rV   rY   rZ   r\   r3   r   r_   r   r;   rf   rT   r2   r   r   r*   r'   r@   r@   r@   rA   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  ZS )#BytesIONc             C   s&   t  }|d k	r||7 }|| _d| _d S )Nr   )rq   _buffer_pos)rE   Zinitial_bytesbufr@   r@   rA   r   D  s
    zBytesIO.__init__c             C   s   | j rtd| jj S )Nz__getstate__ on closed file)rf   r"   __dict__copy)rE   r@   r@   rA   r   K  s    zBytesIO.__getstate__c             C   s   | j rtdt| jS )Nzgetvalue on closed file)rf   r"   r   r   )rE   r@   r@   rA   getvalueP  s    zBytesIO.getvaluec             C   s   | j rtdt| jS )Nzgetbuffer on closed file)rf   r"   r   r   )rE   r@   r@   rA   	getbufferW  s    zBytesIO.getbufferc                s   | j j  t j  d S )N)r   clearsuperr3   )rE   )rS   r@   rA   r3   ^  s    
zBytesIO.closec             C   st   | j rtd|d krd}|dk r,t| j}t| j| jkr@dS tt| j| j| }| j| j| }|| _t|S )Nzread from closed filer
   r       r   )rf   r"   r!   r   r   rl   r   )rE   rn   Znewposr   r@   r@   rA   rr   b  s    
zBytesIO.readc             C   s
   | j |S )N)rr   )rE   rn   r@   r@   rA   r   p  s    zBytesIO.read1c             C   s   | j rtdt|tr tdt|}|j}W d Q R X |dkrFdS | j}|t| j	krzd|t| j	  }|  j	|7  _	|| j	||| < |  j|7  _|S )Nzwrite to closed filez can't write str to binary streamr       )
rf   r"   r   r   r   r   nbytesr   r!   r   )rE   r   Zviewrm   rW   Zpaddingr@   r@   rA   r~   u  s    

zBytesIO.writer   c             C   s   | j rtdy
|j W n, tk
rD } ztd|W Y d d }~X nX |dkrl|dk rdtd|f || _nD|dkrtd| j| | _n(|dkrt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)	rf   r"   r   r-   r   r   maxr!   r   )rE   rW   rX   errr@   r@   rA   rV     s     
zBytesIO.seekc             C   s   | j rtd| jS )Nztell on closed file)rf   r"   r   )rE   r@   r@   rA   rY     s    zBytesIO.tellc             C   s|   | j rtd|d kr| j}nNy
|j W n, tk
rT } ztd|W Y d d }~X nX |dk rltd|f | j|d = |S )Nztruncate on closed filezan integer is requiredr   znegative truncate position %r)rf   r"   r   r   r-   r   r   )rE   rW   r   r@   r@   rA   rZ     s    
zBytesIO.truncatec             C   s   | j rtddS )NzI/O operation on closed file.T)rf   r"   )rE   r@   r@   rA   rb     s    zBytesIO.readablec             C   s   | j rtddS )NzI/O operation on closed file.T)rf   r"   )rE   r@   r@   rA   rd     s    zBytesIO.writablec             C   s   | j rtddS )NzI/O operation on closed file.T)rf   r"   )rE   r@   r@   rA   r_     s    zBytesIO.seekable)N)N)r   )N)rI   rJ   rK   r   r   r   r   r3   rr   r   r~   rV   rY   rZ   rb   rd   r_   __classcell__r@   r@   )rS   rA   r   @  s   



r   c               @   sr   e Zd Zef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 )r0   c             C   sF   |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)	rb   r,   r   r   r"   buffer_size_reset_read_bufLock
_read_lock)rE   r;   r   r@   r@   rA   r     s    zBufferedReader.__init__c             C   s
   | j j S )N)r;   rb   )rE   r@   r@   rA   rb     s    zBufferedReader.readablec             C   s   d| _ d| _d S )Nr   r   )	_read_buf	_read_pos)rE   r@   r@   rA   r     s    zBufferedReader._reset_read_bufNc          	   C   s4   |d k	r|dk rt d| j | j|S Q R X d S )Nr
   zinvalid number of bytes to readr   )r"   r   _read_unlocked)rE   rn   r@   r@   rA   rr     s    zBufferedReader.readc             C   s  d}d}| j }| j}|d ks$|dkr| j  t| jdrj| jj }|d krZ||d  pXd S ||d  | S ||d  g}d}x2| jj }||kr|}P |t|7 }|j| q~W dj	|p|S t|| }	||	kr|  j|7  _||||  S ||d  g}t
| j|}
xB|	|k rL| jj|
}||kr2|}P |	t|7 }	|j| qW t||	}dj	|}||d  | _ d| _|r|d | S |S )Nr   r
   r   r   )r   Nr   )r   r   r   rp   r;   r   rr   r!   r{   joinr   r   rl   )rE   rm   Z
nodata_valZempty_valuesr   rW   chunkchunksZcurrent_sizeavailZwantedoutr@   r@   rA   r     sN    




zBufferedReader._read_unlockedr   c          	   C   s   | j  | j|S Q R X d S )N)r   _peek_unlocked)rE   rn   r@   r@   rA   ri     s    zBufferedReader.peekc             C   sr   t || j}t| j| j }||k s,|dkrb| j| }| jj|}|rb| j| jd  | | _d| _| j| jd  S )Nr   )rl   r   r!   r   r   r;   rr   )rE   rm   ZwantZhaveZto_readZcurrentr@   r@   rA   r   )  s    
zBufferedReader._peek_unlockedc             C   sT   |dk rt d|dkrdS | j( | jd | jt|t| j| j S Q R X d S )Nr   z(number of bytes to read must be positiver   r
   )r"   r   r   r   rl   r!   r   r   )rE   rn   r@   r@   rA   r   4  s    
zBufferedReader.read1c             C   s  t |tst|}|jdkr dS |jd}d}| j x|t|k r tt| j| j t|}|r| j| j| j|  |||| < |  j|7  _||7 }|t|krP t|| | j	kr| j
j||d  }|sP ||7 }n|o|s| jdsP |r8|r8P q8W W d Q R X |S )Nr   r   r
   )r   r   r   r   r   r!   rl   r   r   r   r;   r   r   )rE   r   r   writtenr   rm   r@   r@   rA   r   F  s4    


"

zBufferedReader._readintoc             C   s   t j| t| j | j S )N)r   rY   r!   r   r   )rE   r@   r@   rA   rY   t  s    zBufferedReader.tellc             C   sX   |t krtd| j8 |dkr4|t| j| j 8 }tj| ||}| j  |S Q R X d S )Nzinvalid whence valuer
   )	valid_seek_flagsr"   r   r!   r   r   r   rV   r   )rE   rW   rX   r@   r@   rA   rV   w  s    zBufferedReader.seek)N)N)r   )r   )r   )rI   rJ   rK   r(   r   rb   r   rr   r   ri   r   r   r   rY   rV   r@   r@   r@   rA   r0     s   

4


.r0   c               @   sT   e Zd Zef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   sF   |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)
rd   r,   r   r   r"   r   rq   
_write_bufr   _write_lock)rE   r;   r   r@   r@   rA   r     s    zBufferedWriter.__init__c             C   s
   | j j S )N)r;   rd   )rE   r@   r@   rA   rd     s    zBufferedWriter.writablec             C   s   | j rtdt|tr td| j t| j| jkr@| j	  t| j}| jj
| t| j| }t| j| jkry| j	  W nl tk
r } zPt| j| jkrt| j| j }||8 }| jd | j | _t|j|j|W Y d d }~X nX |S Q R X d S )Nzwrite to closed filez can't write str to binary stream)rf   r"   r   r   r   r   r!   r   r   _flush_unlockedextendBlockingIOErrorerrnostrerror)rE   r   Zbeforer   eZoverager@   r@   rA   r~     s(    

"zBufferedWriter.writeNc          	   C   s8   | j ( | j  |d kr"| jj }| jj|S Q R X d S )N)r   r   r;   rY   rZ   )rE   rW   r@   r@   rA   rZ     s
    
zBufferedWriter.truncatec          	   C   s   | j  | j  W d Q R X d S )N)r   r   )rE   r@   r@   rA   r\     s    zBufferedWriter.flushc             C   s   | j rtdxz| jry| jj| j}W n tk
rD   tdY nX |d kr\ttjdd|t	| jksr|dk rzt
d| jd |= qW d 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)rf   r"   r   r;   r~   r   RuntimeErrorr   ZEAGAINr!   r,   )rE   rm   r@   r@   rA   r     s    zBufferedWriter._flush_unlockedc             C   s   t j| t| j S )N)r   rY   r!   r   )rE   r@   r@   rA   rY     s    zBufferedWriter.tellr   c             C   s8   |t krtd| j | j  tj| ||S Q R X d S )Nzinvalid whence value)r   r"   r   r   r   rV   )rE   rW   rX   r@   r@   rA   rV     s
    zBufferedWriter.seek)N)r   )rI   rJ   rK   r(   r   rd   r~   rZ   r\   r   rY   rV   r@   r@   r@   rA   r/     s   	
r/   c               @   s   e Zd Zef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   s<   |j  std|j s tdt||| _t||| _d S )Nz#"reader" argument must be readable.z#"writer" argument must be writable.)rb   r,   rd   r0   readerr/   writer)rE   r   r   r   r@   r@   rA   r     s    zBufferedRWPair.__init__Nc             C   s   |d krd}| j j|S )Nr
   r   )r   rr   )rE   rn   r@   r@   rA   rr     s    zBufferedRWPair.readc             C   s   | j j|S )N)r   r   )rE   r   r@   r@   rA   r     s    zBufferedRWPair.readintoc             C   s   | j j|S )N)r   r~   )rE   r   r@   r@   rA   r~     s    zBufferedRWPair.writer   c             C   s   | j j|S )N)r   ri   )rE   rn   r@   r@   rA   ri     s    zBufferedRWPair.peekc             C   s   | j j|S )N)r   r   )rE   rn   r@   r@   rA   r     s    zBufferedRWPair.read1c             C   s   | j j|S )N)r   r   )rE   r   r@   r@   rA   r   
  s    zBufferedRWPair.readinto1c             C   s
   | j j S )N)r   rb   )rE   r@   r@   rA   rb     s    zBufferedRWPair.readablec             C   s
   | j j S )N)r   rd   )rE   r@   r@   rA   rd     s    zBufferedRWPair.writablec             C   s
   | j j S )N)r   r\   )rE   r@   r@   rA   r\     s    zBufferedRWPair.flushc          
   C   s    z| j j  W d | jj  X d S )N)r   r3   r   )rE   r@   r@   rA   r3     s    zBufferedRWPair.closec             C   s   | j j p| jj S )N)r   r'   r   )rE   r@   r@   rA   r'     s    zBufferedRWPair.isattyc             C   s   | j jS )N)r   rf   )rE   r@   r@   rA   rf     s    zBufferedRWPair.closed)N)r   )rI   rJ   rK   r(   r   rr   r   r~   ri   r   r   rb   rd   r\   r3   r'   r   rf   r@   r@   r@   rA   r     s   

r   c               @   sh   e Zd Zef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   s(   |j   tj| || tj| || d S )N)ra   r0   r   r/   )rE   r;   r   r@   r@   rA   r   -  s    zBufferedRandom.__init__r   c             C   s   |t krtd| j  | jrJ| j  | jj| jt| j d W d Q R X | jj||}| j | j	  W d Q R X |dk rt
d|S )Nzinvalid whence valuer
   r   z seek() returned invalid position)r   r"   r\   r   r   r;   rV   r   r!   r   r,   )rE   rW   rX   r@   r@   rA   rV   2  s    $zBufferedRandom.seekc             C   s   | j rtj| S tj| S d S )N)r   r/   rY   r0   )rE   r@   r@   rA   rY   C  s    
zBufferedRandom.tellNc             C   s   |d kr| j  }tj| |S )N)rY   r/   rZ   )rE   rW   r@   r@   rA   rZ   I  s    zBufferedRandom.truncatec             C   s    |d krd}| j   tj| |S )Nr
   r   )r\   r0   rr   )rE   rn   r@   r@   rA   rr   O  s    zBufferedRandom.readc             C   s   | j   tj| |S )N)r\   r0   r   )rE   r   r@   r@   rA   r   U  s    zBufferedRandom.readintoc             C   s   | j   tj| |S )N)r\   r0   ri   )rE   rn   r@   r@   rA   ri   Y  s    zBufferedRandom.peekc             C   s   | j   tj| |S )N)r\   r0   r   )rE   rn   r@   r@   rA   r   ]  s    zBufferedRandom.read1c             C   s   | j   tj| |S )N)r\   r0   r   )rE   r   r@   r@   rA   r   a  s    zBufferedRandom.readinto1c             C   sF   | j r:| j( | jj| jt| j  d | j  W d Q R X tj| |S )Nr
   )	r   r   r;   rV   r   r!   r   r/   r~   )rE   r   r@   r@   rA   r~   e  s
    zBufferedRandom.write)r   )N)N)r   )rI   rJ   rK   r(   r   rV   rY   rZ   rr   r   ri   r   r   r~   r@   r@   r@   rA   r.   $  s   	



r.   c                   s   e Zd Zd0ZdZdZdZdZdZdZ	d1ddZ
dd	 Zd
d Zdd Zdd Zd2ddZd3ddZdd Zdd Zdd ZefddZdd Zd4d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   Z!S )5r&   r
   FNTr   c       
      C   s
  | j dkr*z| jrtj| j  W d d| _ X t|tr<tdt|tr\|}|dk r`tdnd}t|t	sxtd|f t
|t
dkstd|f tdd |D dks|jd	dkrtd
d|krd| _d| _tjtjB }nVd|k rd| _d}n@d|krd| _tjtjB }n"d|kr:d| _d| _tjtjB }d	|krPd| _d| _| jrl| jrl|tjO }n| jr|tjO }n
|tjO }|ttddO }ttddpttdd}||O }d }y|dk r<|std|d krtj||d}n0|||}t|tstd|dk r&td|}|s<tj|d || _tj|}	y(tj|	jrrt t!j"tj#t!j"|W n t$k
r   Y nX t|	dd| _%| j%dkrt&| _%t'rt'|tj( || _)| jrtj*|dt+ W n"   |d k	rtj|  Y n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rwaxNr@   ).0cr@   r@   rA   	<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   r3   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getattrrB   r,   set_inheritabler)   statS_ISDIRst_modeIsADirectoryErrorr   ZEISDIRr   r-   _blksizer(   _setmoder   rT   lseekr	   )
rE   r4   r2   r9   r   fdflagsZnoinherit_flagZowned_fdZfdfstatr@   r@   rA   r   w  s    




$











zFileIO.__init__c             C   sD   | j dkr@| jr@| j r@dd l}|jd| f td| d | j  d S )Nr   zunclosed file %rr   )
stacklevelsource)r   r   rf   r#   r$   ResourceWarningr3   )rE   r#   r@   r@   rA   r^     s
    
zFileIO.__del__c             C   s   t d| jjd S )Nzcannot serialize '%s' object)r   rS   rI   )rE   r@   r@   rA   r     s    zFileIO.__getstate__c             C   sl   d| j j| j jf }| jr"d| S y
| j}W n& tk
rR   d|| j| j| jf S X d||| j| jf S d S )Nz%s.%sz<%s [closed]>z<%s fd=%d mode=%r closefd=%r>z<%s name=%r mode=%r closefd=%r>)	rS   rJ   rK   rf   rT   r-   r   r2   r   )rE   
class_namerT   r@   r@   rA   r     s    
zFileIO.__repr__c             C   s   | j stdd S )NzFile not open for reading)r   rQ   )rE   r@   r@   rA   rc     s    zFileIO._checkReadablec             C   s   | j stdd S )NzFile not open for writing)r   rQ   )rE   r`   r@   r@   rA   re     s    zFileIO._checkWritablec             C   sP   | j   | j  |d ks |dk r(| j S ytj| j|S  tk
rJ   d S X d S )Nr   )r[   rc   r   r   rr   r   r   )rE   rn   r@   r@   rA   rr     s    zFileIO.readc             C   s   | j   | j  t}y6tj| jdt}tj| jj}||krH|| d }W n t	k
r^   Y nX t
 }xnt||krt|}|t|t7 }|t| }ytj| j|}W n tk
r   |rP d S X |sP ||7 }qhW t|S )Nr   r
   )r[   rc   r(   r   r   r   r   r)   st_sizer,   rq   r!   r   rr   r   r   )rE   bufsizerW   endr<   rm   r   r@   r@   rA   r     s4    zFileIO.readallc             C   s4   t |jd}| jt|}t|}||d |< |S )Nr   )r   r   rr   r!   )rE   r   mr   rm   r@   r@   rA   r   ?  s
    zFileIO.readintoc             C   s8   | j   | j  ytj| j|S  tk
r2   d S X d S )N)r[   re   r   r~   r   r   )rE   r   r@   r@   rA   r~   G  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   )rE   rW   rX   r@   r@   rA   rV   U  s    
zFileIO.seekc             C   s   | j   tj| jdtS )Nr   )r[   r   r   r   r   )rE   r@   r@   rA   rY   e  s    zFileIO.tellc             C   s2   | j   | j  |d kr | j }tj| j| |S )N)r[   re   rY   r   	ftruncater   )rE   rn   r@   r@   rA   rZ   l  s    zFileIO.truncatec          
      s.   | j s*z| jrtj| j W d t j  X d S )N)rf   r   r   r3   r   r   )rE   )rS   r@   rA   r3   y  s
    zFileIO.closec             C   sF   | j   | jd kr@y| j  W n tk
r8   d| _Y nX d| _| jS )NFT)r[   	_seekablerY   r,   )rE   r@   r@   rA   r_     s    
zFileIO.seekablec             C   s   | j   | jS )N)r[   r   )rE   r@   r@   rA   rb     s    zFileIO.readablec             C   s   | j   | jS )N)r[   r   )rE   r@   r@   rA   rd     s    zFileIO.writablec             C   s   | j   | jS )N)r[   r   )rE   r@   r@   rA   r*     s    zFileIO.filenoc             C   s   | j   tj| jS )N)r[   r   r'   r   )rE   r@   r@   rA   r'     s    zFileIO.isattyc             C   s   | j S )N)r   )rE   r@   r@   rA   r9     s    zFileIO.closefdc             C   sJ   | j r| jrdS dS n0| jr,| jr&dS dS n| jrB| jr<dS dS ndS d S )Nzxb+Zxbzab+Zabzrb+rbwb)r   r   r   r   )rE   r@   r@   rA   r2     s    zFileIO.moder   )r   TN)N)N)N)"rI   rJ   rK   r   r   r   r   r   r   r   r   r^   r   r   rc   re   rr   r   r   r~   r   rV   rY   rZ   r3   r_   rb   rd   r*   r'   r   r9   r2   r   r@   r@   )rS   rA   r&   n  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 )Nrr   )rU   )rE   rn   r@   r@   rA   rr     s    zTextIOBase.readc             C   s   | j d d S )Nr~   )rU   )rE   sr@   r@   rA   r~     s    zTextIOBase.writeNc             C   s   | j d d S )NrZ   )rU   )rE   rW   r@   r@   rA   rZ     s    zTextIOBase.truncatec             C   s   | j d d S )Nru   )rU   )rE   r@   r@   rA   ru     s    zTextIOBase.readlinec             C   s   | j d d S )Nr   )rU   )rE   r@   r@   rA   r     s    zTextIOBase.detachc             C   s   d S )Nr@   )rE   r@   r@   rA   r6     s    zTextIOBase.encodingc             C   s   d S )Nr@   )rE   r@   r@   rA   newlines  s    zTextIOBase.newlinesc             C   s   d S )Nr@   )rE   r@   r@   rA   r7     s    zTextIOBase.errorsr   )r   )N)rI   rJ   rK   rr   r~   rZ   ru   r   r   r6   r   r7   r@   r@   r@   rA   r     s   	


	
r   c               @   sP   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 )N)r7   r   F)codecsIncrementalDecoderr   	translatedecoderseennl	pendingcr)rE   r   r   r7   r@   r@   rA   r     s
    z"IncrementalNewlineDecoder.__init__Fc             C   s   | j d kr|}n| j j||d}| jr<|s.|r<d| }d| _|jdr^| r^|d d }d| _|jd}|jd| }|jd| }|  j|o| j|o| jB |o| jB O  _| j	r|r|j
dd}|r|j
dd}|S )	N)finalFr
   Tz

r   )r   decoder   rs   r   r   _LF_CR_CRLFr   replace)rE   inputr   outputZcrlfZcrZlfr@   r@   rA   r     s(    

"z IncrementalNewlineDecoder.decodec             C   s@   | j d krd}d}n| j j \}}|dK }| jr8|dO }||fS )Nr   r   r
   )r   getstater   )rE   r   flagr@   r@   rA   r  2  s    
z"IncrementalNewlineDecoder.getstatec             C   s8   |\}}t |d@ | _| jd k	r4| jj||d? f d S )Nr
   )boolr   r   setstate)rE   stater   r  r@   r@   rA   r  =  s    
z"IncrementalNewlineDecoder.setstatec             C   s$   d| _ d| _| jd k	r | jj  d S )Nr   F)r   r   r   reset)rE   r@   r@   rA   r  C  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   )rE   r@   r@   rA   r   M  s           z"IncrementalNewlineDecoder.newlinesN)r   )F)rI   rJ   rK   r   r   r  r  r  r   r   r   r   r   r@   r@   r@   rA   r     s   

r   c               @   s:  e Zd ZdZdEd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dFd*d+Zd,d- Zd.d/ ZdGd1d2Zd3d4 Zd5d6 ZdHd7d8Zd9d: ZdId;d<Z dJd=d>Z!d?d@ Z"dKdAdBZ#edCdD Z$dS )Lr1   i   NFc       
      C   s  |d k	r&t |t r&tdt|f |dkr<td|f |d krytj|j }W n tt	fk
rn   Y nX |d krydd l
}W n tk
r   d}Y nX |jd	}t |tstd
| tj|jsd}t|| |d krd}nt |ts td| || _|| _|| _|| _| | _|d k| _|| _|dk| _|pDtj| _d | _d | _d| _d| _d | _| j j!  | _"| _#t$| j d| _%d| _&| j"r| j' r| j j( }	|	dkry| j) j*d W n tk
r   Y nX d 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-   rQ   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	_snapshotr?   r_   r   _tellingrp   
_has_read1	_b2cratiord   rY   _get_encoderr  )
rE   r?   r6   r7   r8   r=   write_throughr  r`   positionr@   r@   rA   r   w  s`    






zTextIOWrapper.__init__c             C   s   dj | jj| jj}y
| j}W n tk
r2   Y nX |dj |7 }y
| j}W n tk
r`   Y nX |dj |7 }|dj | j S )Nz<{}.{}z name={0!r}z mode={0!r}z encoding={0!r}>)r   rS   rJ   rK   rT   r   r2   r6   )rE   r<   rT   r2   r@   r@   rA   r     s    



zTextIOWrapper.__repr__c             C   s   | j S )N)r  )rE   r@   r@   rA   r6     s    zTextIOWrapper.encodingc             C   s   | j S )N)r  )rE   r@   r@   rA   r7     s    zTextIOWrapper.errorsc             C   s   | j S )N)r  )rE   r@   r@   rA   r=     s    zTextIOWrapper.line_bufferingc             C   s   | j S )N)r   )rE   r@   r@   rA   r?     s    zTextIOWrapper.bufferc             C   s   | j rtd| jS )NzI/O operation on closed file.)rf   r"   r   )rE   r@   r@   rA   r_     s    zTextIOWrapper.seekablec             C   s
   | j j S )N)r?   rb   )rE   r@   r@   rA   rb     s    zTextIOWrapper.readablec             C   s
   | j j S )N)r?   rd   )rE   r@   r@   rA   rd     s    zTextIOWrapper.writablec             C   s   | j j  | j| _d S )N)r?   r\   r   r'  )rE   r@   r@   rA   r\     s    
zTextIOWrapper.flushc          
   C   s0   | j d k	r,| j r,z| j  W d | j j  X d S )N)r?   rf   r\   r3   )rE   r@   r@   rA   r3     s    zTextIOWrapper.closec             C   s   | j jS )N)r?   rf   )rE   r@   r@   rA   rf     s    zTextIOWrapper.closedc             C   s   | j jS )N)r?   rT   )rE   r@   r@   rA   rT     s    zTextIOWrapper.namec             C   s
   | j j S )N)r?   r*   )rE   r@   r@   rA   r*     s    zTextIOWrapper.filenoc             C   s
   | j j S )N)r?   r'   )rE   r@   r@   rA   r'     s    zTextIOWrapper.isattyc             C   s   | j rtdt|ts(td|jj t|}| js<| j	oBd|k}|rf| jrf| j
dkrf|jd| j
}| jpr| j }|j|}| jj| | j	r|sd|kr| j  | jd d | _| jr| jj  |S )Nzwrite to closed filezcan't write %s to text streamr   r   r   )rf   r"   r   r   r   rS   rI   r!   r  r  r!  r   r"  r*  encoder?   r~   r\   _set_decoded_charsr&  r#  r  )rE   r   ZlengthZhaslfencoderr   r@   r@   rA   r~     s&    



zTextIOWrapper.writec             C   s   t j| j}|| j| _| jS )N)r   getincrementalencoderr  r  r"  )rE   Zmake_encoderr@   r@   rA   r*    s    zTextIOWrapper._get_encoderc             C   s2   t j| j}|| j}| jr(t|| j}|| _|S )N)r   getincrementaldecoderr  r  r  r   r  r#  )rE   Zmake_decoderr   r@   r@   rA   _get_decoder  s    
zTextIOWrapper._get_decoderc             C   s   || _ d| _d S )Nr   )r$  r%  )rE   charsr@   r@   rA   r.  )  s    z TextIOWrapper._set_decoded_charsc             C   sF   | j }|d kr| j|d  }n| j|||  }|  j t|7  _ |S )N)r%  r$  r!   )rE   rm   offsetr3  r@   r@   rA   _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)rE   rm   r@   r@   rA   _rewind_decoded_chars8  s    
z#TextIOWrapper._rewind_decoded_charsc             C   s   | j d krtd| jr&| j j \}}| jr<| jj| j}n| jj| j}| }| j j	||}| j
| |rt|t| j | _nd| _| jr||| f| _| S )Nz
no decoderg        )r#  r"   r'  r  r(  r?   r   _CHUNK_SIZErr   r   r.  r!   r$  r)  r&  )rE   
dec_buffer	dec_flagsinput_chunkeofZdecoded_charsr@   r@   rA   _read_chunk>  s     

zTextIOWrapper._read_chunkr   c             C   s(   ||d> B |d> B |d> B t |d> B S )N@            )r  )rE   r,  r:  bytes_to_feedneed_eofchars_to_skipr@   r@   rA   _pack_cookieh  s    zTextIOWrapper._pack_cookiec             C   sF   t |d\}}t |d\}}t |d\}}t |d\}}|||||fS )Nr
   r>  l            l            l            l            )divmod)rE   Zbigintrestr,  r:  rB  rC  rD  r@   r@   rA   _unpack_cookier  s
    zTextIOWrapper._unpack_cookiec             C   s>  | j std| jstd| j  | jj }| j}|d ksF| jd krX| j	rTt
d|S | j\}}|t|8 }| j}|dkr| j||S |j }zt| j| }d}x|dkr$|jd|f t|j|d | }	|	|kr|j \}
}|
s |}||	8 }P |t|
8 }d}q||8 }|d }qW d}|jd|f || }|}|dkrZ| j||S d}d}d}xt|t|D ]v}|d7 }|t|j|||d  7 }|j \}}| r||kr||7 }||8 }|dd  }}}||krvP qvW |t|jddd	7 }d}||k rtd
| j|||||S |j| X d S )Nz!underlying stream is not seekablez(telling position disabled by next() callzpending decoded textr   r
   r   r   T)r   z'can't reconstruct logical file position)r   rQ   r'  r,   r\   r?   rY   r#  r&  r$  r6  r!   r%  rE  r  r   r)  r  r   range)rE   r,  r   r:  Z
next_inputrD  Zsaved_stateZ
skip_bytesZ	skip_backrm   r   d	start_posZstart_flagsZ	bytes_fedrC  Zchars_decodedir9  r@   r@   rA   rY   y  sv    





zTextIOWrapper.tellc             C   s$   | j   |d kr| j }| jj|S )N)r\   rY   r?   rZ   )rE   rW   r@   r@   rA   rZ     s    zTextIOWrapper.truncatec             C   s*   | j d krtd| j  | j}d | _|S )Nzbuffer is already detached)r?   r"   r\   r   )rE   r?   r@   r@   rA   r     s    
zTextIOWrapper.detachc                s   fdd} j rtd js(td|dkrL|dkr@tdd} j }|dkr|dkrdtd	 j   jjdd} jd
 d  _	 j
r j
j  || |S |dkrtd|f |dk rtd|f  j   j|\}}}}}	 jj|  jd
 d  _	|dkr( j
r( j
j  n@ j
s<|s<|	rh j
pJ j  _
 j
jd|f |df _	|	r jj|}
 j j
j|
| ||
f _	t j|	k rtd|	 _|| |S )Nc                sH   y j p j }W n tk
r&   Y nX | dkr<|jd n|j  d S )Nr   )r"  r*  r  r  r  )r,  r/  )rE   r@   rA   _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)rf   r"   r   rQ   rY   r\   r?   rV   r.  r&  r#  r  rH  r2  r  rr   r   r!   r$  r,   r%  )rE   ZcookierX   rM  r,  rK  r:  rB  rC  rD  r;  r@   )rE   rA   rV     s\    




zTextIOWrapper.seekc             C   s   | j   |d krd}| jp | j }y
|j W n, tk
rX } ztd|W Y d d }~X nX |dk r| j |j| jj	 dd }| j
d d | _|S d}| j|}x6t||k r| r| j  }|| j|t| 7 }qW |S d S )	Nr
   zan integer is requiredr   T)r   r   Fr   )rc   r#  r2  r   r-   r   r5  r   r?   rr   r.  r&  r!   r=  )rE   rn   r   r   r<   r<  r@   r@   rA   rr   5	  s(    



zTextIOWrapper.readc             C   s(   d| _ | j }|s$d | _| j| _ t|S )NF)r'  ru   r&  r   rw   )rE   rx   r@   r@   rA   ry   N	  s    zTextIOWrapper.__next__c             C   s  | j rtd|d krd	}nt|ts.td| j }d}| jsH| j  d  }}xR| jr|j	d|}|dkrz|d }P nt
|}n| jr|j	d|}|j	d|}|d
kr|dkrt
|}n
|d }P nL|dkr|d }P n8||k r|d }P n$||d kr|d }P n
|d }P n&|j	| j}|dkr>|t
| j }P |dkr\t
||kr\|}P x| j rv| jr^P q^W | jr|| j 7 }qT| jd d | _|S qTW |dkr||kr|}| jt
||  |d | S )Nzread from closed filer
   zsize must be an integerr   r   r   r   r   r   r   r   r   )rf   r"   r   r   r   r5  r#  r2  r  rk   r!   r  r  r=  r$  r.  r&  r7  )rE   rn   rx   startrW   endposZnlposZcrposr@   r@   rA   ru   W	  sp    




zTextIOWrapper.readlinec             C   s   | j r| j jS d S )N)r#  r   )rE   r@   r@   rA   r   	  s    zTextIOWrapper.newlines)NNNFF)N)r   r   r   r   )N)r   )N)N)%rI   rJ   rK   r8  r   r   r   r6   r7   r=   r?   r_   rb   rd   r\   r3   rf   rT   r*   r'   r~   r*  r2  r.  r5  r7  r=  rE  rH  rY   rZ   r   rV   rr   ry   ru   r   r@   r@   r@   rA   r1   Z  sF    
E

* 
	c

K
	
Xr1   c                   sN   e Zd Zd fdd	Zdd Zdd Zed	d
 Zedd Zdd Z	  Z
S )StringIOr   r   c                sf   t t| jt dd|d |d kr(d| _|d k	rbt|tsNtdjt	|j
| j| | jd d S )Nzutf-8surrogatepass)r6   r7   r8   Fz*initial_value must be str or None, not {0}r   )r   rP  r   r   r  r   r   r   r   r  rI   r~   rV   )rE   Zinitial_valuer8   )rS   r@   rA   r   	  s    

zStringIO.__init__c             C   sL   | j   | jp| j }|j }|j  z|j| jj ddS |j| X d S )NT)r   )	r\   r#  r2  r  r  r   r?   r   r  )rE   r   Z	old_stater@   r@   rA   r   	  s    zStringIO.getvaluec             C   s
   t j| S )N)objectr   )rE   r@   r@   rA   r   	  s    zStringIO.__repr__c             C   s   d S )Nr@   )rE   r@   r@   rA   r7   	  s    zStringIO.errorsc             C   s   d S )Nr@   )rE   r@   r@   rA   r6   	  s    zStringIO.encodingc             C   s   | j d d S )Nr   )rU   )rE   r@   r@   rA   r   	  s    zStringIO.detach)r   r   )rI   rJ   rK   r   r   r   r   r7   r6   r   r   r@   r@   )rS   rA   rP  	  s   
rP  >   r   r   i    r   )r   r   NNNTN)4r   abcr   r   r   sys_threadr   r   r  Z_dummy_threadplatformZmsvcrtr   r   ior   r   r   r	   r   rp   addr   	SEEK_DATAr(   r   rB   rC   rL   rQ   r-   r,   r"   ABCMetarR   registerr   _ior&   r   r   r   r0   r/   r   r.   r   r   r   r1   rP  r@   r@   r@   rA   <module>   st   


 
 T	
  =
gi CZIJ  UAU    ^